神经网络和深度学习(吴恩达) 第二周课程提炼

    本系列笔记旨在记录自己的学习过程,能够及时回顾整理学过的东西,有助于加深理解和记忆,方便今后回看。学这个课程的同时,也在看《机器学习》(周志华),所以会将书和视频的内容结合来看,综合学习。

本篇主要是第二周课程中讲到的:二分分类Logistic回归损失函数梯度下降向量化

二分分类:

简单理解就是输出的结果是两个离散的值,就像课程中举的例子:通过输入一张图片的信息,经过一系列的计算,输出一个离散Y值,比如Y=1时,表示图片中含猫,Y=0时即没有猫。

Logistic回归: 

很多人将这个翻译成逻辑回归,而在《机器学习》中,作者认为应该更为准确的叫对数几率回归,这里不对这两个翻译做过多的纠缠,知道就好。我们的重点是理解这个概念。

Logistic回归实际是进行上面说的二分分类的具体方法,可以这样理解:线性回归函数y = wx+b的输出范围为(−∞,+∞),而二分分类的结果范围为(0,1),用正经的话说就是需要一个函数将区间(−∞,+∞)映射到区间(0,1),也可以通俗点这样理解:需要对线性函数做“整形”手术,而“手术刀”即为Sigmoid()函数,“整形”过程为Sigmoid(y)。下面给出Sigmoid(x)的图像,可以很好的完成该“整形手术”。

sigmoid(x)
sigmoid(x)图像


损失函数:

损失函数其实有很多,例如容易想到的平方损失函数,但它是一个非凸的函数,这样在后面利用梯度下降优化参数时,得到的仅是局部最优解,并不是全局的最优解。

非凸函数

所以在Logistic回归中,我们使用的是对数损失函数:

这是一个凸函数,可以得到全局最优解,那么怎么理解这个函数呢?可以这样想2个例子:

①当y = 0时,L(y^,y)=−log(1−y^),要使损失函数尽可能的小,即要log(1−y^)尽可能大,所以要y^尽可能小,而y^的取值区间为(0,1),故y^ = 0.

②当y = 1时,L(y^,y)=−logy^,要使损失函数尽可能小,即要logy^尽可能大,所以y^ = 1.

所以通过使损失函数L(y^,y)小,可以得到正确的预测值y^。

梯度下降:

    Gradient Descent Optimization(梯度下降)是神经网络训练中最常用的优化算法。首先要明白梯度是一个向量,是向量就代表着方向,梯度的方向就是函数f增长最快的方向,梯度的反方向即函数f下降最快的方向。比如一元函数的梯度就是y'(y对x的导数),二元函数的梯度就是(f'x,f'y)(函数f对x,y的偏导),以此可以类推到更多元。这里给出一元二元的图像,能够有更直观的理解。

一元函数
二元函数

那么在Logistic回归中,梯度下降算法是用来不断优化参数w,b的。

首先进行正向传播,得到预测结果a,从而计算出损失函数L(a, y)。接下里反向传播,通过求出的dw,db不断用w = w - αdw,b = b - αdb来更新参数w、b的值(α为学习率),当损失函数降到最小时,参数w、b的值也确定下来,训练也就完成。

向量化:

向量化在神经网络中是非常非常重要的,课程中也花了大篇幅来解释为什么要向量化,我这里就不详细阐述。只需知道,①向量化后计算速度更快(for循环是线性运算,而向量化后可并行计算,速度不是一个数量级的)②编码更简单(矩阵的点乘直接用numpy库中的一行语句就能完成)


这周的课后习题是完成一个简单的神经网络,判断输入的图片中是否有猫,是理论上升到实践的一个很好练手。

简单神经网络

网易云课堂上只有视频课,课后习题在github上有。

你可能感兴趣的:(神经网络和深度学习(吴恩达) 第二周课程提炼)