Deep Models for Text and Sequence
轉載請註明做者:夢裏風林
Github工程地址:https://github.com/ahangchen/GDLnotes
歡迎star,有問題能夠到Issue區討論
官方教程地址
視頻/字幕下載git
Rare Event
與其餘機器學習不一樣,在文本分析裏,陌生的東西(rare event)每每是最重要的,而最多見的東西每每是最不重要的。github
語法多義性
- 一個東西可能有多個名字,對這種related文本可以作參數共享是最好的
- 須要識別單詞,還要識別其關係,就須要過量label數據
無監督學習
- 不用label進行訓練,訓練文本是很是多的,關鍵是要找到訓練的內容
- 遵循這樣一個思想:類似的詞彙出如今類似的場景中
- 不須要知道一個詞真實的含義,詞的含義由它所處的歷史環境決定
Embeddings
- 將單詞映射到一個向量(Word2Vec),越類似的單詞的向量會越接近
- 新的詞能夠由語境獲得共享參數
Word2Vec
Predict Words
- 單詞通過embedding變成一個vector
- 而後輸入一個WX+b,作一個線性模型
- 輸出的label機率爲輸入文本中的詞彙
- 問題在於WX+b輸出時,label太多了,計算這種softmax很低效
- 解決方法是,篩掉不多是目標的label,只計算某個label在某個局部的機率,sample softmax
t-SNE
- 查看某個詞在embedding裏的最近鄰居能夠看到單詞間的語義接近關係
- 將vector構成的空間降維,能夠更高效地查找最近單詞,但降維過程當中要保持鄰居關係(原來接近的降維後還要接近)
- t-SNE就是這樣一種有效的方法
類比
- 實際上咱們能獲得的不只是單詞的鄰接關係,因爲將單詞向量化,能夠對單詞進行計算
- 能夠經過計算進行語義加減,語法加減
Sequence
文本(Text)是單詞(word)的序列,一個關鍵特色是長度可變,就不能直接變爲vector機器學習
CNN and RNN
CNN 在空間上共享參數,RNN在時間上(順序上)共享參數ide
- 在每輪訓練中,須要判斷至今爲之發生了什麼,過去輸入的全部數據都對當下的分類形成影響
- 一種思路是記憶以前的分類器的狀態,在這個基礎上訓練新的分類器,從而結合歷史影響
- 這樣須要大量歷史分類器
- 重用分類器,只用一個分類器總結狀態,其餘分類器接受對應時間的訓練,而後傳遞狀態
RNN Derivatives
- BackPropagation Through time
- 對同一個weight參數,會有許多求導操做同時更新之
- 對SGD不友好,由於SGD是用許多不相關的求導更新參數,以保證訓練的穩定性
- 因爲梯度之間的相關性,致使梯度爆炸或者梯度消失
Clip Gradient
計算到梯度爆炸的時候,使用一個比值來代替△W(梯度是迴流計算的,橫座標從右往左看)函數
- Hack but cheap and effective
LSTM(Long Short-Term Memory)
梯度消失會致使分類器只對最近的消息的變化有反應,淡化之前訓練的參數,也不能用比值的方法來解決學習
- 一個RNN的model包含兩個輸入,一個是過去狀態,一個是新的數據,兩個輸出,一個是預測,一個是未來狀態
- 中間是一個簡單的神經網絡
- 將中間的部分換成LSTM-cell就能解決梯度消失問題
- 咱們的目的是提升RNN的記憶能力
- Memory Cell
三個門,決定是否寫/讀/遺忘/寫回優化
- 在每一個門上,不單純作yes/no的判斷,而是使用一個權重,決定對輸入的接收程度
- 這個權重是一個連續的函數,能夠求導,也就能夠進行訓練,這是LSTM的核心
- 這樣的模型能讓整個cell更好地記憶與遺忘
- 因爲整個模型都是線性的,因此能夠方便地求導和訓練
LSTM Regularization
- L2, works
- Dropout on the input or output of data, works
Beam Search
有了上面的模型以後,咱們能夠根據上文來推測下文,甚至創造下文,預測,篩選最大機率的詞,喂回,繼續預測……
this
- 咱們能夠每次只預測一個字母,but this is greedy,每次都挑最好的那個
- 也能夠每次多預測幾步,而後挑總體機率較高的那個,以減小偶然因素的影響
- 但這樣須要生成的sequence會指數增加
- 所以咱們在多預測幾步的時候,只爲機率比較高的幾個候選項作預測,that's beam search.
翻譯與識圖
以爲個人文章對您有幫助的話,給個star可好?