大家好,周六愉快哈哈哈哈
既然下雨,在家寫公眾號吧
先小調查一下(隨便點,小編也在學習
可直接私信
目錄
上節softmax要點回歸
softmax進階多分類 - 基礎理解
softmax多分類實現圖解
softmax 損失函數產生及理解
對參數求偏導推導及更新
要點回歸:
邏輯回歸二分類用sigmoid變換成預測單個「概率」,損失函數為交叉熵,用梯度下降求解參數wb
softmax多分類用softmax變換成多個「概率」,損失函數和求解思路類似
相比(−∞,+∞)範圍內的數值結果,概率天然具有更好的可解釋性;我們獲得了K個類別(−∞,+∞)範圍內的分數zj,先通過e^zj將分數映射到(0,+∞);然後再歸一化到(0,1),拉開不同類別的差異,便是Softmax的思想
softmax函數
圖解softmax多分類的過程
(機器學習會傳入已知數據 - 輸入變量x和輸出變量y去訓練模型對數據的擬合,用訓練好的模型去預測)
損失函數 - 交叉熵通式
機器學習 - 邏輯回歸(2) 這裡詳細解釋了交叉熵通式以及為什麼可以表示距離
p 是樣本的期望輸出,q是樣本的實際輸出
softmax 交叉熵形式
那此時的期望輸出和實際輸出是什麼呢?即圖中的y和a, 形式可以寫成:
softmax交叉熵形式變換
yi 是期望輸出,即onehot形式,即一個樣本只屬於一類,這一類的標籤是1,其餘是0,假設這裡屬於第n類
簡單例子理解交叉熵表示損失
假設你有3類, 樣本x1的期望輸出是(0,0,1), 即樣本屬於第三類。
z通過softmax函數變換,實際輸出1是(0.2,0.3,0.5)
更新了參數之後再次傳入, 實際輸出2是(0.05,0.05,0.9)
可能需要迭代很多次,有很多個實際輸出
第一次交叉熵為H1 = - (0 * log 0.2 + 0 *log 0.3 + 1 * log 0.5) = 0.3
第二次交叉熵為H2 = - (0 * log 0.05 + 0 *log 0.05+ 1 * log 0.9) = 0.046
看:當我們第一次輸出概率,第三類概率是0.5,損失為0.3,迭代之後二次輸出第三類概率是0.9,計算出的交叉熵(損失)= 0.046,遠小於0.3。即預測結果越準確,損失越小。
softmax損失函數求解和參數更新
明確損失函數(交叉熵)
明確期望輸出和實際輸出
明確要求解的參數 - w和b
不斷更新優化參數wb使得我們損失函數最小
損失函數是H,對參數wb求偏導數,由於H = -yn * log(an), 所以函數H裡有函數a,函數裡有函數z,函數z裡是w和b。
請拿出一張草稿紙哈哈哈
後續
w = w - 學習率 * H/w求偏導結果
b = b - 學習率 * H/b求偏導結果
重新和x結合計算出z -- z傳入softmax變換得到新的實際輸出a,和期望分布y求出交叉熵即損失,反覆迭代,使得損失達到較小的數值。
消化一下吧,下一章實戰python
END