RNN/ LSTM/ Transformer 系列.1

更新 發佈閱讀 7 分鐘

前言:

神經網路模型,有處理圖片這類以「空間關係」數據為主的卷積神經網路 (CNN),也有處理以「時間或順序關係 (i.e. 序列數據/Sequential Data)」數據為主的「循環神經網路(Recurrent Neural Network/ RNN。

這次要一口氣介紹三個都是處理「序列」和「關係」的神經網路:RNN/ LSTM/ Transformer。

Transformer與前兩者有點不同,不過由於今天主要是要了解它們在自然語言上(理解文本與對話)的功用,所以擺在一起。

實際上,Transformer在處理「關係」上的優秀,不止在「時間/序列關係」上,同時也包含「空間關係」;這便是Transformer與RNN/ LSTM的不同之處。

內容會有以下:
一、循環神經網路 (Recurrent Neural Network/ RNN)
二、長短期記憶 (Long Short-Term Memory/ LSTM)
三、轉換器 (Transformer)
四、RNN/ LSTM/ Transformer 的小結&發展應用

那麼,就讓我們從 RNN 開始吧。


--

一、循環神經網路(Recurrent Neural Network/ RNN)

▷ RNN 概念**

RNN 的核心是「記憶」+「循環」。這意思是說,透過不斷地循環,持續地將上一個時間點的「上下文資訊」傳遞到下一個時間點,透過「一而再、再而三地加入下一個時間點的數據」,從而「記住」整個序列的上下文意義。
(**註:因為這次的焦點就是聚焦在自然語言的神經網路模型,所以本篇中所提及的 RNN,都將以NLP 自然語言處理的情境為主。)


▷ RNN 核心運作流程

0.分詞 (Tokenization)**
在一個句子輸入到 RNN 前,必須先進行「分詞 (Tokenization)」的步驟,也就是將句子中最基本的意義單位找出來。
-「英文」分詞:英文以空格來分隔單字,所以分詞相對簡單,例如:you are great. 直接可分為三個單字依序輸入 RNN。
-「中文」分詞:因為中文語句中,文字是連貫的,句子中沒有空格,所以相對複雜。因此,這裡的分詞動作,需先辨識出哪些字屬於同一個詞彙,然後將其視作一個完整的「詞元(Token)」處理。例如:指鹿為馬,經辨識後通常會被視為單一一體的詞語,而非 4個獨立的字。 →將語言處理為有意義的「詞元(Token)」序列,接著便要將這個序列依序輸入到 RNN 中。
(**註:分詞非必要步驟,取決於任務,NLP任務才會需要。)

1. RNN 的「記憶」:隱藏狀態
以一段對話**為例:
▪︎「A 聽 B 說話」:RNN 接收輸入。
▪︎「B 說的話在 A 腦中消化」:進入RNN 的「隱藏狀態」,開始進行更新和處理資訊。這個消化過程會總結B剛說過的內容,並將結果儲存起來。
▪︎「然後 A 做出回答」:RNN 根據這個「消化」後的資訊,做出輸出。
→透過這個過程,使得 RNN 能夠擁有了「上下文的連貫性」,於是進到下一個環節。
(**註:此處為了便於理解,以對話為例,不過隱藏狀態實質上是「數學向量」,而非語意文字記憶。)

2. RNN 進入「循環」結構,實現「上下文連貫著的」資訊的持續傳遞。
▪︎ 循環結構:上一個「隱藏狀態」 + 當前輸入運算產生「新的隱藏狀態」+輸出

3. 總結1+2的運作流程,拆解成以下步驟:
[上一個隱藏狀態] + [當前輸入] 
↓ 
運算 
↓ 
新的隱藏狀態 
↓ 
(傳遞給下一個時間點) 輸出
→→透過將「新的隱藏狀態」作為下一個時間點的「上一個隱藏狀態」,再次進入運算、再次循環。整個過程不斷重複,直到序列結束。這種重複的運算,讓 RNN 能夠處理長度可變的序列,而不會因為句子的長短而受限。


▷ RNN 的困難「梯度消失 (Vanishing Gradient Problem)

1. 什麼是「梯度」?
梯度是一個數值,在神經網路模型中,是用來幫助神經網路學習的「動態」學習訊號。它告訴神經網路每個參數應該調整多少,才能讓預測更準確。這個訊號是在模型進行訓練時,在「反向傳播」過程中反饋錯誤時,透過一連串的數學運算產生的。

2. 為什麼梯度會「消失」?
在「反向傳播」的過程中,梯度需要不斷地與每一個神經元中的權重 (Weights) 相乘。連續地乘以多個小於 1 的小數時,結果會變得越來越小。在 RNN 中,每處理一個單字,這個梯度訊號就要「傳遞」一次,經歷一次乘法。當句子非常長時,這個訊號在到達最前面(例如句子的開頭) 時,就已經變得太小,無法有效地調整那些神經元的權重了。

3. 梯度消失**的問題是?
假設一個很長的語句,在經過冗長的計算後,最初開頭的詞元的梯度已經過小,變得消失,這便會導致 RNN 無法記住長句子開頭資訊,所以「梯度衰退」也就導致早期輸入的資訊,幾乎無法影響最終的參數更新,呈現出「記憶力衰退」。不過,這只會在 RNN的訓練(學習)階段才會發生。
(**註:可以想見的是,有「梯度消失」,相對地就會有「梯度爆炸」,也就是一對動態數值的兩端。梯度消失是訊號越傳越小,導致前期資訊的消失,而梯度爆炸則是朝向另一個極端,權重更新過大,導致訓練不穩定。)

4. 解決方案
針對 RNN「梯度消失」的問題,最直覺的方向就是想辦法不讓記憶衰退**。於是有了LSTM的誕生:從架構上改善,也就是接下來要進入的部分:「長短期記憶 (Long Short-Term Memory/ LSTM)」。這是一個頗具成效的解法,在下一段中,透過了解LSTM,便可知道它是如何做到記憶力「不」衰退。
(**註:關於「梯度爆炸」的解法,大致包含3個方向:限定梯度大小範圍Gradient Clipping;正則化與初始化技巧一開始就避開權重太大的可能 Xavier/He 初始化;而「梯度消失」的從架構改善以控制訊號流動LSTM/GRU 也是一種方式。不過這裡我們將聚焦針對「梯度消失」與LSTM,而不在「梯度爆炸」的部分多作著墨。)

留言
avatar-img
留言分享你的想法!
avatar-img
不是雞湯,但是又如何
3會員
320內容數
不是雞湯,但 是又如何 不是雞湯,但是 又如何
2025/08/28
「人工智慧 +1」自學 Day8:「生成式對抗網路GANs」(Generative Adversarial Networks) (**非常有趣的概念!) ▷概念:什麼是 GANs? ▪︎ 定義 GANs 本質上就是一個由兩個神經網路模型「生成器(Generator)」與「判別器(Discrimi
2025/08/28
「人工智慧 +1」自學 Day8:「生成式對抗網路GANs」(Generative Adversarial Networks) (**非常有趣的概念!) ▷概念:什麼是 GANs? ▪︎ 定義 GANs 本質上就是一個由兩個神經網路模型「生成器(Generator)」與「判別器(Discrimi
2025/08/25
「人工智慧 +1」自學 Day7:AI 的倫理議題&AI 的獨特性 (透過這篇,我想要來探討我對於 AI 學習&應用最為關注的主題:AI 的倫理議題。) - 前言: 為何有需要探討 AI 的倫理議題?這主要是因為涉及了 AI 這項技術的獨特性。AI 作為一項人類社會前所未見的創新發明,再一次
Thumbnail
2025/08/25
「人工智慧 +1」自學 Day7:AI 的倫理議題&AI 的獨特性 (透過這篇,我想要來探討我對於 AI 學習&應用最為關注的主題:AI 的倫理議題。) - 前言: 為何有需要探討 AI 的倫理議題?這主要是因為涉及了 AI 這項技術的獨特性。AI 作為一項人類社會前所未見的創新發明,再一次
Thumbnail
2025/08/23
「人工智慧 +1」自學 Day6:知識圖譜 (Knowledge Graphs)** (**我喜歡知識圖譜...) - ▹「知識圖譜」的概念→「資料庫模型」 A.「以圖形結構儲存數據的資料庫模型」 「知識圖譜」使用了「圖形(Graph)」的方式進行資料儲存。因此是一種特殊的數據資料庫,目的
2025/08/23
「人工智慧 +1」自學 Day6:知識圖譜 (Knowledge Graphs)** (**我喜歡知識圖譜...) - ▹「知識圖譜」的概念→「資料庫模型」 A.「以圖形結構儲存數據的資料庫模型」 「知識圖譜」使用了「圖形(Graph)」的方式進行資料儲存。因此是一種特殊的數據資料庫,目的
看更多
你可能也想看
Thumbnail
本篇文章介紹如何使用PyTorch構建和訓練圖神經網絡(GNN),並使用Cora資料集進行節點分類任務。通過模型架構的逐步優化,包括引入批量標準化和獨立的消息傳遞層,調整Dropout和聚合函數,顯著提高了模型的分類準確率。實驗結果表明,經過優化的GNN模型在處理圖結構數據具有強大的性能和應用潛力。
Thumbnail
本篇文章介紹如何使用PyTorch構建和訓練圖神經網絡(GNN),並使用Cora資料集進行節點分類任務。通過模型架構的逐步優化,包括引入批量標準化和獨立的消息傳遞層,調整Dropout和聚合函數,顯著提高了模型的分類準確率。實驗結果表明,經過優化的GNN模型在處理圖結構數據具有強大的性能和應用潛力。
Thumbnail
延續上一篇訓練GAM模型,這次我們讓神經網路更多層更複雜一點,來看訓練生成的圖片是否效果會更好。 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 資料集分割處理的部分在延續上篇文章,從第五點開始後修改即可,前面都一樣 訓練過程,比較圖 是不是CNN的效果比MLP還要好,
Thumbnail
延續上一篇訓練GAM模型,這次我們讓神經網路更多層更複雜一點,來看訓練生成的圖片是否效果會更好。 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 資料集分割處理的部分在延續上篇文章,從第五點開始後修改即可,前面都一樣 訓練過程,比較圖 是不是CNN的效果比MLP還要好,
Thumbnail
本文主要介紹,如何利用VAE變分自編碼器來訓練生成圖片。 訓練集資料將採用TF影像資料庫中的fashion_mnist VAE變分自編碼器簡單介紹 •VAE(Variational Auto-Encoder)中文名稱變分自編碼器,主要是一種將原始資料編碼到潛在向量空間,再編碼回來的神經網路。
Thumbnail
本文主要介紹,如何利用VAE變分自編碼器來訓練生成圖片。 訓練集資料將採用TF影像資料庫中的fashion_mnist VAE變分自編碼器簡單介紹 •VAE(Variational Auto-Encoder)中文名稱變分自編碼器,主要是一種將原始資料編碼到潛在向量空間,再編碼回來的神經網路。
Thumbnail
透過這篇文章,我們將瞭解如何使用PyTorch實作圖神經網絡中的訊息傳遞機制,從定義消息傳遞的類別到實作消息傳遞過程。我們也探討了各種不同的消息傳遞機制,並通過對單次和多次傳遞過程的結果,可以看到節點特徵如何逐步傳遞與更新。
Thumbnail
透過這篇文章,我們將瞭解如何使用PyTorch實作圖神經網絡中的訊息傳遞機制,從定義消息傳遞的類別到實作消息傳遞過程。我們也探討了各種不同的消息傳遞機制,並通過對單次和多次傳遞過程的結果,可以看到節點特徵如何逐步傳遞與更新。
Thumbnail
本篇文章專注於消息傳遞(message passing)在圖神經網絡(GNN)中的應用,並以簡單的例子解釋了消息傳遞的過程和機制。
Thumbnail
本篇文章專注於消息傳遞(message passing)在圖神經網絡(GNN)中的應用,並以簡單的例子解釋了消息傳遞的過程和機制。
Thumbnail
本文主要筆記使用pytorch建立graph的幾個概念與實作。在傳統的神經網路模型中,數據點之間往往是互相連接和影響的,使用GNN,我們不僅處理單獨的數據點或Xb,而是處理一個包含多個數據點和它們之間連結的特徵。GNN的優勢在於其能夠將這些連結關係納入模型中,將關係本身作為特徵進行學習。
Thumbnail
本文主要筆記使用pytorch建立graph的幾個概念與實作。在傳統的神經網路模型中,數據點之間往往是互相連接和影響的,使用GNN,我們不僅處理單獨的數據點或Xb,而是處理一個包含多個數據點和它們之間連結的特徵。GNN的優勢在於其能夠將這些連結關係納入模型中,將關係本身作為特徵進行學習。
Thumbnail
GNN發展背景 傳統的深度學習模型如在計算機視覺(CV)和自然語言處理(NLP)領域中極為成功,主要是處理結構化數據如影像和文本。這些數據類型通常具有固定且規律的結構,例如影像是由有序的像素點組成。然而,在真實世界中,許多數據是非結構化的,如化合物結構(原子和分子)。這些數據雖然具有一定的規則性,
Thumbnail
GNN發展背景 傳統的深度學習模型如在計算機視覺(CV)和自然語言處理(NLP)領域中極為成功,主要是處理結構化數據如影像和文本。這些數據類型通常具有固定且規律的結構,例如影像是由有序的像素點組成。然而,在真實世界中,許多數據是非結構化的,如化合物結構(原子和分子)。這些數據雖然具有一定的規則性,
Thumbnail
長短期記憶(英語:Long Short-Term Memory,LSTM)是一種時間循環神經網路(RNN),論文首次發表於1997年。 LSTM(長短期記憶)是一種特定類型的遞歸神經網絡(RNN),在許多需要處理時間序列數據或順序數據的應用中非常有用。 以下是一些常見的 LSTM 應用:
Thumbnail
長短期記憶(英語:Long Short-Term Memory,LSTM)是一種時間循環神經網路(RNN),論文首次發表於1997年。 LSTM(長短期記憶)是一種特定類型的遞歸神經網絡(RNN),在許多需要處理時間序列數據或順序數據的應用中非常有用。 以下是一些常見的 LSTM 應用:
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News