yoheikikuta / paper-reading

Notes about papers I read (in Japanese)
156 stars 4 forks source link

[2021] Mitigating Confounding Bias in Recommendation via Information Bottleneck #61

Open yoheikikuta opened 2 years ago

yoheikikuta commented 2 years ago

論文リンク

https://dl.acm.org/doi/10.1145/3460231.3474263

公開日(yyyy/mm/dd)

2021/09/27

概要

bias ありの feedback のみがある状態で交絡バイアスを緩和させる方法として information bottlenck を拡張させた loss fucntion を提案した論文。 操作変数や交絡変数を含む入力特徴量をモデルで分散表現へと map した場合、その後に操作変数や交絡変数の特徴部分を分離するのは難しい。この論文では、map する際に最初から biased component r と unbiased component z を明示的に分けるようにして、その r, z が満たすべき性質を debiased information bottleneck という loss function で表現して学習することで、r, z が望ましい性質を持つように誘導している。 debiased information bottleneck は得られているデータ (x,y) に対して、上記 r,z が i) z は x に overfit しすぎない、ii) z は y を予測できるようにする、iii) z と r は独立、iv) r もいくらか y を予測できる、という項から成る。i) が information bottleneck の compression term で、ii) が compression はするけど y を予測できるような有用なものであるべしという制約になっている。iii) と iv) は問題設定に合わせて拡張したものとなっている。 因果ダイアグラムと対応をつけて定式化しつつ、オープンデータでも実際のプロダクトデータでも過去の debiasing 手法と比べて性能が高いということを示している。

code も公開するということだが 20211017 時点では公開されていない。 https://github.com/dgliu/RecSys21_DIB

yoheikikuta commented 2 years ago

最近あまりにも勉強会とかで話してないので何かで話すか〜と考えていたら、RecSys 2021 のオンライン読み会があったのでそこで発表することにした。 論文一覧をざっと眺めて、因果推論絡みのものがいいかなと思いつつ調べてたらこれを見つけたので読んでみることにした。

Information Bottleneck は https://github.com/yoheikikuta/paper-reading/issues/28 で読んでいたので良い復習にもなるだろう。

yoheikikuta commented 2 years ago

この論文でやっているのは bias 込みの feedback のみが得られている場合に bias の影響を緩和する loss function の提案だが、モチベーションは先行研究では bias 除去のテクニカルな議論はされてるけど、bias が生成される過程については十分議論がされてないので、そこに関して causal diagram 使ってアプローチしますよということ。

bias 除去に関する先行研究が bias 生成過程についてあまり議論していないとはそんなに思わないし、実際に論文を読んでいくとこの辺の文章はちょっと誇大広告感もある。

yoheikikuta commented 2 years ago

先行研究は色々紹介されているが、この辺は自分はあまり知らないので傾向スコアくらいしかピンとくるものはない。 unbiased なデータを集めるのは大変なことが多い(実際のサービスではランダムに recommend したりもしないといけないが、それは既存のユーザ体験を毀損しうるので注意が必要)ので、biased なデータだけから bias を緩和する手法が求められていて、この論文もその一つとなる。

information bottleneck についても紹介していて、特にテキストの style embedding と content embedding を分離するために information bottleneck 的な考え方を使っているということで以下の論文が引用されている。全然読んでないけど、チラ見すると確かに mutual information/information bottleneck を使っている。 https://arxiv.org/abs/2006.00693 https://arxiv.org/abs/1912.00646

この論文では biased component と debiased component の分離を目的として information bottleneck を使おうというものになっているので、アイデアとしては近しい。

yoheikikuta commented 2 years ago

論文の内容の最初のポイントが bias が生じる過程を因果ダイアグラムで捉えるというもの。 記号は $ x $ が入力で使う変数、$ y $ が 0,1 でクリックされたか否か、$ T $ が treatment で医学の場合は処置変数でレコメンドの場合はどのようなレコメンド戦略かに相当するものになる。 $ I, C, A $ はそれぞれ操作変数、交絡変数、調整変数で因果推論で登場するもの。ここではそれぞれがどういう意味かは詳しく把握する必要はないが、biase feedback において $ I $ は $ T $ に影響を及ぼすことで間接的に $ y $ に影響を与えるもの、$ C $ は直接的に $ y $ に影響を与えるものでありつつ $ T $ に影響を及ぼすことで間接的にも $ y $ に影響を与えるもの、$ A $ は $ y $ に直接影響をあえたるもの、になる。

単純な例で考える。例えばユーザの年収に応じて商品レコメンドロジックを切り替えるような場合を考える(そういうデータが得られていて可能だと相手)。ユーザの年収は $ T $ に影響を及ぼすし、クリック有無にも影響する(年収が高い方がクリックするだろうという過程)ので、これは交絡変数 $ C $ になる。ユーザの趣味嗜好みたいなものが何かしらデータとして得られるとするとこれは調整変数 $ A $ となると考えられる(例えばこういう趣味の人はこういうアイテムをクリックしやすいとかになるだろう)。操作変数 $ I $ はちょっと難しいが、ユーザの年齢だけではなく例えば人工的に変数を足してそれによって(ユーザの年齢に加えて)確率的にレコメンドロジックの出し分けに影響するようなケースを考えればこれがそれに該当するだろう。

あるアルゴリズムでレコメンド戦略を運用していた場合、得られたデータは当然左の biased のケースになる。年齢などでロジックを出し分けていて、それらは間接的に y に影響をしてしまうので。 最終的にやりたいのは、レコメンド戦略 $ T $ の効果の多寡をこのような bias を除いて比較するというもので、つまり右側のケースを作り出したい。 これをやるために randomized controlled trial (RCT) があったりするわけだが、冒頭の通り、実際のシステムでそのデータを収集するのは痛みを伴う可能性があるので、biased feedback のみが存在する場合にそれをやりたい、というのが問題設定になっている。

ちなみにそのような比較をするときに必要な過程が strong ignorability というものになっていて、それは $ T ⊥ y | X $ という条件付き独立で定義される。これは変数 $ X $ で条件づけられていれば、$ T $ の割当と $ y $ の結果は独立というのは reasonable($ T $ を決めるときは $ y $ に依らないで決める、というか順序的にそうせざるを得ない)だろう。独立なので RCT のように比較できるということになっている。


自分は調査変数という言葉を知らなかったが、これについては https://www.krsk-phs.com/entry/counfounder_selection のブログが分かりやすかった。


ここの strong ignorability とかはどこかでもう少しちゃんと勉強してもいいかなという感じがする。ここで出てた図と近い話とその周辺の議論がされてる以下の論文とかで辿っていくのがいいかもしれない。 https://iclr.cc/virtual_2020/poster_HkxBJT4YvB.html

yoheikikuta commented 2 years ago

また、上記の図から交絡バイアスについて以下のように定義している。 間接的な効果が入ることによって結果がどの影響によるものかがはっきりしなくなるということですね。

yoheikikuta commented 2 years ago

提案手法は、bias は embedding の全次元に埋め込まれて区別できないという仮定の下、以下のように明示的に biased component と unbiased component を分けるというものになっている。

biased feedback を使う学習時から $ r, z $ を明示的に分けるように学習して、テスト時には biased component $ r $ を使わず $ z $ だけを用いて予測するようにすることで、bias の影響を軽減しようという試みである。

具体的にどうやって $ r, z $ を構成するのかが問題だが、ここに information bottleneck を用いる。 そもそも、変数 $ x $ のどれが$ I, C, A $ であるかが正確に区別ついてない場合もあるので、手法としてこれらの情報を使うわけではなく、あくまで $ r, z $ が満たすべき性質をうまい具合に表現することで目的を達成する必要がある。

この論文では以下の loss function を提案している。

①は information bottleneck の compression term で、潜在表現 $ z $ としてはできるだけ圧縮したいので $ x $ との相互情報量を小さくする方向に作用する項。 ②は圧縮するときに単に何の情報も持たずに圧縮しても有用な表現にはならないので、$ z $ は $ y $ を予測するのに有用なものということでその相互情報量を大きくする方向に作用する項。 ③は問題設定に合わせて追加している補正項で、$ z $ と $ r $ が独立になるように働きかける項。これにより biased/unbiased を分けるように意図している。 ④は③だけでは biased component の意味が特に含まれていないので、biased な表現も間接的に $ y $ に影響するので $ y $ を予測するのに一定有用なものにするように作用する項。この項が因果ダイアグラムから自然と考えられるよねというのが論文の主張だろうと思う。

biased/unbiased というのはあくまで上記のような特徴を満たすものとしてのみ捉えられているということには注意が必要。 r, z の区別はあくまで①の項と重みとしてつける係数によってのみなされている。

個人的にはこの辺はそんなにしっくりきてないところで、間接的な効果というのは $ α $ を②の係数 1 と比べて相対的に小さな値として採用するという部分で表現されていることになるので、元の因果ダイアグラムが持つ情報が loss function では(単なるパラメタの調整というものになるので)結構落ちてる気がする。 例えば treatment $ T $ の情報が使えるのでその辺の情報も使って構築した方が元のアイデアに対しては素直ではないかな〜。

yoheikikuta commented 2 years ago

得られた結果は明確に intractable なものになってるので、このままでは学習に使えない。 我々はいま $ x → r, z → y $ という流れでモデリングをしているので、mutual information を確率分布の言葉(もしくはエントロピー)で書き下した際に、$ p(r, z | x) $ や $ p(y | r, z) $ のみで表現する必要がある($ p(r,z | y) $ のように $ y $ がある値を持つときの $ r,z $ の分布などは問題設定から言って計算できない)。

ここの計算は少し手順が必要だが、特に難しいことはなく計算でき、結果は以下のようになる。

計算は以下。 正則化項になるところの計算で gaussian を we can assume と言ってるが、ここは仮定できるっていうかそういうものとして扱ってしまうという感じかなという気はする。deterministic なものを考えるので極値すなわち embedding $ μ(x) $ だけを考えればいいのはそうだと思うけど、そこが l2-norm で入るのはあくまで gaussian として扱うと決めたからで、原理的には他の確率分布を仮定すれば他の norm になったりするだろう。

yoheikikuta commented 2 years ago

tractable な loss function が得られれば、あとは以下のように loss を計算して学習を回していけばよい。 一つ注意点は潜在表現は dim(r) + dim(z) になっているので、$ r $ のみもしくは $ z $ のみの潜在表現 component を使う場合は、もう一方の component は 0 埋めして使うという点。

yoheikikuta commented 2 years ago

数値実験はオープンデータの Yahoo! R3 のデータと実際のプロダクトのデータ(具体的に何のデータかは特に書いてない)を使っている。 どちらも unbiased なデータも含んでいるので、それをテストデータにして、学習時には biased feedback のデータのみを使用している(この論文の元々のモチベーションがそうなので)。

モデルは Matrix Factorization (MF) と Neural Collaborative Filtering (NCF) を使い、それぞれに対してナイーブに学習したものと、比較手法として傾向スコアやその発展を用いたものと、この論文で提案したもの、を使っている。

モデルのパラメタは以下。 上で議論したように $ α $ は結構小さい量になっている。 $ r, z $ がどれくらいの次元なのかという情報も欲しいのだが、その情報は論文には書いてなかったように思う。実装が公開されればそれを見ればいいので、早く公開して欲しい...

実験結果をグッとまとめたものが以下。 概ね期待通り振る舞っていて確かに提案手法が優秀(Precision@k とか recall@k の $ k $ が小さいと負けるケースも散見されるが $ k $ が大きいと優秀)、ablation study によって確かにどの項も聞いてるのが分かる、という感じ。 product のデータだとそもそもナイーブに学習したケースが結構強いというのもあるが、確かに先行研究よりはよさそうだ。

他にも $ r,z $ が分離されてく様子などを可視化しているが、それはまあそうなるように学習したよねって感じ。 あとは loss の各項の振る舞いも調べてるけど、これも期待通りに振る舞っているよねというもの。

yoheikikuta commented 2 years ago

ということで一通り読んだ。 因果推論周りもうちょっと勉強したいなと思っていたところで、information bottleneck とか一度やってる概念と絡めて新しい論文が読めたのでよかった。定式化がもっと better なものがあるんじゃないかというところに疑問が残りつつ、やりたいことは割とシンプルで昨今の潜在表現全盛の時代に合わせた論文で意図は分かりやすかった。

因果推論はもうちょっと腰を据えて勉強したいね。