自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

圖解 RNN (循環(huán)神經(jīng)網(wǎng)絡(luò)) 背后的數(shù)學(xué)原理

人工智能
今天我們就來討論下循環(huán)神經(jīng)網(wǎng)絡(luò)及其背后的基本數(shù)學(xué)原理,這些原理使得循環(huán)神經(jīng)網(wǎng)絡(luò)能夠做到其他神經(jīng)網(wǎng)絡(luò)做不到的事情。

引言

現(xiàn)在,關(guān)于機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和人工神經(jīng)網(wǎng)絡(luò)的討論越來越多了。但程序員往往只想把這些魔幻的框架用起來,大多并不想知道背后到底是如何運(yùn)作的。但是如果我們能夠掌握這些背后的原理,對于使用起來豈不更好。

今天我們就來討論下循環(huán)神經(jīng)網(wǎng)絡(luò)及其背后的基本數(shù)學(xué)原理,這些原理使得循環(huán)神經(jīng)網(wǎng)絡(luò)能夠做到其他神經(jīng)網(wǎng)絡(luò)做不到的事情。

? RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))。

這篇文章的目的是對循環(huán)神經(jīng)網(wǎng)絡(luò)的功能、結(jié)構(gòu)提供一個(gè)直觀的認(rèn)識。

一個(gè)神經(jīng)網(wǎng)絡(luò)通常取自變量 X(或一組自變量)和因變量y ,然后它學(xué)習(xí)X 和 y之間的映射(我們稱之為訓(xùn)練),一旦訓(xùn)練完成,當(dāng)給定一個(gè)新的自變量,就能預(yù)測相應(yīng)的因變量。

但如果數(shù)據(jù)的順序很重要呢?想象一下,如果所有自變量的順序都很重要呢?

讓我來直觀地解釋一下吧。

只要假設(shè)每個(gè)螞蟻是一個(gè)獨(dú)立變量,如果一個(gè)螞蟻朝著不同的方向前進(jìn),對其他螞蟻來說都沒關(guān)系,對吧?但是,如果螞蟻的順序很重要怎么辦?

此時(shí),如果一只螞蟻錯過或者離開了群體,它將會影響到后面的螞蟻。

那么,在機(jī)器學(xué)習(xí)空間中,哪些數(shù)據(jù)的順序是重要的呢?

  • 自然語言數(shù)據(jù)的詞序問題
  • 語音數(shù)據(jù)
  •  時(shí)間序列數(shù)據(jù)
  • 視頻/音樂序列數(shù)據(jù)
  • 股市數(shù)據(jù)
  • 等等

那么 RNN 是如何解決整體順序很重要的數(shù)據(jù)呢?我們用自然文本數(shù)據(jù)為例來解釋 RNN。

假設(shè)我正在對一部電影的用戶評論進(jìn)行情感分析。

從這部電影好(This movie is good) — 正面的,再到這部電影差(This movie is bad) — 負(fù)面的。

我們可以通過使用簡單的詞匯袋模型對它們進(jìn)行分類,我們可以預(yù)測(正面的或負(fù)面的),但是等等。

如果影評是這部電影不好(This movie is not good),怎么辦?

BOW 模型可能會說這是一個(gè)積極的信號,但實(shí)際上并非如此。而 RNN 理解它,并預(yù)測它是消極的信息。

一. RNN 如何做到的呢?

1.各類 RNN 模型

(1)、一對多

RNN 接受一個(gè)輸入,比如一張圖像,并生成一個(gè)單詞序列。

(2)、多對一

RNN 接受一個(gè)單詞序列作為輸入,并生成一個(gè)輸出。

(3)、多對多

接下來,我們正專注于第二種模式多對一。RNN 的輸入被視為時(shí)間步長。

示例: 輸入(X) = [" this ", " movie ", " is ", " good "]

this 的時(shí)間戳是 x(0),movie 的是 x(1),is 的是 x(2),good 的是 x(3)。

2. 網(wǎng)絡(luò)架構(gòu)及數(shù)學(xué)公式

下面讓我們深入到 RNN 的數(shù)學(xué)世界。

首先,讓我們了解 RNN 單元格包含什么!我希望并且假設(shè)大家知道前饋神經(jīng)網(wǎng)絡(luò),F(xiàn)FNN 的概括,

? 隱藏層只有單一神經(jīng)元的前饋神經(jīng)網(wǎng)絡(luò)示例。

? 具有單一隱藏層的前饋神經(jīng)網(wǎng)絡(luò)。

在前饋神經(jīng)網(wǎng)絡(luò)中,我們有 X(輸入)、H(隱藏)和 Y(輸出)。我們可以有任意多的隱藏層,但是每個(gè)隱藏層的權(quán)值 W 和每個(gè)神經(jīng)元對應(yīng)的輸入權(quán)值是不同的。

上面,我們有權(quán)值 Wy10 和 Wy11,分別對應(yīng)于兩個(gè)不同的層相對于輸出 Y 的權(quán)值,而 Wh00、Wh01 等代表了不同神經(jīng)元相對于輸入的不同權(quán)值。

由于存在時(shí)間步長,神經(jīng)網(wǎng)絡(luò)單元包含一組前饋神經(jīng)網(wǎng)絡(luò)。該神經(jīng)網(wǎng)絡(luò)具有順序輸入、順序輸出、多時(shí)間步長和多隱藏層的特點(diǎn)。

與 FFNN 不同的是,這里我們不僅從輸入值計(jì)算隱藏層值,還從之前的時(shí)間步長值計(jì)算隱藏層值。對于時(shí)間步長,隱藏層的權(quán)值(W)是相同的。下面展示的是 RNN 以及它涉及的數(shù)學(xué)公式的完整圖片。

在圖片中,我們正在計(jì)算隱藏層的時(shí)間步長 t 的值:


? 不同的激活函數(shù)。

上面我們只計(jì)算了 Ht,類似地,我們可以計(jì)算所有其他的時(shí)間步長。

步驟:

 

   需要注意的是:

一旦前饋輸入完成,我們就需要計(jì)算誤差并使用反向傳播法來反向傳播誤差,我們使用交叉熵作為代價(jià)函數(shù)。

3. BPTT(時(shí)間反向傳播)

如果你知道正常的神經(jīng)網(wǎng)絡(luò)是如何工作的,剩下的就很簡單了,如果不清楚,可以參考本號前面關(guān)于人工神經(jīng)網(wǎng)絡(luò)的文章。

我們需要計(jì)算下面各項(xiàng),

  • 1、相對于輸出(隱藏和輸出單元)的總誤差如何變化?
  • 2、相對于權(quán)重(U, V, W)的輸出如何變化?

因?yàn)?W 對于所有的時(shí)間步長都是一樣的,我們需要返回到前面,來進(jìn)行更新。

? RNN 中的 BPTT。

記住 RNN 的反向傳播和人工神經(jīng)網(wǎng)絡(luò)的反向傳播是一樣的,但是這里的當(dāng)前時(shí)間步長是基于之前的時(shí)間步長計(jì)算的,所以我們必須從頭到尾遍歷來回。

如果我們運(yùn)用鏈?zhǔn)椒▌t,就像這樣

? 反向傳播鏈?zhǔn)椒▌t。

在所有時(shí)間步長上的 W 都相同,因此按鏈?zhǔn)椒▌t展開項(xiàng)越來越多。

回到實(shí)例

現(xiàn)在我們回過頭來談?wù)勎覀兊那楦蟹治鰡栴},這里有一個(gè) RNN,

我們給每個(gè)單詞提供一個(gè)詞向量或者一個(gè)熱編碼向量作為輸入,并進(jìn)行前饋和 BPTT,一旦訓(xùn)練完成,我們就可以給出新的文本來進(jìn)行預(yù)測。它會學(xué)到一些東西,比如不+積極的詞 = 消極的。

RNN 的問題 → 消失/爆炸梯度問題

由于 W 對于所有的時(shí)間步長都是一樣的,在反向傳播過程中,當(dāng)我們回去調(diào)整權(quán)重時(shí),信號會變得要么太弱要么太強(qiáng),從而導(dǎo)致要么消失要么爆炸的問題。

責(zé)任編輯:龐桂玉 來源: Python開發(fā)者
相關(guān)推薦

2021-01-18 14:38:53

神經(jīng)網(wǎng)絡(luò)人工智能神經(jīng)元

2017-11-29 13:55:55

神經(jīng)網(wǎng)絡(luò)循環(huán)神經(jīng)網(wǎng)絡(luò)RNN

2017-06-19 15:12:30

Uber神經(jīng)網(wǎng)絡(luò)事件預(yù)測

2023-03-03 08:17:28

神經(jīng)網(wǎng)絡(luò)RNN網(wǎng)絡(luò)

2020-12-27 21:09:50

神經(jīng)網(wǎng)絡(luò)AI

2020-09-23 14:52:01

GCN神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)

2025-02-25 10:50:11

2018-07-29 06:46:07

神經(jīng)網(wǎng)絡(luò)RNN循環(huán)神經(jīng)網(wǎng)絡(luò)

2022-10-19 07:42:41

圖像識別神經(jīng)網(wǎng)絡(luò)

2017-11-29 14:41:48

神經(jīng)網(wǎng)絡(luò)遞歸神經(jīng)網(wǎng)絡(luò)RNN

2019-07-12 07:26:26

神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)樂高

2020-12-19 11:05:57

循環(huán)神經(jīng)網(wǎng)絡(luò)PyTorch神經(jīng)網(wǎng)絡(luò)

2010-06-11 08:52:17

并行計(jì)算

2018-12-20 11:38:37

神經(jīng)元神經(jīng)網(wǎng)絡(luò)語言

2020-03-25 09:48:10

AI芯片神經(jīng)網(wǎng)絡(luò)

2017-08-28 21:31:37

TensorFlow深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2019-04-10 09:23:10

梯度下降機(jī)器學(xué)習(xí)算法

2017-08-04 14:23:04

機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)TensorFlow

2017-09-28 16:15:12

神經(jīng)網(wǎng)絡(luò)訓(xùn)練多層

2022-12-14 08:25:10

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號