簡單maxPooling單層網路句子分類框架和數學理論
05-10
來自微信公眾號 深度學習自然語言處理
為了完成我的基於深度學習的立場檢測系統畢業論文,我會從最簡單的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