論文原文:The Fixed-Size Ordinally-Forgetting Encoding Method for Neural Network Language Models 引言
這篇文章提出了一種學習不定長序列表示的方法,並將該方法用於前反饋神經網路的語言模型(feedforward neural network language models, FNN-LMs),得到了不錯的實驗資料。作者通過用FOFE編碼的序列替換FNN-LMs中原有的輸入層實現了對FNN語言模型的改進。 Fixed-size Ordinally Forgetting Encoding
給定詞表大小(vocabulary size)為K,FOFE使用one-hot編碼來表示,每一個單詞,即一個K維向量來表示單詞。FOFE使用下列公式對不定長序列進行編碼:
zt=α∗zt−1+et(1≤t≤T) z_t=\alpha*z_{t-1}+e_t (1\leq t\leq T)
其中, zt z_t表示從輸入序列中由第一個單詞 w1 w_1直到第t個單詞 wt w_t組成的子序列的FOFE編碼(假設 z0=0 z_0=0), α \alpha是forgeting factor(常數), et e_t是單詞 wt w_t對應的one-hot向量。
那麼, zT z_T就可以看作是對序列 w1,w2,...,wT {w_1, w_2, ..., w_T}的一種向量表示。
舉例來說,如果詞表為
A=[1,0,0]
B=[0,1,0]
C=[0,0,1]
那麼,通過計算可以得到
ABC=[α2,α,1] {ABC}=[\alpha^2, \alpha, 1]
ABCBC=[α4,α+α3,1+α2] {ABCBC}=[\alpha^4, \alpha+\alpha^3, 1+\alpha^2]
FOFE編碼有2個比較好的性質:
1. 如果0<α≤0.5,那麼FOFE對任意K和T都是唯一的。
2. 如果0.5<α<1,那麼FOFE對於大多數K和T都是唯一的,只有有限個α的取值是例外。 模型
傳統的神經機率語言模型(Bengio提出的)在輸入層用的是one-hot向量,然後通過詞向量矩陣映射成一個低維的實值向量(如果是n-gram模型,詞向量維度為m,那麼就將前n-1個單詞對應的詞向量首尾相連成一個m(n-1)維的向量),然後通過隱藏層的計算,在輸出層形成輸出。
在這篇文章中,作者的做的改動在輸入層。作者將原本輸出層的one-hot向量替換成了FOFE編碼。使用FOFE編碼前n-1個單詞的過程中,會漸漸弱化出現較早的單詞對最終編碼的影響,這也就是說,作者認為距離目標詞越近的單詞已接近對目標詞的影響更大。並且,使用FOFE編碼可以減小在投影層的產生的向量的維度,如果是1階的FOFE FNN-LMs,那麼投影層的維度就是m(詞向量的維度),但是這不會降低複雜度。 實驗
作者在2個資料集進行了對比實驗。
1. the Penn Treebank(PTB) corpus(約有1000000單詞,詞表大小為10000)
2. The Large Text Compression Benchmark(LTCB),在這個資料集作者使用了enwik9資料集,是enwiki-20060303-pages-articles.xml的頭 109 10^9位元組資料,其中訓練集153M, 驗證集8.9M, 測試集8.9M, 詞表大小為80000,不在詞表中的單詞用< UNK >標記。
通常評價一個語言模型的好壞使用的指標是迷惑度/困惑度/混亂度(preplexity),其基本思想是給測試集的句子賦予較高機率值的語言模型較好,當語言模型訓練完之後,測試集中的句子都是正常的句子,那麼訓練好的模型就是在測試集上的機率越高越好,具體公式如下:
PP