深度学习的发展史
神经网络结构
-
一般的神经网络结构
- Depp是指神经网络的隐层数量多
- 确定网络的层数及每层的神经元个数(超参数):Trial and Error + Intution
- 神经网络的参数:所有的权重和偏置
- 自动确定网路结构的研究:E.g. Evolutionary Artificial Neural Networks
- 自己设计网络结构:例如卷积神经网络
-
全连接前馈网络
- 多个隐层相当于一个特征提取器(提取到最后一层),替代其他机器学习方法中的特征工程
前向计算举例:激活函数取Sigmoid函数
- 多个隐层相当于一个特征提取器(提取到最后一层),替代其他机器学习方法中的特征工程
矩阵运算
- 好处:可以利用GPU加速计算
什么是GPU加速?- GPU又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器;
- GPU 加速计算是指同时利用图形处理器 (GPU) 和 CPU,加快科学、分析、工程、消费和企业应用程序的运行速度;
- GPU的特点是有大量的核(多达几千个核)和大量的高速内存,主要擅长做类似图像处理的并行计算,所谓的“粗粒度并行;
- CPU 由专为顺序串行处理而优化的几个核心组成。
评价神经网络——极小化损失函数
交叉熵损失函数:
C
(
y
,
y
^
)
=
−
∑
i
=
1
10
y
^
i
ln
y
i
C(y,\hat{y})=-\sum_{i=1}^{10}\hat{y}_i\ln y_i
C(y,y^)=−i=1∑10y^ilnyi
寻找最优的神经网络
1. 梯度提升优化算法
2. 反向传播BP
L
(
θ
)
=
∑
n
=
1
N
C
n
(
θ
)
⟹
∂
L
(
θ
)
∂
w
=
∑
n
=
1
N
∂
C
n
(
θ
)
∂
w
L(\theta)=\sum_{n=1}^NC^n(\theta)\Longrightarrow \frac{\partial L(\theta)}{\partial w}=\sum_{n=1}^N\frac{\partial C^n(\theta)}{\partial w}
L(θ)=n=1∑NCn(θ)⟹∂w∂L(θ)=n=1∑N∂w∂Cn(θ)
-
Forward pass
-
Backward pass
- 总结来说
深度学习的流程
深度学习的技巧
不要总是将不好的结果归咎于过拟合
Deep Residual Learning for Image Recognition
模型在训练集上表现不好
1. 选择新的激活函数
Sigmoid激活函数出现梯度消失问题
-
在输入层附近,反向传播会计算若干激活函数梯度的乘积,若激活函数梯度较小,输入层附近的下降幅度比输出层附近的梯度下降的少,输入层附近的参数学习的较慢,也就是说,当输出层的参数已经收敛的时候,输入层的参数可能还是一个未收敛的随机值
-
Sigmoid函数在在大的输入值处梯度很小: Δ C \Delta C ΔC较大,但 Δ w \Delta w Δw较小
ReLU(Rectified Linear Unit )激活函数
- 使用ReLU激活函数相当于训练一个较稀疏的网络
- 模型整体上是非线性的:当对输入做小的改变,不改变神经元的operation region,是线性的,如果对输入做较大的改变,改变了operation region(非0变为0或0变为非0),是非线性的
Maxout网络
-
每一个权重都会训练:输入数据不同
-
使用ReLU激活函数的网络是特殊的Maxout网络
2. 自适应学习率优化
【DL-李宏毅2020-03】优化方法:SGD、SGDM、Adagrad、RMSProp、Adam
- Adagrad
- RMSProp
- Adam
模型在训练集表现好,但在测试集表现不好(过拟合)
1. 早停/提前结束训练
2. 正则化
- 正则化定义了一个新的损失函数,目标是寻找,使原始的损失函数
L
(
θ
)
L(\theta)
L(θ)最小且接近0的权重(稀疏的网络)
- L2正则化(左)、L1正则化(右)
- L2正则化(左)、L1正则化(右)
- 结果类似于早停,但略复杂
3. Dropout
Dropout与Ensemble
- Ensemble
- Dropout: C M 0 + C M 1 + . . . + C M M = 2 M C_M^0+C_M^1+...+C_M^M=2^M CM0+CM1+...+CMM=2M
- Dropout是一种Ensemble