具有注意力机制的 FM模型(Attentional Factorization Machines)

Jun Xiao等提出了一种具有注意力机制的 FM模型,Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks。简单地说,注意力机制的 FM 模型通过引入注意力网络(neural attention network)学习到特征交叉的权重。

1. Factorization Machines

FM 模型引入了任意两特征的交叉作用。设$x\in R^n$,则 math \hat{y}_{FM}(x)=\omega_0+ \sum_{i=1}^n \omega_ix_i+\sum_{i=1}^n \sum_{j=i+1}^n \hat{\omega}_{ij}x_ix_j 这里$ \hat{\omega}_{ij}$表示两交叉特征$x_ix_j$的权重,而$ \hat{\omega}_{ij}$又可以分解为$ \hat{\omega}_{ij}=v_i^Tv_j$,这里$v_i \in R^k$表示特征$i$的嵌入向量(embedding vector)。注意到这里的问题:$v_i$在做特征交叉时是共享的,且所有的特征交叉$ \hat{\omega}_{ij}$前的权重是一样的,都为1。

作者举了一个例子,在句子"US continues taking a leading role on foreign payment transparency"中,除了"foreign payment transparency",其它句子明显与财经新闻无关,它们之间的交叉作用可认为对主题预测是一种噪音。

为了在交叉作用前学习到不同的权重,作者引入了注意力机制。

2. 注意力机制

下图说明AFM模型的架构。

image.png FM模型中的两两交叉层可以表示为 math f_{PI}(\varepsilon)=\{ (v_i \odot v_j)x_ix_j \}_{(i,j) \in R_x} 这里$\odot $表示 element-wise product。然后通过全连接层映射至目标,有 math \hat{y}=p^T \sum_{(i,j) \in R_x} (v_i \odot v_j)x_ix_j +b 在上式的两两交叉的前面,引入权重的话,即在 FM的两两交叉层增加 Attention-based Pooling Layer,则变为下式: math f_{Att}(f_{PI}(\varepsilon))= \sum_{(i,j) \in R_x} a_{ij}(v_i \odot v_j)x_ix_j +b 这里$a_{ij}$是特征交叉$ \hat{\omega}_{ij}$ 的注意力分(attention score),以说明$ \hat{\omega}_{ij}$的重要程度。

下面是训练$a_{ij}$ 了。一种直接的做法是通过最小化损失函数而训练得到,但是在样本中,如果两个做交叉的两特征并不一起出现,训练就不容易了。为此,作者引入了多层感知机(multi-layer perceptron)来做训练。

Attention network 可定义为 math a_{ij}'=h^TReLU(W(v_i \odot v_j)x_ix_j+b) math a_{ij}=\frac{exp(a_{ij}')}{\sum_{(i,j) \in R_x}exp(a_{ij}')} 那么最后 AFM 模型可表示为 math \hat{y}_{AFM}(x)=\omega_0+ \sum_{i=1}^n \omega_ix_i+p^T\sum_{i=1}^n \sum_{j=i+1}^n a_{ij}(v_i \odot v_j)x_ix_j 为了训练这个AFM模型,在平方误差中引入正则项,则损失函数可表示为 math L=\sum{(\hat{y}_{AFM}(x)-y(x))^2+\lambda ||\omega||^2}

3.关于注意力机制的参考文章