淺析循環神經網路RNN的兩種應用

本文接前面兩篇筆記:一文搞懂RNN(循環神經網路)基礎篇、循環神經網路(RNN)為什麼能夠記憶歷史信息本文簡單介紹一下循環神經網路RNN的兩種應用。

RNN的應用主要有兩個,一個就是用來建模表示句子,得到一個完整的句子表示。一個是用來表示句子當上下文語境,比如到某一個單詞的時候,RNN的隱藏層狀態能夠表示為從開始到該詞語的句子語境表示,下面具體說一下。

RNN用作表示句子

它的應用可以有情感分析,條件句子建模,抽取,比如就情感分析為例來看。

我們任務的表示是:

  • Input: a sentence
  • Output: a sentiment label (2-class)

比如說:

  • Input I hate this movie
  • Output 1(代表正情感)

那種在傳統中的做法是將「I hate this movie」這句話通過特徵工程,變成一個特徵向量,然後送入分類器。

而在RNN表示為句子的時候,我們將「I hate this movie」通過一個RNN,在最後一個RNN的隱藏層狀態得到該句子的表示,然後相當於得到它的特徵向量,如下:

其餘兩個條件生成和抽取的應用也是類似。

表示上下文語境

我們可以看到,表示為上下文語境的應用有序列標註(詞性標註),語言模型預測下一個單詞。

為什麼這麼說呢?

比如在預測this的詞性的時候,我們並不是獨立的只看單個this單詞對最後的預測的影響,而是前面的RNN單元一起通過時間序列傳過來的隱層表示作為當前的語境表示用於最後的詞性預測:

如下表示:

而這兩種典型的不同應用也造成了loss的定義不同,一個是對所有狀態預測的loss之和表示,一個是只有最後一個loss。

兩種應用的Loss definition

RNN用作表示句子的應用中,loss就是最後的預測結果與真實的gold結果產生的loss反向傳回來,如下圖:

而在RNN用作表示上下文語境的應用中,total loss是所有時刻的loss之和。

如下圖表示:

不同的loss是根據不同的任務具體來定義的。這裡需要注意一下。

參考: 文章所有內容來自雙神晚茶會分享和下列材料 ?Neubig Lecture slides nn4nlp-06-rnn.pdf ?NNM4NLP Book?Neubig Lecture slides nn4nlp-06-rnn.pdf

推薦閱讀:

為什麼深度學習突然在改變你的生活
Python3《機器學習實戰》學習筆記(三):決策樹實戰篇之為自己配個隱形眼鏡
【西瓜書】周志華《機器學習》學習筆記與習題探討(三)②
seq2seq中的beam search演算法過程
A Neural Network Approach to Context-Sensitive Generation of Conversational Responses

TAG:RNN | 深度学习DeepLearning | 机器学习 |