深度學習知識地圖 · 基礎架構
梯度下降
Backpropagation
觀念教學
損失函數告訴你「錯多少」,梯度下降(Gradient Descent)告訴你「往哪修、修多大步」。它與反向傳播(Backpropagation)聯手,是訓練神經網路的核心演算法。
核心觀念
梯度是損失對每個權重的斜率,指向損失上升最快的方向;往反方向走一步,損失就下降。更新規則的白話版:新權重 = 舊權重 減去 學習率 乘以 梯度。反向傳播負責把輸出端的誤差沿網路一層層往回傳,高效算出每個權重該負的責任(梯度),再交給梯度下降更新權重、最小化損失。
白話理解
濃霧中下山:看不到整座山(全域最佳解),只能摸腳下坡度(梯度),朝最陡的下坡跨一步,反覆前進。學習率(Learning Rate)就是步伐大小:步子太大會跨過山谷,在谷壁間來回彈跳甚至發散;太小則收斂速度慢到天荒地老,還可能卡在半路的小凹地。
關鍵細節
- 學習率是最關鍵的超參數:太大不收斂,太小收斂慢
- 批次策略:全批次穩但慢;SGD(隨機梯度下降)一次一筆,快但震盪;Mini-batch 折衷,是實務預設
- Adam 這類優化器會自動調整各參數的步伐,收斂速度通常更快
- 反向傳播靠梯度連乘,深層網路用 Sigmoid 容易梯度消失,搭配 ReLU 或批次正規化緩解
🎯 口訣:損失當地圖,梯度指方向,學習率定步伐。
iPAS 考點
考「神經網路靠什麼更新權重」→ 梯度下降加反向傳播。情境題:「損失劇烈震盪、無法收斂」→ 學習率太大,調小;「損失下降極慢」→ 學習率太小,或改用 Adam 這類優化器。易混淆對一句話分清:損失函數是「量多錯」的尺,梯度下降是「往哪修」的路。
應用場景
評估指標
iPAS 歷屆考題詳解(6 題)
先自行作答,再展開詳解。題目出處均為 iPAS AI 應用規劃師正式考題,著作權屬原主辦單位。
在訓練非線性模型時,若目標函數為非凸函數(Non-convex Function),演算法在參數更新過程中可能出現多個極值點,導致最佳化結果不穩定。請問此時最可能發生下列哪一種情況?
- A梯度消失
- B資料過少
- C局部最優解
- D過擬合
看正解與逐選項詳解
正解:C
下列哪一種優化演算法內建動量(Momentum)的設計機制?
- ASGD+Momentum
- BAdam
- CRMSProp
- DAdagrad
看正解與逐選項詳解
正解:B
某深度學習工程師訓練 ResNet 時,發現模型在前幾個 Epoch驗證損失快速下降,但從第 15 個 Epoch 起驗證損失開始上升,而訓練損失持續下降。工程師將學習率調高後,訓練損失反而開始明顯震盪。學習率過大最直接導致下列哪種現象?
- A梯度消失(Gradient Vanishing):梯度在反向傳播中逐層縮小趨近於零,底層無法學習
- B損失函數震盪或發散(Oscillation / Divergence):每次更新步伐過大,參數在最優點兩側反覆跳越,無法穩定收斂
- C過擬合(Overfitting):模型記憶訓練資料的雜訊,泛化能力下降
- D死亡 ReLU(Dying ReLU):大量神經元輸出永久為零,停止參與梯度更新
看正解與逐選項詳解
正解:B
某工程師訓練深度神經網路時發現損失函數震盪嚴重且收斂速度慢,改用 Adam優化器後訓練變得穩定且收斂更快。下列何者為 Adam 能改善此問題的主要原因?
- A同時結合一階動量(Momentum)與自適應學習率(Adaptive Learning Rate),為每個參數調整更新步長
- B強制所有參數使用相同學習率(Learning Rate),避免梯度差異造成不穩定
- C透過批次正規化(Batch Normalization)重新分布輸入資料
- D將梯度裁剪為固定範圍以避免梯度爆炸(Gradient Explosion)
看正解與逐選項詳解
正解:A
某工程師在 A100 GPU 叢集上訓練大型語言模型,觀察到以下現象:全批次梯度下降時 GPU 利用率達 100%,但每次更新耗時 45 秒;隨機梯度下降(SGD)每次更新僅需 0.01秒,但梯度極不穩定、訓練曲線震盪劇烈。為兼顧梯度穩定性與GPU吞吐量(Throughput),應採用下列哪種策略?
- A全批次梯度下降(Full-batch GD):使用完整資料集計算梯度,更新穩定但每次更新耗時長
- B隨機梯度下降(SGD):每次只用一個樣本,速度快但梯度雜訊大,收斂不穩定
- C第二階梯度法(Newton's Method):利用 Hessian 矩陣精確估計曲率,大幅減少更新次數
- D小批次梯度下降(Mini-batch GD):以適當批次大小(如 256-2048)平衡梯度估計穩定性與GPU平行效率,是深度學習的業界標準
看正解與逐選項詳解
正解:D
某 AOI 晶圓瑕疵檢測專案在使用深層 CNN 訓練時,Loss 曲線震盪劇烈,甚至偶爾出現數值溢出(NaN)。為了修復訓練過程中 Loss 突然變成 NaN 的問題,工程師考慮在 PyTorch 訓練迴圈中加入梯度裁剪(Gradient Clipping)機制,例如 torch.nn.utils.clip_grad_norm_。訓練迴圈如下: for images, labels in train_loader: optimizer.zero_grad() # 位置 1 outputs = model(images) # 位置 2 loss = criterion(outputs, labels) # 位置 3 loss.backward() # 位置 4 optimizer.step() # 位置 5 若要正確加入梯度裁剪,最適合插入於哪個位置?其主要作用為何?
- A插入於位置 3與位置4之間;用以限制 Loss 數值大小,避免梯度消失
- B插入於位置 4與位置5之間;用以限制梯度範數過大,避免更新步幅失控導致數值不穩
- C插入於位置 5之後;用以將更新後的權重強制壓縮回正常範圍
- D插入於位置 1與位置2之間;用以對輸入影像進行批次標準化
看正解與逐選項詳解
正解:B