吴恩达DeepLearningCourse1-神经网络和深度学习
计划在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-神经网络和深度学习相关推荐
- 吴恩达《神经网络与深度学习》精炼笔记(5)-- 深层神经网络
上节课我们主要介绍了浅层神经网络.首先介绍神经网络的基本结构,包括输入层,隐藏层和输出层.然后以简单的2 layer NN为例,详细推导了其正向传播过程和反向传播过程,使用梯度下降的方法优化神经网络参 ...
- 吴恩达《神经网络与深度学习》精炼笔记(4)-- 浅层神经网络
上节课我们主要介绍了向量化.矩阵计算的方法和python编程的相关技巧.并以逻辑回归为例,将其算法流程包括梯度下降转换为向量化的形式,从而大大提高了程序运算速度.本节课我们将从浅层神经网络入手,开始真 ...
- 吴恩达【神经网络和深度学习】Week4——深层神经网络
文章目录 Deep Neural Network 1.Deep L-layer Neural Network 2.Forward Propagation in a Deep Network 3.Get ...
- 吴恩达《神经网络和深度学习》第二周编程作业—用神经网络思想实现逻辑回归
吴恩达<神经网络和深度学习>-用神经网络思想实现逻辑回归 1 安装包 2 问题概述 3 学习算法的一般架构 4 构建算法的各个部分 4.1 激活函数 4.2 初始化参数 4.3 前向和后向 ...
- 吴恩达《神经网络和深度学习》第四周编程作业—深度神经网络应用--Cat or Not?
吴恩达<神经网络和深度学习>- 深度神经网络应用--Cat or Not? 1 安装包 2 数据集 3 模型的结构 3.1 两层神经网络 3.2 L层深度神经网络 3.3 通用步骤 4 两 ...
- Coursera吴恩达《神经网络与深度学习》课程笔记(1)-- 深度学习概述
红色石头的个人网站:redstonewill.com 吴恩达(Andrew Ng)相信大家都不陌生了.8 月 8 日,吴恩达在他自己创办的在线教育平台 Coursera 上线了他的人工智能专项课程(D ...
- Coursera吴恩达《神经网络与深度学习》课程笔记(5)-- 深层神经网络
红色石头的个人网站:redstonewill.com 上节课我们主要介绍了浅层神经网络.首先介绍神经网络的基本结构,包括输入层,隐藏层和输出层.然后以简单的2 layer NN为例,详细推导了其正向传 ...
- Coursera吴恩达《神经网络与深度学习》课程笔记(3)-- 神经网络基础之Python与向量化
红色石头的个人网站:redstonewill.com 上节课我们主要介绍了逻辑回归,以输出概率的形式来处理二分类问题.我们介绍了逻辑回归的Cost function表达式,并使用梯度下降算法来计算最小 ...
- Coursera吴恩达《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归...
转至:https://blog.csdn.net/red_stone1/article/details/77851177 上节课我们主要对深度学习(Deep Learning)的概念做了简要的概述.我 ...
- Coursera吴恩达《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归
红色石头的个人网站:redstonewill.com 上节课我们主要对深度学习(Deep Learning)的概念做了简要的概述.我们先从房价预测的例子出发,建立了标准的神经网络(Neural Net ...
最新文章
- iOS开发UI篇—UITabBarController简单介绍
- Oracle认证成功获取方案
- LInux 文件系统 tmpfs 分区不显示解决
- android listview显示数据库内容
- HeartBeat Install
- ofo引入信用分评系统 ,0分将被禁止使用
- 用Python连接MySQL并进行CRUD
- oracle的awr日志,oracle 导出awr信息
- 一个程序中login.php的代码
- 将数据集转换为Excel格式的一个实现
- bzoj 1535: [POI2005]Sza-Template(fail树)
- es 1.7 ik 配置
- 传承开源-耿航2018中国开源云超级人物获奖感言
- 基于STM32的多功能MP3设计 毕业设计(论文)文献综述
- 《三桃演义》第二回:返航,火星人柯里昂
- sklearn逻辑回归参数详解,及用逻辑回归制作评分卡
- 追寻上古文明毕业季研学营
- java 数学公式解析框架有哪些_开源工具 | 推荐几个Gitee火热Java项目
- 机器学习是什么?详解机器学习概念
- Unity 5.5.0f3发行说明
热门文章
- MySQL-04:数据内容操作-增删改查-基本命令笔记
- mysql 行列转换 动态_mysql 行列动态转换的实现(列联表,交叉表)
- Chrome 双击关闭标签,新窗口打开新地址,一个插件搞定,安装方便,自带hosts
- ArcGIS实验教程——实验一:ArcGIS软件的认识与使用
- C#求一元二次方程的根经典案例程序
- Android Studio之编译提示\app\src\main\res\values\colors.xml:1:1 Error:前言有不允许的内容
- Android之获取应用程序(包)的大小-----PackageManager的使用(二)
- [python opencv 计算机视觉零基础到实战] 八、ROI泛洪填充
- 上班骚扰男同事被抓到......
- 你的输入法都暴露了些啥?