逻辑回归(Logistic Regression)
Posted Debroon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逻辑回归(Logistic Regression)相关的知识,希望对你有一定的参考价值。
逻辑回归(Logistic Regression)
线性模型
逻辑回归,本质是一种线性模型 y = w x + b y=wx+b y=wx+b。
- 线性模型的来龙去脉,请参考:《神经网络的结构》。
不过逻辑回归和线性模型不同的是,为了实现二分类任务,加了 s i g m o d sigmod sigmod 函数。
- 这个不仅要满足映射到 [0,1],还要满足:当 x = 0 时;y 正好为 0.5;且 x = 负无穷 和 x = 正无穷的时候,y 分别趋近于 0 和 1。
- s i g m o i d sigmoid sigmoid 是连续可导函数,为我们计算带来了方便。
- s i g m o i d sigmoid sigmoid 是最简单的满足这样条件的函数,更“自然”,数学上的解释 —— 满足最大似然估计的结果
s i g m o i d sigmoid sigmoid 函数,使得预测的结果从样本成绩变成了样本成绩的概率。
- 样本成绩: y = w x + b y=wx+b y=wx+b
- 样本成绩的概率: p = σ ( y ) = 1 1 + e w x + b p=\\sigma(y) =\\frac11+e^wx+b p=σ(y)=1+ewx+b1
如果这个概率 p > 0.5 p > 0.5 p>0.5,把这个数据分类为 y = 1 y=1 y=1(正样本)。
如果这个概率 p < 0.5 p < 0.5 p<0.5,就把这个数据分类为 y = 0 y=0 y=0(负样本)。
损失函数
这个损失函数的意义是模型预测出来的值 p p p 要和样本的标签值 y y y 尽量一致,即正样本的预测值要尽量为正,负样本要为负,否则会产生一个损失值。
按照 y 、 p y、p y、p 之间的关系,我们反过来设计:
- 如果样本的标签值 y = 1 y=1 y=1,模型预测出来的值 p 越小 p 越小 p越小,损失值越大
- 如果样本的标签值 y = 0 y=0 y=0,模型预测出来的值 p 越大 p 越大 p越大,损失值越小
用数学语言表达:
- − l o g ( p ) i f y = 1 -log(p)~~~~if~~~~y=1 −log(p) if y=1
- − l o g ( 1 − p ) i f y = 0 -log(1-p)~~~~if~~~~y=0 −log(1−p) if y=0
函数图像:
当
p
p
p 接近 1 时,损失函数接近正无穷,会分为正样本,但实际值却是负样本。
所以,我们会给一个正无穷的惩罚,直到 p p p 的减小,惩罚值会越来越低,直到当 p = 0 p=0 p=0 时,会分为负样本,实际值也是负样本,就没有惩罚。
不过目前这个损失函数是分类函数形式,我们需要合并为一个函数:
- L ( p , y ) = − y l o g ( p ) − ( 1 − y ) l o g ( 1 − p ) ) L(p, y)=-y~log(p) - (1-y)~ log(1-p)) L(p,y)=−y log(p)−(1−y) log(1−p))
这是对单个训练样本(一张图)的损失函数,但我们输入都神经网络的通常是一个训练集(大量的图片)。
我们需要累加单个训练样本的结果,再求平均值:
- 1 m ∑ i = 1 m L ( p i , y i ) \\frac1m\\sum_i=1^mL(p_i, y_i) m1∑i=1mL(pi,yi)
为什么使用这个损失函数呢?
这个损失函数(逻辑回归)的函数图像是一个向下凸的图形。
因为学习,就是找到一组 w 和 b,使这个损失函数最小。
也就是在这个函数图像的底部找到一组 w 和 b。
这个损失函数没有局部最优解,只存在唯一的全局最优解。
我们要做的,是求出成本函数的梯度,而后运用梯度下降法求出损失最小的一组 w 和 b。
损失函数的梯度
损失函数 L o s s ( p , y ) Loss(p, y) Loss(p,y),是指对单个样本的做的损失。
成本函数 J ( θ ) J(\\theta) J(θ),是数据集上总的成本和损失。
- J ( θ ) = − 1 m ∑ m i = 1 y i l o g ( σ ( X b i θ ) ) + ( 1 − y i ) l o g ( 1 − σ ( X b i θ ) ) J(\\theta)=-\\frac1m\\sum_m^i=1y_ilog(\\sigma(X^i_b\\theta))+(1-y_i)log(1-\\sigma(X^i_b\\theta)) J(θ)=−m1∑mi=1yilog(σ(Xbiθ))+(1−yi)log(1−σ(Xbiθ))
求损失函数的梯度: Δ J = ∂ J ( θ ) ∂ θ 0 ∂ J ( θ ) ∂ θ 1 ⋅ ⋅ ⋅ ∂ J ( θ ) ∂ θ n \\Delta J= \\beginBmatrix \\frac\\partial J (\\theta)\\partial\\theta_0 \\\\ \\frac\\partial J (\\theta)\\partial\\theta_1 \\\\ ··· \\\\ \\frac\\partial J (\\theta)\\partial\\theta_n \\endBmatrix ΔJ=⎩ ⎨ ⎧∂θ0∂J(θ)∂θ1∂J(θ)⋅⋅⋅∂θn∂J(θ)⎭ ⎬ ⎫
比较难处理的就是 σ ( t ) \\sigma(t) σ(t):
- σ ( t ) = 1 1 + e − t = ( 1 + e − t ) − 1 \\sigma(t)=\\frac11+e^-t=(1+e^-t)^-1 σ(t)=1+e−t1=(1+e−t)−1
对 σ ( t ) \\sigma(t) σ(t) 求导:
-
σ
(
t
)
′
=
−
(
1
+
e
−
t
)
−
2
⋅
e
−
t
⋅
(
−
1
)
=
(
1
+
e
−
t
)
−
2
⋅
e
−
t
\\sigma(t)'=-(1+e^-t)^-2·e^-t·(-1)=(1+e^-t)^-2·e^-t
σ(t)′=−(1+e−t<
以上是关于逻辑回归(Logistic Regression)的主要内容,如果未能解决你的问题,请参考以下文章