簡單maxPooling單層網路句子分類框架和數學理論

來自微信公眾號 深度學習自然語言處理

為了完成我的基於深度學習的立場檢測系統畢業論文,我會從最簡單的Pooling單層網路開始系統學習句子分類。接下來會有卷積神經網路CNN層,循環神經網路RNN層等,以後更新。這些都是理論+實踐代碼(下期會給基於pytorch的python實現代碼)。望大家發現錯誤積極指出,互相在自然語言處理道路上進步!

數據清洗

(應該不會說的)

分詞

英文的文本肯定不用這一步,中文就必須分詞了。

詞向量化

這裡我將用隨機的向量化,一個詞的維度為 n*1

句子向量化,標籤01化

假設句子 x 詞的數量是m,那麼它的向量為 n*m(一列一個詞向量,順序排m列)

比如三分類標籤 G 分別為[1,0,0],[0,1,0],[0,0,1]

初始化權重W

維度為 n*classSize (classSize分類大小)

句子向量過maxPooling層

maxPooling就是在一個維度中選擇最大的一個,其餘拋棄

句子向量 n*m也就是每一行是一個維度,每一行選擇最大的,最終維度為 n*1

Softmax概率化

P = Softmax(xT*W) 維度1*classSize

通過Loss算梯度grad

grad需要通過鏈式求導求得,即

而其中的

對Loss化簡得:

其中

的g表示這個句子的標籤中[0,1,0] 1 的位置,y為概率化的結果,y為[0.5,0.3,0.2]

可以推出

由於

,所以:

所以梯度

更新W

W=W?α?grad


推薦閱讀:

隨筆一則
讀出才能 || 天才的神秘死亡,誰有餘辜?
Writing Schedule|3月開學寫作計劃,寒假總結
The Classification of covering space

TAG:數學 | 人工智慧 | 機器學習 |