本系列文章是对《Python深度学习》这本书阅读过程中,提炼出来的读书笔记。
《Python深度学习》这本书的作者是Keras之父,也是Tensorflow框架的贡献者,本书的特点是,作者从一个编程学习者的角度来描述机器学习,而不是堆上来复杂的数学公式和函数变换。所有的数学理论或者公式,都用程序的方式描述出来,对于没有数学功底的开发者来说是一个很大的福利。不过当然,后期还是离不开数学,但作为入门来说这本书就相当的好了。
前置课程:
机器学习的数学基础—— 《Python深度学习》读书笔记(1)
机器学习的模型概念和构建方法入门—— 《Python深度学习》读书笔记(2)
机器学习建模的数据特征工程—— 《Python深度学习》读书笔记(3)
机器学习:循环神经网络RNN原理分析—— 《Python深度学习》读书笔记(4)
机器学习:LSTM网络单元内部原理深度解析—— 《Python深度学习》读书笔记(5)
机器学习:循环神经网络的高级用法—— 《Python深度学习》读书笔记(6)
本章主要是Keras之父自己的一个小广告,讲的是Keras函数接口的用法。
本章知识点:
Sequential API 适用于简单的线性层堆叠的网络。Inception适用多个并行的分支处理,多种不同模型合并起来进行预测,如多头和多输入。
所谓残差连接,基本就是和LSTM网络本质是一样的,残差连接的概念是,让前面某层的输出,作为后面某层的输入,使得前面的输出没有和相邻的激活层连接,而是和后面的激活层叠加(这里要求输出形状相同,如果前面的输出和后面的激活层形状不同,通过一个线性变换使得形状相同),这就好像上篇文章中介绍的LSTM网络中时间轴方向上的数据传送通道。为什么有残差连接这种东西呢,本质上是为了解决深度学习的两个共性问题。见下文。
深度学习有两个瓶颈问题:梯度消失(爆炸),表示瓶颈
梯度消失:原因有很多,比如网络层次越来越深,前方的误差值在传递过程中越来越小,后面的网络已经无法感知前方的误差。可以参考这篇文章:https://www.jianshu.com/p/09643588f373
表示瓶颈:在Sequential模型中,层与层之间时线性堆叠的,每个连续表示层都是建立在前一层之上,因此如果其中某一层特征维度太低,那么模型将会受限于该层激活中能够塞入多少信息,这一层就是信息瓶颈。
对于上述两种问题,使前面某层的输入直接跳到后面某层,即可以有效地避开表示瓶颈层,又可以减少因为多次求导而造成的梯度消失的问题。这就是残差连接的意义。
callbacks:这个函数可以随时访问网络的训练状态,随时获得当前网络训练的各种参数,以便后续调整模型。
ModelCheckpoint:保存网络训练过程中的参数,训练出来的网络权重
EarlyStopping:如果模型性能不再有提升,终止训练
ReduceLROnPlateau:监控模型验证损失数据,验证损失不再降低的时候,调整学习率大小跳出局部最优。
TensorBoard:一个Tensorflow的可视化IDE,了解即可
1.数据标准化:使得网络模型看到的不同数据样本之间更加相似,利于对新数据的泛化
2.批标准化:训练时在内部保存已读取每批数据均值和方差的指数移动平均值。效果是有助于梯度传播,类似残差连接,允许更深的网络深度。
3.超参数优化
4.多模型集成