在機器學習中,訓練模型通常涉及最小化一個目標函數(Objective Function),這個函數通常被稱為什麼?
A
損失函數(Loss Function)或成本函數(Cost Function)
B
激活函數(Activation Function)
機器學習模型的訓練過程本質上是一個優化問題。我們定義一個目標函數,用來衡量模型預測結果與真實標籤之間的差異或誤差。這個函數被稱為損失函數(針對單個樣本)或成本函數(針對整個訓練集或一個批次的樣本)。訓練的目標就是通過調整模型的參數(例如,神經網路的權重和偏置),來找到使這個損失函數或成本函數達到最小值的參數組合。常見的損失函數有均方誤差(Mean Squared Error, MSE)用於回歸,交叉熵(Cross-Entropy)用於分類等。激活函數用於引入非線性,核函數用於SVM等,特徵函數用於提取特徵。
梯度下降法(Gradient Descent)是一種常用的優化算法。它通過迭代更新參數來最小化目標函數,每次更新的方向是沿著什麼方向?
梯度(Gradient)是一個向量,指向函數在當前點數值增加最快的方向。為了最小化目標函數(損失函數),梯度下降法採取反其道而行之的策略,即沿著梯度的相反方向(負梯度方向)更新參數。負梯度方向是函數值下降最快的方向。參數更新的公式通常是:θnew = θold - η * ∇J(θ),其中 θ 是參數,J(θ) 是目標函數,∇J(θ) 是目標函數對參數的梯度,η 是學習率(Learning Rate),控制每次更新的步長。
隨機梯度下降(Stochastic Gradient Descent, SGD)與標準(批次)梯度下降(Batch Gradient Descent, BGD)的主要區別在於計算梯度時使用的數據量。SGD 使用多少數據來計算每次參數更新的梯度?
C
一小批次(Mini-batch)隨機抽取的訓練樣本。(這是 Mini-batch GD)
梯度下降法有三種主要變體,區別在於每次更新參數時用於計算梯度的數據量:
- 批次梯度下降 (BGD):使用整個訓練數據集來計算梯度。優點是梯度準確,收斂穩定;缺點是當數據集很大時,每次更新計算成本高,且無法在線學習。
- 隨機梯度下降 (SGD):每次更新只隨機選擇一個訓練樣本來計算梯度。優點是更新速度快,計算成本低,可以跳出局部最小值,適合在線學習;缺點是梯度估計噪聲大,收斂過程震盪劇烈,可能不會精確收斂到最小值。
- 小批次梯度下降 (Mini-batch GD):每次更新使用一小批次(例如 32, 64, 128 個)隨機樣本來計算梯度。這是前兩者的折衷,既能利用並行計算加速(相比 SGD),又能引入噪聲幫助跳出局部最優(相比 BGD),且收斂更穩定(相比 SGD)。在深度學習中,通常使用的是 Mini-batch GD,但習慣上有時也簡稱為 SGD。
嚴格定義上,
SGD 指的是每次使用單一樣本,但實務中常把
Mini-batch GD 也稱為
SGD。選項 C 描述的是
Mini-batch GD。根據題目問的是
SGD 與
BGD 的「主要區別」以及選項的設計,選項 B(使用單一樣本)是
SGD 最本質的區別。
在優化理論中,如果一個函數的圖像是「碗狀」的,即函數圖形上任意兩點之間的連線段都位於圖形的上方(或本身),則稱該函數具有什麼性質?
凸函數是優化領域一個非常重要的概念。一個函數 f 被稱為凸函數,如果其定義域是凸集,並且對於定義域中任意兩點 x, y 和任意 0 ≤ λ ≤ 1,都滿足 f(λx + (1-λ)y) ≤ λf(x) + (1-λ)f(y)。從幾何上看,這意味著函數圖形上任意兩點之間的弦(連線段)都位於函數圖形的上方或與之重合。凸函數具有良好的性質:任何局部最小值點同時也是全局最小值點。這使得凸優化問題(目標函數是凸函數,可行域是凸集)相對容易求解,可以保證找到全局最優解。許多機器學習問題(如線性回歸、邏輯回歸、SVM)可以被形式化為凸優化問題。凹函數則相反,弦位於圖形下方。
動量梯度下降(Gradient Descent with Momentum)相比於標準梯度下降,引入了一個「動量」項。這個動量項的主要作用是什麼?
B
加速在梯度方向一致的維度上的收斂速度,並抑制在梯度方向變化的維度上的震盪。
標準梯度下降在遇到狹長的山谷狀(或峽谷狀)的目標函數時,可能會在陡峭的方向上來回震盪,而在平緩的方向上前進緩慢。動量法通過引入一個「速度」向量 v(通常是過去梯度的指數加權移動平均),來累積過去的梯度信息。參數更新不僅依賴於當前的梯度,也依賴於這個速度向量:vt = β * vt-1 + η * ∇J(θ);θnew = θold - vt (其中 β 是動量係數,通常接近1,如0.9)。這樣,如果梯度方向持續一致,速度會累積,加速下降;如果梯度方向來回變化,動量項會抵消部分震盪。因此,動量法有助於加速收斂並逃離局部最優點或鞍點。
在優化非凸函數(Non-convex Function)時,梯度下降法可能遇到的主要問題之一是?
B
容易陷入局部最小值(Local Minimum)或鞍點(Saddle Point),而無法保證找到全局最小值(Global Minimum)。
非凸函數可能有多個局部最小值點(在其鄰域內是最小值,但不一定是全局最小值)以及鞍點(在某些方向上是最小值,在另一些方向上是最大值,梯度為零但不是極值點)。標準的梯度下降法是局部優化算法,它只根據當前的梯度信息決定下降方向,因此當它收斂到一個梯度為零的點時,無法保證該點是全局最小值,很可能只是一個局部最小值或鞍點。深度學習中的損失函數通常是高度非凸的,這使得優化過程充滿挑戰。雖然現代優化器(如 Adam)和一些技巧(如動量、隨機性)有助於緩解這個問題,但理論上仍然無法保證找到全局最優解。
在訓練大型機器學習模型時,使用小批次梯度下降(Mini-batch Gradient Descent)相比於批次梯度下降(BGD)的主要優勢之一是?
B
計算效率更高(尤其對於大數據集),且可以利用現代硬體(如GPU)的並行計算能力。
批次梯度下降(BGD)需要遍歷整個訓練集才能進行一次參數更新,當數據集非常大時,這會非常耗時且計算成本高昂,也難以將整個數據集放入記憶體。小批次梯度下降(Mini-batch GD)每次只使用一小部分數據(一個批次)來估計梯度並更新參數。這大大降低了單次更新的計算量,使得訓練過程更快。此外,計算一個小批次的梯度可以很好地利用GPU等並行計算硬體的優勢,進一步提高效率。雖然單個批次的梯度是對真實梯度的有噪聲估計,但這種噪聲有時反而有助於跳出局部最優。因此,Mini-batch GD 是目前訓練大型模型(尤其是深度學習模型)最常用的優化策略。
L1 正規化(L1 Regularization)通過向損失函數添加參數絕對值之和的懲罰項(λ||w||1)。這種正規化方法傾向於產生什麼樣的模型參數?
B
稀疏(Sparse)的參數,即許多參數會變為精確的零。
L1 正規化(也稱為 LASSO - Least Absolute Shrinkage and Selection Operator)的懲罰項是參數權重絕對值之和。由於絕對值函數在零點處不可導(形成尖點),在優化過程中,L1 懲罰傾向於將一些不重要的特徵對應的參數權重精確地壓縮到零。這使得 L1 正規化具有內建的特徵選擇(Feature Selection)效果,可以產生稀疏的模型(即只有部分特徵的權重非零)。相比之下,L2 正規化(嶺回歸)的懲罰項是參數平方和,它傾向於使參數值變得很小但通常不會精確等於零。
牛頓法(Newton's Method)是一種二階優化方法,它利用目標函數的什麼資訊來確定更新方向和步長?
B
一階導數(梯度)和二階導數(海森矩陣 Hessian Matrix)。
牛頓法的基本思想是用目標函數在當前點的二階泰勒展開(一個二次函數)來近似原函數,然後找到這個二次近似函數的最小值點作為下一步的更新方向和位置。求解這個二次函數的最小值需要用到函數在當前點的一階導數(梯度 ∇J(θ))和二階導數(海森矩陣 H = ∇²J(θ))。參數更新公式為:θnew = θold - H-1 * ∇J(θ)。牛頓法利用了函數的曲率信息(由海森矩陣提供),因此通常比只利用梯度信息的一階方法(如梯度下降)收斂速度快得多(二次收斂)。但其主要缺點是需要計算和儲存海森矩陣及其逆矩陣,對於高維問題(如深度學習)計算成本非常高昂。
拉格朗日乘數法(Method of Lagrange Multipliers)主要用於解決哪一類優化問題?
B
帶有等式約束(Equality Constraints)的優化問題。
D
尋找函數最大值的問題(雖然也可應用,但更常用於最小值)。
拉格朗日乘數法是一種尋找多元函數在一個或多個等式約束條件下極值點的方法。它通過引入拉格朗日乘數(Lagrange Multiplier,每個約束對應一個乘數),將原始的約束優化問題轉換為一個新的、更大的無約束優化問題(對拉格朗日函數求極值)。拉格朗日函數 L(x, λ) = f(x) - Σ λigi(x),其中 f(x) 是目標函數,gi(x) = 0 是等式約束。通過對 L 關於所有變數(包括原始變數 x 和拉格朗日乘數 λ)求偏導並令其為零,可以找到可能的極值點。對於包含不等式約束的問題,則需要使用更一般的 KKT 條件(Karush-Kuhn-Tucker conditions)。
對於一個凸優化問題(Convex Optimization Problem),其局部最優解(Local Optimum)具有什麼性質?
A
它必定是一個鞍點(Saddle Point)。
B
它同時也是全局最優解(Global Optimum)。
凸優化問題(目標函數是凸函數,可行域是凸集)的一個非常重要的特性是:任何局部最優解都必定是全局最優解。這意味著如果我們使用像梯度下降這樣的局部搜索算法,只要它收斂到了一個滿足最優性條件的點(例如梯度為零),我們就可以確定這個點就是整個問題的全局最小值點。這個性質大大簡化了凸優化問題的求解,使得我們可以找到可靠的最優解。而非凸優化問題則可能存在多個局部最優解,找到全局最優解通常非常困難。
在梯度下降法中,學習率(Learning Rate) η 設置得過大可能會導致什麼問題?
B
優化過程可能在最小值附近震盪甚至發散(Diverge)。
學習率 η 控制著梯度下降每次更新參數的步長大小。如果學習率設置得太小,收斂速度會非常慢。但如果學習率設置得太大,每次更新的步子可能「跨過」了最小值點,導致參數在最小值附近來回震盪,無法收斂;甚至可能因為步子太大而使得目標函數值不降反升,導致優化過程發散。選擇一個合適的學習率對於梯度下降法的成功至關重要,這通常需要實驗調整,或者使用自適應學習率的優化算法(如 Adam, RMSprop)。
Adam(Adaptive Moment Estimation)優化算法結合了哪兩種常用梯度下降變種的思想?
B
動量(Momentum)和 RMSprop(Root Mean Square Propagation)。
Adam 是一種非常流行的
自適應學習率優化算法,廣泛應用於
深度學習。它同時利用了兩種
梯度下降優化技術的優點:
- 動量 (Momentum):Adam 維護了一個梯度的指數加權移動平均(類似於動量法中的速度向量),用於加速收斂和抑制震盪。
- RMSprop:Adam 也維護了一個梯度平方的指數加權移動平均(類似 RMSprop),用於為每個參數計算自適應的學習率。對於梯度較大的參數,有效學習率會減小;對於梯度較小的參數,有效學習率會相對較大。
通過結合這兩種思想,
Adam 通常能夠在各種不同的問題和模型上實現快速且穩定的收斂,使其成為許多
深度學習框架中的預設或常用優化器。
提前停止(Early Stopping)作為一種防止過擬合的正規化技巧,其基本做法是?
B
在訓練過程中監控模型在驗證集(Validation Set)上的性能,當驗證集性能不再提升或開始下降時,就停止訓練。
在模型訓練過程中,通常訓練集的損失會持續下降,但模型在獨立的驗證集上的性能(例如,驗證集損失或準確率)會先下降(或上升)然後達到一個最優點,之後可能因為模型開始過度擬合訓練數據而變差。提前停止策略就是利用這一點:持續監控驗證集上的性能指標,一旦發現該指標在連續多個週期(epoch)內沒有改善甚至開始惡化,就終止訓練過程,並選擇驗證集性能最好時的模型參數作為最終模型。這是一種簡單而有效的防止過擬合的方法,相當於隱式地限制了模型的訓練時間或容量。
優化問題中的目標函數(Objective Function)通常是我們希望最大化還是最小化的函數?
在機器學習的上下文中,優化的目標通常是找到一組模型參數,使得模型在訓練數據上的「表現不好」的程度最低。這種「表現不好」的程度由損失函數或成本函數來量化。因此,訓練模型就是一個尋找最小化損失/成本函數值的過程。雖然有些問題可能形式化為最大化問題(例如,最大化概似函數或最大化獎勵函數),但通過簡單的轉換(例如,最大化 f(x) 等價於最小化 -f(x)),它們總是可以轉換為最小化問題。因此,最小化是優化問題更為通用的表述。
學習率衰減(Learning Rate Decay)或學習率調度(Learning Rate Scheduling)是指在梯度下降訓練過程中如何調整學習率 η?
在訓練初期,距離最優解通常較遠,使用較大的學習率可以幫助快速下降。但隨著訓練的進行,當接近最優解時,較大的學習率可能導致在最小值附近震盪而無法精確收斂。因此,一種常見的策略是讓學習率隨著訓練迭代次數的增加而逐漸減小(衰減)。例如,可以採用步階衰減(每隔一定 epoch 將學習率乘以一個因子)、指數衰減、或基於驗證集性能的自適應衰減等。學習率衰減有助於在訓練後期實現更穩定和精確的收斂。
相比於一階優化方法(如梯度下降),二階優化方法(如牛頓法)的主要計算瓶頸是什麼?
B
計算、儲存和求逆海森矩陣(Hessian Matrix)的成本。
牛頓法等二階方法需要計算目標函數的二階偏導數構成的海森矩陣 H。對於有 n 個參數的模型,海森矩陣的大小是 n x n。計算這個矩陣的成本大約是計算梯度向量成本的 n 倍。更重要的是,牛頓法需要求解線性方程組 H * Δθ = -∇J(θ) 來得到更新方向 Δθ,這通常需要計算 H 的逆矩陣 H-1 或對 H 進行分解。計算 n x n 矩陣的逆或分解的計算複雜度通常是 O(n³),並且需要 O(n²) 的儲存空間。當 n 非常大時(例如,深度學習模型可能有數百萬甚至數十億個參數),這個計算和儲存成本變得不可接受。這限制了純牛頓法在大規模機器學習中的直接應用。
Karush-Kuhn-Tucker (KKT) 條件是用於判斷哪類優化問題最優解的必要(在某些條件下也是充分)條件?
KKT 條件是
拉格朗日乘數法的推廣,適用於更一般的帶有
等式約束 gi(x) = 0 和
不等式約束 hj(x) ≤ 0 的
非線性規劃問題。它給出了一個點
x* 成為
局部最優解(在滿足某些正則性條件下)的一階必要條件。這些條件包括:
- 原始可行性(Primal Feasibility):x* 滿足所有約束。
- 對偶可行性(Dual Feasibility):不等式約束對應的拉格朗日乘數(KKT乘數)μj ≥ 0。
- 互補鬆弛性(Complementary Slackness):μj * hj(x*) = 0,即對於有效的(active)不等式約束(hj(x*) = 0),其乘數可以非負;對於無效的(inactive)不等式約束(hj(x*) < 0),其乘數必須為 0。
- 梯度條件(Stationarity):目標函數 f(x) 的梯度在 x* 點可以表示為約束函數梯度的線性組合,即 ∇f(x*) + Σ λi∇gi(x*) + Σ μj∇hj(x*) = 0。
對於
凸優化問題,
KKT 條件也是充分條件。
下列哪個函數是凸函數?
判斷一個二次可微的單
變數函數是否為
凸函數,可以看其二階導數。如果對於定義域內所有
x,
f''(x) ≥ 0,則
f(x) 是
凸函數。
- A: f(x) = -x², f'(x) = -2x, f''(x) = -2 < 0,所以是凹函數。
- B: f(x) = x², f'(x) = 2x, f''(x) = 2 > 0,所以是凸函數。
- C: f(x) = sin(x), f''(x) = -sin(x),在不同區間正負不定,所以非凸非凹。
- D: f(x) = x³, f'(x) = 3x², f''(x) = 6x,在 x<0 時為負,x>0 時為正,所以非凸非凹(但在 x≥0 時是凸的,x≤0 時是凹的)。
因此,
f(x) = x² 是這裡唯一的
凸函數。
鞍點(Saddle Point)是優化中可能遇到的一種臨界點,其特點是?
C
梯度為零,但在某些方向上是局部最小值,在另一些方向上是局部最大值。
鞍點是多元函數的臨界點(即梯度為零的點),但它既不是局部最大值點也不是局部最小值點。從幾何上看,函數在鞍點附近的形狀像一個馬鞍:沿著某些方向(對應海森矩陣的正特徵值方向),函數值會增加;而沿著另一些方向(對應海森矩陣的負特徵值方向),函數值會減少。對於高維非凸優化問題(如深度學習),鞍點實際上比局部最小值更常見,梯度下降等一階方法可能會在鞍點附近停滯不前(因為梯度接近於零)。二階方法或帶有隨機性的方法(如 SGD)通常更容易逃離鞍點。
在線學習(Online Learning)場景下,數據是逐個或以小批次形式連續到達的,模型需要不斷更新。哪種梯度下降變體最適合這種場景?
A
批次梯度下降(Batch Gradient Descent)
B
隨機梯度下降(Stochastic Gradient Descent)或小批次梯度下降(Mini-batch GD)
D
共軛梯度法(Conjugate Gradient Method)
在線學習要求模型能夠根據新到達的數據即時更新,而不需要重新遍歷所有歷史數據。批次梯度下降每次更新都需要整個(不斷增長的)數據集,顯然不適用。隨機梯度下降(SGD)每次只使用一個新樣本更新模型,非常適合在線場景。小批次梯度下降(Mini-batch GD)使用一小批新樣本更新,也是在線學習的常用方法,可以在計算效率和更新頻率之間取得平衡。牛頓法和共軛梯度法通常需要訪問更多數據信息(如海森矩陣),不太適合標準的在線更新模式。
Dropout 是一種在深度學習訓練中常用的正規化技術,其工作原理是?
B
在每次訓練迭代中,以一定的機率隨機將神經網路中的一部分神經元(及其連接)暫時「丟棄」(使其輸出為零)。
Dropout 是一種旨在減少神經網路過擬合的技術。在訓練階段的每次前向傳播中,Dropout 會以一個預設的機率 p(例如 0.5)隨機選擇一部分神經元的輸出設置為零,相當於暫時將這些神經元從網路中移除。這樣做的效果是,每次訓練迭代實際上是在一個不同的、更小的子網路上進行的。這可以防止神經元之間產生過於複雜的協同適應(Co-adaptation),迫使每個神經元學習到更魯棒、更獨立的特徵。在測試階段,通常會保留所有神經元,但將其輸出乘以 (1-p) 來進行縮放,以補償訓練時的丟棄效應。Dropout 可以被看作是一種對大量不同網路結構進行模型平均(Model Averaging)的近似方法。
在優化問題中,局部最小值(Local Minimum)指的是函數在其附近鄰域內取值最小的點,但它與全局最小值(Global Minimum)的關係是?
B
全局最小值一定是局部最小值,但局部最小值不一定是全局最小值(除非函數是凸的)。
根據定義,全局最小值是函數在整個定義域上的最小值點。局部最小值則是在該點的一個(可能很小的)鄰近區域內的最小值點。因此,全局最小值點必然也滿足局部最小值的定義。然而,一個函數可能存在多個局部最小值點,其中只有一個(或多個具有相同最小值的點)是全局最小值點。對於非凸函數,優化算法很可能收斂到一個局部最小值,而錯過全局最小值。只有對於凸函數,才能保證任何局部最小值也是全局最小值。
RMSprop(Root Mean Square Propagation)優化算法的主要目的是解決 Adagrad 算法的哪個潛在問題?
B
Adagrad 中學習率可能過早且單調遞減到非常小的值,導致訓練提前停止。
Adagrad 是一種自適應學習率算法,它為每個參數維護一個累計的平方梯度和,並用該累計和的平方根來縮放學習率(梯度累計越多的參數,學習率越小)。這樣做的好處是對稀疏梯度(常見於NLP)有效。但缺點是,由於平方梯度是持續累加的,分母會不斷增大,導致學習率最終會變得非常小,使得模型在訓練後期幾乎停止學習。RMSprop 旨在解決這個問題,它不再累加所有的歷史平方梯度,而是計算一個指數加權移動平均的平方梯度。這樣,分母的大小主要由最近的梯度決定,避免了學習率過早衰減的問題,使得訓練能夠持續進行。Adam 算法也借鑒了 RMSprop 的這個思想。
擬牛頓法(Quasi-Newton Methods),如 BFGS 或 L-BFGS,試圖在避免直接計算海森矩陣及其逆矩陣的同時,近似牛頓法的更新方向。它們通常通過什麼方式來近似海森矩陣的逆?
B
利用最近幾步的梯度變化信息,迭代地更新一個對海森矩陣逆的近似矩陣。
擬牛頓法的核心思想是避免計算和存儲完整的 n x n 海森矩陣 H 及其逆 H-1,因為這在高維情況下成本過高。它們通過利用函數梯度在相鄰迭代點的變化信息(滿足所謂的割線方程 Secant Equation),來逐步構建和更新一個對海森矩陣的逆 H-1(或者海森矩陣 H 本身)的近似矩陣 Bk。例如,BFGS(Broyden–Fletcher–Goldfarb–Shanno)算法維護和更新一個對 H-1 的近似 Bk,而 L-BFGS(Limited-memory BFGS)則更進一步,不顯式存儲整個近似矩陣 Bk,而是只存儲最近 m 次迭代的梯度和參數變化向量,並利用這些信息遞迴地計算出近似的牛頓更新方向。這使得擬牛頓法(特別是 L-BFGS)在保持較快收斂速度(超線性收斂)的同時,顯著降低了計算和內存需求,適用於更大規模的問題。
如果一個優化問題的目標函數和所有約束函數都是線性函數,則稱之為?
A
二次規劃(Quadratic Programming)
B
線性規劃(Linear Programming, LP)
C
非線性規劃(Nonlinear Programming)
D
整數規劃(Integer Programming)
線性規劃(LP)是凸優化的一個重要特例,其特點是目標函數和所有約束條件(等式和不等式)都是關於決策變數的線性函數。標準形式通常寫為:最小化 cTx,滿足 Ax ≤ b 和 x ≥ 0。由於線性函數既是凸函數也是凹函數,且線性約束定義的可行域是凸多面體(Convex Polytope),因此線性規劃問題是凸優化問題。線性規劃有成熟高效的求解算法,如單純形法(Simplex Method)和內點法(Interior-Point Methods),在運籌學、經濟學、排程等領域有廣泛應用。
梯度消失(Vanishing Gradient)問題主要發生在深度神經網路的訓練過程中,指的是什麼現象?
B
在反向傳播過程中,梯度值逐層遞減,導致靠近輸入層的網路層參數更新非常緩慢甚至停止。
在深度神經網路中,梯度需要通過鏈式法則從輸出層反向傳播到輸入層。如果網路中使用的激活函數(如 Sigmoid 或 Tanh)在其大部分定義域上的導數值都遠小於 1,那麼在多層傳播後,梯度值可能會以指數級衰減,變得非常接近於零。這就是梯度消失問題。它會導致靠近輸入層的網路層接收到的梯度信號非常微弱,其參數幾乎無法得到有效更新,使得這些層難以學習到有用的特徵。梯度爆炸(Exploding Gradient)則是相反的問題,梯度值變得非常大。ReLU 及其變種激活函數、殘差連接(Residual Connections)、批次歸一化以及更合理的權重初始化方法等技術有助於緩解梯度消失問題。
在小批次梯度下降(Mini-batch GD)中,批次大小(Batch Size)是一個重要的超參數。批次大小設置得較小(例如 1 或很小的值)時,通常會導致?
批次大小決定了每次參數更新時用於估計梯度的樣本數量。當批次大小很小時(極端情況是 SGD,批次大小為 1),單個批次的梯度是對真實梯度(基於整個訓練集的梯度)的有噪聲估計。使用的樣本越少,噪聲通常越大,導致參數更新方向的隨機性增加,收斂路徑會比較震盪。然而,這種噪聲有時也有好處,可以幫助算法跳出局部最小值或鞍點。較大的批次大小則梯度估計更準確,收斂更平穩,且更容易利用並行計算,但可能更容易陷入尖銳的局部最小值,泛化能力有時反而不如使用適當小批次的效果好。選擇合適的批次大小需要在計算效率、收斂穩定性和泛化性能之間權衡。
L2 正規化(Ridge Regression 中的懲罰項)對優化過程中的參數有什麼影響?
L2 正規化在損失函數中增加了懲罰項 λ||w||²,其中 w 是模型參數向量,λ 是正規化強度。這個懲罰項與參數的平方和成正比。在最小化總體損失(原始損失 + 懲罰項)的過程中,L2 正規化會對較大的參數值施加更大的「懲罰」,從而驅使優化算法找到參數值相對較小的解。這種效應被稱為權重衰減(Weight Decay)。它有助於防止模型過度依賴少數幾個特徵(即參數值過大),使參數分佈更平滑,從而提高模型的泛化能力。與 L1 不同,L2 正規化通常不會將參數精確地壓縮到零。
一個函數的梯度(Gradient)為零的點被稱為什麼點?
B
臨界點(Critical Point)或駐點(Stationary Point)。
在微積分中,函數 f(x) 的梯度 ∇f(x) 為零向量的點 x 被稱為臨界點或駐點。這些點是函數可能取得局部極值(最小值或最大值)或鞍點的位置。梯度為零只是一階必要條件,要判斷該點的具體性質(是最小值、最大值還是鞍點),通常需要檢查二階導數(海森矩陣)的性質。梯度下降等優化算法的目標就是尋找梯度為零(或接近於零)的點。
Adagrad 優化算法的特點是為每個參數維護一個自適應的學習率,這個學習率是如何調整的?
B
對於歷史上梯度較大的參數,學習率會減小;對於梯度較小的參數,學習率會相對較大。
Adagrad(Adaptive Gradient Algorithm)為每個參數 θi 維護一個該參數歷史梯度平方的累加和 Gii。在更新參數時,全局學習率 η 會被這個累加和的平方根(加上一個小的平滑項 ε 以免除以零)除:Δθi = - (η / sqrt(Gii + ε)) * gi,其中 gi 是當前梯度。這意味著,如果一個參數的歷史梯度一直很大(Gii 很大),那麼它的有效學習率就會變小;反之,如果歷史梯度很小(Gii 很小),有效學習率就會相對較大。這種機制使得 Adagrad 對於稀疏數據(某些特徵不經常出現,梯度較小)特別有效,能夠給予這些參數更大的更新步長。但如前所述,其缺點是學習率可能最終變得過小。
在約束優化問題中,可行域(Feasible Region)指的是什麼?
約束優化問題不僅要優化目標函數,還要確保找到的解滿足一系列的約束條件。可行域就是參數空間中所有滿足這些約束條件的點所組成的集合。優化的目標是在這個可行域內找到使目標函數最優(通常是最小)的點。如果可行域是空集,則該約束優化問題無解。
支持向量機(Support Vector Machine, SVM)的原始優化問題通常是一個什麼類型的優化問題?
B
帶約束的二次規劃(Quadratic Programming, QP)問題,屬於凸優化問題。
C
線性規劃(Linear Programming)問題。
D
整數規劃(Integer Programming)問題。
標準的(線性可分)支持向量機的目標是找到最大間隔分類超平面。這個問題可以被形式化為一個帶有線性不等式約束的二次規劃問題。具體來說,目標是最小化 ||w||² / 2 (其中 w 是超平面的法向量,最小化它等價于最大化間隔 2/||w||),約束條件是對於所有樣本 (xi, yi),都有 yi * (wTxi + b) ≥ 1。由於目標函數 ||w||² 是關於 w 的凸函數,且約束條件定義了一個凸的可行域(線性不等式約束),因此 SVM 的原始問題是一個凸優化問題(更具體地說是二次規劃問題)。這保證了 SVM 可以找到唯一的全局最優解。其對偶問題(Dual Problem)也通常是 QP 問題。
在優化過程中,如果目標函數在某個區域非常平坦(梯度接近於零),梯度下降法可能會遇到什麼問題?
B
收斂速度極其緩慢,或者在達到真正最優解之前就停滯不前(卡在高原 Plateau)。
梯度下降的更新步長正比於梯度的大小。如果在某個區域,目標函數的表面非常平坦,導致梯度值非常接近於零,那麼即使參數還沒有達到最優解,每次的更新步長也會非常小,使得優化過程看起來幾乎停滯了。這種現象被稱為卡在高原(Plateau)。這在深度學習的高維、非凸優化中是一個常見問題。使用動量或自適應學習率的優化器有助於在一定程度上克服這個問題。
為什麼在訓練深度學習模型時,通常不直接使用批次梯度下降(BGD)而是使用小批次梯度下降(Mini-batch GD)?
B
現代深度學習數據集通常非常龐大,無法一次性放入內存,且 BGD 計算梯度成本過高,而 Mini-batch GD 在計算效率和梯度估計穩定性之間提供了更好的平衡。
C
BGD 總是收斂到比 Mini-batch GD 更差的解。
主要原因有二:
- 內存限制:深度學習的訓練數據集(如 ImageNet)可能包含數百萬甚至上億的樣本,將整個數據集載入內存以計算 BGD 的梯度通常是不現實的。Mini-batch GD 每次只處理一小部分數據,內存需求低得多。
- 計算效率:計算整個數據集的梯度非常耗時。Mini-batch GD 雖然單次梯度估計有噪聲,但更新頻率高得多,通常能夠在相同的時間內取得更快的進展。同時,批次處理也更利於 GPU 並行計算。
此外,
Mini-batch 的隨機性有助於模型跳出
局部最優或
鞍點,可能獲得更好的
泛化性能。
優化算法中的「迭代」(Iteration)指的是什麼?
許多優化算法(如梯度下降及其變種)都是迭代算法,它們從一個初始參數猜測開始,然後重複執行一個更新步驟,逐步改進參數值,直到滿足某個停止條件(如達到最大迭代次數、梯度足夠小、目標函數值不再顯著下降等)。每一次執行參數更新的過程就被稱為一次迭代。在 Mini-batch GD 中,一次迭代通常指處理完一個批次的數據並更新一次參數。一個 Epoch 則指完整地遍歷一次整個訓練數據集,通常包含多次迭代。
學習率(Learning Rate)在梯度下降法中扮演什麼角色?
學習率 η 是一個正的純量超參數,它決定了在梯度下降的每一步中,參數沿著負梯度方向移動的距離。更新公式為 θnew = θold - η * ∇J(θ)。學習率的大小直接影響優化過程的行為:太小則收斂慢,太大則可能震盪或發散。選擇合適的學習率是梯度下降法成功的關鍵。
為什麼在機器學習中需要使用正規化(Regularization)技術?
B
為了降低模型的複雜度,防止模型過度擬合(Overfitting)訓練數據,提高其在未見數據上的泛化能力。
當模型過於複雜(例如,參數過多)或者訓練數據不足時,模型可能會學習到訓練數據中的噪聲和隨機波動,導致在訓練集上表現很好,但在新的測試數據上表現很差,這種現象稱為過擬合。正規化是一種用來應對過擬合的技術集合。它們通過在優化目標(損失函數)中加入一個懲罰項(通常與模型參數的大小有關,如 L1 或 L2 範數),或者通過其他方式(如 Dropout、提前停止、數據增強)來限制模型的複雜度或學習過程,從而鼓勵模型學習到更簡單、更具有泛化能力的模式。
海森矩陣(Hessian Matrix)包含了一個多元函數的什麼導數信息?
對於一個具有 n 個變數的純量函數 f(x),其海森矩陣 H 是一個 n x n 的方陣,包含了函數 f 對於所有變數組合的二階偏導數。矩陣 H 的第 i 行第 j 列的元素是 Hij = ∂²f / (∂xi∂xj)。海森矩陣描述了函數在某點附近的局部曲率信息。對於實函數,海森矩陣是對稱的(如果二階偏導連續)。海森矩陣的正定性、負定性或不定性可以用來判斷臨界點是局部最小值、局部最大值還是鞍點。
凸集(Convex Set)的定義是?
B
集合中任意兩點之間的連線段上的所有點仍然屬於該集合。
一個集合 C 被稱為凸集,如果對於集合中任意兩個點 x, y ∈ C,連接這兩點的線段上的所有點也都屬於集合 C。也就是說,對於任意 0 ≤ λ ≤ 1,點 z = λx + (1-λ)y 必定滿足 z ∈ C。常見的凸集例子包括:直線、線段、平面、超平面、球體、多面體等。凸集的概念是凸優化的基礎,因為凸優化問題要求可行域必須是凸集。
在深度學習優化中,梯度爆炸(Exploding Gradients)問題指的是什麼?這會導致什麼後果?
B
梯度值變得異常大;導致參數更新過大,訓練過程不穩定甚至發散(損失變為NaN)。
梯度爆炸是梯度消失的反面問題。在深度網路的反向傳播過程中,如果某些層的權重值過大或者激活函數的導數在某些區域大於1,梯度值可能會在逐層傳播中指數級增長,變得非常巨大。這會導致:(1) 參數更新步長過大,使得模型參數「飛出」合理的數值範圍。(2) 損失函數值可能劇烈震盪或變成 NaN (Not a Number),導致訓練失敗。(3) 數值不穩定性。常用的應對梯度爆炸的方法是梯度裁剪(Gradient Clipping),即當梯度的範數超過某個閾值時,將其縮放到該閾值,限制梯度的大小。
什麼是優化問題中的「約束條件」(Constraints)?
B
對決策變數(或模型參數)必須滿足的限制條件或要求,可以是等式或不等式形式。
約束條件定義了
優化問題的
可行域(
Feasible Region),即可接受的解必須滿足的條件。這些條件限制了決策
變數的取值範圍。
約束條件可以分為:
- 等式約束 (Equality Constraints):形式為 g(x) = 0。
- 不等式約束 (Inequality Constraints):形式為 h(x) ≤ 0 或 h(x) ≥ 0。
沒有
約束條件的
優化問題稱為
無約束優化,有
約束條件的稱為
約束優化。
約束的存在使得
優化問題的求解通常更加複雜。
梯度下降法適用於可微分的目標函數。可微分(Differentiable)意味著什麼?
B
函數在定義域內的每一點都存在導數(或梯度),函數圖形是平滑、沒有尖點或斷點的。
一個函數在某點可微分,意味著在該點存在一個唯一的切線(或切平面),可以用一個線性函數來很好地近似該點附近的函數行為。對於單變數函數,意味著導數存在;對於多變數函數,意味著所有偏導數都存在且(通常要求)連續,即梯度向量存在。梯度下降法依賴於計算梯度來確定下降方向,因此目標函數的可微分性是其基本要求。如果函數在某些點不可微(例如絕對值函數在零點,ReLU函數在零點),則需要使用次梯度(Subgradient)等推廣概念或採用其他優化方法。
投影梯度下降法(Projected Gradient Descent)主要用於解決哪類問題?
B
帶有簡單約束(例如,變數非負、變數在一個球或框內)的優化問題。
投影梯度下降法是處理帶約束優化問題的一種簡單方法,特別適用於可行域 C 比較簡單(容易計算點到集合的投影)的情況。其基本思想是:首先像無約束梯度下降一樣,沿著負梯度方向移動一步得到一個中間點;然後,將這個中間點投影(Project)回可行域 C 內距離它最近的點,作為本次迭代的最終更新結果。即 θk+1 = ProjC(θk - η * ∇J(θk)),其中 ProjC(z) 表示將點 z 投影到集合 C 上的操作。這種方法適用於約束形式簡單(如框約束 xi ∈ [a, b],球約束 ||x|| ≤ R)的問題,因為這些投影操作通常有解析解或高效算法。
權重衰減(Weight Decay)通常是通過在損失函數中加入哪個正規化項來實現的?
權重衰減是 L2 正規化的一種常見實現方式,尤其在梯度下降優化中。當損失函數包含 L2 懲罰項 L = Loriginal + (λ/2) * ||w||² 時,計算損失對權重 w 的梯度會包含一項 -λw。因此,梯度下降的更新規則變為 wnew = wold - η * (∇Loriginal + λwold) = (1 - ηλ)wold - η * ∇Loriginal。這裡的 (1 - ηλ) 因子(通常略小於1)會導致權重在每次更新時都稍微「衰減」一點,趨向於零,從而限制了權重的大小,達到正規化的效果。
Nesterov 加速梯度(Nesterov Accelerated Gradient, NAG)是對動量法的一種改進,它在計算梯度時有何不同?
B
它先根據當前的動量(速度)預測下一步參數的「近似位置」,然後在那個近似位置計算梯度,而不是在當前位置計算梯度。
標準動量法先計算當前位置的梯度,然後結合動量更新參數。Nesterov 動量認為,既然我們無論如何都要根據動量 vt-1 移動一步(大致方向),那麼與其計算當前位置 θold 的梯度,不如先「向前看一步」,計算在近似的未來位置 θapprox = θold - β * vt-1 處的梯度 ∇J(θapprox),然後用這個「看得更遠」的梯度來修正最終的更新方向。更新公式大致為:vt = β * vt-1 + η * ∇J(θold - β * vt-1);θnew = θold - vt。這種「先跳再修正」的方式使得 NAG 在某些情況下比標準動量法收斂更快,並且能更好地「預見」和減緩即將到來的斜坡變化。
線性規劃問題的可行域是一個什麼樣的幾何形狀?
B
凸多面體(Convex Polytope)或無界凸區域
線性規劃問題的約束條件都是線性的等式或不等式。每個線性等式定義了一個超平面,每個線性不等式定義了一個半空間(Half-space)。超平面和半空間都是凸集。多個凸集的交集仍然是凸集。因此,由有限個線性等式和不等式定義的可行域是一個凸多面體(如果是有界的)或一個無界的凸區域。凸多面體的極點(Vertices/Extreme Points)在線性規劃的求解中扮演重要角色(例如,單純形法就是在極點之間移動)。
網格搜索(Grid Search)是一種常用的超參數優化方法,其主要缺點是?
B
計算成本可能非常高,尤其是當超參數數量較多或每個超參數的取值範圍較廣時(維度災難)。
網格搜索通過窮舉嘗試所有預先定義好的超參數值的組合來尋找最佳配置。例如,如果要調整學習率([0.1, 0.01, 0.001])和正規化強度([1, 0.1, 0.01]),網格搜索會嘗試所有 3x3=9 種組合。雖然實現簡單且易於並行化,但其計算成本會隨著超參數數量和每個參數的候選值的增加而呈指數級增長。對於有較多超參數需要調整的複雜模型(如深度學習),網格搜索很快變得不可行。隨機搜索(Random Search)和更智能的優化方法(如貝葉斯優化)通常在相同計算預算下能找到更好的結果。
Epoch 在機器學習訓練中通常指的是什麼?
一個 Epoch 指的是訓練算法已經將整個訓練數據集中的所有樣本都使用過一次的過程。如果使用批次梯度下降(BGD),一個 Epoch 只包含一次參數更新。如果使用隨機梯度下降(SGD),一個 Epoch 包含 N 次參數更新(N為樣本總數)。如果使用小批次梯度下降(Mini-batch GD),批次大小為 B,樣本總數為 N,則一個 Epoch 包含 N/B 次參數更新(迭代)。訓練過程通常需要運行多個 Epoch 才能使模型充分學習和收斂。
正規化參數(例如 L1 或 L2 中的 λ)的大小如何影響模型的複雜度?
B
λ 越大,對參數的懲罰越重,模型越傾向於選擇更小的參數值,模型越簡單。
正規化參數 λ 控制著正規化懲罰項在總損失函數中所佔的比重。λ 值越大,表示對模型參數(的大小或稀疏性)的懲罰越強烈。為了最小化包含較大 λ 懲罰項的總損失,優化算法會被迫選擇更小或更稀疏的參數值,這相當於降低了模型的有效複雜度,使其更難以擬合訓練數據中的噪聲,從而提高泛化能力。如果 λ 過大,可能會導致模型過於簡單而產生欠擬合。反之,如果 λ 為 0,則沒有正規化效果。選擇合適的 λ 值通常需要通過交叉驗證等方法來確定。