计划在9月4日(截止日期)之前完成DeepLearning的所有课程学习。每个课程对应一篇博客,根据学习进度随时更新。
参考课程

文章目录

  • (一)深度学习概论
    • 结构化数据和非结构化数据
    • 提高效果的方法
  • (二)神经网络基础
    • 二分分类
    • Logistic回归
    • 梯度下降法
    • 计算图、计算图的导数计算
    • Logistic回归中的梯度下降法
    • 向量化
    • Python广播
  • (三)浅层神经网络
    • 计算神经网络的输出
    • 多样本向量化
    • 激活函数
    • 随机初始化
  • (四)深层神经网络
    • 深层网络中的前向传播
    • 深层网络中的反向传播
    • 核对矩阵的维数、深层神经网络的基本单元
    • 超参数

(一)深度学习概论

结构化数据和非结构化数据

结构化数据是已经清楚定义并组织的数据,如数据库。
非结构化数据不具有结构化特征,如图片、音频等。

提高效果的方法

-训练更大的神经网络
-投入更大规模的标记数据

(二)神经网络基础

二分分类

举例:识别输入图像x中有/没有猫,返回y(有为1,无为0)
图片在计算机中的存储形式

使用向量x存储矩阵中的三组数据,组织成nx1的向量,并将每个向量作为一列组织成整体输入X(一种约定),输出Y则为1xm的向量。

Logistic回归

在二分分类问题中,得到的结果是输入符合要求的期望,因此需要介于0和1之间。采用σ函数满足该限制。

Loss Function:考察单个样本数据和实际结果的接近程度。选择该形式是因为其直观上是凸函数,有唯一极小值,避免非凸函数的多个极值情况,便于求解。

Cost Function:考察样本总体对实际结果的拟合效果。

梯度下降法

初始化w和b,每次选择梯度最大的方向前进,或者停在最终结果处,由于成本函数是凸函数,所以存在唯一极小值。

其中,α代表学习率,即前进步长。

计算图、计算图的导数计算

导数计算采用链式法则从右向左进行,即dJ/da = (dJ/du)*(du/da)

单个训练样本时同理操作。

Logistic回归中的梯度下降法

对代价函数的每个累加项对应求导即可得到偏导值。
图中的J,dw1,dw2,db是累加项,所以最终要除以m。而zi,ai,dzi对应每个训练样本的值。求累加值增量时,采用4中的链式法则的思想。

向量化

向量化避免了在程序中显式使用for循环,有效减少运行时间。
例子中的操作方法:
import numpy
a = numpy.random.rand(1000000)
b = numpy.random.rand(1000000)
c= numpy.dot(a, b)
该操作比for循环计算并累加效率高得多。所以每次需要for循环时,查看numpy中是否有可调用的内置函数,避免使用for循环。
根据以上例子,我理解的向量化是用向量的形式,组织每轮循环中得到的结果,利用numpy内置函数高效地计算出矩阵相乘的结果。

逆向传播时通过向量化消除了两层的for循环,即在一次步进中没有循环。但如果想要多次迭代,还需在外层添加计数循环。

Python广播

在矩阵元素的运算(区别于矩阵乘法)中,将规模较小的矩阵(其实是向量)进行若干次复制后,再对对应位置的元素进行运算。

使用assert保证矩阵是预期的形状,如assert(a.shape==(3, 4))。调用reshape方法可以将矩阵保持期望形状,如a = a.reshape(3, 3)。

(三)浅层神经网络

计算神经网络的输出

以只有一个隐层的神经网络为例。直观上,多层的神经网络是多个单层神经网络的堆叠。
其中的每个节点都经过z = wTx + b, σ(z)的计算,如图所示。

对0层到1层的计算进行向量化,根据如下公式:

多样本向量化

将输入样本按列排列,进行向量化操作。此时对应A[i],在垂直方向,这个垂直索引对应于神经网络中的不同节点。例如节点位于矩阵的最左上角对应于激活单元,它是位于第一个训练样本上的第一个隐藏单元。它的下一个值对应于第二个隐藏单元的激活值。当水平扫描,将从第一个训练示例中从第一个隐藏的单元到第二个训练样本,第三个训练样本……

激活函数

通常tanh的表现优于sigmoid函数。但有例外情况:在二分类的问题中,对于输出层,因为y的值是 0 或 1,所以想让输出的数值介于 0 和 1 之间,而不是在-1 和+1 之间。所以需要使用 sigmoid 激活函数。
对于上面的例子,可以在隐层使用tanh,输出层使用sigmoid。
ReLU函数是最常用的。
如果不使用激活函数,那么多层的神经网络本质上仍然是一层,此时的隐藏层是多余的。为了构建多层神经网络,必须引入非线性的激活函数。

随机初始化

将各层的w初始化为0,会导致正向传播时的结果相同,从而导致反向传播时的结果也相同,无法起到训练的作用。
为此,应该把w的各个元素初始化为非0的较小的数。因为使用sigmoid或tanh激活函数时,若z过大或过小,会导致斜率趋近于0,降低运行效率。
b初始为0不会产生负面影响。

(四)深层神经网络

深层网络中的前向传播

有一个隐藏层的神经网络,就是一个两层神经网络。
当计算神经网络的层数时,不算输入层,只算隐藏层和输出层。
前向传播可以归纳为多次迭代:

吴恩达DeepLearningCourse1-神经网络和深度学习相关推荐

  1. 吴恩达《神经网络与深度学习》精炼笔记(5)-- 深层神经网络

    上节课我们主要介绍了浅层神经网络.首先介绍神经网络的基本结构,包括输入层,隐藏层和输出层.然后以简单的2 layer NN为例,详细推导了其正向传播过程和反向传播过程,使用梯度下降的方法优化神经网络参 ...

  2. 吴恩达《神经网络与深度学习》精炼笔记(4)-- 浅层神经网络

    上节课我们主要介绍了向量化.矩阵计算的方法和python编程的相关技巧.并以逻辑回归为例,将其算法流程包括梯度下降转换为向量化的形式,从而大大提高了程序运算速度.本节课我们将从浅层神经网络入手,开始真 ...

  3. 吴恩达【神经网络和深度学习】Week4——深层神经网络

    文章目录 Deep Neural Network 1.Deep L-layer Neural Network 2.Forward Propagation in a Deep Network 3.Get ...

  4. 吴恩达《神经网络和深度学习》第二周编程作业—用神经网络思想实现逻辑回归

    吴恩达<神经网络和深度学习>-用神经网络思想实现逻辑回归 1 安装包 2 问题概述 3 学习算法的一般架构 4 构建算法的各个部分 4.1 激活函数 4.2 初始化参数 4.3 前向和后向 ...

  5. 吴恩达《神经网络和深度学习》第四周编程作业—深度神经网络应用--Cat or Not?

    吴恩达<神经网络和深度学习>- 深度神经网络应用--Cat or Not? 1 安装包 2 数据集 3 模型的结构 3.1 两层神经网络 3.2 L层深度神经网络 3.3 通用步骤 4 两 ...

  6. Coursera吴恩达《神经网络与深度学习》课程笔记(1)-- 深度学习概述

    红色石头的个人网站:redstonewill.com 吴恩达(Andrew Ng)相信大家都不陌生了.8 月 8 日,吴恩达在他自己创办的在线教育平台 Coursera 上线了他的人工智能专项课程(D ...

  7. Coursera吴恩达《神经网络与深度学习》课程笔记(5)-- 深层神经网络

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了浅层神经网络.首先介绍神经网络的基本结构,包括输入层,隐藏层和输出层.然后以简单的2 layer NN为例,详细推导了其正向传 ...

  8. Coursera吴恩达《神经网络与深度学习》课程笔记(3)-- 神经网络基础之Python与向量化

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了逻辑回归,以输出概率的形式来处理二分类问题.我们介绍了逻辑回归的Cost function表达式,并使用梯度下降算法来计算最小 ...

  9. Coursera吴恩达《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归...

    转至:https://blog.csdn.net/red_stone1/article/details/77851177 上节课我们主要对深度学习(Deep Learning)的概念做了简要的概述.我 ...

  10. Coursera吴恩达《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归

    红色石头的个人网站:redstonewill.com 上节课我们主要对深度学习(Deep Learning)的概念做了简要的概述.我们先从房价预测的例子出发,建立了标准的神经网络(Neural Net ...

最新文章

  1. iOS开发UI篇—UITabBarController简单介绍
  2. Oracle认证成功获取方案
  3. LInux 文件系统 tmpfs 分区不显示解决
  4. android listview显示数据库内容
  5. HeartBeat Install
  6. ofo引入信用分评系统 ,0分将被禁止使用
  7. 用Python连接MySQL并进行CRUD
  8. oracle的awr日志,oracle 导出awr信息
  9. 一个程序中login.php的代码
  10. 将数据集转换为Excel格式的一个实现
  11. bzoj 1535: [POI2005]Sza-Template(fail树)
  12. es 1.7 ik 配置
  13. 传承开源-耿航2018中国开源云超级人物获奖感言
  14. 基于STM32的多功能MP3设计 毕业设计(论文)文献综述
  15. 《三桃演义》第二回:返航,火星人柯里昂
  16. sklearn逻辑回归参数详解,及用逻辑回归制作评分卡
  17. 追寻上古文明毕业季研学营
  18. java 数学公式解析框架有哪些_开源工具 | 推荐几个Gitee火热Java项目
  19. 机器学习是什么?详解机器学习概念
  20. Unity 5.5.0f3发行说明

热门文章

  1. MySQL-04:数据内容操作-增删改查-基本命令笔记
  2. mysql 行列转换 动态_mysql 行列动态转换的实现(列联表,交叉表)
  3. Chrome 双击关闭标签,新窗口打开新地址,一个插件搞定,安装方便,自带hosts
  4. ArcGIS实验教程——实验一:ArcGIS软件的认识与使用
  5. C#求一元二次方程的根经典案例程序
  6. Android Studio之编译提示\app\src\main\res\values\colors.xml:1:1 Error:前言有不允许的内容
  7. Android之获取应用程序(包)的大小-----PackageManager的使用(二)
  8. [python opencv 计算机视觉零基础到实战] 八、ROI泛洪填充
  9. 上班骚扰男同事被抓到......
  10. 你的输入法都暴露了些啥?