<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深入理解RNN

          共 4254字,需瀏覽 9分鐘

           ·

          2020-10-04 14:48

          ?深度學(xué)習(xí)

          Author:louwill

          From:深度學(xué)習(xí)筆記


          深度學(xué)習(xí)以處理非結(jié)構(gòu)化數(shù)據(jù)而著稱。除了常見的應(yīng)用在圖像領(lǐng)域的CNN之外,對(duì)于語音和文本等序列型的非結(jié)構(gòu)化數(shù)據(jù),CNN的效果并不好。本講介紹一種在自然語言處理等領(lǐng)域應(yīng)用非常廣泛的一種序列網(wǎng)絡(luò)模型——循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)。

          從語音識(shí)別到自然語言處理

          CNN致力于解決如何讓計(jì)算機(jī)理解圖像的問題,但僅僅是視覺層面,還遠(yuǎn)遠(yuǎn)談不上人工智能。人工智能除了要具備視覺能力之外,還得具備聽力和讀寫能力。先看機(jī)器如何聽的問題,也就是深度學(xué)習(xí)在語音識(shí)別方面的應(yīng)用。語音識(shí)別應(yīng)該是日常生活中比較常見的深度學(xué)習(xí)應(yīng)用了,例如,蘋果的siri,阿里的天貓精靈智能音箱等等,大家可以輕而易舉的生成一段語音數(shù)據(jù),siri收到你的語音信號(hào)后,通過內(nèi)置的模型和算法將你的語音轉(zhuǎn)化為文本,并根據(jù)你的語音指令給出反饋。那么語音識(shí)別這么高級(jí)的技術(shù)適用于深度學(xué)習(xí)方法嗎?當(dāng)然可以。相較于圖像三維矩陣的存在形式,我們先來看看語音在計(jì)算機(jī)中是以何種形態(tài)呈現(xiàn)的。
          ?
          語音通常是由音頻信號(hào)構(gòu)成的,而音頻信號(hào)本身又是以聲波的形式進(jìn)行傳遞的,一段語音的波形通常是一種時(shí)序狀態(tài),也就是說音頻是按照時(shí)間順序播放的。一段語音信號(hào)外形如圖1所示。

          ? ? ? ? ? ? ? ? ?

          圖1 語音信號(hào)
          ?
          通過一些預(yù)處理和轉(zhuǎn)換技術(shù),我們可以將聲波轉(zhuǎn)換為更小的聲音單元,即音頻塊。所以在語音識(shí)別的深度學(xué)習(xí)模型中,我們的輸入就是原始的語音片段經(jīng)過預(yù)處理之后的一個(gè)個(gè)音頻塊,這樣的音頻塊是以序列形式存在的,所以輸入是一個(gè)序列。那么輸出呢?也就是咱們語音識(shí)別的結(jié)果是啥。語音識(shí)別的結(jié)果通常以一段文字的形式呈現(xiàn),例如,siri會(huì)快速識(shí)別出你的語音指令并將識(shí)別結(jié)果以文字形式打印在手機(jī)屏幕上。這段文字也是一個(gè)按順序排列的文本序列,所以我們的輸出也是一個(gè)序列。那么如何建立由序列輸入到序列輸出之間的有監(jiān)督機(jī)器學(xué)習(xí)模型呢?這便是RNN的要做的事。

          能讓機(jī)器會(huì)看懂圖像、聽懂語音還不夠,最好還得能理解人類語言。所謂自然語言處理(Natural Language Processing,NLP),就是讓計(jì)算機(jī)具備處理、理解和運(yùn)用人類語言的能力。實(shí)際上,NLP的任務(wù)難度要遠(yuǎn)大于計(jì)算機(jī)視覺。人類語言的多樣性、復(fù)雜性和歧義性,即使是一個(gè)國家、一個(gè)省份甚至一個(gè)地區(qū)大家說的語言都差之千里,我們自己都談不上能充分理解人類語言,更何況去讓機(jī)器理解?但雖說如此,但在基于深度學(xué)習(xí)的自然語言處理上,目前確實(shí)能夠做到一定程度的讓機(jī)器理解人類語言。

          沒有語言,我們的思維就無從談起,那么對(duì)于機(jī)器來說,沒有語言,人工智能永遠(yuǎn)都不夠智能。所以從這個(gè)角度來說,自然語言處理代表了深度學(xué)習(xí)最高任務(wù)境界。雖說是最高境界,但也脫離不了監(jiān)督機(jī)器學(xué)習(xí)基本范式。以NLP的一個(gè)應(yīng)用案例——機(jī)器翻譯來分析一下,看看基于深度學(xué)習(xí)自然語言處理問題是如何被規(guī)范為一個(gè)從輸入到輸出的有監(jiān)督機(jī)器學(xué)習(xí)問題的。

          相信不少朋友都用過機(jī)器翻譯,谷歌翻譯、百度翻譯、有道翻譯,可供選擇的工具就有很多,將大段的英文復(fù)制粘貼到谷歌翻譯中直接機(jī)翻的經(jīng)歷應(yīng)該很多人都有過。在這樣的一個(gè)問題里,模型輸入毫無疑問就是一段待翻譯的中文、英文或者是任意國家的文字,總的來說輸入是由一個(gè)個(gè)單詞或者文字組成的序列文本。那么作為翻譯的結(jié)果,輸出也是一個(gè)個(gè)單詞或者文字組成的序列文本,只不過換了一種語言,所以在機(jī)器翻譯這樣一個(gè)自然語言處理問題中,研究的關(guān)鍵在于如何構(gòu)建一個(gè)深度學(xué)習(xí)模型來將輸入語言轉(zhuǎn)化為輸出語言??梢钥吹?,這個(gè)問題跟前面語音識(shí)別的例子很像,它們的輸入輸出形式都是序列化的。針對(duì)這樣的序列建模問題,深度學(xué)習(xí)給出的網(wǎng)絡(luò)方案和語音識(shí)別一樣,都是循環(huán)神經(jīng)網(wǎng)絡(luò)。圖2給出的是谷歌機(jī)器翻譯的例子。

          圖2 谷歌翻譯
          ?
          對(duì)于博大精深的自然語言處理來說,機(jī)器翻譯還僅僅是一個(gè)小的方向,除此之外,自然語言處理還包括很多有趣的研究與應(yīng)用方向:句法語義分析、文本挖掘、信息檢索、問答系統(tǒng)等等。但是不管是哪個(gè)方向的應(yīng)用,只要它是屬于監(jiān)督機(jī)器學(xué)習(xí)性質(zhì)的深度學(xué)習(xí)問題,我們都可以將其歸納為一個(gè)從輸入到輸出的有監(jiān)督機(jī)器學(xué)習(xí)問題。
          ?
          RNN網(wǎng)絡(luò)架構(gòu)與技術(shù)

          相較于DNN和CNN,RNN網(wǎng)絡(luò)結(jié)構(gòu)有什么特別之處?它與前兩者又有哪些不一樣的結(jié)構(gòu)設(shè)計(jì)?在對(duì)RNN的結(jié)構(gòu)進(jìn)行深入了解之前,我們先對(duì)RNN的應(yīng)用場景進(jìn)行梳理。假設(shè)我們?cè)谶M(jìn)行語音識(shí)別時(shí),給定了一個(gè)輸入音頻片段X,要求我們輸出一個(gè)文本片段Y,其中輸入X是一個(gè)按照時(shí)間播放的音頻片段,Y是一個(gè)按照順序排列的單詞組成的一句話,所以在RNN中我們的輸入輸出都是序列性質(zhì)的。針對(duì)這樣的輸入輸出(X,Y)的有監(jiān)督學(xué)習(xí),最適合的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)就是循環(huán)神經(jīng)網(wǎng)絡(luò)。為什么循環(huán)神經(jīng)網(wǎng)絡(luò)就最適用這種場景?

          假設(shè)我們現(xiàn)在需要對(duì)輸入的一段話識(shí)別其中每個(gè)單詞是否是人名,即輸入是一段文本序列,輸出是一個(gè)每個(gè)單詞是否是人名的序列。假設(shè)這段話有9個(gè)單詞,我們將其轉(zhuǎn)化為9個(gè)one-hot向量輸入到標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)中去,經(jīng)過一些隱藏層和激活函數(shù)得到最終9個(gè)值為0/1 的輸出。但這樣做的問題有兩個(gè)。

          一是輸入輸出的長度是否相等以及輸入大小不固定的問題。在語音識(shí)別問題中,輸入音頻序列和輸出文本序列很少情況下是長度相等的,普通網(wǎng)絡(luò)難以處理這種問題。

          二是普通神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)不能共享從文本不同位置上學(xué)到的特征,簡單來說就是如果神經(jīng)網(wǎng)絡(luò)已經(jīng)從位置1學(xué)到了louwill是一個(gè)人名,那么如果louwill出現(xiàn)在其他位置,神經(jīng)網(wǎng)絡(luò)就可以自動(dòng)識(shí)別到它就是已經(jīng)學(xué)習(xí)過的人名,這種共享可以減少訓(xùn)練參數(shù)和提高網(wǎng)絡(luò)效率,普通網(wǎng)絡(luò)不能達(dá)到這樣的目的。

          所以直觀上看,普通神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的區(qū)別如圖3所示。

          圖3 普通網(wǎng)絡(luò)和RNN在結(jié)構(gòu)上的區(qū)別
          ?
          那么RNN的具體結(jié)構(gòu)是怎樣的?

          假設(shè)我們將一個(gè)句子輸入RNN,第一個(gè)輸入的單詞就是, 我們將輸入到神經(jīng)網(wǎng)絡(luò),經(jīng)過隱狀態(tài)得到輸出判斷其是否為人名,即輸出為。同時(shí)網(wǎng)絡(luò)初始化隱狀態(tài)激活值,并在隱狀態(tài)中結(jié)合輸入進(jìn)行激活計(jì)算傳入到下一個(gè)時(shí)間步(Time Step)。當(dāng)輸入第二個(gè)單詞的時(shí)候,除了使用預(yù)測輸出之外,當(dāng)前時(shí)間步的激活函數(shù)會(huì)基于上一個(gè)時(shí)間步的進(jìn)行激活計(jì)算,即第二個(gè)時(shí)間步利用了第一個(gè)時(shí)間步的信息。這便是循環(huán)(Recurrent)的含義。如此下去,一直到網(wǎng)絡(luò)在最后一個(gè)時(shí)間步輸出和激活值。所以在每一個(gè)時(shí)間步中,RNN傳遞一個(gè)激活值到下一個(gè)時(shí)間步中用于計(jì)算。

          圖4所示是循環(huán)神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)。左邊是一個(gè)統(tǒng)一的表現(xiàn)形式,右邊則是左邊的展開圖解。在這樣的循環(huán)神經(jīng)網(wǎng)絡(luò)中,當(dāng)我們?cè)陬A(yù)測時(shí),不僅要使用的信息,還要使用的信息,因?yàn)樵跈M軸路徑上的隱狀態(tài)激活信息得以幫助我們預(yù)測。

          圖4 RNN基本結(jié)構(gòu)

          所以,RNN單元結(jié)構(gòu)通常需要兩次激活運(yùn)算,一次是結(jié)合上一個(gè)時(shí)間步的隱狀態(tài)值和輸入的計(jì)算,另一個(gè)是基于當(dāng)前隱狀態(tài)值的輸出計(jì)算。一個(gè)RNN單元和兩次計(jì)算如圖5所示。

          圖5 RNN單元
          ?
          兩次激活運(yùn)算公式如下:? ??????????????????????????

          其中隱藏層的激活函數(shù)一般采用tanh,而輸入輸出的激活函數(shù)一般使用sigmoid或者 softmax函數(shù)。當(dāng)多個(gè)這樣的RNN單元組合到一起便是RNN結(jié)構(gòu)。一個(gè)RNN結(jié)構(gòu)如圖6所示。

          圖6 RNN結(jié)構(gòu)
          ?
          這樣的帶有時(shí)間和記憶屬性的神經(jīng)網(wǎng)絡(luò)模型使得深度學(xué)習(xí)可以勝任語音識(shí)別和自然語言處理等序列建模問題。
          ?

          四種RNN結(jié)構(gòu)

          以上是RNN最基本的結(jié)構(gòu)形式,但NLP等序列建模問題多樣且復(fù)雜,基礎(chǔ)的RNN結(jié)構(gòu)并不夠用,在初始RNN結(jié)構(gòu)的基礎(chǔ)上,針對(duì)多種不同的任務(wù)類型,RNN可以分為表1中的4種類型。
          表1 4種RNN結(jié)構(gòu)
          結(jié)構(gòu)類型
          簡稱
          適用任務(wù)場景
          一對(duì)多
          1 VS N
          根據(jù)類型生成對(duì)應(yīng)音樂或圖像等
          多對(duì)一
          N VS 1
          情感分析、文本分類等
          多對(duì)多(等長)
          N VS N
          視頻每幀分類等
          多對(duì)多(不等長)
          N VS M
          機(jī)器翻譯、語言識(shí)別等
          ?
          下面就簡單來介紹一下這4種RNN結(jié)構(gòu)。

          首先是一對(duì)多結(jié)構(gòu)。所謂一對(duì)多就是指RNN只有一個(gè)輸出,但卻有多個(gè)輸出的情形,也即輸入為單一值,輸出為一個(gè)序列,其結(jié)構(gòu)如圖7所示。一對(duì)多結(jié)構(gòu)在音樂生成、圖像生成或視頻生成等方面有著廣泛的應(yīng)用。指定一種類型,要神經(jīng)網(wǎng)絡(luò)生成這個(gè)類型的音樂,這是一種較為常見的應(yīng)用。

          圖7 1 VS N結(jié)構(gòu)
          ?
          與一對(duì)多相對(duì)應(yīng)的則是多對(duì)一結(jié)構(gòu),多對(duì)一正好跟一對(duì)多輸入輸出調(diào)換了一下,即有多個(gè)輸入,但僅有一個(gè)輸出。這種結(jié)構(gòu)也有廣泛的應(yīng)用場景,例如,對(duì)電影評(píng)論的情感分析,就是一個(gè)簡單的文本分類問題,輸入有多個(gè),但輸出只有一個(gè)類別標(biāo)簽。多對(duì)一結(jié)構(gòu)如圖8所示。

          圖8 多對(duì)一結(jié)構(gòu)
          ?
          最后是多對(duì)多結(jié)構(gòu),即輸入輸出都是多個(gè)的情形。但多對(duì)多又可以分為輸入輸出等長和不等長兩種情形。等長的多對(duì)多也就是我們前面提到的經(jīng)典的RNN結(jié)構(gòu),有多少輸入就是多少輸出,這個(gè)限制使得等長RNN結(jié)構(gòu)在實(shí)際應(yīng)用中并不廣泛,但也有一些應(yīng)用場景是多對(duì)多的,例如,對(duì)視頻進(jìn)行逐幀分類,每一幀都打一個(gè)標(biāo)簽,這就是一種等長的多對(duì)多結(jié)構(gòu)。等長多對(duì)多結(jié)構(gòu)如圖9所示。

          圖9 等長多對(duì)多結(jié)構(gòu)
          ?
          最常見的是不等長的多對(duì)多結(jié)構(gòu),即輸入輸出雖然都是多個(gè),但并不相等。這種不等長的輸入輸出模型也叫作seq2seq(序列對(duì)序列)模型,不等長的多對(duì)多結(jié)構(gòu)符合實(shí)際序列建模的大多數(shù)情況,很多時(shí)候我們的輸入輸出序列并不等長,例如,我們進(jìn)行漢譯英的機(jī)器翻譯,輸入漢語句子和輸出英文句子基本不會(huì)等長。對(duì)于這種情況,RNN的做法通常是先將輸入序列編碼成一個(gè)上下文向量C,如圖10所示。具體的編碼過程到本書的第15講再進(jìn)行詳述,本講了解編碼結(jié)構(gòu)即可。

          圖10 多對(duì)多編碼結(jié)構(gòu)
          ?
          編碼完成后我們?cè)儆靡粋€(gè)RNN對(duì)C的結(jié)果進(jìn)行解碼,簡而言之就是將C作為初始狀態(tài)的隱變量輸入到解碼網(wǎng)絡(luò),如圖11所示。

          圖11 編碼+解碼結(jié)構(gòu)
          ?
          不等長的多對(duì)多結(jié)構(gòu)因?yàn)閷?duì)輸入輸出長度沒有限制,因而有著特別廣泛的應(yīng)用,主要包括語音識(shí)別、機(jī)器翻譯、文本摘要生成和閱讀理解等。

          往期精彩:

          【原創(chuàng)首發(fā)】機(jī)器學(xué)習(xí)公式推導(dǎo)與代碼實(shí)現(xiàn)30講.pdf

          【原創(chuàng)首發(fā)】深度學(xué)習(xí)語義分割理論與實(shí)戰(zhàn)指南.pdf


          喜歡您就點(diǎn)個(gè)在看!

          瀏覽 157
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  苍井空无码视频在线观看 | 久久亚洲精品中文字幕不卡一区 | 青娱乐,青娱乐老视频 | A久久综合网 | av影音先锋亚洲第一 |