一、损失函数
预测值: 首先我们根据给定的
Xi
,对于一个样本,我们可以得到一个预测
值 y^\\widehat{y}y 。
为了衡量我们的预测值与真实值之间的差距,我们引入了一个损失函数,这里
就仅列出交叉熵函数作为举例,而且为什么要用交叉熵,这里最重要的原因是因为采用交叉熵可以避免局部最小值。
交叉熵函数:
L(y,y^)=−(ylogy^+(1−y)log(1−y^)) L(y,\\widehat{y}) = -(ylog\\widehat{y}+(1-y)log(1-\\widehat{y}))L(y,y)=−(ylogy+(1−y)log(1−y))
所以我们可以直观看一下该函数的作用:
- 如果
y=1
,那么公式中只剩下−logy^-log\\widehat{y}−logy,如果 y^=0\\widehat{y}=0y=0,那么此时
L
趋于无穷大,如果 y^=1\\widehat{y}=1y=1,那么此时
L=0
。
- 同理
y=0
,也是一样。
- 所以通过上述两种情况,我们的目的是为了使误差尽可能地小,从而使我们的预测接近真实值。
二、成本函数
由于损失函数是对于一个样本的,那么在训练一组训练集时,将各个样本的误差相加求和再取平均数,即为成本函数。
三、梯度下降法
通过梯度下降,不断地更新
w、b
参数,从而使预测值更加接近真实值。我们可以直观地看一下,我们的成本函数究竟是什么样子的:
因此我们的目的就是找到那个最低点,即我们要的
w、b
。这样也可以避免局部最优解。
我们来看一下梯度下降究竟干了些什么:
- 初始化一个
w、b
,此时我们位于该图中随意的一个点上。
- 从此时开始,这个点沿着梯度一直往下走,直到走到最低端,或者在周围震荡。
那么为什么可以走到最低点,我们来看一下
w、b
究竟是如何变化的。首先给出
w
的更新公式:
w=w−αdJ(w)dw w = w – \\alpha\\frac{dJ(w)}{dw} w=w−αdwdJ(w)
以该图为例,我们进行分析:
- 我们知道,导数其实就是一个斜率,那么我们可以分类讨论。
- 如果导数大于
0
,我们知道此时我们位于该图像的右半部分,那么我们此时的
w
应该向左移动,也就是上述的公式。
- 如果导数小于
0
,那么此时处于左半部分,减去一个负值,相当于
w
变大
- 通过上述公式,我们发现我们正在一步步地往最低点移动。
通过上述讲解,我们应该也注意以下问题:
- 激活函数必须可导,要不然无法反向传播。(当然
Relu
是个例外)
- 损失函数的选择决定了你的收敛
- 梯度下降的方法决定了你的收敛
- 学习率在一定程度上也会决定你的收敛