0 前言
本文是吴恩达教授深度学习课程的个人笔记,细节之处有所遗漏,如想了解更多请参照《神经网络与深度学习》-Stanford吴恩达教授
1 问题的引入
假设我们手边有m张猫的图片,以及一张不知道内容的图片,如何判断这张图片是不是猫呢?或者说,这张图片是猫的概率有多大呢?
2 分析
我们知道,一张图是由若干像素所组成,每个像素上的颜色是由其RGB值确定,假设这里的照片都是64×64像素,因此,一张照片可以看做红绿蓝三个RGB值组成的64×64矩阵。将这64×64个像素纵向排列,我们就得到了一个64×64维度的矩阵。
设图片的像素为n×n,我们将其排列好后,就得到了一个nn*维度的矩阵,我们将其设为 x 1 x_1 x1,这个矩阵,对应了一个概率值,这个概率值代表这张图片是否为猫,我们设它为 y 1 y_1 y1。
问题中,我们有m张猫的图片,重复上述步骤,即得到了 x 2 , x 3 , . . . . . . . , x m x_2,x_3,.......,x_m x2,x3,.......,xm与 y 2 , y 3 . . . . . . , y m y_2,y_3......,y_m y2,y3......,ym,形成了m组映射关系。此时,再将 x 1 , x 2 , x 3 , . . . . . . . , x m x_1,x_2,x_3,.......,x_m x1,x2,x3,.......,xm分别作为列向量,组合成一个(n×n,m)的矩阵X。将 y 1 , y 2 , y 3 , . . . . . . , y m y_1,y_2,y_3,......,y_m y1,y2,y3,......,ym纵向排列,得到一个(m,1)矩阵Y。
3 logistic回归
3.1 X与Y的映射关系
在我们过去的经验中,对于因变量和自变量的关系,我们经常使用线性函数 y = k x + b y=kx+b y=kx+b来研究。但反应到这个求概率的问题上显然不妥,因为y是概率,他的取值范围只能在(0,1)之间。
为了解决这个问题,使得从x出发,经过各种变换,使得y的取值能保持在(0,1)之间,我们引入sigmoid函数
σ
(
z
)
=
1
1
+
e
−
z
\sigma(z) = \cfrac{1}{1+e^{-z}}
σ(z)=1+e−z1。sigmoid函数的函数图像如图所示,在自变量z趋于无穷大或无穷小时,结果无限接近于1或0。
sigmoid 函数
将X缩放平移,把其当做sigmoid函数自变量,步骤综合,则得到X与Y的数学关系为:
Y = σ ( w X + b ) Y = \sigma(wX+b) Y=σ(wX+b)
这里的公式是有很大的问题的,因为于情于理,这个公式在数值上都是难以成立的,此处只是为了大致描述他们之间的映射关系,接下来将继续探讨这个问题,即如何将此公式变得成立。
3.2 Y Y Y到底是什么
讨论这个问题时,我们要先观察上面的公式,式子中,sigmoid函数已知, X X X已知,而 w w w和 b b b可能还是不确定的!
未知的 w w w和 b b b将带来两种情况,一, w w w和 b b b确定,那按照式子,我们可以直接求得那张图为猫的概率,这没啥说的,自然而然成立,二, w w w和 b b b不确定,那么势必造成求出来的 Y Y Y与真实值存在差异!
这第二个情况,是笔者在学完logistic回归后觉得最有意思的一点。
logistic回归,顾名思义,有一个回归的动作,为什么要回归?因为有东西它跑远了!那是谁跑远了?就是 w w w和 b b b这两个不确定的东西跑远了!
在算法的最开始, w w w和 b b b被赋予了一个不准确的值,按照这个值计算后, Y Y Y的真实值与计算值存在着很大的差异,我们希望最后的最后, w w w和 b b b能尽量准确,即这个差异尽量小,所以我们让 w w w和 b b b往某对值上回归,当他们俩取到这个值的时候,差异是最小的。
3.3 如何衡量这个差异
不同于以往使用平方差等方式,我们要用到损失函数 L ( y ^ , y ) L(\hat{y},y) L(y^,y)来衡量这个差异,此处 𝐿 ( y ^ , 𝑦 ) = − 𝑦 log ( y ^ ) − ( 1 − 𝑦 ) log ( 1 − y ^ ) 𝐿(\hat{y}, 𝑦) = -𝑦\log_{}(\hat{y}) - (1 - 𝑦)\log_{}(1 - \hat{y}) L(y^,y)=−ylog(y^)−(1−y)log(1−y^)原因请参考吴恩达教授对于Logistic 损失函数的解释。
我们有m个张照片,每一组都将形成一组损失函数,将这些损失函数求和平均,得到代价函数:
代价函数用来衡量当前
w
w
w和
b
b
b参与计算后,计算值与结果值的差异。
3.4 梯度下降法
我们通过前面的步骤,已经确定了总代价与 w w w和 b b b的直接关系,我们现在要解决的就是确定一组 w w w和 b b b,使得总代价全局最小。梯度下降法,就是一种确定 w w w和 b b b的方法。
如图有一个凹函数,仅有一个极值点。利用公式,即可实现 w w w的自我更新,使其逐渐靠近最低点。
其中a是学习率,也叫步长,用来控制下降的长度。由公式可见,无论在最低点左边还是右边,w都将逐步接近最低点。步长的选择也会对求解速度造成影响,若步长过大,会形成在最低点来回振荡的效果,若步长过小,虽然结果精确度会变高,但也会降低求解速度。
而对于代价函数来说,他是关于w和b的二元方程,因此导数应该为偏导形式,即wb更新的公式为:
现在的工作就剩下求步长后的导数,我们通过链式求导法则,可以直接得到上述两个导数,完成一次梯度下降的式子如下图所示。
4 总结
第一步,将所有样本的所有特征值放入样本矩阵
第二步,利用sigmoid函数求出预估值
第三步,利用公式求出J对Z的导数
第四步,求J对w和J对b的导数
第五步,梯度下降求 w w w和 b b b.