Learning Attention for Online Advertising with RNN思路整理
这篇论文调查了循环神经网络在搜索广告中的应用。
主要进行了两方面的工作:
1. 建立基于attention和RNN的模型;
通过RNN将query与ad皆映射到实值向量上,由此对于一个给定的query和ad对之间的匹配程度就可以计算出来。
整个搭建的网络主要由两部分组成,第一部分是RNN网络,第二部分是attention网络,用于给query(或ad)中的不同位置的单词根据它们自身在句中的重要度给出相对应的attention scores。由此每一个query(或ad)的表达便可以通过对其RNN隐层状态根据权重的求和来获得,其中的权重就是attention scores。
2. 探讨attention scores在查询重写和改进的BM25矩阵中的应用。
对于整体而言,我们是从输入经RNN网络和注意力网络到输出进行的端到端训练。
一、具体流程:
由图示可以看出,query和ad的训练过程是对称的,因此暂以query为例进行说明。
1.Input layer
对于一个query,首先进入输入层进行处理。对query中的每个单词皆进行one-hot编码,可以得到每个单词的向量表达 ,其中V代表词汇量空间的大小。通常情况下,一个query往往由多个单词组合而成,因此我们将一个query表示成 ,其中T代表该query中的单词个数。
2.Word Embedding Layer(词向量层)
在词向量层中,借助线性映射将经过one-hot编码的稀疏高维向量进行降维,变为密集低维向量,该过程可以表示为:
经过该过程之后,可以将维度由原来的V(百万数量级)降为 (百数量级)。
3.RNN Layer
经过词向量层后得到 ,将其输入RNN层。当前的隐层状态依靠之前的隐层状态和当前的输入 求得。可以表示为:
对于最简单的循环神经网络,有: ,其中是激活函数,常用的激活函数有sigmoid,tanh和ReLU。
但是对于上述的简单的循环神经网络,在相关信息与当前预测位置之间的间隔大到一定程度之后,就丧失了学习到连接如此远信息的能力,即无法解决长期依赖问题,容易发生梯度消失和梯度爆炸。为了解决这些问题,引入“门”结构:
其中首先是通过forgetgate决定从细胞状态中丢弃什么信息;之后通过input gate和 来共同决定何种新信息被存放在细胞状态中,其中input gate决定什么值需要更新;最终输出 ,其中output gate决定将细胞状态的哪些部分输出。在LSTM中,所有的皆代表sigmoid函数。在LSTM中引入forget gate, input gate, output gate来控制细胞状态和隐层状态的动态更新。因此通过LSTM可以记住长期信息而且不需要花费很大代价。
除了LSTM之外,还有双向RNN网络。通过建立两个RNN网络分别从正向和反向接收一个序列。因此最终的 也是由前向和后向的两种隐层状态联系起来构成。BRNN通过打破时间顺序上的不对称性,更均衡的利用了每一步的上下文环境。
由于循环神经网络中隐层状态的循环更新, 将整个序列的环境都考虑在内。因此相较于 , 能够更好的刻画第t个单词位置的语义。
4.Attention Based Pooling
首先对上图进行一个简单的解读,注意区分图中不同颜色的箭头所指向的方向。其中attention net的输入时由双向RNN所产生的隐层状态 产生(如上图蓝线所示),attention net的输出就是 (如上图红线所示)。之后这两部分结合(如上图中黑线所示)共同产生h。
RNN的输出是一个向量组成的序列: ,为了更加便于构建损失函数以方便参数的训练,我们希望能将这个向量序列压缩成一个单独的向量。这个过程需要通过池化来完成。通过对比最后池化,均值池化和最大值池化,发现它们中存在着长期依赖、无法区分句中单词主次重要性的等问题,因此提出了基于文本注意力的池化方式。该方式如下所示:
对于一个query而言,h相当于是获得了关于该query的一个表达。
其中, 就是之前所提到的注意力网络,通过该网络将一个向量映射为一个实值。 就是之前所提到的注意力,代表整个序列中第t个相关时间步长 的重要程度。
根据上述公式我们可以看出,注意力池化使得模型能够更加关注序列中更重要的单词。而这个功能的实现依赖于两个方面:首先是 需要能够准确的表达序列中第t个单词,这一点通过之前所说的RNN网络来实现。其次是注意力网络 必须有足够的容量以区分重要和不重要的单词。若是采用简单的线性函数无法完成该功能,因为词汇量空间过于庞大。因此,通常采用另一个神经网络来实现,该网络的参数与深层RNN网络的参数一同训练获得。
同时值的注意的一点是,在单向RNN网络中,由于 的获得与其之前状态 有关,因此用来作为的权重是存在漏洞的。因此采用双向神经网络更为准确。
结合以上两图可得,经过基于注意力的池化之后,我们分别获得了关于query的表达向量和关于ad的表达向量。
5. Loss Function
根据之前获得的 和 ,建立损失函数如下所示:
其中,代表训练数据中所有的query和对应点击过的广告,代表训练数据中对应query下未被点击的广告。在训练数据中,对于每一个query而言,可能会对应多个点击和未点击过的广告。
通过梯度下降最小化损失函数进行模型的训练,获得相应的参数。
二、拓展应用
在Attention Based Pooling中,可以通过求得每个单词相对应的attention score。关于attention score的应用主要有两个方面:一是应用于查询重写,将query(或ad)中attention score高的单词抽取出来构成一个subquery作为新的query;二是修正的BM25矩阵。
1. 查询重写:
搜索引擎的检索结果页下方一般会提示多个相似的搜索关键词,这些词可以被看要做查询的query的rewriting。在此我们仅考虑从原来的query中抽取一定数量的单词组成subquery,而不考虑近义词等情况。
2. Modified BM25 withAttention:
BM25算法,通常用来搜索相关性评分。其主要思想是:对query进行语素解析,生成语素;然后对于每个搜索结果d,计算每个语素 与d的相关性得分。最后,将 相对于d的相关性得分进行加权求和从而得到query与d的相关性得分。将其表示如下:
其中代表判断一个词语一个文档的相关性的权重,常用IDF方法进行计算。代表query中的某第i个单词在文档中的出现频率,|d| 是文档d的长度,avgdl 是语料库中的文档平均长度。
attention scores可以用来计算非均匀的,根据有代表性的词的频率。越重要的词有着越高的出现频率。依据这一点,我们对 进行一定程度的修改:
利用attention scores作为权重 ,对单词出现的频率进行修改。同时增加参数来权衡基于attention的单词频率和原始统一的单词频率(eg: value=1)之间的关系。由验证集决定,表明了attention对BM25模型的影响。
参考文献:
[1] Shuangfei Zhai, Keng-hao Chang and Ruofei Zhang. DeepIntent: Learning Attentions for Online Advertising with Recurrent Neural Networks.
[2] Colah. Understanding LSTM Networks. http://colah.github.io/posts/2015-08-Understanding-LSTMs/