1. 語言模型
2. Attention Is All You Need(Transformer)算法原了解析
3. ELMo算法原了解析
4. OpenAI GPT算法原了解析
5. BERT算法原了解析
6. 從Encoder-Decoder(Seq2Seq)了解Attention的本質
7. Transformer-XL原理介紹
1. 前言
今天給大家介紹一篇2018年提出的論文《Deep contextualized word representations》,在這篇論文中提出了一個很重要的思想ELMo。本人認為ELMo的提出對後面的的GPT和BRET有一個很好的引導和啟發的作用。ELMo是一種是基于特征的語言模型,用預訓練好的語言模型,生成更好的特征。
2. ELMo模型介紹
ELMo是一種新型深度語境化詞表征,可對詞進行複雜特征(如句法和語義)和詞在語言語境中的變化進行模組化(即對多義詞進行模組化)。我們的詞向量是深度雙向語言模型(biLM)内部狀态的函數,在一個大型文本語料庫中預訓練而成。
說到詞向量,我們一定會聯想到word2vec,因為在它提出的詞向量概念給NLP的發展帶來了巨大的提升。而ELMo的主要做法是先訓練一個完整的語言模型,再用這個語言模型去處理需要訓練的文本,生成相應的詞向量,是以在文中一直強調ELMo的模型對同一個字在不同句子中能生成不同的詞向量。
3. ELMo原理介紹
3.1 ELMo的預訓練
前面也說過ELMo最重要的一點是就是訓練語言模型,語言模型的結構如下:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiMTZkFTZ2YGNhZTMhFjNlhzMwYmNmljMlJmZkZGZyczN9kXZLVmchh2cmQWYvxmb39GZ9Q2boRXZt9TQGVDNCJDMyMzMyUEM5cTQ1IEN0ETNwkTMykDR5UkND9CXlxWam9CXsFmbvNnclB3LclGch9CXzdXevwVbvNmLvFGZ19WeuUGdv52Lc9CX6MHc0RHaiojIsJye.jpg)
他們使用的是一個雙向的LSTM語言模型,由一個前向和一個後向語言模型構成,目标函數就是取這兩個方向語言模型的最大似然。
前向LSTM結構:
\[p(t_1,t_2,...,t_N) = \prod^N_{k=1}p(t_k|t_1,t_2,...,t_{k-1})
\]
反向LSTM結構:
\[p(t_1,t_2,...,t_N) = \prod^N_{k=1}p(t_k|t_{k+1},t_{k+2},...,t_{N})
最大似然函數:
\[\sum_{k=1}^N(logp(t_k|t_1,t_2,...,t_{k-1}) + logp(t_k|t_{k+1},t_{k+2},...,t_{N}))
3.2 使用語言模型
在預訓練好這個語言模型之後,ELMo就是根據公式來用作詞表示,其實就是把這個雙向語言模型的每一中間層進行一個求和。最簡單的也可以使用最高層的表示來作為ELMo。然後在進行有監督的NLP任務時,可以将ELMo直接當做特征拼接到具體任務模型的詞向量輸入或者是模型的最高層表示上。
4. 總結
大家有想過為什麼ELMo的效果會比word2vec的效果好?我個人認為有一下幾點:
- ELMo的假設前提一個詞的詞向量不應該是固定的,是以在一詞多意方面ELMo的效果一定比word2vec要好。
- word2vec的學習詞向量的過程是通過中心詞的上下視窗去學習,學習的範圍太小了,而ELMo在學習語言模型的時候是從整個語料庫去學習的,而後再通過語言模型生成的詞向量就相當于基于整個語料庫學習的詞向量,更加準确代表一個詞的意思。
- ELMo還有一個優勢,就是它建立語言模型的時候,可以運用非任務的超大語料庫去學習,一旦學習好了,可以平行的運用到相似問題。