安安!昨天我們一起認識了什麼是神經網路,他的一些基本概念,也了解它就是由許多層神經元組成,每一層都負責把資料處理得更抽象、更複雜,可以藉此處理更複雜的問題,我們今天來看看神經網路的種類有哪些吧!
前饋神經網路 (Feed Forward Neural Network)
這種神經網路是最早期、也最基本的一種結構。它的概念很簡單:資料從前面一層一路往後傳遞,不會回頭,也就是說,前一層的輸出會直接變成下一層的輸入,訊息是「單向傳播」的。
可以看到上圖,資料從輸入層進來,經過隱藏層層層處理後,再到輸出層產生結果,整個過程像是一條筆直的通道,訊息只會往前走,這就是「前饋(Feed Forward)」的意思。
我們昨天說到的MLP 也是一種前饋神經網路喔!
這樣的架構雖然簡單直觀,但也有兩個明顯的限制:
因為這些問題,研究者後來提出了一種「能記住上下文」的網路結構——那就是 RNN!
循環神經網路 (Recurrent Neural Network, RNN)
RNN 最大的特色是——它會記住前面的資訊,也就是說,RNN 在每一步的輸入,不只是現在的資料,還會考慮前面出現過的內容。
RNN 除了接收當前輸入,還會把「前一時刻的輸出」一起餵進來,這樣模型就能理解上下文之間的關係。
舉例來說,如果我們要讓模型理解一句話「我今天吃了蛋糕,它很好吃」,
RNN 在處理「它」這個詞時,會記得前面提到過「蛋糕」,因此能理解「它」指的其實就是「蛋糕」這件事
同樣地,如果我們讓模型預測下一個字,像是:
「我今天吃了蛋糕,它很好_」
那麼模型在看到「蛋糕」和「好」之後,就會傾向預測「吃」的機率比「玩」還要高,
因為它記得前文的語意,知道「吃蛋糕」才是更合理的延續。
RNN 如何運作?
RNN 的整體架構其實和一般神經網路一樣,主要分為三層:
輸入層(Input Layer)、隱藏層(Hidden Layer) 和 輸出層(Output Layer)。
不同的是在隱藏層 中,RNN 會「記住」前一個時間步的資訊。也就是說,在處理第 𝑡 個詞時,RNN 不只看現在的輸入 𝑥𝑡, 還會同時考慮前一時刻的隱藏狀態 ℎ𝑡−1,再一起計算出新的隱藏狀態 ℎ𝑡
最後接著,模型再根據這個隱藏狀態ℎ𝑡 來預測輸出。
RNN 主要有四種類型:
一對一:這是最基本的架構,輸入一筆資料就輸出一個結果。
一對多:input 只有一個,但模型會產生一連串的output,例如輸入一張圖片(ㄧ個input),模型就會生成描述這張圖片的文字
多對一:一個input 但會有多個output,像情感分析(Sentiment Analysis),輸入一句話「這部電影真的超好看!」模型可以輸出屬於正向類別
多對多:輸入和輸出都是序列,像是要做翻譯,輸入「I love dogs」,輸出「我愛狗」。
但因為輸入與輸出序列長度不一定相同,因此這類任務通常會用 Encoder-Decoder 架構來實現,這我們之後有機會再來介紹
RNN 優點
可惜的是,雖然 RNN 能處理時間序列與上下文,但它還是有幾個明顯問題
為了解決這些問題,研究者後來提出了幾個改良版本:
好啦~那今天就先科普在這邊!我們明天見