吴恩达深度学习:浅层神经网络(第三周)


1.神经网络整体结构

2.激活函数

神经网络的隐藏层和输出层都需要激活函数,常用的激活函数有:

sigmoid函数

 tanh函数

ReLU函数

Lesky ReLU函数

 激活函数的选择:对于隐藏层的激活函数,一般来说,tanh函数要比sigmoid函数表现更好一些。因为tanh函数的取值范围在[-1,1]之间,隐藏层的输出被限定在[-1,1]之间,可以看成是在0值附近分布,均值为0。这样从隐藏层到输出层,数据起到了归一化(均值为0)的效果。因此,隐藏层的激活函数使用tanh比sigmoid更好一些。而对于输出层的激活函数,因为二分类问题的输出取值为{0,1},所以一般会选择sigmoid作为激活函数。

当自变量很大的时候,激活函数sigmoid和tanh的斜率很小,因此在此区域内梯度下降算法比较慢。在使用这两个激活函数的时候,尽量避免自变量落在此区域内,尽可能的落在零值附近,从而提高梯度下降算法运算速度。为了弥补这两个激活函数的缺陷,就出现了ReLU激活函数。ReLU激活函数可以保证,自变量大于0时梯度始终为1,但当自变量小于0时恒为0,为了弥补这个缺点出现了Leaky ReLU函数。

如果是分类问题一般情况下,隐藏层选择tanh激活函数,输出层选择sigmoid激活函数。实际应用中,经常使用ReLU和Leaky ReLU 激活函数。具体选择哪个激活函数要根据具体问题进行验证。

选择非线性激活函数的原因:如果使用线性函数作为激活函数,最终的输出仍然是输入x的线性模型。

3.正向传播和反向传播

正向传播过程:

反向传播过程:

4.随机初始化

神经网络模型中的参数权重W是不能全部初始化为0的,参数b可以全部初始化为0 ,并不会影响训练效果。python里可以使用如下语句进行W和b的初始化:

W_1 = np.random.randn((2,2))*0.01
b_1 = np.zero((2,1))
W_2 = np.random.randn((1,2))*0.01
b_2 = 0

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值