iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用・114 年第二次・L23・第 27 題

線性激活函數讓模型無法學複雜特徵,怎麼改?

原題

某智慧製造團隊在開發瑕疵影像偵測模型時,發現使用線性激活函數(Activation Function)後,模型的訓練準確率長期停滯,懷疑模型無法學習到足夠複雜的特徵表達。若要改善此問題,下列哪一項調整方案最為合適?

白話

一個智慧製造團隊的瑕疵影像偵測模型,使用了線性激活函數之後,訓練準確率一直無法提升。他們懷疑問題出在模型「沒辦法學到足夠複雜的特徵表達」。

問你:為了讓模型能學習更複雜的特徵,最合適的調整方案是哪一項?

一句話總結

解決線性激活函數讓模型無法學習複雜特徵的問題,正確方案是:改用 ReLU(Rectified Linear Unit)激活函數,以引入非線性並提升模型表達能力,沒有非線性,不管疊多少層都只是一個線性變換,模型根本無法學習複雜模式。

情境

先感受問題:所有層加在一起還是直線

你是鴻海智慧製造廠的 AI 工程師,要訓練一個卷積神經網路偵測 PCB 電路板上的細微瑕疵(微短路、銅層剝落)。

你的網路有 5 層,但每層都用線性激活函數(f(x) = x)。跑了 100 個 Epoch,訓練準確率從 52% 爬到 57%,就再也上不去了。

問題出在哪?線性函數的數學告訴你:5 層線性層疊在一起,等於一層線性層。不管你疊多少層,整個網路最終等效於一個矩陣乘法。線性模型只能學直線(或超平面),但瑕疵的形狀、紋理、邊緣特徵都是高度非線性的:用直線去學曲線,當然學不了。

舊方法

線性激活函數的根本問題

  1. 疊層失效:線性函數的組合還是線性函數。5 層線性網路等效於 1 層,「深度」帶來的計算成本完全是浪費。
  2. 無法學習非線性決策邊界:現實問題(影像、語音、文字)的決策邊界幾乎都是非線性的。線性模型只能把特徵空間用一個超平面切開,無法捕捉複雜的類別分界。
  3. 表達能力上限固定:不管增加多少層、多少神經元,線性網路的表達能力都被限制在「線性空間」裡,本質上與邏輯迴歸(Logistic Regression 前的線性部分)相同。
  4. 梯度資訊無法有效傳播:線性函數的導數是常數,雖然不會梯度消失,但也無法讓不同層學到「不同層次的特徵」,每層學的都是同一件事的線性組合。
  5. 特徵階層無意義:深度學習的核心優勢是「特徵的層次抽象化」(低層學邊緣,高層學物體),但沒有非線性,這種層次結構根本無法形成。

新方法

ReLU 怎麼解

鴻海工程師把所有層的激活函數從 f(x) = x 換成 ReLU(f(x) = max(0, x)):

  • 引入非線性:ReLU 在 x < 0 時輸出 0,在 x ≥ 0 時輸出 x。這個「折點」讓整個網路不再是一個線性變換,每一層都能學到真正不同的特徵組合。
  • 層次特徵有意義:第 1-2 層學像素級邊緣特徵;第 3-4 層組合邊緣成為形狀特徵;第 5 層整合形狀特徵識別瑕疵類型。
  • 梯度傳播順暢:ReLU 在正值區的導數是 1,不像 Sigmoid 在端點梯度接近 0。反向傳播時梯度能高效流動,深層網路也能正常訓練。
  • 計算簡單:只需判斷 x 正負,比 Sigmoid(需要 exp 運算)快得多,適合影像任務的大量神經元。

換成 ReLU 後,訓練準確率在 50 個 Epoch 內從 57% 爬到 93%。

這就是選項 D 講的:改用 ReLU(Rectified Linear Unit)激活函數,以引入非線性並提升模型表達能力。

錯選項

為什麼其他選項是錯的

A增加卷積層(Convolutional Layer)數量,使網路更深以強化特徵提取

字面在說什麼

更多卷積層意味著更深的網路,理論上能提取更高層次的特徵。

為什麼不對

如果激活函數還是線性的,加再多卷積層也沒用:線性函數的組合仍然是線性函數,整個網路等效於一個卷積層。必須先解決非線性問題,增加層數才有意義。題目的根本問題是「線性激活函數」,解決根本問題優先於增加層數。

誰會選錯

聽說「深度學習就要很深」就直覺想加層的人,沒有先分析瓶頸在哪裡(激活函數的線性問題)。

B將輸入影像先進行灰階化處理,降低運算量

字面在說什麼

把 RGB 三通道的彩色影像轉成單通道灰階,減少輸入資料量,讓計算更快。

為什麼不對

灰階化能降低計算量,但完全沒有解決「模型無法學習複雜特徵表達」的問題。而且,對於瑕疵偵測來說,灰階化可能還會丟失顏色資訊(例如銅氧化的顏色變化),反而降低準確率。這個選項是在優化計算速度,不是在解決模型表達能力的問題。

誰會選錯

把「準確率停滯」誤解成「計算資源不夠,需要加速」的人。題目明確說問題是「無法學習足夠複雜的特徵」,不是計算太慢。

C使用 Sigmoid 激活函數,以將輸出壓縮至 [0,1] 範圍

字面在說什麼

Sigmoid 確實是非線性函數,能引入非線性,而且輸出在 [0,1] 可以解釋為機率。

為什麼不對

Sigmoid 雖然是非線性的,但在深層 CNN 中用 Sigmoid 作為隱藏層激活函數是反模式。原因:(1)梯度消失問題嚴重:Sigmoid 在 x > 2 或 x < -2 時梯度接近 0,深層網路反向傳播時梯度幾乎無法傳到底層;(2)計算慢:需要 exp 運算,遠比 ReLU 慢;(3)輸出不以零為中心,對梯度更新不利。Sigmoid 只適合用在二分類的最後輸出層,不適合隱藏層。

誰會選錯

知道 Sigmoid 是非線性函數,但不了解它在深層 CNN 隱藏層中有梯度消失問題的人。ReLU 之所以取代 Sigmoid 成為標準,正是因為在深層網路中 Sigmoid 的梯度問題太嚴重。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用 第 27 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。