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