在之前的视频中,您看到了对数几率回归模型
y=σ(WTx+b),where σ=11+e−z
y
=
σ
(
W
T
x
+
b
)
,
w
h
e
r
e
σ
=
1
1
+
e
−
z
。
要训练对数几率回归模型的参数
W
W
和,您需要定义一个代价函数。
您有一组训练集,希望找到参数
W
W
和,至少你在训练集上的预测
y^(i)
y
^
(
i
)
接近ground truth标签
y(i)
y
(
i
)
。
现在,让我们看看我们可以使用什么损失函数(或称为误差函数)来衡量算法的效果。
你可以将算法输出
y^
y
^
时的损失定义为
L(y^,y)=(y^−y)2
L
(
y
^
,
y
)
=
(
y
^
−
y
)
2
或
L(y^,y)=12(y^−y)2
L
(
y
^
,
y
)
=
1
2
(
y
^
−
y
)
2
。
事实证明,在对数几率回归中,人们通常不这样做。因为你会发现我们稍后讨论的优化问题变成非凸的,你最终会遇到多个局部最优化的优化问题。所以梯度下降可能无法找到全局最优。
但是直觉就是您需要定义损失函数 L L 来衡量当真实标签是时我们的输出结果 y^ y ^ 有多好。平方误差似乎可能是一个合理的选择,只不过它使梯度下降效果不佳。因此,在对数几率回归中,我们将定义一个不同的损失函数 L(y^,y)=−ylog(y^)−(1−y)log(1−y^) L ( y ^ , y ) = − y l o g ( y ^ ) − ( 1 − y ) l o g ( 1 − y ^ ) ,它与平方误差具有相似的作用,但这个损失函数会给我们一个凸的优化问题。
要理解为什么这是有道理的,我们来看看这两种情况。
在第一种情况下,假设
y
y
等于,那么
1−y=0
1
−
y
=
0
此时损失函数为
−log(y^)
−
l
o
g
(
y
^
)
,
y^
y
^
越接近
1
1
时损失越接近。
另一种情况是如果
y
y
等于,那么损失函数中的第一项等于零,所以损失变成了
−log(1−y^)
−
l
o
g
(
1
−
y
^
)
。
y^
y
^
越接近
0
0
时损失越小。
损失函数(Loss Function)是针对单个训练样例定义的。它衡量单个训练样本的表现。
现在要定义一个代价函数(Cost Function),它衡量模型适合整个训练集的程度,。
所以损失函数只适用于单个训练示例,而代价函数适用于模型的参数。
因此,在训练逻辑回归模型时,我们将尝试找到参数
W
W
和,最小化代价函数
J
J
<script type="math/tex" id="MathJax-Element-5791">J</script>。
因此,您刚刚看到了逻辑回归算法的设置,训练示例的损失函数以及算法参数的总体代价函数。
事实证明,逻辑回归可以被看作是一个非常小的神经网络。在下一个视频中,我们将详细介绍这一点,以便您可以开始直观了解神经网络的功能。因此,让我们继续下一个关于如何将逻辑回归视为非常小的神经网络的视频。