RNN的5種典型結構

引入

我已經在文章[1]中介紹了一些序列模型的應用,比如“中文翻譯爲英文”,“NER命名實體識別”,“歌詞生成”,“情緒識別”。

也在文章[2]中介紹了RNN結構的基本原理。

那問題來了,要實現“中譯英”和“歌詞生成”,我們選用的RNN結構是一樣的嗎?RNN有哪些典型的結構,分別對應哪些應用場景呢?

RNN的5種典型結構

首先,直接給出RNN的5中典型結構,如下圖。

在這裏插入圖片描述

然後我們依次講解。

1. One to One

這是最簡單的RNN結構,可以理解爲輸入一個單詞(或詞向量),輸出一個單詞(label)。

這種結構其實就是最普通的神經網絡,和RNN其實沒多大關係,寫到這裏也只是爲了保持理論的完整性,實踐中幾乎沒有這樣用RNN的。

2. One to Many

可以理解爲輸入一個label,就能輸出很多單詞。

這樣的應用比如“根據音樂類型(輸入int型的一個x),生成一篇音樂”,或者“生成文章”。

當然這裏有一個技術細節

  • 當你生成序列時,通常會把第一個合成的輸出,也餵給下一層
  • 所以圖中把第一個字符的輸出y,作爲了第二個字符的輸入

3. Many to One

可以理解爲,輸入一篇文章,輸出文章作者的情緒(0/1)。

這種“多對一”的結構,主要用於做“情緒識別”,或者“文章分類”。

4. Many to Many (Tx=Ty)

這就是[2]中介紹的最經典的RNN結構,這種結構的輸入序列數量和輸出序列數量相同,主要用於實現“NER命名實體識別”的應用。

Tx表示輸入序列的長度,Ty表示輸出序列的長度。

5. Many to Many (Tx!=Ty)

在某些情況中,比如做“中譯英”,我們的輸入中文漢字數量,和輸出的英文單詞數量不一樣。就必須要實現輸入輸出不等長的RNN。

這樣的RNN有兩部分組成,左半部分叫做“Encoder”(編碼器,獲取輸入),右半部分叫做“Decoder”(解碼器)。

參考

  • [0]. AndrewNg的《序列模型》教程
  • [1]. https://blog.csdn.net/ybdesire/article/details/102963683
  • [2]. https://blog.csdn.net/ybdesire/article/details/103449597
發佈了190 篇原創文章 · 獲贊 259 · 訪問量 122萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章