輸入:雙語語料 C={x,y}1N網絡
輸出:模型參數 Θ函數
(1)使用對其工具對雙語語料進行對齊,得到 C={ x, y, a}1N ,其中 a 爲對齊矩陣。工具
(2)隨機初始化神經網絡參數 Θ
學習
(3)從雙語語料 C 中隨機採樣一個句對{xk,yk,ak},而且從 yk 中隨機採樣一個 n 元組(yik,yi-1k,......,yi-N+1k) spa
經過對齊信息得到源語言句子中大小爲 M 的上下文窗口 Cik (Xai-(M+1)/2,....,Xai-1,Xai,....,Xai+(M+1)/2)翻譯
(4)將 n 元組(yik,yi-1k,......,yi-N+1k) 和上下文窗口 Cik 輸入神經網絡,計算損失 Likorm
(5)使用損失函數 Lik 計算參數梯度 σik ,並使用梯度降低法更新模型參數 Θ = Θ - α σik ,其中 α 是學習率blog
(6)若損失函數 L>ε 則重複步驟 (3)—(5) 繼承
最先成功的語言模型是基於固定長度的序列的標記模型,成爲 n-gram 模型,一個n-gram 模型是一個包含 n 個標記的序列。ci
基於n-gram 模型定義了一個條件機率,給定前 n-1 個標記後的第 n 個標記的條件機率,該模型使用這些條件分佈的乘積來定義較長序列的機率分佈:
P(x1,...,xτ)= P(x1,...,xn-1)∏ τ t=n P(xt | xt-n+1,....,xt-1)
N元神經網絡語言模型講前邊 N-1 個詞轉換爲詞向量,而後輸入到神經網絡,通過若干線性層和非線性層來預測下一個詞,與N元神經網絡語言模型不一樣
的地方在於神經網絡語言模型除了使用目標語言的前 N-1 個詞做爲輸入外,源語言句子的信息一樣做爲輸入來對下一個目標語言次進行預測。
例如:
(1)將 「 經濟、發展、變 」 經過詞向量-表映射爲對應的詞向量,並將這三個詞的詞向量進行拼接,而後做爲線性層的輸入。
(2)拼接後的向量通過一個非線性層(通常採用雙正切函數 tanh )獲得特徵表示
(3)基於學到的特徵表示,在通過一個線性層映射爲詞表大小的向量
(4)最終使用 softmax 層得到詞 「 慢 」 做爲 「 經濟、發展、變 」 以後的第四個詞的機率 ( P(慢 | 經濟、發展、變 ))。
假設中文句子 y = { 在近幾年經濟發展變慢了 } 是從英文句子 x = { economic growth has slowed down in recent years } 得來:
根據已知的對齊信息,中文 「 慢 」 對齊到英文句子的詞是 slowed ,則以 slowed 爲中心,取一個大小爲 m ( 假設爲5 ) 的窗口 { growth、 has 、slowed、 down、 in }
此時語言模型和翻譯模型的聯合模型即是計算 P(慢 | 經濟、發展、變 、growth、 has 、slowed、 down、 in }
(1)若 yi 對齊到源語言的多個詞,則以這幾個詞爲中心當作源語言句子上下文窗口的中心。
(2)若 yi 沒有對齊到源語言句子中的任何詞,則向前找一個距離最近的存在對齊關係的目標語言詞,繼承該次對應的源語言句子的上下層窗口。
softmax用於多分類過程當中,它將多個神經元的輸出,映射到(0,1)區間內,能夠當作機率來理解,從而來進行多分類,而這些值的累和爲1(知足機率的性質)。
熵是一個不肯定性的測度,也就是說,咱們對於某件事情知道的越多,則熵就越小,咱們對其結果就越不感到意外。關於未知分佈最合理的推斷應該是符合已知知識最不
肯定或最大隨機的推斷。
基於神經網絡的聯合模型一般使用交叉熵做爲損失函數。
一個隨機變量 ,爲用於近似的改路分佈,則隨機變量和模型之間的交叉熵定義爲:
交叉熵經常用於模型的選擇,若越小,則model越好。