TensorFlow深度學習筆記 文本與序列的深度模型

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

  • 將每一個詞映射到一個Vector列表(就是一個Embeddings)裏,一開始隨機,用這個Embedding進行預測
  • Context即Vector列表裏的鄰居
  • 目標是讓Window裏相近的詞放在相鄰的位置,即預測一個詞的鄰居
  • 用來預測這些相鄰位置單詞的模型只是一個Logistics Regression, just a simple Linear model網絡

    Comparing embeddings

  • 比較兩個vector之間的夾角大小來判斷接近程度,用cos值而非L2計算,由於vector的長度和分類是不相關的:less

  • 最好將要計算的vector都歸一化

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

有了上面的模型以後,咱們能夠根據上文來推測下文,甚至創造下文,預測,篩選最大機率的詞,喂回,繼續預測……
this

  • 咱們能夠每次只預測一個字母,but this is greedy,每次都挑最好的那個
  • 也能夠每次多預測幾步,而後挑總體機率較高的那個,以減小偶然因素的影響
  • 但這樣須要生成的sequence會指數增加
  • 所以咱們在多預測幾步的時候,只爲機率比較高的幾個候選項作預測,that's beam search.

翻譯與識圖

  • RNN將variable length sequence問題變成了fixed length vector問題,同時由於實際上咱們能利用vector進行預測,咱們也能夠將vector變成sequence

  • 咱們能夠利用這一點,輸入一個序列,到一個RNN裏,將輸出輸入到另外一個逆RNN序列,造成另外一種序列,好比,語言翻譯
  • 若是咱們將CNN的輸出接到一個RNN,就能夠作一種識圖系統

循環神經網絡實踐

以爲個人文章對您有幫助的話,給個star可好?

相關文章
相關標籤/搜索