userの閲覧確率を考慮したMatrix Factorization

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} で表す。

確率モデルの設計

確率モデルを下記のように設計する。(論文中の図より引用)

f:id:tepppei:20191117202921p:plain:w300

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

確率分布の仮定

各確率変数に関して下記のような分布を仮定する。

f:id:tepppei:20191117203808p:plain:w300

θu,βiには正規分布が、au,iには二項分布が仮定されている。yu,iは、閲覧されたか否かによって2種類の分布が仮定される。まず、閲覧された場合は正規分布が仮定される。一方、閲覧されなかった場合はyu,i=0のときに確率1を取るようなデルタ分布が仮定されている。これは、「閲覧されなかったらクリックは絶対に発生しない」ことを表している。

対数尤度関数の導出

yu,iau,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|θuTβi,λy1)aui+I[yui=0]1aui

以上を尤度関数の式に当てはめて対数を取ることにより、下記の対数尤度関数を得る。

f:id:tepppei:20191117205843p:plain:w400

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)

ここで、

  • a11aUIθ1θU,β1,,βI の条件付き独立であること
  • y11yUIθ1θU,β1,,βI の条件付き独立であること
  • θ1,,θU,β1,,βI が独立であること

を用いている。独立かどうかは前回記事と同様にグラフィカルモデルから判定できる。

最後に対数を取って、目的関数は以下のようになる。

maximizeθ,βΣuΣilogp(aui,yui|θu,βi)+Σulogp(θu)+Σilogp(βi)

なお、μ,λ は今回は確率変数ではなくハイパーパラメータとして扱っているため省略している。

EMアルゴリズムによる最適化

さて、上記の目的関数を最大化したいところだが、通常のMFとは異なりθu,βiだけでなくau,iも最適化対象となり、そのまま最大化するのは困難である。そこで、EMアルゴリズムを適用することを考える。

EMアルゴリズムでは、まず目的関数を a|y の条件付き期待値で置き換え、E stepとM stepを交互に繰り返すことで最適化を行う。 すなわち、目的関数は

Ea11aUI|y11yUI[Σ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|θuTβi,λy)]+Σulogp(θu)+Σilogp(βi)+C

ただし、このあと θβ偏微分するので、これに関係ない項(対数尤度の1項目と3項目)は全てCに押し込めた。

さらに Eaui|yui[auilogN(yui|θuTβi,λy)]について、期待値aui|yui に無関係な部分を外に出した上で、yuiの条件付きであることに注意すると、

logN(yui|θuTβi,λy)Eaui|yui[aui|yui]

が出てくる。この Eaui|yui[aui|yui]pui とおき、最後に目的関数をまとめると下記のようになる。

(1)ΣuΣipuilogN(yui|θuTβi,λy)+Σulogp(θu)+Σilogp(βi)+C

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のとき、

f:id:tepppei:20191120221432p:plain:w400

が得られる。

ただし、

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|θuTβi,λy)正規分布を当てはめた上でθ偏微分すると、

θΣuΣipuilogN(yui|θuTβi,λy)=Σiλypuiθ(yuiθuTβi)2==Σiλypui(yuiβi+(βiβiT)θu)

一方、式1の第二項 Σulogp(θu) も同様に偏微分すると、

θΣulogp(θu)=λθθu

となる。

以上より、式1をθ偏微分すると

θ(1)=Σiλypui(yuiβi+(βiβiT)θu)+λθθu

となって、これを0とおいた方程式を解くことで、以下の更新式を得る。

f:id:tepppei:20191120224724p:plain:w400

βの更新式も同様に得られる。終わり。

著者による実装

こちらで公開されています。

類似の研究

この論文もそうでしたが、implicit feedbackにおいては「クリックがなかった」という事象をどのように扱うかが鍵になります。この論文よりもナイーブな方法として、「クリックがなかった」を「多分興味がない」に読み替えて、弱い重み付けをしてMFを学習する論文(Collaborative Filtering for Implicit Feedback Datasets)などがあります。

参考文献

論文中ではEMアルゴリズムによる更新式だけがいきなり出てきていたので、事後確率から出発して更新式を導くために下記の書籍・記事を参考にしました。