語言模型 Language modelling算法
分詞 Segmentation編程
它|是|一隻|老虎
詞性標註 Part-of-speech tagging網絡
DT VBX DT JJ NN This is a simple question.
句法分析 Syntactic parsing架構
命名實體識別 Name-entity recognitionapp
語義角色標註 Word sanseis ambiguation函數
全部人都會死 蘇格拉底是人 =》 蘇格拉底會死
羅素悖論:由全部不包含自身的集合構成的集合學習
例子:理髮師稱只給那些不給本身理髮的人理髮。優化
基於集合論,理髮師不管給本身理髮仍是不給本身理髮都是矛盾的。ui
所以集合論不是完備的。即便後面馮羅伊德等科學家提出了各類假定條件。編碼
因爲上述的緣由,集合率沒法很好的描述天然語言,科學家發現經過幾率模型能夠更好的描述天然語言。
深度學習來處理天然語言屬於機率模型
證實最小點位於座標軸上
h = f+c|x|
因爲在x = 0處不可導
h-left'(0)*h-right'(0) = (f'+c)*(f'-c)
那麼若是c>|f'(0)|可得,h在0處左右導數異號
0是最值。
那麼在損失函數加入L1正則化後,能夠獲得某些維度容易爲0,從而獲得稀疏解
Jacobian矩陣
矩陣的一階導數
Hessian矩陣
矩陣的二階導數
幾乎全部的最優化手段,都將適用凸優化算法來解決
P(A|B) = P(A and B) / P(B)
if A and B 獨立
=》P(A and B| C) = P(A|C)*P(B|C)
也能夠推出
=>A(A|B and C) = P(A|C) (B交C不爲空)
拋9次硬幣,硬幣出現正面的機率是0.5,出現k次的機率分佈以下如
服從正態分佈
x的平均值
E = x*p(x) + ...
x相對於指望的偏離
var = (x-E(x))^2
conv = (x - E(x))*(m - E(m))
描述x,m是否有同分布
按理協方差爲0,並不表明x和m沒有關係
例以下圖
若是點的分佈對稱的分佈,會獲得協方差爲0,可是其實他們是有關係的。
把每一個相關的機率累加,獲得聯合機率
P(x1=m1,x2=m2...) = n!*P1m1/m1!*P2m2/m2!
T(n) = (n-1)!
T(x)用一條曲線逼近n!,進而能夠求得非整數的階乘
由二項式分佈推出
P = T(a+b)*x(a-1)*(1-x)(b-1)/(T(a)*T(b))
則正態分佈
p分佈越平均,H越大,表明越不肯定
y爲0時,不考慮y‘。y爲1時,y'越接近1,越小,越靠近0,越大
把D最小化,迫使y'逼近y
對於一個句子,有若干單詞組成。例如
C1: The dog laughs.
C2: He laughs.
那麼計算P(C1) = P(The, Dog, laughs)的機率和P(C2) = P(He, laughs)的機率。
根據歷史文本的統計學習。
能夠獲得P(C1)<<P(C2)
P('I love the game') = P('I')*P('love')*P('the')*P('game')
其中P(
計算一篇文章是積極的仍是消極的。
P(y|x) = sigmod(wx)
x是文章內每一個單詞的頻率
y表示積極和消極情感
P(x1, x2, x3 ... ) = P(x1)*P(x2|x1)*P(x3|x1, x2)....*P(xn|x1, x2,...xn-1)
其中P(xk|x1, x2,..xk-1) = frequence(x1, x2 ,, xk)/frequence(x1, x2..xk-1)
n通常不能太大,由於n太大,會致使全文沒法找到一摸同樣的單詞組合,致使機率爲0
2-gram模型例子
P('The dog sleeps') = P(The)*P(dog|the)*P(sleeps|dog)
把多個gram的模型進行線性整合
H越小,Pxn越接近1,模型越好
P(y|x1, x2, .. xn) = P(y)*P(x1, x2, ... xn|y) / P(x1, x2, ... xn)
y表明是不是垃圾郵件
x表明單詞
廣州市長壽路 -》 廣州市長|壽路
廣州市長壽路 -》 廣州市|長壽路
匹配詞袋:廣州市,廣州市長,長壽路
使用最大匹配發,第二個分詞更優
P(結合成分子) option1: = P(分子|成)P(成|結合)P(結合) option2: = P(分子|合成)P(合成|結)P(結) optionn ....
經過統計P(A|B),得出各個option的機率,取最大的機率,則爲最後的分詞
word => [0, 0 , ... 1, ... 0]
word => [0, 1, 0, 1, 0, ...]
能夠解決詞類似性問題
計算附近詞的頻率
word => [0, 3, 0, 1, 0, ...]
w是附近詞的one-hot encoding
score是詞的one-hot encoding
最後一層經過softmax,取擬合文本
最終中間層則爲詞向量
輸入爲詞one-hot encoding
輸出爲附近此的one-hot encoding
最後經過softmax預測附近詞
最後中間層則爲結果詞向量
混合模型是一種統計模型,問題中包含若干個子問題,每一個子問題是一個機率分佈,那麼總問題就是若干個子問題的組合,也就是若干個子分部的組合,這樣就造成了混合模型。
有紅黑兩種硬幣,把它們放在盒子裏,從盒子裏隨機抽取一個硬幣並投幣,抽到紅色的機率是p,紅色硬幣正面的機率是q,黑色硬幣正面的機率是m,假設咱們沒辦法看到抽取出的硬幣的顏色,只能看到最終是正面或者反面的結果,例如HTTHTTTTHHH (H:正面 T: 反面)。須要估計p,q,m三個參數。
此時能夠計算出
w | 紅 | 黑 |
---|---|---|
正 | pq = a | (1-p)m = b |
反 | p(1-q) = c | (1-p)(1-m) = d |
經過EM算法迭代以下:
隨機p q m
迭代如下過程:
計算上面table
p = (aC(正)+cC(反))/total
q = aC(正)/(aC正+cC正)
m = bC(正)/(bC正 + dC正)
假設有上述數據,須要用混合模型來逼近,經過分析,紅色和藍色數據分別爲高斯正態分佈,N(u, v)
此時能夠獲得以下表
紅 | 藍 | |
---|---|---|
x | pN紅(u, v) | (1-p)N藍(u, v) |
p = pN紅x/(pN紅x+(1-p)N藍x)
u = pN紅x/n
v = pN紅(x-u)^2/n
詞性轉換機率
V | N | |
---|---|---|
V | P(V|V) | P(N|V) |
N | P(V|N) | P(N|N) |
詞性到單詞的轉換機率
go | home | |
---|---|---|
V | P(go|V) | P(home|V) |
N | P(go|N) | P(home|N) |
經過EM遞歸算法,訓練以上參數,獲得隱馬爾可夫模型
PLSA主題模型
只統計詞的頻率,不計算詞的相對位置
計算文檔和單詞頻率的矩陣
w1 | ... | wn | |
---|---|---|---|
doc1 | 3 | ... | 0 |
doc2 | 1 | ... | 5 |
... | ... | ... | ... |
docn | 0 | ... | 0 |
進行奇異矩陣分解
獲得A矩陣的壓縮U,U中的k則爲k個主題
經過分析,LSA獲得的主題是跟現實沒法關聯,它只是一個量,而沒有明顯的意義。
PLSA爲了解決此問題,引入機率模型,先肯定主題個數
而後經過構建Doc->topic的機率table,和topic->word的機率table。
而後經過EM模型,獲得這兩個table的全部機率值。
進而獲得文檔的主題表示
PLSA的缺陷是,對於預測未知的doc,沒法計算此文檔的相關機率。隨着doc數量的增長,PLSA模型的參數會線性增長,從而會形成過擬合。
LDA經過引入先驗機率來克服PLSA的問題。
S -> NP VP |
---|
VP -> Vi VP -> Vt NP VP -> VP PP |
NP -> DT NN NP -> NP PP |
相似於編譯原理的上下文沒法句法分析,一顆語法樹
經過對CFG引入機率參數
S -> NP VP | 1 |
---|---|
VP -> Vi | P1 |
VP -> Vt NP | P2 |
VP -> VP PP | P3 |
NP -> DT NN | P4 |
NP -> NP PP | P5 |
有了機率,能夠計算每顆語法樹的極大似然機率,並取最大機率的樹爲最終輸出
上一個狀態中間層的輸出做爲下一隱層的輸入
相似於HMM的2-gram模型。t狀態受到t-1時刻輸出的影響,受t-k的輸出的k越大,影響越小
因爲RNN幾乎只受到上一時刻的影響,而忽略了久遠信息的影響。從而形成了必定的侷限性。
LSTM經過引入長短記憶方法,來維持長記憶的信息。
經過訓練核內的sigmod函數,使得LSTM能夠根據不一樣的句子,有條件的保留和過濾歷史信息,從而達到長記憶的功能。
GRU是LSTM的簡化版,它只須要處理兩個sigmod函數的訓練,而LSTM須要三個sigmod函數的訓練,減小了訓練的參數,加快了訓練的速度,但也損失了一部分模型的複雜,在處理較複雜問題時,沒有LSTM那麼好。
auto-encoder-decoder的特色是輸出的單元數是固定的。對於通常天然語言處理,例如機器翻譯,輸入的單元個數跟輸出單元的個數並非一一對應的,此時就須要動態的生成輸出單元。Seq2Seq經過動態的輸出結束符,表明是否輸出完成,達到能夠動態的根據輸入輸出不一樣的單元個數。
seq2seq的缺點是,全部的輸入序列都轉化爲單一的單元c,致使不少信息都將消失,對於不一樣的輸出yi,它可能依賴的輸入xj有可能不同,此時經過加入注意力模型,經過對xi進行softmax處理,並加入到y權重的訓練中,可讓不一樣的y,有不一樣的x對它進行影響
softmax的輸入爲輸入單元x,和上一個輸出單元y,聯合產生softmax的權重,進而對不一樣的序列,對於同一個x,會有不一樣的注意力到輸出
q = Wq(x)
k = Wk(x)
v = Wv(x)
x爲詞向量
經過訓練,獲得權重w,從而學習到這一層的softmax注意力參數
R是前一次encoder的輸出
經過增長w的數量,產生多個z,並進行堆疊,經過前饋網絡,最後產生z
在使用self attention處理句子時,是沒有考慮單詞在句子中的位置信息的。爲了讓模型能夠加入考慮單詞的位置信息,加入了位置編碼的向量
計算以下:
pos爲單詞在句子中的位置
i爲詞向量的位置
d爲句子的長度
位置編碼加上詞向量造成tranformer的輸入
加入了歸一化和殘差網絡
最終經過softmax,輸出每一個單詞的機率,並最終輸出單詞