最近重溫了下elmo模型,主要有幾點:
1- 相比於word2vec這些多了上下文的理解。
2 - 基本單元是一個兩層的基於字符卷積的網絡.
3 - 內部狀態的組合構成新的詞彙向量表示.
4-elmo採用了雙向bi-lstm模型,利用了語言模型,從elmo公式中我們就可以看出, 向左和向右的LSTM是不同的, 也就是說有兩個 LSTM單元.
是輸入的意思. 輸入的內容是最初始的詞向量. 是輸出內容, 即LSTM在每個位置的 h. h會再用作softmax的輸入, 來進行詞彙選擇權重賦予,最原始的詞向量通過字符卷積而來,而LSTM的每一層都有自己不同的代表的意義, 因此,對於不同的任務, 每層參與表徵的權重也就不同, 因此, 爲了一般化, 該方案設置一個通用詞向量表徵法, 即 利用每層狀態的線性組,其中,s就是softmax-normalized weights , 也就是加和爲1的一組權重向量. 這組權重不僅僅代表的是權重, 因爲每層LSTM內部狀態,也就是 h 的分佈是不同的, 這個也可以用作layer normalization.而, 允許具體的task模型去放縮 ELMo 的大小. 這個地方非常重要, 作者在補充中進行了強調, 在沒有這個的情況下, 只採用該模型的最後一層輸出作爲詞向量的時候的效果甚至差於 baseline. 這個重要的原因是, BiLM的內部表徵和具體任務的表徵的分佈是不一樣的.
5-elmo的使用方法:
將該詞向量加到一般的任務的方法是, 先固定一個權重, 構成一個 , 然後聯結 和 最初始詞向量(也就是通過字符卷積獲得的向量) 爲 [ ], 然後將這個向量輸入到任務的RNN模型中去. 然後在訓練中一同訓練權重因子.