目录
概
本文希望更好地利用时间信息, 主要是在 short-/long-interest 上地研究, 对于时间信息的利用感觉很一般.
符号说明
- \(\mathcal{U}\), users;
- \(\mathcal{V}\), items;
- \(S_{ui} = (v_1, v_2, \ldots, v_L)\), 用户 \(u\) 的第 \(i\) 个交互序列;
- \(C_{ui} = (\mathbf{c}, \mathbf{c}_2, \ldots, \mathbf{c}_L)\), 与之相对应的 contextual 信息, 作者假设这些信息是和时间强相关的.
MOJITO
-
MOJITO 其实和普通的 Transformer 没有什么太大的区别, 多了一些小改进.
-
Embedding Layer: 对于 item 和 context 通过普通的 embedding layer 可以得到 \([\mathbf{m}_v^I; \mathbf{m}_c^C]\), 于是整个序列的 embeddings 为:
\[\mathbf{E}_{S_{ui}, C_{ui}} = [[\mathbf{m}_{v_1}^I; \mathbf{m}_{\mathbf{c}_1}^C], \ldots, [\mathbf{m}_{v_L}^I; \mathbf{m}_{\mathbf{c}_L}^C]] \in \mathbb{R}^{L \times 2d}. \] -
然后为他们添加上普通的可学习的位置编码:
\[\mathbf{P} = [\mathbf{p}_1, \ldots, \mathbf{p}_L]^T \in \mathbb{R}^{L \times 2d}. \]得到最终的输入的矩阵:
\[\mathbf{X}^{(0)} = [\mathbf{x}_1^{(0)}, \ldots, \mathbf{x}_L^{(0)}] \in \mathbb{R}^{L \times 2d}, \]其中
\[\mathbf{x}_l^{(0)} = [\mathbf{m}_{v_l}^I; \mathbf{m}_{\mathbf{c}_l}^C] + \mathbf{p}_l. \] -
Short-term: 这部分的计算和一般的 Transformer 的模块没有太大的区别 (主要由 attention layer 和 feed-forward layer 构成), 稍微特别之处在于 attention 矩阵的计算:
\[\mathbf{A}_{j} \sim \sum_{k \in \{it, c\}} p_{kj} \mathcal{N}(\mathbf{A}; \mathbf{Q}_k \mathbf{K}_k^T, \sigma_k^2), \sum_{k \in \{it, c\}} p_{kj} = 1, p_{kj} \ge 0, \]其中 \(\mathbf{Q}_k = \mathbf{X}_k \mathbf{W}_Q^k, \mathbf{K}_k = \mathbf{X}_k \mathbf{W}_k^k\). 即最终的 attenton 是从基于 item 序列和 context 序列的 attention 矩阵的高斯混合分布中的一个采样.
-
注: \(\sigma_k^2\) 作者是明确说明是科学日系的, \(p_{kj}\) 不知是否也是可学习的.
-
Long-term: MOJITO 认为长期兴趣是很重要的一个环节, 故而它会从用户的整个历史交互中采样 \(N\) 个 items \(\mathcal{F} = \{f_1, \ldots, f_N\}\) (注意, 一个 user 这里会有多个交互序列, 所以和短期兴趣建模不同, 这里会用上所有的交互序列). 然后
\[\tilde{\mathbf{m}}_u (v) = \mathbf{m}_u + \sum_{f \in \mathcal{F} \setminus \{v\}} \frac{e^{\mathbf{m}_f^T \mathbf{m}_v}}{\sum_{f' \in \mathcal{F} \setminus \{v\}} e^{\mathbf{m}_{f'}^T \mathbf{m}_v}} \mathbf{m}_f \in \mathbb{R}^d. \]
代码
[official]
标签:mathbf,Attention,Aware,MOJITO,ui,Recommendation,序列,mathcal,ldots From: https://www.cnblogs.com/MTandHJ/p/17707865.html