《吴恩达机器学习》学习笔记(第二周)

摘要

本文主要汇报《吴恩达机器学习》第二周的学习内容。

在这周,主要学习了包括梯度下降,计算图,梯度下降中导数的计算,以及梯度下降在逻辑回归和多个样本的线性回归中的实际使用情况,包含梯度下降迭代的代码实现和导数计算的手动推导。最后总结本周的学习内容。

Abstract

This article primarily reports on the learning content of the second week of Andrew Ng's Machine Learning course.

This week, the main topics covered include gradient descent, computation graphs, the calculation of derivatives in gradient descent, as well as the practical use of gradient descent in logistic regression and linear regression with multiple samples. This includes the code implementation of gradient descent iterations and the manual derivation of derivative calculations. Finally, the learning content of this week is summarized.

1. 梯度下降

① 上周我们已经掌握了Cost function的表达式,接下来将使用梯度下降(Gradient Descent)算法来计算出合适的w和b值,从而最小化m个训练样本的Cost function,即J(w,b)。

② 由于J(w,b)是convex function,梯度下降算法是先随机选择一组参数w和b值,然后每次迭代的过程中分别沿着w和b的梯度(偏导数)的反方向前进一小步,不断修正w和b。

③ 每次迭代更新w和b后,都能让J(w,b)更接近全局最小值。梯度下降的过程如下图所示。

① 梯度下降算法每次迭代更新,w和b的修正表达式为:

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

③ 其数学原理主要是运用泰勒一阶展开来证明的。

2. 计算图

① 整个神经网络的训练过程实际上包含了两个过程:正向传播(Forward Propagation)和反向传播(Back Propagation)。

② 正向传播是从输入到输出,由神经网络计算得到预测输出的过程;反向传播是从输出到输入,对参数w和b计算梯度的过程。

③ 下面,我们用计算图(Computation graph)的形式来理解这两个过程。

① 举个简单的例子,假如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的正向过程。

3. 计算图中导数

① 上一部分介绍的是计算图的正向传播(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的偏导数。

手写推导

4. 逻辑回归梯度下降

① 现在,我们将对逻辑回归进行梯度计算。

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

① 首先,该逻辑回归的正向传播过程非常简单。

② 根据上述公式,例如输入样本x有两个特征(x1,x2),相应的权重w维度也是2,即(w1,w2)。

③ 则z=w1x1+w2x2+b,最后的Loss function如下所示:

④ 然后,计算该逻辑回归的反向传播过程,即由Loss function计算参数w和b的偏导数。

⑤ 推导过程如下:

⑥ 知道了dz之后,就可以直接对w1,w2和b进行求导了。

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

5. m个样本梯度下降

① 上一部分讲的是对单个样本求偏导和梯度下降。如果有m个样本,其Cost function表达式如下:

② 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都进行更新:

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

① 值得一提的是,在上述的梯度下降算法中,我们是利用for循环对每个样本进行dw1,dw2和db的累加计算最后再求平均数的。

② 在深度学习中,样本数量m通常很大,使用for循环会让神经网络程序运行得很慢。

③ 所以,我们应该尽量避免使用for循环操作,而使用矩阵运算,能够大大提高程序运行速度。

④ 关于vectorization的内容我们放在下次笔记中再说。

6. 总结

① 本节课的内容比较简单,主要介绍了神经网络的基础——逻辑回归。

② 首先,老师介绍了二分类问题,以图片为例,将多维输入x转化为feature vector,输出y只有{0,1}两个离散值。

③ 接着,老师介绍了逻辑回归及其对应的Cost function形式。

④ 然后,老师介绍了梯度下降算法,并使用计算图的方式来讲述神经网络的正向传播和反向传播两个过程。

⑤ 最后,老师展示了在逻辑回归中使用梯度下降算法,总结出最优化参数w和b的算法流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值