吴恩达【深度学习工程师】学习笔记(二)

吴恩达【深度学习工程师】专项课程包含以下五门课程:

1、神经网络和深度学习;
2、改善深层神经网络:超参数调试、正则化以及优化;
3、结构化机器学习项目;
4、卷积神经网络;
5、序列模型。

今天介绍《神经网络与深度学习》系列第二讲:神经网络基础(上)。

主要内容:

1、二分类问题

2、逻辑回归及其对应的代价函数形式;

3、用计算图描述神经网络的正向、反向传播过程;

4、在逻辑回归中使用梯度下降算法。

1、二分类问题

二分类就是输出 y 只有离散值 { 0, 1 }或者 { -1, 1 }。

以一个图像识别问题为例,判断图片中是否有猫存在,0 代表 non cat,1 代表 cat。

吴恩达【深度学习工程师】学习笔记(二)

一般来说,彩色图片包含RGB三个通道。我们首先要将图片输入x(维度是(64,64,3))转化为一维的特征向量。方法是每个通道逐行提取,最后连接起来,转化后的输入特征向量维度为(64x64x3=12288)。此特征向量x是列向量,维度一般记为nx

如果训练样本共有m张图片,那么整个训练样本X组成了矩阵,维度是(,m)。

注意,这里矩阵X的行代表了每个样本特征个数,列m代表了样本个数。

所有训练样本的输出Y也组成了一维的行向量,写成矩阵的形式后,它的维度就是(1,m)。

2、逻辑回归

如何使用逻辑回归来解决二分类问题?

逻辑回归中,预测值表示为1的概率,与二分类不同,取值范围在[0,1]之间。

使用线性模型,引入权重参数w和偏置参数b。权重w的维度是(,1),b是一个常数项。这样,逻辑回归的线性预测可以写成:

上式的线性输出区间为整个实数范围,而逻辑回归要求输出范围在[0,1]之间,所以需要引入Sigmoid函数对输出进行处理:

其中,Sigmoid函数:

在Sigmoid函数中,当z值很大时,函数值趋向于1;当z值很小时,函数值趋向于0。且当z=0时,函数值为0.5。

Sigmoid函数的一阶导数可以用其自身表示:

在逻辑回归中,权重参数 w 和偏置参数 b 需要通过迭代训练得到。因此,我们需要定义一个代价函数。通过优化代价函数,得到对应的w和b。

对于m个训练样本,我们通常使用上标来表示对应的样本。例如表示第i个样本。

如何定义所有m个样本的代价函数呢?

从单个样本来讲,我们希望该样本的预测值与真实值y越相似越好。我们把单个样本的代价函数用Loss function来表示,我们可以构建一种 Loss function 凸函数,如下所示:

当y=1时,。如果越接近1,,表示预测效果越好;

当y=0时,。如果越接近0,,表示预测效果越好;

因此,这个Loss function能够很好地反映预测输出与真实样本输出y的接近程度。

对于m个样本,我们定义代价函数,代价函数是m个样本的Loss function的平均值,代价函数可表示为:

代价函数是关于权重参数 w 和偏置参数 b 的函数。我们的目标就是迭代计算出最好的 w 和 b ,最小化代价函数。

3、梯度下降

我们将使用梯度下降算法来计算出合适的 w 和 b ,从而最小化m个训练样本的代价函数 J(w,b)。

由于J(w,b)是凸函数,梯度下降算法是先随机选择一组参数w和b,然后迭代的过程中分别沿着w和b的梯度的反方向前进一小步,不断修正w和b。梯度下降算法每次迭代更新,w和b的更新表达式为:

上式中,是学习率(learning rate),表示梯度下降的步伐大小。越大,w和b每次更新的“步伐”更大一些。

梯度下降算法能够保证每次迭代w和b都能向着J(w,b)全局最小化的方向进行。

4、计算图

神经网络的训练过程包含了正向传播(Forward Propagation)和反向传播(Back Propagation)。

我们用计算图(Computation graph)的形式来解释这两个过程,举个简单的例子,假如代价函数为J(a,b,c)=3(a+bc),包含a,b,c三个变量。我们用u表示bc,v表示a+u,则J=3v。它的计算图可以写成如下图所示:

吴恩达【深度学习工程师】学习笔记(二)

令a=5,b=3,c=2

正向传播过程:

从左到右,则u=bc=6,v=a+u=11,J=3v=33。

反向传播过程:

J对参数a的偏导数。从右到左,J是v的函数,v是a的函数。则利用求导技巧,可以得到:

J对参数b的偏导数。从右到左,J是v的函数,v是u的函数,u是b的函数。可以推导:

J对参数c的偏导数。从右到左,J是v的函数,v是u的函数,u是c的函数。可以推导:

对单个样本而言,逻辑回归Loss function表达式如下:

计算该逻辑回归的反向传播过程:

则梯度下降算法可表示为:

m个样本的代价函数:

这样,每次迭代中w和b的梯度有m个训练样本计算平均值得到。每次迭代后,根据梯度下降算法,w和b都进行更新:

这样经过多次迭代后,就完成了整个梯度下降算法。