目录
概
BERT 用在序列推荐之上. 其实, 从序列角度, 之前 NLP 用过的 RNN, Transformer 似乎都可以套用在序列推荐之上, 但是总有一种感觉, 它们的效果并不是那么好 (真的是纯纯的主观感觉).
基本框架
-
给定用户 \(u\) 的过去的历史纪录 \(\mathcal{S}_u = [v_1, \cdots, v_t, \cdots, v_n]\), 将其中的部分替换成 [mask] token, 训练的目标就是用左右的信息来预测中间的 mask;
-
通过 embedding layer 获得各 token 的 embedding, 需要注意的是, 虽然这里也加入了 positional 信息, 但是不是通过固定的 sinusoid embeddings 得到, 而是直接学习的, 所以这里会有一个问题, 就是输入的序列长度是受到限制的;
-
通过一系列的 attention 得到每个 token 的表征;
-
再通过两层的变换得到最后的输出:
\[P(v) = \text{softmax}(\text{GELU}(\bm{h}_t^L \bm{W}^P + \bm{b}^P)\bm{E}^T + \bm{b}^O); \] -
通过如下的损失进行训练:
\[\mathcal{L} = \frac{1}{|\mathcal{S}_u^m|} \sum_{v_m \in \mathcal{S}_u^m} -\log P(v_m = v_m^*| \mathcal{S}_u'). \]