NGDL系列笔记《神经网络与深度学习》(2)--神经网络基础之逻辑回归

这篇我们将开始介绍神经网络的基础:逻辑回归(Logistic Regression)。通过对逻辑回归模型结构的分析,为我们后面学习神经网络模型打下基础。
主要内容:
1、二分类问题;

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

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

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

1. Binary Classification

逻辑回归模型一般用来解决二分类问题。
二分类指的是输出y只有{0,1}两个离散值(或者{-1,1})
以一个图像识别问题为例,判断图片中是否有猫存在,0 代表 non cat,1 代表 cat。
这里写图片描述
一般来说,彩色图片包含RGB三个通道。我们首先要将图片输入x(维度是(64,64,3))转化为一维的特征向量(feature vector)。方法是每个通道一行一行取,再连接起来,转化后的输入特征向量维度为(64x64x3=12288,1)。此特征向量x是列向量,维度一般记为nx。

如果训练样本共有m张图片,整个训练样本X就组成了矩阵,维度是(nx,m)
这里矩阵X的行nx,代表了每个样本x(i)特征个数,列m代表了样本个数
所有训练样本的输出Y组成了一维的行向量,写成矩阵的形式后,它的维度就是(1,m)。

2. Logistic Regression

接下来我们将介绍如何使用逻辑回归来解决二分类问题。
逻辑回归中,预测值ĥ =P(y=1 | x)表示为1的概率,取值范围在[0,1]之间。
使用线性模型,引入参数w和b。权重w的维度是(nx,1),b是一个常数项。这样,逻辑回归的线性预测输出可以写成:
这里写图片描述
上式的线性输出区间为整个实数范围,而逻辑回归要求输出范围在[0,1]之间,所以需要引入Sigmoid函数对输出进行处理:
这里写图片描述
其中,Sigmoid函数:
这里写图片描述
在Sigmoid函数中,当z值很大时,函数值趋向于1;当z值很小时,函数值趋向于0。且当z=0时,函数值为0.5。

Sigmoid函数的一阶导数可以用其自身表示:
σ′(z)=σ(z)(1−σ(z))
这样,sigmoid函数的输出范围就界定在[0,1]之间了

3. Logistic Regression Cost Function

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

对于m个训练样本,我们通常使用上标来表示对应的样本。例如(这里写图片描述表示第i个样本。

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

从单个样本讲,我们希望该样本的预测值ŷ 与真实值越相似越好。把单个样本的cost function用Loss function来表示,根据以往经验,使用平方错误(squared error)来衡量,如下所示:
这里写图片描述
但对于逻辑回归,一般不使用平方错误来作为Loss function。原因是这种Loss function一般是non-convex的。non-convex函数在使用梯度下降算法时,容易得到局部最小值(local minumum),即局部最优化。而最优化的目标是计算得到全局最优化(Global optimization)。因此,我们一般选择的Loss function应该是convex的。
因此,构建一种 Loss function 凸函数,如下所示:
这里写图片描述

当y=1时,L(ŷ ,y)=−logŷ 。如果ŷ 越接近1,L(ŷ ,y)≈0,表示预测效果越好;

当y=0时,L(ŷ ,y)=−log (1−ŷ )。如果ŷ 越接近0,L(ŷ ,y)≈0,表示预测效果越好;

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

对于m个样本,我们定义代价函数,代价函数是m个样本的Loss function的平均值,代价函数可表示为:
这里写图片描述
代价函数是关于权重参数 w 和偏置参数 b 的函数。我们的目标就是迭代计算出最好的 w 和 b ,最小化代价函数。

4.Gradient descent

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

由于J(w,b)是凸函数,梯度下降算法是先随机选择一组参数w和b,然后迭代的过程中分别沿着w和b的梯度的反方向前进一小步,不断修正w和b。梯度下降算法每次迭代更新,w和b的更新表达式为:
这里写图片描述
上式中,α是学习率(learning rate),表示梯度下降的步伐大小。
α越大,w和b每次更新的“步伐”更大一些。α越小,w和b每次更新的“步伐”更小一些。

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

5.Derivatives

6. More Derivative Examples

第五和第六部分给出了如何计算微积分和导数的原理和例子,在此不多做赘述。

7.Computation graph

整个神经网络的训练过程包括两个过程:正向传播(Forward Propagation)和反向传播(back Propagation)。正向传播是从输入到输出,由神经网络计算得到预测输出的过程。反向传播是从输出到输入,对参数w和b计算梯度的过程。下面,我们用计算图的形式来理解这两个过程。
举个简单的例子,假如Cost function为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。计算图中,这种从左到右,从输入到输出的过程就对应着神经网络或者逻辑回归中输入与权重经过运算计算得到Cost function的正向过程。

8. Derivatives with a Computation Graph

上一部分介绍的是计算图的正向传播(Forward Propagation),下面我们来介绍其反向传播(Back Propagation),即计算输出对输入的偏导数。

还是上个计算图的例子,输入参数有3个,分别是a,b,c。

首先计算J对参数a的偏导数。从计算图上来看,从右到左,J是v的函数,v是a的函数。则利用求导技巧,可以得到:
这里写图片描述
根据这种思想,然后计算J对参数b的偏导数。从计算图上来看,从右到左,J是v的函数,v是u的函数,u是b的函数。可以推导:
这里写图片描述
最后计算J对参数c的偏导数。仍从计算图上来看,从右到左,J是v的函数,v是u的函数,u是c的函数。可以推导:
这里写图片描述
为了统一格式,在程序代码中,我们使用da,db,dc来表示J对参数a,b,c的偏导数。
这里写图片描述

9. Logistic Regression Gradient Descent

现在,我们将对逻辑回归进行梯度计算。对单个样本而言,逻辑回归Loss function表达式如下:
这里写图片描述
首先,该逻辑回归的正向传播过程非常简单。根据上述公式,例如输入样本x有两个特征(x1,x2),相应的权重w维度也是2,即(w1,w2)。则z=w1x1+w2x2+b,最后的Loss function如下所示:
这里写图片描述
然后,计算该逻辑回归的反向传播过程,即由Loss function计算参数w和b的偏导数。推导过程如下:
这里写图片描述
知道了dz之后,就可以直接对w1,w2和b进行求导了。
这里写图片描述
则梯度下降算法可表示为:

w1:=w1−α dw1

w2:=w2−α dw2

b:=b−α db
这里写图片描述

10. Gradient descent on m examples

上一部分讲的是对单个样本求偏导和梯度下降。如果有m个样本,其Cost function表达式如下:
z(i)=wTx(i)+b

y^(i)=a(i)=σ(z(i))

这里写图片描述

Cost function关于w和b的偏导数可以写成和平均的形式:
这里写图片描述
这样,每次迭代中w和b的梯度有m个训练样本计算平均值得到。其算法流程图如下所示:

J=0; dw1=0; dw2=0; db=0;
for i = 1 to m
    z(i) = wx(i)+b;
    a(i) = sigmoid(z(i));
    J += -[y(i)log(a(i))+(1-y(i))log(1-a(i));
    dz(i) = a(i)-y(i);
    dw1 += x1(i)dz(i);
    dw2 += x2(i)dz(i);
    db += dz(i);
J /= m;
dw1 /= m;
dw2 /= m;
db /= m;

经过每次迭代后,根据梯度下降算法,w和b都进行更新:

w1:=w1−α dw1

w2:=w2−α dw2

b:=b−α db
这样经过n次迭代后,整个梯度下降算法就完成了。

值得一提的是,在上述的梯度下降算法中,我们是利用for循环对每个样本进行dw1,dw2和db的累加计算最后再求平均数的。在深度学习中,样本数量m通常很大,使用for循环会让神经网络程序运行得很慢。所以,我们应该尽量避免使用for循环操作,而使用矩阵运算,能够大大提高程序运行速度。关于vectorization的内容我们放在下次笔记中再说。

猜你喜欢

转载自blog.csdn.net/yato0514/article/details/79071294
今日推荐