# Why
**logistic regression** : refers to a classifier that classifies an observation into one of two classes
**multinomial logistic regression** : is used when classifying into more than two classes
# linearly separable
**線性可分(Linearly Separable)**:
如果存在一組權重 𝑤 能夠使模型在所有訓練數據上都沒有或只有很少的分類錯誤(在某個可接受的錯誤閾值內),那麼這個問題就是線性可分的。
這意味著可以找到一條直線(或一個平面,在高維空間中)來將不同類別的數據點完全分開。
**非線性可分(Non-linearly Separable)**:
如果無法找到任何一組權重 𝑤 能夠使模型在所有訓練數據上達到可接受的錯誤率,那麼這個問題就是非線性可分的。
這意味著沒有一條直線(或平面)可以完全分開不同類別的數據點,需要使用非線性分類器或其他方法來處理這種情況。
**Use a classification function to compute output**
logistic regression: sigmoid
multinomial logistic regression: softmax
Perceptron :
y=sign(w⋅x+b)
使用階梯函數作為激活函數,輸出為 -1 或 1。
在訓練數據可線性分割時,Perceptron 保證能夠找到一條決策邊界。
對於不可線性分割的數據,Perceptron 可能無法收斂。
Logistic Regression :
p=σ(w⋅x+b)
使用 sigmoid 函數將輸出轉換為 0 到 1 之間的概率值。
可以應用於不可線性分割的數據集,通過概率來進行分類決策。
損失函數為交叉熵損失函數,優化過程更穩定且可收斂。
# Bias
不加 bias 的分類線(面)就必須過原點,這顯然是不靈活的。
有了 bias 就可以上下左右移動線了。神經網路是一樣的道理。
Bias的好處在於:可以使得神經網路Fit的範圍得到左右的調整
# Gradient Descent
Our goal with gradient descent is to find the optimal weights: minimize the loss function we’ve defined for the model
Loss :
均方誤差(Mean Squared Error, MSE):用於回歸問題,衡量預測值和實際值之間的平均平方誤差。
交叉熵損失(Cross-Entropy Loss):用於分類問題,衡量預測的概率分布與實際分布之間的差異。
**Stochastic Gradient Descent (SGD), Batch GD, and Mini-batch GD**
1.批量梯度下降(Batch Gradient Descent):
每次迭代使用整個訓練數據集。批次大小 𝐵=𝑁(訓練樣本數)。
2.小批量梯度下降(Mini-batch Gradient Descent):
每次迭代使用一部分訓練數據。批次大小 1<𝐵<𝑁
3.隨機梯度下降(Stochastic Gradient Descent, SGD):
每次迭代使用一個訓練樣本。批次大小 𝐵=1
**Iteration, epoch, batch size?**
1. Stochastic Gradient Descent (SGD)
批次大小 (Batch Size, B): 1
每個 epoch 的迭代次數 (Iterations per Epoch, n): N/B = 1000/1 = 1000
總參數更新次數 (Total Parameter Updates): (N/B) * E = 1000 * E
例子:
每個 epoch 需要 1000 次迭代(因為每次只用一個樣本)。
如果總共訓練 E 個 epochs,則參數更新次數為 1000 * E。
2. Batch Gradient Descent (BGD)
批次大小 (Batch Size, B): 1000
每個 epoch 的迭代次數 (Iterations per Epoch, n): N/B = 1000/1000 = 1
總參數更新次數 (Total Parameter Updates): (N/B) * E = 1 * E = E
例子:
每個 epoch 只需 1 次迭代(因為使用所有樣本)。
如果總共訓練 E 個 epochs,則參數更新次數為 E。
3. Mini-batch Gradient Descent (MBGD)
批次大小 (Batch Size, B): 100
每個 epoch 的迭代次數 (Iterations per Epoch, n): N/B = 1000/100 = 10
總參數更新次數 (Total Parameter Updates): (N/B) * E = 10 * E
例子:
每個 epoch 需要 10 次迭代(因為每次用100個樣本)。
如果總共訓練 E 個 epochs,則參數更新次數為 10 * E。
-------------------------
假設:
資料集有 1000 筆數據
batch size = 100
epoch = 10
那麼:
一個 epoch 有 1000 / 100 = 10 次 iteration
10 個 epoch 就會有 10 x 10 = 100 次 iteration
模型會看完整資料集10次,學習10次
-------------------------
Batch Gradient Descent :
使用時機:
資料集較小:當資料集的大小足夠小,可以完全載入內存並且計算成本可接受時。
模型訓練穩定性要求高:需要較高的梯度計算精度和穩定的參數更新,避免過度震盪。
計算資源充足:擁有足夠的計算資源來處理整個資料集的梯度計算。
Mini-batch Gradient Descent :
使用時機:
中等大小資料集:當資料集較大但不至於無法載入內存,可以分成多個小批次進行訓練。
計算效率和收斂速度平衡:需要在計算效率和收斂速度之間取得平衡。
硬體資源有限:可以利用現代硬體(如GPU)的並行計算能力來加速訓練過程。
Stochastic Gradient Descent :
使用時機:
數據集非常大:當數據集非常大,無法完全載入內存,且需要快速更新模型參數。
在線學習:模型需要在線更新,即隨著新數據的到來即時更新模型。
模型訓練速度要求高:需要快速的參數更新和即時的模型改進。
在optimization,generalization效果比較好
**實務上選擇使用哪種梯度下降方法時,需要考慮多種因素,包括資料集的大小、硬體資源、訓練時間要求以及模型的收斂性質**