吴恩达《神经网络和深度学习》学习笔记——(二)浅层神经网络

本文介绍了神经网络的基础知识,包括神经网络的构成、计算输出的方法和向量化实现。重点讲解了激活函数的作用,如Sigmoid、Tanh、ReLU和LeakyReLU,强调了非线性激活函数的重要性。此外,还提到了随机初始化权重对于神经网络训练的影响。
摘要由CSDN通过智能技术生成

第三周:浅层神经网络(Shallow neural networks)


前言

主要内容:吴恩达《Deep Learning》系列的第一门课《神经网络和深度学习》的第三周部分:浅层神经网络

简介:本文是笔者在学习该课程的过程中随意记录的一些要点,希望能帮助到大家,欢迎大家留言or私信讨论
参考资料:吴恩达先生的课程材料&黄海广先生整理的深度学习课程笔记(V5.7)


正文

以下是本篇文章正文内容

3.1 神经网络概述( Neural Network Overview)

image-20210709151222193

image-20210709152929431

3.2 神经网络的表示( Neural Network Representation)

一、

当我们计算网络的层数时,输入层是不算入总层数内,所以隐藏层是第一层,输出层是第二 层

二、

我们将输入层称为第零层

image-20210719004427483

3.3 计算一个神经网络的输出( Computing a Neural Network’s output)

单一样本

image-20210719010742836

3.4 多样本向量化( Vectorizing across multiple examples)

多个样本

​ 逻辑回归是将各个训练样本组合成矩阵,对矩阵的各列进行计算。神经网络是通过对逻辑回归中的等式简单的变形,让神经网络计算出输出值。这种计算是所有的训练样本同时进行的,以下是实现它具体的步骤:
image-20210719011551048

向量化

image-20210719013438374

image-20210719014723964

3.5 向量化实现的解释( Justification for vectorized implementation)

image-20210719015500912

3.6 激活函数( Activation functions)

a = t a n h ( z ) = e z − e − z e z + e − z a=tanh(z)=\frac {e^z-e^{-z}}{e^z+e^{-z}} a=tanh(z)=ez+ezezez

tanh函数是sigmoid的向下平移和伸缩后的结果。对它进行了变形后,穿过了(0,0)点,并且值域介于+1和-1之间。

​ 在训练一个算法模型时,如果使用tanh函数代替sigmoid函数中心化数据,使得数据的平均值更接近0而不是0.5。

优化算法中:tanh函数在任何时候都优于sigmoid函数

​ 但有一个例外:在二分类的问题中,对于输出层,因为𝑦的值是0或1,所以想让 y ^ \widehat{y} y 的数值介于0和1之间,而不是在 -1和 +1之间。所以需要使用sigmoid激活函数。

sigmoid函数和tanh函数两者共同的缺点是,在𝑧特别大或者特别小的情况下,导数的梯度或者函数的斜率会变得特别小,最后就会接近于0,导致降低梯度下降的速度。

image-20210719021405266

如果输出是0、1值(二分类问题),则输出层选择sigmoid函数,然后其它的所有单元都选择Relu函数。

​ Relu函数和Leaky Relu函数

image-20210719021526123

image-20210719021613516

image-20210719021643114

3.7 为什么需要非线性激活函数?( why need a nonlinear activation)

image-20210719022558028

总而言之,不能在隐藏层用线性激活函数;唯一可以用的通常是输出层

3.8 激活函数的导数( Derivatives of activation functions)

(1)Sigmoid activation function

image-20210719023210998

a = g ( z ) a=g(z) a=g(z)

d d z g ( z ) = a ( 1 − a ) \frac {d}{dz}g(z)=a(1-a) dzdg(z)=a(1a)

(2)Tanh activation function

image-20210719023500914

g ( z ) = t a n h ( z ) = e z − e − z e z + e − z g(z)=tanh(z)=\frac {e^z-e^{-z}}{e^z+e^{-z}} g(z)=tanh(z)=ez+ezezez

d d z g ( z ) = 1 − ( t a n h ( z ) ) 2 \frac{d}{dz}g(z)=1-(tanh(z))^2 dzdg(z)=1(tanh(z))2

注:当 z = ± 10 z=±10 z=±10 d d z g ( z ) ≈ 0 \frac{d}{dz}g(z)≈0 dzdg(z)0

z = 0 z=0 z=0 d d z g ( z ) = 1 − ( 0 ) = 1 \frac{d}{dz}g(z)=1-(0)=1 dzdg(z)=10=1

(3)Rectified Linear Unit(ReLU)

image-20210719023900222

image-20210719024113098

(4)Leaky Linear Unit(Leaky ReLU)

image-20210719024208153

3.9 神经网络的梯度下降( Gradient descent for neural networks)

3.10(选修)直观理解反向传播 (Backpropagation intuition)

3.11 随机初始化( Random+Initialization)

​ 当你训练神经网络时,权重随机初始化是很重要的。对于逻辑回归,把权重初始化为0当然也是可以的。但是对于一个神经网络,如果你把 权重或者参数都初始化为 0,那么梯度下降将不会起作用。

image-20210721131036670

​ b可以初始化为0,但W不行,一旦W=0,会导致反向传播中dZ1=dZ2,从而导致梯度下降无法继续

​ e.g.

image-20210721131258473


总结

以上就是神经网络的编程基础(第二周)的部分学习笔记,本文仅仅简单记录了在学习过程中个人认为比较重要的要点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值