遵循统一的机器学习框架理解逻辑回归
遵循统一的机器学习框架理解逻辑回归
标签: 机器学习 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\) 值,线性函数:
同时:
当 \(\hat{y}=1\) 时,\(f(x)\)越大越好; $\hat{y}=0 $ 时,\(f(x)\)越小越好。
Loss
经验风险最小化(交叉熵损失函数):Sigmoid + Cross Entropy。
增加Sigmoid的目的是为了把 \(f(x)\) 的值放缩到0-1之间,用于计算交叉熵损失。
\(z\) 表示预测出的可能性
经验风险
1.使用 \(sigmoid + cross\ entropy\) 的损失函数:
2.从最大似然的角度
假设训练样本相互独立,那么似然函数表达式为:
至此,发现从交叉熵的角度和最大似然的角度,得到的损失函数竟然完全相同,说明他俩在背后存在着不为人知的本质联系。
现在开始探究这种联系。
3. 交叉熵与最大似然的联系
熵
KL散度:KL衡量两个分布之间的差异
\(D_{KL}(P||Q)\)表示选择一个 \(Q\),使得它在 \(P\) 具有高概率的地方具有高概率。简单来说就是找到一组参数表示 \(Q\) 分布,这组参数要做到:当 \(P\) 分布中高概率的地方时,从这组参数也能取到高概率。
交叉熵
具体到我们的场景而言:\(\hat{Y}\) 分布对应着 \(P\) 分布, \(Y\) 分布对应着 \(Q\) 分布。\(\hat{Y}\) 分布是确定的,\(Y\) 分布是我们所求的。换句话说就是让 \(Y\) 分布尽量逼近 \(\hat{Y}\) 分布。
在我们这个场景下,\(\hat{Y}\) 是确定但未知的(先验分布)。
当我们最小化交叉熵时:
当 \(\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))$
这里有一个很好的性质,更新的梯度与 \(\hat{y}^i-z_i\) 有关,当他们之间的差距越大时,更新的梯度越大。
三、扩展
上面所说的模型中\(\hat{y}^i\in\{0,1\}\),换一种写法:\(\hat{y}^i\in\{1,-1\}\),还是用sigmoid+交叉熵的方式来写损失函数。
此时:
上式的变换参考上一篇遵循统一的机器学习框架理解SVM
综合得来:
\(\hat{y}^i=1\)时,$$\frac{\partial L}{\partial w}=-\sum_{i=1}^n (1-\sigma(f(xi)))xi$$
\(\hat{y}^i=-1\)时,$$\frac{\partial L}{\partial w}=-\sum_{i=1}^n (-1+\sigma(-f(xi)))xi=-\sum_{i=1}^n (-1+1-\sigma(f(xi)))xi=-\sum_{i=1}^n -\sigma(f(xi))xi$$
到此可以看出与\(\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进行分类,此时就不能看作是线性分类了,也没有特征转换,而是学习一个超曲面,整个超曲面能把当前数据分类。