向前傳播 forward pass
在機器學習中,輸入的feature, 通過預測模型,輸出預測值,此過程稱之為向前傳播;
向后傳播 backward pass
為了將預測與真實值的產值減小,需要根據差值,更新模型中的參數,此過程稱之為向后傳播;
評分函數 Score function
- 原始圖像數據到類別分值的映射;
- 也就是向前傳播時,使用的模型函數;
損失函數 Loss function/代價函數Cost function/目標函數Objective
- 用來量化預測分類標簽的得分與真實標簽之間一致性的.
- 也就是衡量,我們對結果的不滿意度;
- 評分函數輸出結果與真實結果之間差異越大,損失函數輸出越大;
- 損失函數的具體形式多種多樣;
- 損失函數基于向前傳播和向后傳播之間,起到承上啟下的作用;
- 承上:接收模型的預測值;
- 啟下:計算預測值與真實值的差值,為反向傳播提供輸入數據;
線性分類器?Linear Classification
- 通過對原始數據進行處理,得到一個分類的分值;
- 例如,最簡單的線性分類
- 其中,W表示權重(Weights),b表示偏差(bias vector)
- 參數W和b是可控制改變的。我們的目標就是通過設置這些參數,使得計算出來的分類分值情況和訓練集中圖像數據的真實類別標簽相符。
- 一個實際的例子:
????????
- 上述函數的一個二維抽象:
????????
- 以紅色的汽車分類器為例,紅線表示空間中汽車分類分數為0的點的集合,紅色的箭頭表示分值上升的方向。
- 所有紅線右邊的點的分數值均為正,且線性升高。紅線左邊的點分值為負,且線性降低。
- 從上面可以看到,W的每一行都是一個分類類別的分類器。
- 對于這些數字的幾何解釋是:如果改變其中一行的數字,會看見分類器在空間中對應的直線開始向著不同方向旋轉。
- 而偏差b,則允許分類器對應的直線平移。
- 需要注意的是,如果沒有偏差,無論權重如何,在xi=0時分類分值始終為0。這樣所有分類器的線都不得不穿過原點。
多類支持向量機損失 Multiclass Support Vector Machine Loss
- 常用的一種損失函數
- 其核心思想是,在正確分類上的得分始終比不正確分類上的得分高出一個邊界值Δ, 也就是value_right - value_wrong >= Δ;
- 例如,第i個數據中包含圖像xi的像素和代表正確類別的標簽yi, 分值簡寫為s。針對第j個類別的得分就是第j個元素:sj=f(xi,W)j。其SVM損失函數如下:? ? ? ? ? ? ? ? ??
- 實際例子:假設有3個分類,并且得到了分值s=[13,?7,11]。其中第一個類別是正確類別,即yi=0。同時假設Δ是10;
- 第一部分,為0, 第二部分,為8;
- 雖然正確分類分值13>不正確分類11, 但還是比Δ(10)小,分差只有2, 所以損失值為8;
- 因為不滿足>=Δ, 所以此時開始計算損失值;
- 如果沒有這些情況,損失值為0;(因為預測正確的,一定是最高分)
- 具象化:
- ? ?
- 多類SVM“想要”正確類別的分類分數比其他不正確分類類別的分數要高,而且至少高出delta的邊界值。
- 如果其他分類分數進入了紅色的區域,甚至更高,那么就開始計算損失。
- Δ的說明:
- 超參數Δ和λ看起來是兩個不同的超參數,但實際上他們一起控制同一個權衡:即損失函數中的數據損失和正則化損失之間的權衡。
- 不同分類分值之間的邊界的具體值(比如Δ=1或Δ=100)從某些角度來看是沒意義的,因為權重自己就可以控制差異變大和縮小
- 真正的權衡是我們允許權重能夠變大到何種程度(通過正則化強度λ來控制)。
????????
折葉損失(hinge loss)
- max(0,?)函數
平方折葉損失SVM--L2-SVM
-
它使用的是max(0,?)2,將更強烈(平方地而不是線性地)地懲罰過界的邊界值;
正則化(Regularization)
- 為了解決損失函數的模糊性問題;
- 所謂的模糊性問題,指的是如果W能夠正確分類所有數據,即對于每個數據,損失值都是0,囊二這個W的任意>1的倍數,也同樣滿足;
- 正則化懲罰(regularization penalty), R(w);
- 最常用的正則化懲罰是L2范式:
- 有了regularization penalty之后, 完整的SVM損失函數可以表示為:
- 展開后:
- N是訓練集的數據量。
- 現在正則化懲罰添加到了損失函數里面,并用超參數λ來計算其權重。
- 其中最好的性質就是對大數值權重進行懲罰,可以提升其泛化能力,因為這就意味著沒有哪個維度能夠獨自對于整體分值有過大的影響。
- 實際例子:
- 假設輸入向量x=[1,1,1,1],兩個權重向量w1=[1,0,0,0],w2=[0.25,0.25,0.25,0.25]。
- 根據公式,權重1的L2 penalty是1, 權重2的L2 penalty是0.25;
- 因此,根據L2懲罰來看,w2更好,因為它的正則化損失更小。
- 從直觀上來看,這是因為w2的權重值更小且更分散。既然L2懲罰傾向于更小更分散的權重向量,這就會鼓勵分類器最終將所有維度上的特征都用起來,而不是強烈依賴其中少數幾個維度。
- 最后,因為正則化懲罰的存在,不可能在所有的例子中得到0的損失值,這是因為只有當W=0的特殊情況下,才能得到損失值為0。
- 這一效果將會提升分類器的泛化能力,并避免過擬合。
超參數(hyperparameter)
超參數
則是在算法運行之前手動設置的參數,用于控制模型的行為和性能
。- 這些超參數的選擇會影響到模型的
訓練速度、收斂性、容量和泛化能力
等方面。- 例如,
學習率、迭代次數、正則化參數、隱藏層的神經元數量
等都是常見的超參數。
- learning rate;
- momentum;
- number of layers
- hiddden nodes;
- regularization parameters?
- initial weights
- 等等
超參數的選擇
通常是一個試錯的過程,需要根據經驗和領域知識進行調整。
過擬合
- 過擬合是指訓練誤差和測試誤差之間的差距太大。
- 換句換說,就是模型復雜度高于實際問題,模型在訓練集上表現很好,但在測試集上卻表現很差。
- 模型對訓練集"死記硬背"(記住了不適用于測試集的訓練集性質或特點),沒有理解數據背后的規律,泛化能力差。
Softmax分類器
- 它的損失函數與SVM的損失函數不同。
- 在Softmax分類器中,函數映射f(xi;W)=Wxi保持不變,但將這些評分值視為每個分類的未歸一化的對數概率,并且將折葉損失(hinge loss)替換為交叉熵損失(cross-entropy loss)。
- SVM和softmax的區別:
- SVM的最終的損失值是1.58,Softmax的最終的損失值是0.452,但要注意這兩個數值沒有可比性。只在給定同樣數據,在同樣的分類器的損失值計算中,它們才有意義。
- Softmax分類器為每個分類提供了“可能性”;
- SVM的計算是無標定的,而且難以針對所有分類的評分值給出直觀解釋。
- Softmax分類器則不同,它允許我們計算出對于所有分類標簽的可能性。
- 例如:
- 針對給出的圖像,SVM分類器可能給你的是一個[12.5, 0.6, -23.0]對應分類“貓”,“狗”,“船”。
- 而softmax分類器可以計算出這三個標簽的”可能性“是[0.9, 0.09, 0.01],這就讓你能看出對于不同分類準確性的把握。
- 可能性是一個相對的值,因為可能性分布的集中或離散程度是由正則化參數λ直接決定的
最優化 Optimization
- ?最優化是尋找能使得損失函數值最小化的參數W的過程
- 損失函數可以量化某個具體權重集W的質量。而最優化的目標就是找到能夠最小化損失函數值的W?;
- 最優化的一般方式:
- 一個差勁的初始方案:隨機搜索;
- 核心思路,迭代優化:對一個權重矩陣集W取優,使其損失值稍微減少。那么問題的難度就大大降低了。換句話說,我們的方法從一個隨機的W開始,然后對其迭代取優,每次都讓它的損失值變得更小一點。
- 隨機本地搜索
- 第一個策略可以看做是每走一步都嘗試幾個隨機方向,如果某個方向是向山下的,就向該方向走一步。這次我們從一個隨機W開始,然后生成一個隨機的擾動δW?,只有當W+δW的損失值變低,我們才會更新。
- 這個比策略一好,但是依然過于浪費計算資源。
- 跟隨梯度
- 前兩個策略中,我們是嘗試在權重空間中找到一個方向,沿著該方向能降低損失函數的損失值。其實不需要隨機尋找方向,因為可以直接計算出最好的方向;
- 這個方向就是損失函數的梯度(gradient);
learning rate
- 梯度指明了函數在哪個方向是變化率最大的,但是沒有指明在這個方向上應該走多遠;
- 選擇步長(也叫作學習率)將會是神經網絡訓練中最重要(也是最頭痛)的超參數設定之一
梯度下降法
- 梯度下降使用整個訓練數據集來計算梯度,因此它有時也被稱為批量梯度下降;
- 在大規模的應用中(比如ILSVRC挑戰賽),訓練數據可以達到百萬級量級。如果像這樣計算整個訓練集,來獲得僅僅一個參數的更新就太浪費了。
隨機梯度下降法
如果使用梯度下降法(批量梯度下降法),那么每次迭代過程中都要對 n個樣本進行求梯度,所以開銷非常大,隨機梯度下降的思想就是隨機采樣一個樣本 J(xi)來更新參數,那么計算開銷就從 O(n)下降到 O(1) 。
小批量梯度下降法
- 隨機梯度下降雖然提高了計算效率,降低了計算開銷,但是由于每次迭代只隨機選擇一個樣本,因此隨機性比較大,所以下降過程中非常曲折;
???????????????????????
- 所以,樣本的隨機性會帶來很多噪聲,我們可以選取一定數目的樣本組成一個小批量樣本,然后用這個小批量更新梯度,這樣不僅可以減少計算成本,還可以提高算法穩定性。
?