码迷,mamicode.com
首页 > 其他好文 > 详细

遵循统一的机器学习框架理解逻辑回归

时间:2019-10-04 18:42:04      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:参数估计   理解   自己   逻辑   参数   case   lock   计算   博客   

遵循统一的机器学习框架理解逻辑回归

标签: 机器学习 LR 分类

一、前言

  1. 我的博客不是科普性质的博客,仅记录我的观点和思考过程。欢迎大家指出我思考的盲点,更希望大家能有自己的理解。
  2. 本文参考了网络上诸多资料。

二、理解

统一的机器学习框架(MLA):

1.模型(Model)
2.策略(Loss)
3.算法(Algorithm)

按照如上所说框架,LR最核心的就是损失函数使用了 SigmoidCross 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(\hat{y}=1|x;w,b) = z\&p(\hat{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\}\) 时完全相同。

遵循统一的机器学习框架理解逻辑回归

标签:参数估计   理解   自己   逻辑   参数   case   lock   计算   博客   

原文地址:https://www.cnblogs.com/SpingC/p/11622726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!