用于个人知识点回顾,非详细教程
1.梯度下降
- 前向传播
特征输入—>线性函数—>激活函数—>输出
- 反向传播
根据损失函数反向传播,计算梯度更新参数
2.激活函数(activate function)
- 什么是激活函数?
在神经网络前向传播中,每一层的输出还需要经过激活函数再作为下一层的输入,即 a [ 1 ] = σ ( z [ 1 ] ) a^{[1]}=\sigma(z^{[1]}) a[1]=σ(z[1])
- 为什么需要激活函数?
如果没有非线性激活函数,模型的最终输出实际上只是输入特征x的线性组合
- 激活函数的分类
(1)sigmoid函数:除了输出层是一个二分类问题基本不会用
a
=
σ
(
z
)
=
1
1
+
e
−
z
a=\sigma(z)=\frac{1}{1+e^{-z}}
a=σ(z)=1+e−z1
(2)tanh函数:数据平均值更接近0,几乎所有场合都适用
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+e−zez−e−z
sigmoid函数和tanh函数两者共同的缺点是,在z特别大或者特别小的情况下,导数梯度或者函数斜率会变得特别小,最后就会接近于0,导致降低梯度下降的速度。
(3)Relu函数:修正线性单元,最常用的默认函数
a
=
m
a
x
(
0
,
z
)
a=max(0, z)
a=max(0,z)
(4)Leaky Relu函数:进入负半区
a
=
m
a
x
(
0.01
z
,
z
)
a=max(0.01z, z)
a=max(0.01z,z)
sigmoid函数和tanh函数在正负饱和区的梯度都会等于0,而Relu和Leaky Relu可以避免梯度弥散现象,学习速度更快
3. 正则化
- 偏差和方差
高方差过拟合,高偏差欠拟合
- L1/L2正则化
在损失函数加上正则化,L1正则化更稀疏
- dropout正则化
根据概率随机删除节点
- 其它正则化方法
4.优化算法
- mini-batch梯度下降法
数据集分成多个子集来更新梯度
- 动量梯度下降(momentum)
参数更新时的梯度微分值计算方式采用指数加权平均
- RMSprop(root mean square prop)
- Adam
momentum+RMSprop