吴恩达机器学习课程笔记_Course2_Week2_2

本文是关于吴恩达机器学习课程的笔记,介绍了Adam优化算法、卷积层等其他神经网络概念,以及反向传播中导数的计算,特别是计算图在简化反向传播中的作用。
摘要由CSDN通过智能技术生成

仅做个人学习使用
继上次更新后继续开始本周的笔记更新,本次笔记从其他神经网络概念开始记录

1 其他神经网络概念

1.1 先进优化算法

本节课介绍的梯度下降的优化版本,Adamadaptive moment estimation),这一算法是对梯度下降算法的优化版本。传统的梯度下降算法公式如下,其学习率是固定的,这并没有什么问题,但在某些情况下其效率较低,科学家对此并不满意,所以他们提出了Adam算法,其可以根据梯度下降的过程调整学习率
图片来源于Coursera课程截图 侵权删
例如在下方图片左侧这种情况下,梯度逐渐下降,直至接近最小值,算法本身没有问题,但是太慢了。通过观察你可以发现我们何不调整学习率的值去加快这一进程呢?(另一种来回震荡的情况下,当然也可以调小学习率)于是乎Adam算法应运而生!
图片来源于Coursera课程截图 侵权删
具体代码截图如下,只需要在编译部分进行优化器的更改即可
图片来源于Coursera课程截图 侵权删

1.2 其他类型的神经网络层

本节主要介绍了卷积层,由卷积层构成的神经网络就是大家耳熟能详的卷积神经网络(CNN)。卷积层与传统的隐藏层最大的不同在于:卷积层中的神经元(unit)只接收上一层的部分输出。例如下图所示,蓝色神经元接受的输入仅是9个单元格中的一个,其他神经元也是一样。这样做由两大好处:

  1. 它可以加快计算速度。
  2. 使用这种卷积层的神经网络可能需要更少的训练数据 ,或者也可以不太容易出现过度拟合。
    图片来源于Coursera课程截图 侵权删

2 反向传播

本节内容都是选修内容,其对数学有些基础的要求。博主本科没学过高数,以高中数学水平看完了3个视频,总体感觉下来还行,课程讲解非常详细,基本都能理解。

2.1 什么是导数?

2.1.1 基本定义

这一节介绍了导数的原理,高中数学里就讲过导数,在我的记忆里导数代表了函数变化的趋势。求导的法则也十分简单,总的来说就是降幂,相信大家也都会。但是本节课程将导数的原理更加清晰的讲述出来了,并且也介绍了如何利用python代码进行快速求导。
如下图所示,函数上J(w)相对于w的导数是:w变化一个很小的值的情况下,J(w)的变化值相对于w的倍数。例如途中w增加了0.001,最终J(w)增加了0.006,所以该点的导数为6,这与公式的计算结果相同(下降同理,w下降0.001,那么J(w)也下降0.006)。
图片来源于Coursera课程截图 侵权删

2.1.2 Python中的实现方式

实现方式实际上有两种,一种是按照定义实现,另一种是直接引用库实现,我们首先展示按定义实现的方式。

J = (3)**2
J_epsilon = (3 + 0.001)**2
k = (J_epsilon - J)/0.001    # difference divided by epsilon
print(f"J = {J}, J_epsilon = {J_epsilon}, dJ_dw ~= k = {k:0.6f} ")

接下来是引用库的实现方式,这里使用了sympy库。

from sympy import symbols, diff

J, w = symbols('J, w') #此处是定义符号
J=w**2
dJ_dw = diff(J,w) #定义导数
dJ_dw.subs([(w,2)])    # derivative at the point w = 2

2.2 计算图

这一节的内容就比较复杂了,计算图的概念很好理解,但是听课过程中需要有着链式求导的前置知识,博主没学过这个,但也勉强听懂了。
下图是一个典型的计算图,其将神经网络中前向传播与反向传播的步骤进行划分,下图的目的是计算函数a的成本函数J(其实可以理解为计算单个神经元的成本函数J)。
图片来源于Coursera课程截图 侵权删
那么课程引入计算图是为了什么呢?正如标题所说,这节课程主要为了介绍反向传播。那么什么是前向传播、什么又是反向传播呢?
这里引用其他博主关于前向传播和反向传播的一句话:**前向传播是为反向传播准备好要用到的数值,反向传播本质上是一种求梯度的高效方法,而计算图则是用于简化反向传播的计算过程。**上图中从左到右是前向传播,从右到左是反向传播。
链接: 理解前向传播、反向传播(Backward Propagation,BP)
课程中提到过这么做的优点,在有N个节点、P个参数的情况下,如果不利用计算图,那么计算梯度下降需要的导数时,其总计算步骤是N×P;如若引入了计算图,那么计算步骤则变为N+P。对于为什么是N×P我的理解存在不足,这里就不与大家分享了。但是N+P这个通过上图就可以看出前向传播过程中有N个节点,进行N次计算;反向传播过程中有P个参数,则需要计算P次,那么总计算次数就是N+P次。前向传播和后向传播是一个先后顺序,先前再后
这里还有一个链式求导的问题,下图可以进行解释,下图和前面的计算图是对应的。
图片来源于Coursera课程截图 侵权删

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值