第一課
NLP
自然語言處理的難點
- 一詞多義
- 上下文相關
- 不守語法
- 隨着時間變化
- 表達的意義信息量很大
- 隱含常識
實際任務
- 搜索引擎
- 文本分類
- 機器翻譯
- 指代消解
- 問答系統
深度神經網絡做自然語言處理的優勢
隨着網絡規模的增加與數據量的增加我們可以將效果做的比傳統方法更好的水平。
背景知識
梯度下降(Gradient Descent):通過對目標函數的參數求偏導,利用梯度更新參數值,從而迭代產生最優解。
語言模型(Language Model,LM):
- 是對語言現象的數學抽象:計算句子出現的概率
- 馬爾科夫鏈:第n個詞出現的概率與前n-1個詞概率相關
- k-gram model:當前詞出現的概率只與前k個詞相關,當k=1時,爲1-gram模型
詞向量
WordNet
通過如下代碼可以引入WordNet
from nltk.corpus import wordnet
WordNet是英文領域,專家純手工構造的詞典。(知識結構的詞庫)
可以給出一個詞的近義詞和上位詞
WordNet存在的問題:
- 可以作爲一個很好的資源來使用,但是其精確程度不高。
- 不能實時更新,缺少了詞彙的新含義。
- 人工構造,主觀性太強
- 需要大量的人力資源
- 不能夠準確計算詞彙之間的相似性。
在中文領域中
與WordNet對應的產物是:
- 知網(HowNet)
- 哈工大詞林
離散詞表徵
在傳統NLP中,我們將詞彙認爲是一個一個離散的符號。
詞彙可以表示爲一個one-hot(獨熱編碼)向量
表示形式如下:
one-hot向量的維度是詞彙表的大小。
存在的問題:
- 每個詞彙之間是正交的
- 向量之間的相似度沒有自然含義
解決方法:
- 用WordNet的經一次表達獲取相似度(效果不好,且不完整)
- 相反:學習在向量本身中編碼相似性
分佈式詞表徵
一個詞的含義是由經常出現在其上下文的詞所決定的(詞義由上下文給出)
詞向量(word2vec也稱爲word embedding)
特點
- 無監督學習: 使用沒有經過人工標註的數據進行訓練
- 壓縮自編碼:通過向量空間的運算進行壓縮自編碼
- 結合上下文: 通過詞語詞之間的關係學習特徵
兩種算法:
- CBOW:連續詞袋模型
- Skip-Gram(SG):跳字模型
兩種訓練技巧:
- Negative Sampling(負採樣)
- Hierarchical Softmax(層序softmax)
詞向量的評估方法:
- 相似度——cos(word1,word2)
- 詞類比——cos(word1-word2+word3,word4)
目標函數(loss function)
目標函數如下
變形之後的目標函數如下:
式子中的P代表概率
表達式如下:
損失函數中的是詞向量和。
的優化過程: