iPAS AI 應用規劃師 初級 科目一 人工智慧基礎概論

梯度消失造成訓練停滯,改什麼最有效?

原題 45

某團隊訓練深層神經網路模型時,發現訓練誤差長時間幾乎未下降,模型參數更新幅度極小,呈現學習停滯現象。若判斷問題與梯度傳遞效率有關,下列何者最適合的改善策略?

白話

一個團隊在訓練深層神經網路時,發現訓練誤差長時間幾乎沒有下降,模型參數的更新幅度也極小,整個學習過程幾乎停滯了。團隊判斷問題出在梯度傳遞效率不佳。

問你:梯度傳遞效率不佳導致學習停滯,應該從哪個方向著手改善?

點選你的答案。

01 總結

一句話總結

梯度傳遞效率差是啟動函數的問題,改用梯度不容易消失的啟動函數(如 ReLU 系列),才能讓深層網路正常學習

02 情境

先感受問題:20 層的網路,訓練一週誤差沒動

想像你是「深思科技」的 AI 工程師。你設計了一個 20 層深的神經網路來辨識醫療影像,訓練跑了一週,損失曲線幾乎水平,沒有下降的跡象。模型的預測結果比亂猜好不了多少。

你懷疑是梯度傳遞的問題:反向傳播時,梯度從最後一層往前傳,每過一層就縮小一點,傳到第 1、2 層時幾乎歸零。前面幾層的參數完全得不到更新的訊號,就像一個老師喊口令但聲音傳到最後一排時已經無聲了。

模型不是因為資料不夠、也不是因為訓練時間不夠長,而是因為梯度在傳播過程中「消失」了,前面的層根本不知道自己該怎麼調整。

03 對照

梯度消失問題的五個典型錯誤診斷

  1. 以為是訓練時間不夠:延長訓練只能讓已經在學習的網路學更多,無法解決梯度根本傳不到前面幾層的結構性問題
  2. 以為是資料不夠:增加資料能提升模型的泛化能力,但梯度消失問題在任何資料量下都存在,多給資料沒有用
  3. 以為是過擬合:過擬合的症狀是訓練誤差低但驗證誤差高,這題的症狀是訓練誤差根本降不下去,方向完全相反
  4. 以為簡化模型就能解:簡化模型減少層數,可能間接緩解梯度消失,但這是放棄深層網路的能力,不是解決根本原因
  5. 以為加學習率就能解:調大學習率只能讓更新步伐變大,但梯度是 0 乘以任何學習率都還是 0,無法改善

「深思科技」的工程師第一反應是「多跑幾個 epoch」,結果跑了兩週誤差還是沒動。

04 解法

換啟動函數怎麼解

梯度消失的直接原因是啟動函數的梯度在反向傳播時越乘越小。傳統的 Sigmoid 啟動函數,輸出值被壓縮在 0 到 1 之間,當輸入很大或很小時,梯度趨近於 0。20 層的網路,每層的梯度都小於 1,乘起來就接近 0 了。

換用 ReLU 系列啟動函數解決了這個問題:ReLU(Rectified Linear Unit)在輸入大於 0 時,梯度固定等於 1,不會隨著層數增加而越來越小。這讓梯度能一路傳到最前面幾層,每一層都能正常更新。

「深思科技」把所有隱藏層的啟動函數從 Sigmoid 換成 ReLU 後,訓練誤差在第三天就開始下降,一週後達到預期準確率。

這就是選項 C 講的:調整模型中的啟動函數設定,以改善訓練過程的穩定性

技術版:啟動函數與梯度消失在深層網路訓練的角色

梯度消失(Vanishing Gradient)是深度學習發展史上最關鍵的障礙之一,1990 年代就被 Sepp Hochreiter 詳細描述。這個問題導致深層網路長期無法訓練,讓 AI 研究停滯了將近二十年。

為什麼 Sigmoid 會造成梯度消失:Sigmoid 函數把任意輸入壓縮到 (0,1) 之間,它的最大梯度是 0.25(在 x=0 時)。20 層的網路,梯度每層乘以最大 0.25,到第 1 層時就剩下 0.25 的 20 次方,幾乎是 0。前面幾層的參數完全得不到學習訊號。

ReLU 如何解決:ReLU(f(x) = max(0, x))在正數區間梯度恆為 1,乘多少層都不會縮小。這讓梯度能有效傳播到任意深度的層,使深層網路的訓練成為可能。2012 年 AlexNet 大量使用 ReLU,成為深度學習復甦的關鍵之一。

啟動函數的選擇考量:初級考試只需知道「Sigmoid 容易梯度消失,ReLU 改善了這個問題」。常見啟動函數包括 Sigmoid(分類輸出層)、Tanh(比 Sigmoid 稍好但仍有消失問題)、ReLU(隱藏層首選)、Leaky ReLU(解決 ReLU 的「死亡神經元」問題)。

為什麼出題者要考這題:AI 應用規劃師在監督模型訓練時,必須能從「訓練曲線的症狀」推斷問題來源。「誤差長時間不降、更新幅度極小」是梯度消失的典型症狀,對應的解法是啟動函數,而非增加資料或延長訓練時間。

05 陷阱

為什麼其他選項是錯的

A延長模型訓練時間,使模型有更多機會調整參數

字面在說什麼

多跑幾個訓練回合(epoch),讓模型有更多機會更新參數、學到更好的表示。

為什麼不對

如果問題是梯度消失,那前面幾層的梯度根本是 0,不管跑多少個 epoch,參數更新幅度都是 0,延長訓練時間完全無效。這就像是聲音根本傳不到後排,叫後排同學「耐心等待、多聽幾遍」沒有任何意義。

誰會選錯

直覺認為「訓練不夠好 = 訓練時間不夠」的人。訓練時間是在「模型能正常學習的前提下」才有用,梯度消失的問題是「學習機制本身壞了」,不是「學習時間不夠」。

B增加訓練樣本數量,以提升模型學習能力

字面在說什麼

收集更多訓練資料,讓模型見過更多樣本、學到更豐富的特徵。

為什麼不對

資料量影響的是模型的泛化能力(能不能對沒見過的資料預測準確),不影響梯度傳播的機制。梯度消失是架構設計問題,加再多資料,梯度還是傳不到前面幾層,模型訓練誤差依然不動。

誰會選錯

「遇到模型表現差就加資料」的直覺型反應。這個直覺在某些情境有效(真的是資料不足時),但這題症狀是「誤差根本沒在動」,而非「訓練好但驗證差」,是架構問題不是資料問題。

D簡化模型結構,以降低模型過擬合的可能性

字面在說什麼

減少模型的層數或神經元數量,降低模型的複雜度,避免過擬合(記住訓練資料但無法泛化)。

為什麼不對

過擬合的症狀是「訓練誤差很低,但驗證誤差很高」。這題的症狀是「訓練誤差根本降不下去」,這是學習停滯,不是過擬合。簡化模型只是在診斷錯誤的問題上套一個無關的解法。

誰會選錯

把「模型學不好」和「模型學過頭」混淆的人。兩種症狀完全相反:學不好是訓練誤差高,學過頭是訓練誤差低但泛化差。讀到「誤差長時間未下降」就要排除過擬合的可能性。

06 變形

同個考點下次怎麼變形

變形 1

過擬合(Overfitting)的症狀是什麼?跟梯度消失怎麼區別?

直覺

兩個都是模型表現不好,有什麼差別?

答案

過擬合:訓練誤差很低、驗證誤差很高,模型記住了訓練資料但不能泛化。梯度消失:訓練誤差根本降不下去,模型連訓練資料都學不了。前者是「學太死」,後者是「學不動」,解法完全不同。

變形 2

為什麼深層(多層)神經網路比淺層更容易出現梯度消失問題?

直覺

層數越多應該學習能力越強,為什麼反而出問題?

答案

反向傳播時,梯度要從最後一層逐層乘回最前面。每過一層,如果啟動函數的梯度小於 1(Sigmoid 最大只有 0.25),梯度就縮小一次。層數越多,縮小的次數越多,乘積就越趨近於 0。5 層的網路梯度消失不嚴重,50 層的網路就完全訓練不動。

變形 3

除了改啟動函數,還有哪些方法可以緩解梯度消失問題?

直覺

改啟動函數是唯一解法嗎?

答案

還有幾種方法:殘差連接(Residual Connection,ResNet 的核心,讓梯度能跳過幾層直接傳遞)、批次正規化(Batch Normalization,穩定每層的輸入分佈,間接改善梯度流動)、梯度截斷(Gradient Clipping,防止梯度爆炸,常用在 RNN)。這些方法可以組合使用。

變形 4

訓練誤差很低、驗證誤差很高,應該採取什麼改善策略?

直覺

跟這題症狀不同,但很像常見考題。

答案

這是過擬合的症狀,改善策略包括:增加訓練資料量、使用資料增強(Data Augmentation)、加入正規化(L1/L2 Regularization)、使用 Dropout(隨機關閉部分神經元)、簡化模型結構(減少層數或神經元)。這些是針對過擬合,不是梯度消失。

變形 5

啟動函數在神經網路中的主要作用是什麼?

直覺

神經網路不就是一堆矩陣乘法,為什麼要有啟動函數?

答案

啟動函數引入非線性(Non-linearity)。沒有啟動函數,不管堆多少層,整個網路都只是線性變換,能學到的模式非常有限,等同於一層的效果。啟動函數讓每一層能學到不同的非線性特徵,使深層網路能表達複雜的關係。

07 延伸

想再往下看,這 5 個

出處

iPAS 經濟部產業人才能力鑑定 ・ 115 年第一次 iPAS AI 應用規劃師 初級 科目一 人工智慧基礎概論 第 45 題

查看官方原文 PDF