遵循統一的機器學習框架理解邏輯回歸
標簽: 機器學習 LR 分類
一、前言
- 我的博客僅記錄我的觀點和思考程序,歡迎大家指出我思考的盲點,更希望大家能有自己的理解,
- 本文參考了網路上諸多資料,
二、理解
統一的機器學習框架(MLA):
1.模型(Model)
2.策略(Loss)
3.演算法(Algorithm)
按照如上所說框架,LR最核心的就是損失函式使用了 Sigmoid 和 Cross Entropy ,
LR: Sigmoid + Cross Entropy
Model
題外話:參照上一篇博客:遵循統一的機器學習框架理解SVM,就會發現LR與SVM在模型和演算法上是一樣的,不同點就在于損失函式的不同,
給定資料集 \((x^1,\hat{y}^1),(x^2,\hat{y}^2)...(x^n,\hat{y}^n)\),其中\(\hat{y}^i\in\{0,1\}\), \(y\) 表示預測的 \(label\) 值,線性函式:
\[f(x)=w^Tx+b \]
\[y=\begin{cases} 1,\quad &f(x)>0\\ 0, &f(x)<0 \end{cases}\]
同時:
當 \(\hat{y}=1\) 時,\(f(x)\)越大越好; $\hat{y}=0 $ 時,\(f(x)\)越小越好,
Loss
經驗風險最小化(交叉熵損失函式):Sigmoid + Cross Entropy,
增加Sigmoid的目的是為了把 \(f(x)\) 的值放縮到0-1之間,用于計算交叉熵損失,
\[\begin{aligned} &z = \sigma(f(x))\\ &p(y=1|x;w,b) = z\\ &p(y=0|x;w,b) = 1-z \end{aligned} \]
\(z\) 表示預測出的可能性
經驗風險
1.使用 \(sigmoid + cross\ entropy\) 的損失函式:
\[\hat{y}=\begin{cases} 1,\; &f(x)>0\; &\sigma(f(x))\longrightarrow 1, &Loss=-ln(z)\\ 0,\; &f(x)<0\; &\sigma(f(x))\longrightarrow 0, &Loss=-ln(1-z) \end{cases}\]
\[Loss = -[\hat{y} ln z+(1-\hat{y})ln (1-z)] \]
2.從最大似然的角度
假設訓練樣本相互獨立,那么似然函式運算式為:
\[\begin{aligned} Loss &= p(\hat{Y}|X;w,b) \\ &= \prod_{i=1}^n p(\hat{y}^i|x^i;w,b)\\ &= \prod_{i=1}^n z_i^{\hat{y}^i} (1-z_i)^{1-\hat{y}^i}\\ &= \sum_{i=1}^n \hat{y}^iln z_i + (1-\hat{y}^i)ln(1-z_i) \end{aligned} \]
至此,發現從交叉熵的角度和最大似然的角度,得到的損失函式竟然完全相同,說明他倆在背后存在著不為人知的本質聯系,
現在開始探究這種聯系,
3. 交叉熵與最大似然的聯系
熵
\[H(X) = -E_{x \sim P}[log {P(x)}] \]
KL散度:KL衡量兩個分布之間的差異
\[\begin{aligned} D_{KL}(P||Q) &=E_{x \sim P}[log \frac{P(x)}{Q(x)}]\\ &=E_{x \sim P}[log{P(x)}-log{Q(x)}] \end{aligned} \]
\(D_{KL}(P||Q)\)表示選擇一個 \(Q\),使得它在 \(P\) 具有高概率的地方具有高概率,簡單來說就是找到一組引數表示 \(Q\) 分布,這組引數要做到:當 \(P\) 分布中高概率的地方時,從這組引數也能取到高概率,
交叉熵
\[\begin{aligned} H(P,Q) &=H(P)+D_{KL}(P||Q) \end{aligned} \]
具體到我們的場景而言:\(\hat{Y}\) 分布對應著 \(P\) 分布, \(Y\) 分布對應著 \(Q\) 分布,\(\hat{Y}\) 分布是確定的,\(Y\) 分布是我們所求的,換句話說就是讓 \(Y\) 分布盡量逼近 \(\hat{Y}\) 分布,
在我們這個場景下,\(\hat{Y}\) 是確定但未知的(先驗分布),
\[\begin{aligned} H(\hat{Y},Y) &= H(\hat{Y})+D_{KL}(\hat{Y}||Y)\\ &=-E_{x \sim \hat{Y}}[log \hat{Y}]+E_{x \sim \hat{Y}}[log{\hat{Y}(x)}-log{Y(x)}]\\ &=E_{x \sim \hat{Y}}-log{Y(x)} \end{aligned} \]
當我們最小化交叉熵時:
\[\begin{aligned} &min\;\;H(\hat{Y},Y)\\ &min\;\;D_{KL}(\hat{Y}||Y)\\ &min \;\;E_{x \sim \hat{Y}}[log{\hat{Y}(x)}-log{Y(x)}]\\ &min \;\;E_{x \sim \hat{Y}}-log{Y(x)} \end{aligned} \]
當 \(\hat{Y}\) 分布是已知,則熵是常量,此時交叉熵和KL散度則是等價的,
針對 \(Y\) 最小化交叉熵等價于最小化KL散度,因為 \(H(\hat{Y})\) 與\(Y\)無關,
注意最后的 \(E_{x \sim \hat{Y}}-log{Y(x)}\) 與熵 \(H(Y)\) 之間的差別,熵是已經知道一個變數x的概率分布,求出來的是這個分布的事件所產生的期望資訊總量;但對于這個式子,\(Y\) 分布是未知的,是我們所要求的東西,我們只是希望\(Y\)與\(\hat{Y}\)之間盡可能相似或者接近,而并不需要知道他們每個的確切的分布是什么(也就是并不需要知道概率分布的運算式),所以使用KL散度直接定義他們之間的差異就行了,
說到這里想起來了上一篇介紹SVM時的核函式,其中也是要把低維空間升到高維空間,然后計算他們的內積,對于這整個程序,我們最終需要的是內積的結果,為了減少計算量同時達到最終的目的,跳過中間復雜的程序,引入了核函式,這樣我們就不需要知道升維后具體是什么樣子,
最小化KL散度和模型采用最大似然估計進行引數估計又是一致的,因此交叉熵與最大似然估計有一個KL散度關聯在一起的,
Algorithm
梯度下降法
\(\sigma(x)' = \sigma(x)(1-\sigma(x))\)
$ min;;Loss = -\sum_{i=1}^n \hat{y}^i ln z_i + (1-\hat{y}^i)ln(1-z_i)\( \)z = \sigma(f(x))$
\[\begin{aligned} \frac{\partial L}{\partial w} &= -\sum_{i=1}^n \hat{y}^i \frac{1}{z_i} z_i(1-z_i) x^i+(1-\hat{y}^i)\frac{1}{1-z_i} (-1) z_i(1-z_i)x^i \\ &= -\sum_{i=1}^n \hat{y}^i(1-z_i) x^i-(1-\hat{y}^i)z_ix^i\\ &= -\sum_{i=1}^n (\hat{y}^i-z_i)x^i\\ &= -\sum_{i=1}^n (\hat{y}^i-\sigma(w^Tx^i+b))x^i \end{aligned} \]
\[\begin{aligned} w^{k+1} &= w^k - \eta \frac{\partial L}{\partial w} \\ &= w^k+\eta\sum_{i=1}^n (\hat{y}^i-z_i)x^i \end{aligned} \]
這里有一個很好的性質,更新的梯度與 \(\hat{y}^i-z_i\) 有關,當他們之間的差距越大時,更新的梯度越大,
三、擴展
上面所說的模型中\(\hat{y}^i\in\{0,1\}\),換一種寫法:\(\hat{y}^i\in\{1,-1\}\),還是用sigmoid+交叉熵的方式來寫損失函式,
此時:
\[\hat{y}=\begin{cases} 1,\; &f(x)>0\; &\sigma(f(x))\longrightarrow 1, &Loss=-ln(z)\\ -1,\; &f(x)<0\; &\sigma(f(x))\longrightarrow 0, &Loss=-ln(1-z)=-ln(-z) \end{cases}\]
上式的變換參考上一篇遵循統一的機器學習框架理解SVM
綜合得來:
\[\begin{aligned} Loss &= -\sum_{i=1}^n ln(\sigma(\hat{y}^if(x^i)))\\&= - \sum_{i=1}^n ln \frac{1}{1+exp(-\hat{y}^if(x^i))}\\&=\sum_{i=1}^n ln(1+exp(-\hat{y}^if(x^i))) \end{aligned} \]
\[\begin{aligned} \frac{\partial L}{\partial w} &= -\sum_{i=1}^n \frac{1}{\sigma(\hat{y}^if(x^i))}\sigma(\hat{y}^if(x^i))(1-\sigma(\hat{y}^if(x^i)))\hat{y}^ix^i\\ &=-\sum_{i=1}^n (\hat{y}^i-\hat{y}^i\sigma(\hat{y}^if(x^i)))x^i \end{aligned} \]
\(\hat{y}^i=1\)時,$$\frac{\partial L}{\partial w}=-\sum_{i=1}^n (1-\sigma(f(x^i)))x^i$$
\(\hat{y}^i=-1\)時,$$\frac{\partial L}{\partial w}=-\sum_{i=1}^n (-1+\sigma(-f(x^i)))x^i=-\sum_{i=1}^n (-1+1-\sigma(f(x^i)))x^i=-\sum_{i=1}^n -\sigma(f(x^i))x^i$$
到此可以看出與\(\hat{y}^i\in\{1,0\}\) 時完全相同,
2019-10-10 add
從不同的角度看待深度神經網路做分類任務
\(z = g(x)\), z是變換后的特征,
- 角度1:對于深度神經網路做分類任務而言,除開最后一層,前面的層都可以看作這個g,最后一層看作線性分類層f,也就是說程序是看作 \(f(g(x))\),其中g作為特征轉換函式,是未知的,注意這里與SVM中的kernel區別,kernel函式也是特征轉換,可是這個函式是已知的,在深度學習中,這個函式是未知的,將會通過資料學習而來,
- 角度2:直接就是把整個神經網路看作一個f函式,建模就是f(x)>0 或者f(x)<0進行分類,此時就不能看作是線性分類了,也沒有特征轉換,而是學習一個超曲面,整個超曲面能把當前資料分類,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/73673.html
標籤:其他
