InteractionNN 论文简读
前言 (与主题无关, 可以忽略~)
准备在博客新开一个目录, 名为 “论文阅读”, 讨论那些粗读的论文, 证明我曾经读过… 🤣 🤣 🤣
广而告之
可以在微信中搜索 “珍妮的算法之路” 或者 “world4458” 关注我的微信公众号;另外可以看看知乎专栏 PoorMemory-机器学习, 以后文章也会发在知乎专栏中;
文章信息
主要内容
介绍了 InteractionNN 网络:
由三个部分组成:
- Embedding Layer
- Nonlinear Interaction Pooling (NI pooling)
- Layer-lossing Layer
其中 NI Pooling 的结构如下:
图中的 Column Sum
表示对一个矩阵按列求和, 比如将
[ a c b d ] ⇒ [ a + b c + d ] \left[ \begin{matrix} a & c \\ b & d \end{matrix} \right] \Rightarrow \left[ \begin{matrix} a + b & c + d \end{matrix} \right] [abcd]⇒[a+bc+d]
另外 Ha-Pro
表示哈达玛积 (Hadamard Product), 比如对一个矩阵做 Ha-Pro
, 结果是:
[ a c b d ] ⇒ [ a 2 c 2 b 2 d 2 ] \left[ \begin{matrix} a & c \\ b & d \end{matrix} \right] \Rightarrow \left[ \begin{matrix} a^2 & c^2 \\ b^2 & d^2 \end{matrix} \right] [abcd]⇒[a2b2c2d2]
NI Pooling 的结果是: (假设输入是矩阵 M M M)
2 ∑ i , k = 1 , i ≠ k n ( M i j ⋅ M k j ) 2 \sum_{i, k=1, i \neq k}^{n}\left(M_{i j} \cdot M_{k j}\right) 2i,k=1,i=k∑n(Mij⋅Mkj)
疑问: 我觉得这里的操作和 NFM 中的 Bi-Interaction Pooling Layer 的操作基本上是一样的… 除了前面的系数不同, 这里是 2, 而 NFM 中是 0.5, 不知我是否理解正确了…
Layer-lossing Layer 的结构是:
图中的 BAD unit
是 Batch Normalization. Y
这个模块是用来计算 Loss 的, 即各个隐藏层输出的特征会分别经过一个 Linear Model
, 输出结果后和 label
计算 Loss, 最后将所有的 Loss 累加起来.
整个模型的 Loss 定义为:
L = ∑ x ∈ D ( y ˉ ( x ) − y ( x ) ) 2 + ∑ i = 1 L ∑ x ∈ D ( h i ( x ) − y ) 2 \mathcal{L}=\sum_{x \in D}(\bar{y}(x)-y(x))^{2}+\sum_{i=1}^{L} \sum_{x \in D}\left(h_{i}(x)-y\right)^{2} L=x∈D∑(yˉ(x)−y(x))2+i=1∑Lx∈D∑(hi(x)−y)2
使用平方 Loss, 其中 L L L 是隐藏层的个数. 加号左边是用模型输出层的结果来计算的 Loss, 加号右边是隐藏层的 Loss 之和.