1. 程式人生 > >深度學習 (六)Long Short Term Memery

深度學習 (六)Long Short Term Memery

Introduce

  • 為什麼會有RNN模型?
           每次涉及到新概念時候總不禁要問自己,為什麼要引入這麼模型,深度學習有深度網路DNN、圖片識別CNN等,他們都是一次性輸出內容的全部來識別或預測一個分類結果,然而生活中還存在另一類問題,當前的輸出並完全取決於當前的輸入其還依賴,這個時間點以前的輸入資料,試想CNN可以做到嗎?它在輸入一副圖片後經過卷積池化等過濾後最終輸出分類,下一張圖片依然這麼按設定好的結構運算,貌似和前面一幅圖片沒有毛關係。
  • 解決了啥問題?
           再比如生活中常見的例子考試時做完形填空,我們都是結合上下文來填詞,不讀上下文那你填錯的概率會很高,上下文的作用是提高了我們填對的概率,前面我們涉及的n-gram等模型也可以記住前後幾個單詞但還是太少,n=4時已經很難計算,這篇rnn為我們解決了和時間有關的序列問題,序列問題並不單單隻文字序列,右前後排序時間先後的問題都叫序列問題。

RNN

basic

       讓我們先來看看最基本的rnn結構,如下圖:
在這裡插入圖片描述
       上圖中舉了一個例子,採用one-hot編碼輸入也可以採用其它編碼方式,如word2vec,輸出為它屬於詞典8000個單詞中哪個的概率大,不過在分類問題時我們並不關心中間每個輸出的概率結果,我們關心的是最終分類結果。
       在結構上它還有引數共享機制:同cnn類似,rnn也有餐宿共享機制,好像rnn共享的更多一些,cnn只在卷積池化時有共享卷積核,而最簡單的rnn整個網路共享一組引數U V W,這樣極大提高了網路訓練時間。
       這是一個單向的rnn,它只記住了一個單詞前面的內容沒有記住後面的,經常需要結合上下文判斷才能判斷出來,這樣一來有人提出來了,雙向rnn結構。

Bidirectional RNN

       結構和主要運算如下:
在這裡插入圖片描述
       雙向rnn也容易理解,僅把兩個方向單向的rnn相加組裝起來,構成了一個雙向的,都在圖裡了。
       如果想再增強rnn表達能力,再增加隱層個數即可,這點很想mlp rnn等,神經網路都是隨著網路深度增加表達能力越來越強。

Back Propagation Through Time

       已經有了網路結構那麼讓我們看一下這個rnn網路是如何優化各個權重引數,mlp大家都知道是BP來優化,這裡也是類似思想求解引數的梯度,首先要做的是定義loss function ,進而才能對引數u v w求梯度,由於這裡是多分類概率問題,交叉熵損失可以表達預測概率和目標概率的差異度,所以我們選擇交叉熵來作為損失,如下:
在這裡插入圖片描述


       從圖上也可以看出來,恆左邊為預測結果概率定義域為[0,1],損失函式隨著橫座標逐漸增大在減小.

       有了損失函式我們開始求梯度,以w為例,如下:
在這裡插入圖片描述
       上面是依據求導鏈式法則一次展開各層依賴關係,最後到So層,依據求導法則將各層導數相乘,即可求導最終導數。

Long Short Term Memory

在這裡插入圖片描述

       lstm處理過程感覺可以理解為我們的大腦處理問題過程,每個人精力記憶有限不可能把各行各業知識都學會都記住,rnn就像傻瓜式大腦沒有對知識進行管理和加工,一下都把輸入的記住了,記憶的東西有限,時間長了很久以前的知識自然忘記了,lstm本質在於對自己記住的東西精細化管理,增加了一個細胞狀態來儲存大腦裡面線上有啥記住了,並且對輸入的知識選擇認為不重要的過濾掉,俗稱“忘記門”,忘記多少呢很容易想到一個概率函式sigmoid()來實現,同時對於輸入的新知識還要選擇該記住哪些,把重要的過濾出來記住,即“輸入門”也用sigmoid來控制。

       如上圖中三個公式,分別表示忘記多少、新入多少、更新當前記憶三步,我們要先從原理上來理解,公式只是幫我們實現的手段,思想是我們的靈魂。

思考

  • lstm為什麼比rnn好?
    lstm比rnn最大優勢在於解決了長序列記憶問題,解決的方法在於將感覺在於細胞狀態計算時將rnn中的乘法關係改為了加法關係,即使序列邊長也不容易導致梯度彌散出現,問題依然可解,其次加入了過濾器(忘記門)、過濾器(輸入門)等,lstm目前在各種場景如翻譯、語音等領域都有成功應用。
  • 為什麼lstm中既有sigmoid啟用函式還有tanh?
    這個首先要了解這兩啟用函式在結構中起的作用,看看能否去掉或者替換成別的,sigmoid函式作用於門forget gate 、input gate、outputgate,門做的事是開關,有兩種極限狀態完全開、完全閉,也可以過濾一部分,正好同sigmoid極致0-1相對應,所以sigmoid發揮的作用不好替換;tanh為雙曲正切,值域為[-1,1],來控制輸出值,這個作用其它函式可能可以替換。
  • rnn 和 word2vec的關係
    word2vec是用來表示表達一個句子或詞的表達模型,表達完了輸出一個向量輸入到rnn中接受訓練,它們解決的問題不一樣,用在的階段不一樣。

隨筆

德魯克定律
現代管理學開創者,其很多管理理念被很多大公司應用效果顯著,如在知識社會中每個人都是自我管理者,都可以管理自己的行為。
1.需要用任務的契約式來管理
2.工作主動性 如果我是老闆 怎麼做
工作主動是做好一件事的前提
3.自己相關工作 參與決策
這是知識型員工體現,好的領導會逐漸讓員工自己處理事情
4.如果刪除“成就”,代替的為貢獻
強調成就帶來問題
1.企業或個人看重短期看到結果
比如大學教師 重課時、論文數量而對於難度大有意義事情缺乏主動
2.機構大的 短期很難看得見效果
公司的最大價值在於給客戶更好服務、 員工更多機會、 股東更多回報