推薦システムは強化学習でやってく. マルコフ決定過程モデルで定式化する.
あるユーザーの履歴として列
\[H = \{ (A_i, a_i, r_i) \mid i = 0,1,\ldots,t-1 \}\]がある. ただしここで \(A_i\) というのは時刻 \(i\) にユーザーに提示したレコメンド結果. \(a_i\) はユーザーの反応. \(r_i\) はその反応に対する報酬. ただし反応が得られな方ときは \(r_i=0\) とする.
\(a_i \in A_i\) ならレコメンドが正しかったけど, そうでないならレコメンドにとって未知のアクションになる.
適当なニューラルネットでモデルを組むと次のようになる. アイテム \(a\) についての表現ベクトル \(v_a\) を作っておく. 適当な RNN で \(u_t = \mathrm{RNN}_\theta(H)\) を作って, この内積で
\[\pi_\theta(a \mid s_t) = \frac{ \exp( u_t \cdot v_a ) }{ \sum_v \exp(u_t \cdot v)}\]とする (softmax).
減衰付きの報酬累積和
\[R_t = \mathbb 1_{( r(s,a) > 0 )} \sum_i \gamma^{t-i} r(s_i, a_i)\]この期待値を最大化する
\[\max_{\theta} J(\pi_\theta) = \mathbb E_{s,a} [R_t]\]ように \(\theta\) を更新するのが目的.
状態 \(s\) 時点での多様性はエントロピー
\[H(\pi_\theta( \cdot \mid s))\]で表現される. これを正則化として,
\[\max_\theta J(\pi_\theta) + \alpha H(\pi_\theta)\]の最大化にする. \(\alpha\) はブレンド比.
エントロピーは定義を展開して
\[H(\pi_\theta( \cdot \mid s)) = - \sum_a \pi_\theta(a \mid s) \log \pi_\theta(a \mid s)\]になる. エントロピーは一様分布 \(U\) との KL ダイバージェンスとしても計算できる.
\[H(\pi_\theta( \cdot \mid s)) = - \mathrm{KL} ( \pi( \cdot \mid s) \| U )\]ユーザーのアクション \(a_t\) がその時点の状態 \(s_t\) から見て未知なものなら, 報酬を \(c\) 倍 ( \(c>1\) ) する.
未知かどうかはトピッククラスタリングなどしておいてアドホックに判定する?
履歴を \((A_i, a_i, r_i)\) の列で表現していた. ここにそのアクションが新規的なものであるかどうかのフラグ \(i \in {0,1}\) を付け足す. (添字の記号と被ってしまって申し訳ないが別物と見てもらって)
\[H = \{ (A_i,a_i,r_i, i_i) \}\]と表現し直す.
計算式はすべて省略
Accuracy は基本全部下がる. それ以外が上がったりする. エントロピー正則化は多様性と新規性を上げる. Serendipity は基本全部下がる い内発的動機づけと Actionable Representation は多様性はあんまり変わらず Serendipity があがる.