DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络
来源:互联网 发布:网络推广代理商 编辑:程序博客网 时间:2024/05/08 00:12
介绍
DeepLearning课程总共五大章节,该系列笔记将按照课程安排进行记录。
另外第一章的前两周的课程在之前的Andrew Ng机器学习课程笔记(博客园)&Andrew Ng机器学习课程笔记(CSDN)系列笔记中都有提到,所以这里不再赘述。
1、神经网络概要
注意:这一系列的课程中用中括号表示层数,例如
a[1] 表示第二层(隐藏层)的数据。
2、神经网络表示
这个图的内容有点多,跟着下面的步骤来理解这个图吧:
首先看蓝色字体,这个2层的神经网络(输入层一般理解成第0层)有输入层(input layer)、隐藏层(Hidden layer)、输出层(output layer)组成
再看紫色字体,每一层用
a[i],i=0,1...n 表示,a[0] 表示输入层的所有数据。而下标则表示某一层的某一行的具体的数据,例如a[1]1 表示隐藏层的第一个元素。最后是绿色字体,介绍的分别是
w (权重)和b (偏置),其中w[1] 表示输入层到隐藏层的权重,其是(4,3)的矩阵,而b[1] 是(4,1)的矩阵。
3、计算神经网络的输出
这个比较简单就不做过多解释了,主要就是线性代数的知识。
4、多个例子中的向量化
还是以上面的神经网络为模型进行介绍,向量化过程如下:
for i in range(m):
5、向量化实现的解释
上一节中使用了for循环和矩阵向量机,这里可以更加彻底地向量化,让运算更加简单,如下:
6、激活函数
常用的一共四个激活函数
(1):
σ(z)=11+e−z ,一般只用在二元分类的输出层,因为二元分类一般要求输出结果y∈0,1 ,而σ函数刚好其阈值就在0,1之间。而其它层更加建议用其他的激活函数。所以一个神经网络可以使用多种激活函数(用g[i] 表示第i层的激活函数)(2):
tanh(z)=ez−e−zez+e−z ,上下界限分别是1,-1。它相比于σ(z) 表现更好的原因是因为它的均值在0附近,有数据中心化的效果,所以下一层在学习的时候要更加方便和快速。但是σ(z) 和tanh(z) 有一个共同的缺点,就是当z很大或很小的时候,它们的斜率就会趋向于0,这会使得梯度下降的学习速率降低。(3): ReLu(The Rectified Linear Unit) 表达式是
f(x)=max(0,x) ,它表现的效果是最好的,所以在不确定使用何种激活函数的时候就可以不顾一切的选择它~(难道这就是传说中的备胎?)
相比sigmoid和tanh函数,Relu激活函数的优点在于:梯度不饱和。梯度计算公式为:1{x>0}。因此在反向传播过程中,减轻了梯度弥散的问题,神经网络前几层的参数也可以很快的更新。
计算速度快。正向传播过程中,sigmoid和tanh函数计算激活值时需要计算指数,而Relu函数仅需要设置阈值。如果x<0,f(x)=0,如果x>0,f(x)=x。加快了正向传播的计算速度。
因此,Relu激活函数可以极大地加快收敛速度,相比tanh函数,收敛速度可以加快6倍
(4): Leaky Relu,你也许发现了Relu激活函数在当z小于0的时候导数为0,虽然这在实践中并不影响,但是为了进一步优化提出了Leaky Relu,在z小于0时导数不为0.表达式一般为
f(x)=max(0.01x,x) 。其中0.01是一个可调的参数,类似于学习步长α。
7、为什么需要非线性激活函数
如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与只有一个隐藏层效果相当,这种情况就是多层感知机(MLP)了。
正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是输入的线性组合,可以逼近任意函数)。最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入(以及一些人的生物解释balabala)。
8、激活函数的导数
σ′(z)=σ(z)(1−σ(z)) tanh′(z)=1−(tanh(z))2 - Relu:
Relu′(z)=1 when z≥0; Relu′(z)=0 when z<0
9、神经网络的梯度下降法
10、直观理解反向传播
9、10节的内容都是介绍的神经网络的计算过程,更加详细的可以参看Andrew Ng机器学习课程笔记–week5(上)(神经网络损失函数&反向传播算法)
11、随机初始化
在神经网络中,如果将参数全部初始化为0 会导致一个问题,例如对于上面的神经网络的例子,如果将参数全部初始化为0,在每轮参数更新的时候,与输入单元相关的两个隐藏单元的结果将是相同的,既:
更加详细的介绍可参看Andrew Ng机器学习课程笔记–week5(下)(梯度检测&BP随机初始化)
参考资料:
Deep learning系列(七)激活函数
神经网络为什么要有激活函数,为什么relu 能够防止梯度消失
MARSGGBO♥原创
2017-8-30
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络
- 吴恩达深度学习笔记(一)week3 浅层神经网络
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week4深层神经网络
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-3)-- 浅层神经网络
- Coursera深度学习课程DeepLearning.ai 提炼笔记(1-3)-- 浅层神经网络
- deeplearning.ai之神经网络和深度学习
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-3)-- 浅层神经网络(转载)
- 深度学习DeepLearning.ai系列课程学习总结:5. 浅层神经网络
- Coursera deeplearning.ai 深度学习笔记1-3-Shallow Neural Networks-浅层神经网络原理推导与代码实现
- 《深度学习Ng》课程学习笔记01week3——浅层神经网络
- AndrewNg神经网络和深度学习笔记-Week3-6激活函数
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-4)-- 深层神经网络(转载)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-4)-- 深层神经网络
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(4-1)-- 卷积神经网络基础
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础(转载)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(4-1)-- 卷积神经网络基础
- Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础
- jQuery基础教程第四版 第3章学习笔记
- 深度学习与计算机视觉 看这一篇就够了
- 写了个最low的"多"条件查询,JDBC实现,记录一下。
- ListView与BaseAdapter的优化
- SpringMvc 文件上传
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络
- HTML5里video标签支持哪些格式的视频文件?
- Android 开发调用相机拍照如何获取清晰照片
- D30 Scala自定义排序和stage分区
- Proguard相关知识
- 牛客网编程题输入输出
- iOS中__block 关键字的底层实现原理
- Linux命令--文件查找
- linux-内核-将内核模块编译进内核