iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0
生成式 AI

《AI 新手到職場應用:深度學習 30 天實戰》系列 第 11

反向傳播不難懂:梯度如何讓模型變聰明

  • 分享至 

  • xImage
  •  

在前幾天的學習中,我們了解了有關神經網路的基本組成,
像是資料如何進入模型(前向傳播)、如何透過啟動函數轉換訊號、
還有如何利用損失函數評估模型的表現等等。

但到目前為止,還有一個重要的問題我們還沒去討論到:
當我們知道模型的預測結果和真實答案有差距時,
模型究竟是怎麼「修正自己」的呢?

答案就在於「反向傳播」與「梯度」這兩個核心概念。
反向傳播提供了一種有效率的方法,能夠逐層計算每個參數對誤差的影響,
而梯度則像一個方向指引,告訴模型應該如何調整參數,才能更接近正確答案。

在今天,我們就要揭開這個讓神經網路「會學習」的關鍵機制,
來剖析這兩個關鍵概念。


什麼是梯度?

梯度(Gradient)是數學上的一個概念,
可以把它想像成函數在某個點的斜率在多維空間的延伸。

如果函數只有一個變數,斜率告訴我們函數在該點是往上升還是往下降。
而在多維的情況下,梯度則變成是一個向量,指出函數上升最快的方向

在神經網路裡,損失函數告訴我們模型預測和真實答案的差距,
而梯度則告訴我們:如果要減少這個差距,應該怎麼調整參數。
換句話說,梯度是一種「指引」,幫助模型一步一步找到讓損失降低的路線。

用簡單一些的比喻來形容的話,梯度有點像是一張地圖,
地圖上每個點會告訴你哪個方向是「下坡」。
模型學習的過程,就是沿著下坡方向不斷走,
直到找到一個谷底,也就是損失函數最低的地方

參考資料:
https://vocus.cc/article/677e72cdfd897800019867dc


什麼是反向傳播?

反向傳播(Backpropagation)則是一種演算法,
用來計算神經網路中每個參數對最終損失的影響。

它的核心是「鏈式法則」(Chain Rule),
也就是大家可能數學課上學過的(連鎖率),
用來處理複合函數微分的工具。

在前向傳播時,資料一層一層地經過神經網路,最後得到一個預測結果,並計算出損失函數。
接下來,反向傳播就會從輸出層開始,
誤差往回傳,並在每一層計算該層的權重和偏差對誤差的貢獻。

這樣一來,我們就能得到每個參數的梯度,然後再用最佳化方法(例如梯度下降法)去更新參數。

我覺得反向傳播的概念有一點「責任分攤」的感覺:
當模型算錯答案或算的不好時,它會回頭去問每一層,「是你的錯嗎!(大吼)」
然後一層一層問反著問回去,
再根據各層的責任比例,來調整它們的參數以減少錯誤。

參考資料:
https://medium.com/uxai/%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92%E9%A6%AC%E6%8B%89%E6%9D%BE-075-%E5%8F%8D%E5%90%91%E5%82%B3%E6%92%AD-backpropagation-f1b612e003df


反向傳播流程:

今天針對反向傳播流程,我不想討論太多數學相關問題,畢竟數字太沒感情了。
我下面會著重討論在「概念」部分,讓讀者可以有基礎的觀念,
若是想深入了解的可以再去查閱其他相關文獻,這邊就不占用篇幅了。

我們就直接開始吧:

1. 前向傳播:先算出結果

第一步還是輸入資料,把資料一路傳到輸出層,得到模型的預測結果。
也就是我們前面介紹過「前向傳播」的部份,連結下收:
https://ithelp.ithome.com.tw/articles/10384049

2. 損失計算:知道自己錯了多少

接下來要比較預測結果和正確答案,計算誤差。
這個數值會告訴我們:模型這次表現得好不好。

比如說,模型說「這張圖是 5」,但正確答案是「3」,那誤差就不小(~很大很大很大很大~~)。

3. 誤差回傳:把責任分配回每一層

這裡就是反向傳播的重點了。模型不會只知道「我錯了」,它還要知道「是誰害我錯的」。
所以演算法會把這個錯誤從輸出層往回傳,經過一層一層的神經元,
去計算每一層、甚至每一個權重對錯誤的貢獻。

這就像如果一個團隊把方案做壞了,上面的頭頭就會檢討每個部門在其中的影響一樣,
一個一個部門、一個一個人抓出來究責。

4. 梯度:告訴我們修正方向

經過上一步的責任分配之後,每個參數都會有一個「梯度」,
它就像一個方向箭頭,指出要怎麼調整才會讓誤差變小。

如果梯度是的,代表要往某個方向減少權重
而如果是的,代表要往另一個方向增加權重

5. 更新參數:一步步修正

有了梯度,我們就能更新模型的參數。
這個更新通常會搭配「學習率」這個設定,它決定我們每次修正的幅度要多大。

如果學習率太大,容易過頭,模型就會震盪;如果太小,學習就會變得很慢。

6. 重複訓練:越來越聰明

反向傳播不是一次就能讓模型變聰明,它必須不斷重複這個流程。
每一次模型都會稍微調整自己的參數,誤差也會慢慢下降。
當這個循環重複很多次之後,模型就會逐漸學會怎麼做出更準確的預測。


在今天我們學習了有關「梯度」以及「反向傳播」的概念,
算是把整個資料在模型內傳播的流程都補齊了,
也因為由於配置的緣故,
今天沒有一個一個把數學公式抓出來大談,
如果還想了解更多的人我就在下面放幾篇我的參考資料,
大家有興趣再行前往閱讀。

https://hackmd.io/@kk6333/HJqZGce1s
[https://zh.wikipedia.org/zh-tw/%E5%8F%8D%E5%90%91%E4%BC%A0%E6%92%AD%E7%AE%97%E6%B3%95]


上一篇
模型的方向盤:損失函數與最佳化目標
系列文
《AI 新手到職場應用:深度學習 30 天實戰》11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言