日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

李宏毅-机器学习-RNN-笔记

發布時間:2023/12/8 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 李宏毅-机器学习-RNN-笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 1 RNN
    • 1.1 引例導入
    • 1.2 RNN
    • 1.3 舉例
  • 2 Long Short-term Memeory (LSTM)
    • 2.1 LSTM 基本組成
    • 2.2 LSTM實例
    • 2.3LSTM 結構
  • 3 RNN應用
    • 3.1 RNN局限
    • 3.2 應用


前言

李宏毅-機器學習課程-筆記


1 RNN

1.1 引例導入

引例:利用前饋神經網絡(FFN)解決在空缺位置填充單詞問題
\qquad FFN:Input:一個單詞(一個向量表示一個單詞)
\qquad ??? Output:輸入單詞屬于空缺位置的概率分布

\qquad FNN缺點:神經網絡沒有記憶力,不考慮上下文,對于不同性質的空缺位置,輸入單詞的概率分布是相同的。
\qquad比如:第一句中TaipeiTaipeiTaipei是目的地,而在第二句中是出發地,那么在這兩個空缺的地方,TaipeiTaipeiTaipei出現的概率不一定是相同的,而利用FNN計算之后TaipeiTaipeiTaipei的概率分布始終是不變的,不符合語義.

1.2 RNN

RNN:擁有記憶力,考慮上下文內容,相同輸入不同概率分布輸出的神經網絡;
\qquad?隱藏層的輸出存儲在內存中,網絡的輸入不光考慮原始的輸入也要考慮隱藏層的輸出;
\qquad?換句話說就是將隱藏層的輸出同時作為輸入,影響輸出.

1.3 舉例

輸入序列:
\qquad\qquad[11][11][22]......\left[\begin{array}{c} 1 \\ 1\\ \end{array}\right]\left[\begin{array}{c} 1 \\ 1\\ \end{array}\right]\left[\begin{array}{c} 2 \\ 2\\ \end{array}\right]... ...[11?][11?][22?]......
條件:所有權重www均為1;沒有偏差biasbiasbias;所有激活函數均為線性函數.

  • 按照上面的網絡結構和輸入序列,計算輸出結果
  • 使用RNN之前必須要給內存中a1a_1a1? a2a_2a2?初始值,默認為0.

    (1) input:[11]input:\left[\begin{array}{c} 1 \\1 \end{array}\right]input:[11?],[a1a2]=[00]\left[\begin{array}{c} a_1 \\a_2 \end{array}\right]=\left[\begin{array}{c} 0 \\0 \end{array}\right][a1?a2??]=[00?],
  • \qquad??經過網絡后[h1h2]=[22]\left[\begin{array}{c} h_1 \\h_2 \end{array}\right]=\left[\begin{array}{c} 2 \\2 \end{array}\right][h1?h2??]=[22?],

    \qquad??ouput=[44]ouput=\left[\begin{array}{c} 4 \\4 \end{array}\right]ouput=[44?],并且將[h1h2]\left[\begin{array}{c} h_1 \\h_2 \end{array}\right][h1?h2??]賦值給[a1a2]\left[\begin{array}{c} a_1 \\a_2 \end{array}\right][a1?a2??],則[a1a2]=[22]\left[\begin{array}{c} a_1 \\a_2 \end{array}\right]=\left[\begin{array}{c} 2 \\2 \end{array}\right][a1?a2??]=[22?],并且也作為下一次的輸入.



    \qquad(2) input:[11]input:\left[\begin{array}{c} 1 \\1 \end{array}\right]input:[11?],[a1a2]=[22]\left[\begin{array}{c} a_1 \\a_2 \end{array}\right]=\left[\begin{array}{c} 2 \\2 \end{array}\right][a1?a2??]=[22?],

    \qquad??經過網絡后[h1h2]=[66]\left[\begin{array}{c} h_1 \\h_2 \end{array}\right]=\left[\begin{array}{c} 6 \\6 \end{array}\right][h1?h2??]=[66?],

    \qquad??ouput=[1212]ouput=\left[\begin{array}{c} 12 \\12 \end{array}\right]ouput=[1212?],并且將[h1h2]\left[\begin{array}{c} h_1 \\h_2 \end{array}\right][h1?h2??]賦值給[a1a2]\left[\begin{array}{c} a_1 \\a_2 \end{array}\right][a1?a2??],則[a1a2]=[66]\left[\begin{array}{c} a_1 \\a_2 \end{array}\right]=\left[\begin{array}{c} 6\\6 \end{array}\right][a1?a2??]=[66?],并且也作為下一次的輸入.



    \qquad(3) input:[22]input:\left[\begin{array}{c} 2 \\2 \end{array}\right]input:[22?],[a1a2]=[1616]\left[\begin{array}{c} a_1 \\a_2 \end{array}\right]=\left[\begin{array}{c} 16 \\16 \end{array}\right][a1?a2??]=[1616?],

    \qquad??經過網絡后[h1h2]=[66]\left[\begin{array}{c} h_1 \\h_2 \end{array}\right]=\left[\begin{array}{c} 6 \\6 \end{array}\right][h1?h2??]=[66?],

    \qquad??ouput=[3232]ouput=\left[\begin{array}{c} 32 \\32 \end{array}\right]ouput=[3232?],并且將[h1h2]\left[\begin{array}{c} h_1 \\h_2 \end{array}\right][h1?h2??]賦值給[a1a2]\left[\begin{array}{c} a_1 \\a_2 \end{array}\right][a1?a2??],則[a1a2]=[1616]\left[\begin{array}{c} a_1 \\a_2 \end{array}\right]=\left[\begin{array}{c} 16\\16 \end{array}\right][a1?a2??]=[1616?],并且也作為下一次的輸入.

    \qquad如果改變輸入序列的順序就會改變輸出結果,說明RNN會考慮輸入數據的順序問題,在預測當前結果時,也包括了之前的信息。
    RNN 解決引例問題過程:
    \qquad首先將句子當中的每一個單詞轉換為向量,例如arrive=x1arrive=x^1arrive=x1,將x1x^1x1放入RNN中得到a1a^1a1,根據a1a^1a1得到y1y^1y1,y1y^1y1arrivearrivearrive在每一個空缺處的概率分布,a1a^1a1存儲起來,同時與x2x^2x2作為預測TaipeiTaipeiTaipei概率分布的輸入,說明預測TaipeiTaipeiTaipei,考慮到了前面是arrivearrivearrive的信息,以此類推。
    \qquad圖中的網絡中并不是3個RNN,而是同一個RNN在不同的時間點,使用3次.

    \qquad 所以當TaipeiTaipeiTaipei前面的單詞不同時,那么通過x1x^1x1計算出來的a1a^1a1的值也是不同的,作為預測TaipeiTaipeiTaipei概率的輸入也就不同,那么計算出來的概率就是不同的,不同上下文TaipeiTaipeiTaipei的概率就是不同的。

    \qquad 可以將RNN結構設計為深度網絡

    RNN分類:
    Elman Network :將隱藏單元的輸出作為下一次預測的輸入
    Jordan Network:將上一次的預測輸出作為下一次預測的輸入
    ????由于中間隱藏層輸出結果相對來是不可控,最后的輸出結果更有意義,相對來說我們知道memory存的是什么信息,所以 Jordan Network比Elman Network性能更好.

    ????雙向RNN(Bidirectional RNN):
    ????RNN可以從正向和反向讀取信息,可以先處理xtx^txt,也可以先處理xt+2x^{t+2}xt+2,BiRNN輸出中間結果yt+1y^{t+1}yt+1時,已經考慮前后兩個范圍,考慮的信息更多.

    2 Long Short-term Memeory (LSTM)

    比較長的短期記憶
    3個門 4輸入 1輸出

    2.1 LSTM 基本組成

    LSTM:一個單元中,有4個輸入和1個輸出,4個輸出=3個控制信號和1個輸入

    組成成分:

    • Input Gate:控制input數據輸入
    • Forget Gate:控制是否保存中間結果
    • Output Gate:控制output數據輸出

      輸入:
      \qquadzoz_ozo?:輸出門控制信號
      \qquadziz_izi?:輸入門控制信號
      \qquadzfz_fzf?:遺忘門控制信號
      \qquadzzz:輸入
      輸出:
      \qquadaaa:輸出
      \qquadfff:激活函數基本都是sigmoidsigmoidsigmoid函數,
      \qquad???值域在000111之間,函數值決定所控制門的開關程度。值越大,門打開程度越大。
      \qquadccc:當前隱藏層輸出值
      \qquadc′c^{\prime}c:下一次隱藏層輸出值
      c′=g(z)f(zi)+cf(zf)c^{\prime}=g(z)f(z_i)+cf(z_f)c=g(z)f(zi?)+cf(zf?)
      \qquad\qquadf(zi)=0f(z_i)=0f(zi?)=0時,不考慮輸入g(z)g(z)g(z)
      \qquad\qquadf(zi)=1f(z_i)=1f(zi?)=1時,g(z)g(z)g(z)全部考慮
      \qquad\qquadf(zf)=0f(z_f)=0f(zf?)=0時,不考慮上一次的隱藏值ccc
      \qquad\qquadf(zf)=1f(z_f)=1f(zf?)=1時,ccc全部考慮

      綜合所有的成分計算輸出:
      a=h(c′)f(zo)a=h(c^{\prime})f(z_o)a=h(c)f(zo?)
      \qquad\qquadf(zo)=0f(z_o)=0f(zo?)=0時,無法輸出,輸出的是000
      \qquad\qquadf(zo)=1f(z_o)=1f(zo?)=1時,h(c′)h(c^{\prime})h(c)全部輸出

    2.2 LSTM實例

    \qquad輸入:2維
    \qquad輸出:1維
    \qquad控制門信號:
    {x2=1x2的值存入memoryx2=?1重置memoryx3=1輸出memory的值\begin{cases} x_2=1& x_2的值存入memory \\ x_2=-1&重置memory \\ x_3=1 & 輸出memory的值 \end{cases}????x2?=1x2?=?1x3?=1?x2?的值存入memory重置memory輸出memory的值?


    \qquad以第一個輸入為例[310]\left[\begin{array}{c} 3 \\1\\0 \end{array}\right]???310????,LSTM中一共4個輸入,[310]\left[\begin{array}{c} 3 \\1\\0 \end{array}\right]???310????分別乘以4個不同的權重和加上不同的偏差.
    \qquad得到最后的輸出y=0y=0y=0,這些參數是訓練得到的.

    2.3LSTM 結構

    \qquad原始神經網絡和LSTM網絡聯系
    \qquad原始神經網絡結構如圖:

    \qquadLSTM結構:用LSTM代替神經網絡的神經元;
    \qquad\qquad\qquad?輸入乘以4組參數,作為輸入進行計算.

    \qquadLSTM 詳細結構
    \qquad\qquad輸入:xtx_txt?
    \qquad\qquad\qquadxtx_txt?分別乘以4個矩陣得到zfz^fzfzzzziz^izizoz^ozo 4個輸入向量
    \qquad\qquad\qquadzfz^fzf:遺忘門控制信號向量
    \qquad\qquad\qquadzzz:輸入向量
    \qquad\qquad\qquadziz^izi:輸入門控制信號向量
    \qquad\qquad\qquadzoz^ozo:輸出們控制信號向量
    \qquad\qquad 4個向量進入相應的輸入口,進行計算,將向量的每一個維度的值放入LSTM的每一個單元。

    取一個維度作為例,計算過程如下:
    ct=ct?1f(zf)+g(z)f(zi)c^{t}=c^{t-1}f(z^f)+g(z)f(z^i)ct=ct?1f(zf)+g(z)f(zi)yt=f(zo)h(ct)y^t=f(z^o)h(c^t)yt=f(zo)h(ct)ht=yth^t=y^tht=yt


    LSTM最終形態
    ctc^tcthth^thtxt+1x^{t+1}xt+1作為下一次的輸入

    并且設計多層LSTM

    3 RNN應用

    \qquad學習目標:令y1y^1y1與相應的向量越相似,交叉熵損失越小

    \qquad訓練:
    \qquad\qquadRNN通過BPTT訓練,根據梯度下降更新參數

    3.1 RNN局限

    RNN訓練困難
    原因:RNN的total loss函數有的地方非常平坦 有的地方陡峭
    解決:Clipping 梯度大于某個值就等于這個值

    為什么損失函數會出現這種情況?
    原因:同樣www在不同的時間點反復地使用
    實例:www在很小的范圍內,www的梯度會很大或很小

    LSTM可以解決梯度消失的問題:
    原因:Memory cell 和input是相加的關系,除非遺忘門關閉否則對memory的影響不會消失,換句話說遺忘門如果開著,則不會產生梯度消失的問題。如果遺忘門關著才會把memory存儲的數據清洗掉,消除原來數據的影響.

    3.2 應用

    多對一:情緒分析Sentiment Analysis
    通過閱讀一篇文章,判斷文章內容表達的情緒是正面或者負面

    輸入向量序列 輸出一個向量

    多對多:序列對序列 input長 output短 語音識別

    CTC:解決疊字問題

    CTC訓練問題:

    Seq2Seq 不同長度 機器翻譯 訓練不知道何時停止

    添加一個“斷” ,作為停止的標志.

    超越序列
    語法分析:得到文法的結構樹

    Seq2Seq Auto-encoder-Text
    理解單詞序列含義不能忽略單詞之間的順序

    Seq2Seq Auto-encoder-Speech

    語音->向量

    RNN encoder和decoder 聯合訓練joinly train
    訓練目標 :輸出和輸入越來越接近.

    總結

    以上是生活随笔為你收集整理的李宏毅-机器学习-RNN-笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。