深度學習與 NLP

在深度學習中,文本分類的主要原型:Text  label,坐邊是輸入端 “X”,右邊是輸出端 “Y”。行業 baseline:用 BoW(bag of words)表示 sentences(如何將文本表達成一個數字的形式),然後用 LR 或者 SVM 做迴歸。

中英文做自然語言處理主要區別,中文需要分詞(啓發式 Heuristic, 機器學習、統計方法 HMM、CRF))

深度學習:從端到端的方式,以不摻和人爲的計算,從 X 到 Y 暴力粗暴的學習。通過很隱層(包含大量線性和非線性的計算)試圖模擬數據的內在結構。

新手推薦用 kreas,它下面有兩個底層,一個是 theano,一個是 tensorflow,可以自由轉換 backend 也就是說可以讓它跑在 theano 底下,也可以跑在 tensorflow 底下,它把其他幾個深度學習框架綜合起來成一種。

關於自然語言相關的庫,gensim https://radimrehurek.com/gensim/ 

一、 Auto-Encoder 自編碼器
應用場景:無標籤的時候需要使用;就算有標籤的情況下一本書的內涵太多太大,你希望降維,使得其在後面模型處理中能夠接受;

自編碼是自己學習自己,通過 encoder 壓縮成一箇中繼量,目的是希望這個中繼量可以通過下一把完全反向的 encoder,返回成原本的 Input。這裏面沒有用到任何的 label,而是照片 2 本身和照片 2 本身,中間加了兩個對立漏斗形的神經網絡。最後我們可以取中間那個更小的中繼量代替原來的圖片(因爲它可以 decoder 回原來的圖片)。

實現了不用人爲提取特徵向量。
只能達到局部最優點,無法達到全局最優點。
距離的計算,文本上常用列文斯坦距離,從 A 變 B 需要多少步。或者把整個文本表達爲矩陣向量,詞向量的距離可以用 cosine 距離等。

二、 CNN4Text(卷積 + text)
卷積神經網絡,用簡單的例子解釋,就是手機上的修圖軟件,拍的照片給個濾鏡,照片是不是就長得不一樣了,cnn 就是用很多濾鏡給我原始的圖片,進行照耀,照完之後會得到在不同濾鏡下的顯示形式,這些顯示形式也許就暗含這些圖片的一些特徵。通過濾鏡掃過之後得到新的 featureMap 我們稱爲 convolved feature。濾鏡是怎麼得到的呢,是人爲初始化一個濾鏡,通過之後無數次的學習來更新這個濾鏡值,使得這個濾鏡值是最好的能提取出 fetureMap 的濾鏡。(加號老師講)右下圖,左邊是模糊,右邊是邊緣化。

如何遷移到文字處理?

  1. 把每個單詞處理成一個橫向的向量,就把句子拓展成了類似圖片的表達式,

  2. 把 sentence 變成 1 維的,

案例

三、 RNN(帶記憶)
Rnn 的目的是讓有 sequential 關係的信息得到考慮,St 是基於這一個時間點的 input 和上一個時間點的記憶,然後 St 再乘以 output weight V 得到最終輸出。

如果 Rnn 的長度不能記憶幾天前的 S 的話,它的上下文處理能力還是爲 0,因爲它還是不知道你的上下文前提是什麼,因此需要 LSTM。

四、 LSTM(帶記憶)

通過各種運算符號和規則使得整個神經網絡裏面每個神經網絡都能記得一點東西,又會及時的忘記一些東西,使得我記憶的距離能夠變得夠長。(RNN 是一個疊加的過程,下一個永遠基於上一個,就會變得非常大和慢)
長效記憶網絡,把記憶長效的保留下來。

LSTM 中最重要的就是 Cell State(記憶紐帶) S,它一路向下,貫穿整個時間線,代表了記憶的紐帶。它會被 XOR(遺忘層處理)和 AND(記憶處理)運算符搞一搞來更新記憶,通過這兩個運算來知道要記得什麼和忘掉什麼。

而控制信息的增加和減少的,就是靠這些閥門:Gate,閥門就是輸出一個 1 和 0 之間的值,1 代表把這一趟的信息記着,0 代表這一趟的信息可以忘記了。有些記憶比較久的還需不需要留着。

最後得到記憶紐帶 Ct

五、 LSTM 案例
可以用在不同的維度上:
維度 1:下一個字母是什麼?
維度 2:下一個單詞是什麼?
維度 3:下一個句子是什麼?
維度 4:下一個圖片、音符是什麼?

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Ewux00mDr-SkVWKjSoOsqw