吴恩达 —— 深度学习 Course 1 笔记

作者: 牛奶芝麻 | 来源:发表于2017-10-10 19:31 被阅读737次

    Course1:神经网络和深度学习,包括:


    [1] Week1:深度学习概述
    [2] Week2:神经网络基础
    [3] Week3:浅层神经网络
    [4] Week4:深层神经网络
    [5] 深度学习的基本流程


    [1] Week1:深度学习概述

    1.2 什么是神经网络?

    一种强有力的学习算法,受大脑如何工作的启发而得到的。

    Example1:单神经网络


    Example2:多神经网络
    1.3 什么是监督学习?机器学习的数据分为哪两类?
    1. 在监督学习中,给出一个数据集,我们已经知道正确的输出是什么样子的,由此想要知道输入和输出之间存在什么关系。
    2. 监督学习可以看成“回归”或者“分类”问题。“回归”问题尝试把输入变量映射到一些连续的函数上,预测连续的输出结果;“分类”问题尝试把输入变量映射到离散的类别当中,预测离散的输出结果。

    以下是一些监督学习的例子:

    神经网络有不同的类型,例如standard NN(标准神经网络)用于房价预估和广告点击;CNN(卷积神经网络)经常用于图像处理;RNN(递归神经网络)用于处理一维序列数据,例如语音识别和机器翻译;而自动驾驶则是混合的神经网络结构。

    机器学习的数据分为结构化数据非结构化数据。非结构化数据包括音频、图片、文本等等。

    1.4 为什么深度学习会兴起?

    深度学习兴起的原因有:大数据时代,数据的爆炸性增长;计算机硬件技术的发展,计算成本下降,速度提高;神经网络算法的变革等。

    影响性能的两大因素:能够训练一个大的神经网络;拥有很多标记的数据。

    训练一个神经网络是可迭代的:


    [2] Week2:神经网络基础

    2.2 二分分类

    Cat vs No-Cat 问题,目标是训练一个分类器,输入是一张图片,图片被表示成一个特征向量 x ,并且预测标签 y 是1(Cat)还是0(No-Cat)。

    吴恩达的矩阵表示法:用列向量表示一个样本,因此 X.shape==(n_x,m)n_x 表示特征数,m 是样本大小。


    2.3 logistic回归

    logistic回归是一种监督学习下的学习算法,使得输出 y 要么都是0或者要么都是1。logistic回归的目标是使预测和训练数据之间的误差最小化。

    对于 Cat vs No-Cat 问题,给定一张图的特征向量 x,这个算法将会评估这幅图是猫的概率:



    通过计算, W^T+b 是一个线性函数 ax+bW^T 计算出来是一个具体的数值 a),因为我们期待一个在[0,1]区间的概率约束,所以 sigmoid 函数被使用。

    sigmoid函数的性质

    2.3 logistic回归的损失函数
    1. 损失函数 Loss:单个样本的估计值与真实值的误差。
    2. 成本函数 Cost:所有样本的误差总和的平均值。
    2.4 梯度下降法
    2.9 用导数流程图计算logistic回归中的梯度

    对于单个训练样本的梯度计算:


    假设有两个特征 x1x2α是学习率,红色箭头代表反向传播
    2.10 m个样本的梯度下降

    运用一次梯度下降法,其中 dz^(i) 是第 i 个训练样本的偏导数dzα是学习率:


    总结起来步骤如下:参数初始化 -> 前向传播 -> 计算成本 -> 反向传播 -> 更新参数
    2.11 向量化
    1. 向量化的好处: 不必显示地使用for循环,用矩阵运算来替代循环,如numpy中的内置函数np.dot(w,t)。充分利用了GPU或CPU的SIMD(单指令流多数据流)的优势,进行并行化计算,明显地提高了计算效率。
    2. 因此,神经网络编程中,尽可能避免显示地使用for循环。
    2.13 向量化实现正向传播:

    下图有两个注意点:

    1. w^T 是一个 (nx,1) 维的矩阵,无论训练数据中是一个样本 x 还是 m 个样本组成的 X
    2. Z=np.dot(w.T,X)+b 中,numpy 会把 b 拓展成一个 (1,m) 矩阵,这种方法叫广播
    2.14 向量化实现logistic回归的完整流程:

    左边是for循环的一次梯度下降,右边是向量化的1000次梯度下降:
    注意点:在右边的向量化中,np.dot(a,b) 是按照矩阵乘法的运算进行的,而 X*(dz)^T 是按照矩阵对应位置元素相乘进行的。同时再次注意,w 是一个 (nx,1) 的矩阵,因此 dw 也是一个 (nx,1) 的矩阵。


    [3] Week3:浅层神经网络

    3.3 计算神经网络的输出

    神经网络的表示如下:


    注意: 这里的输入层算作第0层,故这是一个two-layer的神经网络。W[1] 是隐藏层的一个 (4,3) 矩阵,其中4代表隐藏层有4个单元,3代表来自输入层的3个特征。W[2] 是输出层的一个 (1,4) 矩阵,同理。

    隐藏层的计算过程,目的是得到 a[1]

    输出层的计算过程,目的是得到 y(^) = a[2]

    3.6 激活函数

    常见的 4 种激活函数(σ、tanh、ReLU、Leaky ReLU):


    4 种激活函数的优缺点:
    σ: 优点:适合二元分类,因为预测值在[0,1]之间,比如在输出层使用;缺点:当z很大,梯度接近0,下降速度缓慢。
    tanh: 比σ要好,因为预测值在[-1,1]之间,可以使均值为0,比如在隐藏层使用;缺点:当z很大,梯度接近0,下降速度缓慢。
    ReLU(修正线性单元): 优点:当z很大,梯度为1,下降速度很快,最常用的激活函数;缺点:z有一半梯度为0。
    Leaky ReLU(带泄露的修正线性单元): 优点:解决了ReLU的有一半梯度为0的问题;缺点:需要调参来找到一个好的缓慢下降的参数,不常用。
    3.9 神经网络的梯度下降法

    以下是单隐层神经网络的梯度下降法的流程:


    参数解释:nx=n[0]n[1],n[2] = 1 分别代表输入层特征数量、隐藏层和输出层的单元数量,因此隐藏层 w[1] (n[1],n[0])、 b[1] (n[1],1),输出层的 w[2] (n[2],n[1]) 、b[2] (n[2],1)。

    使用梯度下降法重复以下过程(一次迭代):

    1. 正向传播,计算预测值 y(^) = a[2]
    2. 反向传播,计算导数 dw[1] db[1] dw[2] db[2]
    3. 计算成本(未写出)
    4. 更新参数

    所用公式(注意:正向传播就4个公式,反向传播先计算的是 dz[2] dw[2] db[2] ,再计算的是 dz[1] dw[1] db[1],共6个公式):

    3.11 随机初始化

    如果将 w[1]w[2] 初始化为全0矩阵,会导致隐藏单元在计算完全一样的函数,即所有隐藏单元的计算都是对称的。b[1]b[0]不存在对称性问题。

    正确的做法:随机初始化参数


    解释:w[1]w[2] 初始化为高斯分布随机变量,再乘以一个小因子(如0.01),使得 w[1]w[2] 中的值尽可能小,原因是可以使得计算出来的 z[1]z[2] 尽可能小,这样在反向传播过程中求梯度 dz[1]dz[2] 就不会接近0,使得梯度下降的速度加快。

    [4] Week4:深层神经网络

    4.1 深层神经网络的表示
    4.2 深层网络中的前向传播
    4.3 核对矩阵的维数

    核对矩阵维数可以帮助我们检查算法是否正确:

    4.4 为什么使用深层表示

    以人脸识别为例,浅层的神经网络可能只能做的是一些简单的边缘检测,而深层的神经网络可以将边缘特征组合成人脸特征,进行面部检测。

    事实上,深层表示可以用电路理论来解释,如下:


    比如我们要实现一个异或操作,使用深层的神经网络可以减少异或门的数量,时间复杂度也会降低,而浅层的神经网络需要更大的计算量,进行指数级操作。
    4.5 搭建深层神经网络块

    深层网络前向传播后向传播流程:

    4.6 前向和反向传播

    举例,总结:
    L 层的前向传播:输入 a[L-1],输出 a[L],并缓存 z[L]、w[L]、b[L],用于反向传播过程;
    L 层的反向传播:输入da[L],输出 da[L-1]、dw[L]、db[L],用于更新参数 w[L]、b[L]


    4.7 参数 VS 超参数

    超参数:控制参数的参数


    参数: w[1] b[1] w[2] b[2] w[3] b[3] ...
    超参数: 学习率 α 、梯度下降迭代次数、隐藏层数 L 、隐藏单元数 n[1] n[2]、激活函数等等。

    调参是深度学习中很常见的一环,最优参数的取值还会随着GPU或CPU的变化而变化。所以经常调试,探索最优参数取值,逐渐地就会掌握一些调参的规律。

    4.8 深度学习和大脑的关系

    当我们提及正向传播和反向传播时,很多人可能不明白那些公式在做什么,为什么就可以行之有效?但是,如果把深度学习比喻成就像大脑一样,这样大众更乐于接收,也方便媒体报道。

    一个简单的类比:


    事实上,深度学习和大脑到底有多少联系,这也无法衡量,毕竟人类对大脑的认知还是有限的。

    [5] 深度学习的基本流程

    最后,深度学习的基本流程总结如下:


    至此,Course1 的总结就到这里。由于本人也在自学此系列课程,故该系列会持续更新,See You Course2!!!

    相关文章

      网友评论

      • 阿拉坦:谢谢分享,我也正在学这个!
      • Leona2028:哈哈哈假装自己很懂
      • genglintong:渣渣小白问一个问题:
        深度学习和机器学习有什么不同,一般怎么选择?
        Leona2028:@genglintong 深度学习是更近一步的深度学习:monkey_face:
        牛奶芝麻:@genglintong 深度学习是机器学习的分支,其实就是在讲神经网络:sweat:

      本文标题:吴恩达 —— 深度学习 Course 1 笔记

      本文链接:https://www.haomeiwen.com/subject/libjyxtx.html