吴恩达神经网络和深度学习课程自学笔记(三)之浅层神经网络

神经网络概览

下图是最基本的神经网络——双层神经网络(输入层一般不看做一个标准的层)。
双层神经网络

表示方法:

示意图
这里写图片描述

计算过程:

首先计算a^[1]层的第一个单元
这里写图片描述
对剩下的三个单元继续计算,最终计算结果如下
这里写图片描述
最终得到
这里写图片描述
向量表示
这里写图片描述

多个不同样本的向量化:

未向量化时
这里写图片描述
有一个for循环,计算速度较慢。
向量化时
这里写图片描述
这里写图片描述

激活函数:

tanh激活函数
tahn函数图像
使用tanh(z)函数比sigmoid函数效果要好,因为它有数据中心化效果(数据平均值接近于0),可以让下一层学习更方便。
各种激活函数的优缺点以及如何选择:
各种激活函数图像
sigmoid函数
(1)函数输出不是以0为中心的。我们更偏向于当激活函数的输入是0时,输出也是0的函数。
(2)当z非常大或非常小时,导数接近于0,梯度下降速度很慢。
由于sigmod函数梯度下降慢,因此我们一般不用sigmoid函数作为激活函数。
tanh函数
(1)优点:数据平均值接近于0,方便下层学习计算。
(2)缺点:存在梯度下降慢的问题。
一般二分类问题中隐藏层用tanh函数;输出层用sigmoid函数。
Relu(修正线性单元)函数
(1)优点:激活函数斜率与0相差比较大,因此学习速度快。
(2)缺点:当z为负时,导数为0,梯度下降慢。(实际上大部分时候z都是大于0的)
在不确定用哪个激活函数时,一般选用Relu函数,因为它比上面两者速度都快。
实际选择时,多测试几种不同选择,以找到最适合该问题的激活函数。
为何选用非线性激活函数:
若激活函数是线性的,则有
这里写图片描述
这显然是无意义的。
一般在回归问题(例如预测房价)中输出层用线性激活函数,其他地方一般不用。
激活函数的导数:
这里写图片描述

神经网络中的梯度下降:

正向传播
这里写图片描述
反向传播(求导)
这里写图片描述
其中g函数是sigmoid激活函数; -np.sum 是求维度之和;axis= 1 是矩阵的水平求和;keepdims=True 是确保结果输出的是一个矩阵,而不是秩为1的数组。若不用keepdims=True,则可以调用reshape命令。

随机初始化:

初始化时,不能所有的参数都初始化为0.
一般有
这里写图片描述
式子(1)中用0.01而不是100/1000的原因:
若使用tanh激活函数或者sigmoid函数,权重太大,则w太大,则z太大,最终导致导数接近于0,梯度下降很慢。
浅层神经网络用0.01可以,但是深层神经网络得换个权重。但是一般都很小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值