这里写自定义目录标题
逻辑回归模型
逻辑回归模型是指把一件有多个因素影响其发生的事情对应到一条概率曲线里面,其形式为
σ
(
z
)
=
1
/
(
1
+
e
x
p
(
−
z
)
)
\sigma(z)=1/(1+exp(-z))
σ(z)=1/(1+exp(−z))
如下图
图1 标准的逻辑回归
它的特点是变量域的范围为无穷大,而值域限制在0-1之间,也就说明我们可以把任何事情转化成概率分布的模型1。
逻辑回归其实是一个一层的人工神经网络。
如果把不同输出节点上得到的值看成一种概率分布,那么实际上人工神经网络就等价于一个概率模型。
有监督的训练:训练数据(包含正确的输入数据和输出值),训练的目标是找到一组参数使得训练数据的输入和输出能尽可能的一致,这种可能性我们用代价函数(cost function)来表示。
代价函数(cost function)
代价函数J(w,b)用来衡量全体训练集的参数的效果。
公式里的L是单个训练样本集的损失函数(loss function),最常见的就是平方差损失。
但在逻辑回归里面,选用下面的代价函数
最为合适,因为****(待补充)
为了使训练数据的输入输出能尽量的一致,我们需要尽可能的最小化代价函数
m
i
n
J
(
w
,
b
)
minJ(w,b)
minJ(w,b)
那么,训练人工神经网络就变成了一个最优化的问题,如何去找到最值,高数中学过的拉格朗日乘子就是干这事的。最优化是一门系统的学科,而最优化最常见的找极值算法常用 就是牛顿法、梯度下降法(gradient descent)、共轭梯度下降法等数值优化算法。
在这里逻辑回归是用的梯度下降法。
梯度下降法
所谓梯度,就是指的最陡峭的地方,在一维函数中,梯度就代表其点的斜率,多维函数中,梯度就代表当前点能上升最多的方向。
上图的一系列圆就代表其函数的等值线,梯度下降使得x0 能最快的到达x4。梯度前加个负号就是函数下降最快的方向。
x
n
+
1
=
x
n
−
γ
∇
(
x
n
)
x_{n+1} =x_n - \gamma \nabla(x_n)
xn+1=xn−γ∇(xn)
γ
\gamma
γ被称为学习率,控制着梯度下降的符号,也被成为超参数,就是传说中被调参的那个东东。
既然梯度下降法是用来找最值的,现在方向已经找到了,那么什么时候停止寻找呢?不难想到,梯度降为0的地方就是我们停止的地方。
但如果我们再仔细想一想,导数为0的地方只能说明是极值点,并一定是最值点。如下图就有两个极值点,但并不都是最值点。
那么这里为什么能理直气壮的使用梯度下降法呢?那是因为这里的成本函数
J
J
J是一个凸函数,所谓凸函数就是极值点就是最值点的函数。
如果我们从神经网络的
神经网络下视角的逻辑回归
神经网络最牛逼的功能就是计算过程中有一个反馈,这跟生物行为很类似,我们看到过汽车撞死人的视频,我们就会遵守交通规则,同样司机见过赔偿巨额受罚的例子,同样也会安全行车。
我们用神经网络来解释逻辑回归,
假设输入参数共有5个,其中
w
1
w1
w1 、
w
2
w2
w2是两个维度
x
1
x_1
x1、
x
2
x_2
x2的权重,b是偏差或是噪声,z是线性回归模型(二分类问题中可以理解为分类的那条曲线),a就是回归或分类下对应的概率函数,最后一个就是代价函数了。
每个样本集就相当于能够对我们的回归函数做一次参数更新,更新就需要从结果再反推一遍输入模型(反向传播那个意思555)
最小化代价函数需要知道代价函数对参数(w)的梯度,才能去更新参数,故需求出L对w的导数。我们用
d
w
dw
dw表示
∂
L
/
∂
w
\partial L/\partial w
∂L/∂w,梯度下降法的参数更新如下:
完整的训练流程如下
上述过程中对w的
向量化
在逻辑回归里面,我们需要计算z=w^T*x + b