第三章 浅层次神经网络

1 结构

输入层
隐藏层(隐藏意味着在训练中,节点的真实值是不知道的)
输出层

输入层为第0层,所以有一个隐藏层的神经网络称为双层神经网络

深度学习与神经网络_吴恩达 学习笔记(二)

2 计算输出(forward propagation正向传播过程)

符号说明
a[0]=X:特征值,放入输入层
a[1]:隐藏层参数,包含参数w[1]b[1]
a[2]=y^:输出层参数
*a取activate(**)的首字母

2.1 一维特征向量

深度学习与神经网络_吴恩达 学习笔记(二)

2.1 m维特征向量

深度学习与神经网络_吴恩达 学习笔记(二)

Z[1].shape=(4,m)
W[1].shape=(4,3)
X.shape=(3,m)
b[1].shape=(4,m)
A[1].shape=(4,m)
Z[2].shape=(1,m)
W[2].shape=(1,4)
b[2].shape=(1,m)
A[2].shape=(1,m)

3 **函数的选择

3.1 sigmoid函数

在解决输出为{0,1}的二分类问题时,可以考虑用在输出层

深度学习与神经网络_吴恩达 学习笔记(二)

3.2 tanh函数(双曲正切函数)

定义:zR

g(z)=ezezez+ez

深度学习与神经网络_吴恩达 学习笔记(二)

tanh函数是sigmoid函数向下平移一个单位的结果,有数据中心化的效果,比sigmoid函数的应用更广。

3.3 ReLU函数

定义:zR

a=max{0,z}

a=0,z0;
a=1,z>0.

深度学习与神经网络_吴恩达 学习笔记(二)

ReLU是rectified linear unit(修正线性单元)的简写。
优点在于学习速度快,没有函数斜率接近0时,学习速度减慢的效应。

3.4 *leaky ReLU函数

定义:zR

a=max{0.01z,z}
深度学习与神经网络_吴恩达 学习笔记(二)

3.5 结论

尝试不同的选择搭配找出效果最好的模型。

4 选择非线性函数作为**函数的意义

线性组合再进行线性组合得到的仍为线性组合,用线性函数做隐藏层**函数与无隐藏层的效果时相同的。

5 **函数的导数

g(z)=a

5.1 sigmoid函数

g(z)=a(1a)

5.2 tanh函数

g(z)=1a2

5.3 ReLU函数

g(z)=0,z0
g(z)=1,z>0

5.4 leaky ReLU函数

g(z)=0.01,z0
g(z)=1,z>0

6 浅层网络的参数训练(back propagation反向传播过程)

一维特征值反向传播过程(红色箭头):

深度学习与神经网络_吴恩达 学习笔记(二)

m维特征值正反向传播算法(输出层**函数g[2]取sigmoid函数):

深度学习与神经网络_吴恩达 学习笔记(二)

* dZ[1]中的 *乘法是矩阵对应位置相乘
*axis=1 表示将矩阵水平相加,得到一个单列
*keepdims=True 用于防止得出维数为(nx,)这样不符合运算规则的矩阵

Z[1].shape=(n[1],m)
W[1].shape=(n[1],n[0])
X.shape=(n[0],m)
b[1].shape=(n[1],m)
A[1].shape=(n[1],m)
Z[2].shape=(1,m)
W[2].shape=(1,n[1])
b[2].shape=(1,m)
A[2].shape=(1,m)
dZ[2].shape=(1,m)
dW[2].shape=(1,n[1])
db[2].shape=(1,1)
dZ[2].shape=(1,m)
dZ[1].shape=(n[1],m)
dW[1].shape=(n[1],n[0])
db[1].shape=(n[1],1)

7 随机初始化

7.1 为什么要随机而不都初始化为0

对于b的初始化不存在这个问题,而对于w,当w都初始化为0或者相同的数字时,会发现反复迭代后w的数值都是对称的,即对不同特征向量的权重是相同的,所以模型没有意义,反复迭代也没有意义。

深度学习与神经网络_吴恩达 学习笔记(二)

7.2 为什么要乘0.01

这个问题针对sigmoid函数和tanh函数,因为当w太大时,得到的z值会太小或太大,结果是z会落在g的变化平缓的部分,使得学习速度变慢。

相关文章: