原文鏈接
數據集
模型
第一個任務:生成輸出
輸入句子長度爲M,輸出句子長度爲N,損失函數如下:
mathy∈Yargmaxs(x,y)=mi∈[1,M]argmaxs(x,x[m1,⋯,mN])
其中,s(x,y)表示的是一次標題壓縮的得分,s(x,y)=log(y∣x;θ).所以目標函數可以被重新寫成
mathlogp(y∣x;θ)=n=1∑NlogP(yn∣x,y<n;θ)
即給定輸入x
,輸出N
個詞,的概率最大、$\theta
就是模型學習得到的參數。
考慮到RNN及LSTM的不足,引入了attention
機制。與原來的注意力機制不同的是,這裏我們不在將整個輸入句子編碼到固定長度的向量,而是在解碼的每一次generation
時,對部分輸入做attention
。所以上式被改寫爲:
mathP(yn∣x,y<n;θ)=g(yn−1,sn,cn,θ)
其中$g(·)$
是一個非線性函數。$s_{n}$
是第n
個目標輸出詞的隱狀態值,用下式來進行計算
mathsn=f(sn−1,yn−1,cn,θ)
其中cn是context向量,計算方式如下
mathcn=m=1∑MA(θ)n,mhm
其中A(θ)就是attention
矩陣,A(θ)n,m表示的是輸入句子的第m個詞,對輸出句子第n個詞的貢獻度,計算方式如下
A(θ)n,m=∑m′=1Mexp(a(sn−1,hm′,θ))exp(a(sn−1,hm,θ))
針對一個元素anm,就是
mathanm=vTtanh(W1sn−1+W2hm)
其中v,W1和W2都是模型學到的參數。
Point network模型
傳統的seq2seq模型不能用於標題壓縮任務,因爲輸出是從輸入中選出來的詞組成的。使用Pointer Network
的話,不會隱狀態hm混淆進去,而直接使用anm作爲輸入的pointer
第二個任務是生成搜索query
可以看做是一個NMT
的過程,將商家的語言映射到用戶搜索的語音。
原始標題和用戶搜索,對構建注意力矩陣很重要。
將兩個任務合併
agreement-based learning
。兩個網絡