05.序列模型 W2.自然语言处理与词嵌入
文章目錄
- 1. 詞匯表征
- 2. 使用詞嵌入
- 3. 詞嵌入的特性
- 4. 嵌入矩陣
- 5. 學習詞嵌入
- 6. Word2Vec
- 7. 負采樣
- 8. GloVe 詞向量
- 9. 情感分類
- 10. 詞嵌入除偏
- 作業
參考:
吳恩達視頻課
深度學習筆記
自然語言處理與詞嵌入
Natural Language Processing and Word Embeddings
1. 詞匯表征
詞嵌入(word embeddings),這是語言表示的一種方式,可以讓算法自動的理解一些類似的詞,比如 男人對女人,比如 國王對王后
one-hot 向量來表示詞,缺點:它把每個詞孤立起來,算法對相關詞的泛化能力不強(每兩個詞之間的向量內積都是0)
2. 使用詞嵌入
用詞嵌入做遷移學習的步驟:
從大量的文本集中學習詞嵌入。或者下載網上預訓練好的詞嵌入模型
用詞嵌入模型把它遷移到你的新的只有少量標注訓練集的任務中
例如,用這個300維的詞嵌入來表示你的單詞,代替原來的10000維的one-hot向量
新的任務訓練模型時,你可以選擇要不要繼續微調,用新的數據調整詞嵌入。實際中,只有第二步中有很大的數據集你才會這樣做,如果數據集不是很大,通常不會在微調詞嵌入上費力氣(你的數據很小,微調詞嵌入,效果也不明顯)
詞嵌入 在語言模型、機器翻譯領域用的少一些,因為這些任務你有大量的數據(可用于訓練,不必使用遷移)
人臉識別中的人臉Encoding算法,未來可能涉及到海量的人臉照片
而自然語言處理 有一個固定的詞匯表 embedding,而像一些沒有出現過的單詞我們就記為 未知單詞UNK
總結:
用詞嵌入來實現遷移學習,拋棄原來的one-hot表示,而是用之前的嵌入的向量,你的算法會泛化的更好,你也可以從較少的標記數據中進行學習
3. 詞嵌入的特性
找到一個單詞 w:argmax?Similarity?(ew,eking??eman?+ewoman?)w : \operatorname{argmax} \operatorname{Similarity}\left(e_{w}, e_{\text {king }}-e_{\operatorname{man}}+e_{\text {woman }}\right)w:argmaxSimilarity(ew?,eking???eman?+ewoman??)
通過這種方法來做類比推理準確率大概只有30%~75%
還有余弦相似度(夾角):
sim?(u,v)=cos(θ)=uTv∣u∣∣2∣∣v∣∣2\operatorname{sim}(u, v)= cos(\theta) = \frac{u^{T} v}{\left.|u|\right|_{2}|| v||_{2}}sim(u,v)=cos(θ)=∣u∣∣2?∣∣v∣∣2?uTv?
4. 嵌入矩陣
我們的目標是學習一個嵌入矩陣。
我們將隨機地初始化矩陣,然后使用梯度下降法來學習這個300×10000的矩陣中的各個參數,然后取出你需要的列
5. 學習詞嵌入
如果想建立一個語言模型,用目標詞的前幾個單詞作為上下文是常見做法
如果你的目標是學習詞嵌入,那么你就可以用這些其他類型的上下文(下圖所示),也能得到很好的詞嵌入
6. Word2Vec
p(t∣c)=eθtTec∑j=110,000eθjTecp(t \mid c)=\frac{e^{\theta_{t}^{T} e_{c}}}{\sum_{j=1}^{10,000} e^{\theta_{j}^{T} e_{c}}}p(t∣c)=∑j=110,000?eθjT?ec?eθtT?ec??
L(y^,y)=?∑i=110,000yilog?y^iL(\hat{y}, y)=-\sum_{i=1}^{10,000} y_{i} \log \hat{y}_{i}L(y^?,y)=?i=1∑10,000?yi?logy^?i?
為了解決 softmax 對分母求和很慢的問題:
- 采用 分級(hierarchical)的softmax分類器、負采樣(Negative Sampling)
如果對上下文進行隨機均勻采樣,像 the、of、a、and、to 之類出現得相當頻繁,于是你會發現你的上下文到目標詞的映射會相當頻繁地得到這些種類的詞。
實際上,詞 p(c)p(c)p(c) 的分布并不是單純的在訓練集語料庫上均勻且隨機的采樣得到的,而是采用了不同的分級來平衡更常見的詞和不那么常見的詞
以上就是 Word2Vec 的其中一種 Skip-Gram 模型,另一個叫做CBOW,即連續詞袋模型(Continuous Bag-Of-Words Model),它獲得中間詞兩邊的上下文,然后用周圍的詞去預測中間的詞,這個模型也很有效
總結下:CBOW是從原始語句推測目標字詞;而Skip-Gram正好相反,是從目標字詞推測出原始語句。
CBOW對小型數據庫比較合適,而Skip-Gram在大型語料中表現更好
7. 負采樣
構造一個新的監督學習問題,就是給定一對單詞,比如orange和juice,要去預測這是否是一對上下文詞-目標詞(context-target)
選取負樣本采用經驗分布:
P(wi)=f(wi)34∑j=110,000f(wj)34P\left(w_{i}\right)=\frac{f\left(w_{i}\right)^{\frac{3}{4}}}{\sum_{j=1}^{10,000} f\left(w_{j}\right)^{\frac{3}{4}}}P(wi?)=∑j=110,000?f(wj?)43?f(wi?)43??
因為在softmax分類器中計算成本很高。本節我們學到了如何通過將其轉化為一系列二分類問題使你可以非常有效的學習詞向量。
當然網上也有別人預訓練過的詞向量,你想要在NLP問題上取得快速進展,去下載他人的詞向量是很好的方法,在此基礎上改進
8. GloVe 詞向量
GloVe代表用詞表示的全局變量(global vectors for word representation)
對于GloVe算法,我們可以定義上下文和目標詞為任意兩個位置相近的單詞,假設是左右各10詞的距離,那么 XijX_{ij}Xij? 就是一個能夠獲取單詞 iii 和單詞 jjj 出現位置相近時或是彼此接近的頻率的計數器
GloVe模型做的就是進行優化,我們將他們之間的差距進行最小化處理:
minimize?∑i=110,000∑j=110,000f(Xij)(θiTej+bi+bj′?log?Xij)2\operatorname{minimize} \sum_{i=1}^{10,000} \sum_{j=1}^{10,000} f\left(X_{i j}\right)\left(\theta_{i}^{T} e_{j}+b_{i}+b_{j}^{\prime}-\log X_{i j}\right)^{2}minimizei=1∑10,000?j=1∑10,000?f(Xij?)(θiT?ej?+bi?+bj′??logXij?)2
9. 情感分類
情感分類一個最大的挑戰就是可能標記的訓練集沒有那么多。
對于情感分類任務來說,訓練集大小從10,000到100,000個單詞都很常見,甚至有時會小于10,000個單詞,采用了詞嵌入能夠帶來更好的效果(泛化好),尤其是只有很小的訓練集時。
10. 詞嵌入除偏
根據訓練模型所使用的文本,詞嵌入能夠反映出性別、種族、年齡、性取向等其他方面的偏見,修改學習算法來盡可能減少或是理想化消除這些非預期類型的偏見是十分重要的
- 定位偏見
- 中和,減少兩個詞在某個軸上的距離
- 均衡,將兩個詞移至與中間軸線等距的一對點上
作業
作業:詞向量+Emoji表情生成
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的05.序列模型 W2.自然语言处理与词嵌入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1753. 移除石子的
- 下一篇: LeetCode 1688. 比赛中的配