1. 程式人生 > >吳恩達深度學習筆記(deeplearning.ai)之循環神經網絡(RNN)(二)

吳恩達深度學習筆記(deeplearning.ai)之循環神經網絡(RNN)(二)

blog 如何 這一 累加 soft 學習 測試 接下來 數據

導讀

本節內容介紹如何使用RNN訓練語言模型,並生成新的文本序列。

語言模型(Language model)

通過語言模型,我們可以計算某個特定句子出現的概率是多少,或者說該句子屬於真實句子的概率是多少。正式點講,一個序列模型模擬了任意特定單詞序列的概率。

Language modelling with an RNN

技術分享圖片

RNN中\(x^{<1>}\)\(a^{<0>}\)為零向量,而a^{<1>}通過softmax層進行預測,計算出第一個詞可能是什麽,其結果為\(\hat{y}^{<1>}\)。這一步其實是通過softmax層計算詞典裏每一個詞會是第一個詞的概率,假設詞典有n個詞,那麽\(\hat{y}^{<i>}\)

就是一個n維向量。然後RNN進入下個時間步,將激活值\(a^{<1>}\)傳遞到第二個時間步,這步要計算句子中第二個詞會是什麽,此時的輸入為\(y^{<1>}\)(註意區分,不是\(\hat{y}^{<1>}\)),將當前訓練句子中真實的第一個詞作為輸入,即\(x^{<2>}=y^{<1>}\),接下來同樣經過softmax層得到n維向量\(\hat{y}^{<2>}\),每一維度所對應的數值,是已知第一詞為\(x^{<2>}\)時第二個詞是該單詞(每個維度對應唯一一個單詞)的概率。
以此類推,之後RNN中每個時間步的輸入都是上個時間步的真實值\(x^{<i>}=y^{<i-1>}\)
,之後根據前\((i-1)\)個真實值\(y^{<i>}\)所包含的信息計算得到輸出值\(\hat{y}^{<i>}\),一個n維向量,n是詞典的大小。
RNN訓練語言模型時采用的損失函數是softmax的損失函數,即交叉熵損失函數,公式如下:
\[L(\hat{y}^{<t>},y^{<t>})=-\sum_i y_i^{<t>}log \hat{y}_i^{<t>}\]
\[L = \sum_t L^{<t>}(\hat{y}^{<t>},y^{<t>}) \]

  • 第一個公式中\(y\)
    是真實的數據分布,\(\hat{y}\)是預測的數據分布,i代表一個訓練batch中的每個訓練數據。
  • 第二個公式將不同時刻的損失函數值累加,得到最終的損失函數。RNN在該公式的基礎上進行反向傳播。

現在我們已經掌握了RNN訓練語言模型的具體細節,那麽當模型訓練完成後,我們該如何應用此模型計算某一句子出現的概率?
假設測試句子的長度為\(T_x\),將該序列作為輸入,重復上述操作但不進行反向傳播。最後模型可以生成\(T_x\)個輸出值,對這些值執行累乘操作,便得到了該句子的概率值。

吳恩達深度學習筆記(deeplearning.ai)之循環神經網絡(RNN)(二)