Modeling User Exposure in Recommendation [Liang et al., WWW2016] を読んだので、今回も行間を補いつつ、主にアルゴリズムの導出部分をブログにしました。
論文の一言要約
「itemが閲覧されたかどうか」(言い換えると、ユーザーの目に入ったかどうか)を表す確率変数をMatrix Factorizationに導入した。これによって、例えば「このユーザーに興味がありそうなのにクリックされていないアイテムは、まだユーザーの目に入っていない確率が高い」などを考慮したモデルの構築が期待できる。
この記事のゴール
この論文の提案手法である「exposure MF」の更新式を導出する。
表記
user u=1,⋯,U に item i=1,⋯,I を推薦する問題を考える。user uがitem iをクリックしたかどうかを U×I行列 Y={yu,i} で表す。
確率モデルの設計
確率モデルを下記のように設計する。(論文中の図より引用)

ここで、au,iはuser uがitem iを閲覧したかどうかを表現するための確率変数である。yu,iの値は全て観測されている一方、au,iは対応するyu,iの値が1であればau,i=1となり、yu,iの値が0であれば観測されない。言い換えれば、「クリックが発生したならば閲覧したと言えるが、クリックが発生していなかったら閲覧したかどうかわからない」ことを表している。(したがってau,iは一部だけ観測されていることになるので、上記のグラフィカルモデルではノードの色が若干薄くなって表現されている。)
確率分布の仮定
各確率変数に関して下記のような分布を仮定する。

θu,βiには正規分布が、au,iには二項分布が仮定されている。yu,iは、閲覧されたか否かによって2種類の分布が仮定される。まず、閲覧された場合は正規分布が仮定される。一方、閲覧されなかった場合はyu,i=0のときに確率1を取るようなデルタ分布が仮定されている。これは、「閲覧されなかったらクリックは絶対に発生しない」ことを表している。
対数尤度関数の導出
yu,iとau,i(の一部)がデータとして観測された場合に、最適なθu,βiを求めたい。まず、尤度関数は以下のように表せる。
p(aui,yui|μui,θu,βi,λy)=p(aui|μui,θu,βi,λy)×p(yui|aui,μui,θu,βi,λy)
ここで、p(aui|μui,θu,βi,λy) に関しては仮定した正規分布をそのまま当てはめることができる。一方 p(yui|aui,μui,θu,βi,λy)はauiが0のときと1のときで分布が異なる。これを同時に表すと以下のようになる。
p(yui|aui,μui,θu,βi,λy)=N(yui|θTuβi,λ−1y)aui+I[yui=0]1−aui
以上を尤度関数の式に当てはめて対数を取ることにより、下記の対数尤度関数を得る。

MAP推定のための目的関数を書き下す
さて、最適なθu,βiをMAP推定により求めることを考える。最大化したい事後確率は、
p(θ1,⋯,θU,β1,⋯,βI|a11,⋯,aUI,y11,⋯,yUI)
であり、
さらにMAP推定においてよくある変形
p(θ1,⋯,θU,β1,⋯,βI|a11,⋯,aUI,y11,⋯,yUI)∝p(a11,⋯,aUI,y11,⋯,yUI|θ1,⋯,θU,β1,⋯,βI)p(θ1,⋯,θU,β1,⋯,βI)
を用いて、最大化対象の関数を次のように書き直せる。
maximizeθ,βp(a11,⋯,aUI,y11,⋯,yUI|θ1,⋯,θU,β1,⋯,βI)p(θ1,⋯,θU,β1,⋯,βI)=ΠuΠip(aui,yui|θu,βi)⋅Πup(θu)⋅Πip(βi)
ここで、
- a11⋯aUI が θ1⋯θU,β1,⋯,βI の条件付き独立であること
- y11⋯yUI が θ1⋯θU,β1,⋯,βI の条件付き独立であること
- θ1,⋯,θU,β1,⋯,βI が独立であること
を用いている。独立かどうかは前回記事と同様にグラフィカルモデルから判定できる。
最後に対数を取って、目的関数は以下のようになる。
maximizeθ,βΣuΣilogp(aui,yui|θu,βi)+Σulogp(θu)+Σilogp(βi)
なお、μ,λ は今回は確率変数ではなくハイパーパラメータとして扱っているため省略している。
さて、上記の目的関数を最大化したいところだが、通常のMFとは異なりθu,βiだけでなくau,iも最適化対象となり、そのまま最大化するのは困難である。そこで、EMアルゴリズムを適用することを考える。
EMアルゴリズムでは、まず目的関数を a|y の条件付き期待値で置き換え、E stepとM stepを交互に繰り返すことで最適化を行う。
すなわち、目的関数は
Ea11⋯aUI|y11⋯yUI[ΣuΣilogp(aui,yui|θu,βi)+Σulogp(θu)+Σilogp(βi)]
であり、期待値の加法性を用いて
ΣuΣiEaui|yui[logp(aui,yui|θu,βi)]+Σulogp(θu)+Σilogp(βi)
と表せる。次に p(aui,yui|θu,βi) に上で求めた対数尤度を代入して、
ΣuΣiEaui|yui[auilogN(yui|θTuβi,λy)]+Σulogp(θu)+Σilogp(βi)+C
ただし、このあと θやβで偏微分するので、これに関係ない項(対数尤度の1項目と3項目)は全てCに押し込めた。
さらに Eaui|yui[auilogN(yui|θTuβi,λy)]について、期待値aui|yui に無関係な部分を外に出した上で、yuiの条件付きであることに注意すると、
logN(yui|θTuβi,λy)Eaui|yui[aui|yui]
が出てくる。この Eaui|yui[aui|yui] をpui とおき、最後に目的関数をまとめると下記のようになる。
ΣuΣipuilogN(yui|θTuβi,λy)+Σulogp(θu)+Σilogp(βi)+C(1)
Eステップ
Eステップでは、式1のpuiを求める。これはyuiの値によって場合分けが必要になる。
(i) yui=1 のとき
aui=1 となるので、期待値を取っても当然 pui=1 である。
(ii) yui=0 のとき
期待値をさらに書き下すと、
E[aui|yui]=Σaui=0,1auip(aui|yui)=0×p(aui=0|yui)+1×p(aui=1|yui)=p(aui=1|yui)
さらに、
p(aui|yui)=p(aui,yui)p(aui)=p(aui)p(yui|aui)Σauip(aui)p(yui|aui)=p(aui)p(yui|aui)p(aui=0p(yui|aui=0)+p(aui=1)p(yui|aui=1)
であるので、aui=1,yui=0のとき、

が得られる。
ただし、
p(aui=1)=μui
p(aui=0)=1−μui
p(yui=0|aui=1)=N(0)
p(yui=0|aui=0)=1
を用いた。
Mステップ
Mステップでは、puiが分かっているという前提のもと、式1をθおよびβで偏微分し、更新式を得る。θとβは対照なので、以下ではθの更新式のみ導くことにする。
まず、式1の第一項 ΣuΣipuilogN(yui|θTuβi,λy)に正規分布を当てはめた上でθで偏微分すると、
∂∂θΣuΣipuilogN(yui|θTuβi,λy)=Σiλypui∂∂θ(yui−θTuβi)2=⋯=Σiλypui(−yuiβi+(βiβTi)θu)
一方、式1の第二項 Σulogp(θu) も同様に偏微分すると、
∂∂θΣulogp(θu)=λθθu
となる。
以上より、式1をθで偏微分すると
∂∂θ(式1)=Σiλypui(−yuiβi+(βiβTi)θu)+λθθu
となって、これを0とおいた方程式を解くことで、以下の更新式を得る。

βの更新式も同様に得られる。終わり。
著者による実装
こちらで公開されています。
類似の研究
この論文もそうでしたが、implicit feedbackにおいては「クリックがなかった」という事象をどのように扱うかが鍵になります。この論文よりもナイーブな方法として、「クリックがなかった」を「多分興味がない」に読み替えて、弱い重み付けをしてMFを学習する論文(Collaborative Filtering for Implicit Feedback Datasets)などがあります。
参考文献
論文中ではEMアルゴリズムによる更新式だけがいきなり出てきていたので、事後確率から出発して更新式を導くために下記の書籍・記事を参考にしました。