一、神经网络图解、前向传播、反向传播(推导)
推荐阅读:https://blog.csdn.net/u010089444/article/details/52555567
二、激活函数
参考自:https://www.cnblogs.com/makefile/p/activation-function.html,https://blog.csdn.net/edogawachia/article/details/80043673,https://zhuanlan.zhihu.com/p/32610035
激活函数 | 表达式 | 图示 | 输出值范围 | 优缺点 | TensorFlow对应的代码 |
无激活函数(线性) | 缺点:不能加入非线性因素、不能充分组合特征 | ||||
Sigmoid | (0,1) | 1.会软饱和:在大的正数和负数作为输入的时候,梯度就会变成零,使得神经元基本不能更新。 2.非zero-centered。 | tf.math.sigmoid tf.nn.sigmoid tf.sigmoid | ||
softmax | (0,1) | 多分类网络最后一层的激活函数,是sigmoid的扩展 | tf.nn.softmax | ||
tanh | (-1,+1) | 1.还是会软饱和 2.是zero-centered | tf.math.tanh tf.nn.tanh tf.tanh | ||
softplus | (0,+∞) | 运算量大,不常用 | |||
ReLU | [0,+∞) | 1.在正数不饱和,在负数硬饱和。 2.非zero-centered。 2.更省计算量,因为不用exp,因而收敛较快。 | tf.nn.relu | ||
LeakyReLU | (-∞,+∞) | 1.为了解决ReLU中dead ReLU现象,让负数区域不在饱和死掉。 2.斜率是确定的。 | tf.nn.leaky_relu | ||
pReLU | (-∞,+∞) | 与LeakyReLU不同的是,斜率不是固定的,是可学习的 | |||
ELU | (-∞,+∞) | 1.有负数饱和区域,从而对噪声有一些鲁棒性。 2.可以看做是介于relu和LeakyReLU之间的一个东西。 3.需要计算exp,计算量上大一些。 | tf.nn.elu | ||
SELU | 把激活函数换成SELU就能使得输入在经过一定层数之后变成固定的分布 | tf.nn.selu | |||
noise ReLU | 在受限玻尔兹曼机解决计算机视觉任务中得到应用 | ||||
ReLU6 | (-∞,+6] | 对ReLU设置经验上界 | tf.nn.relu6 | ||
Swish | 无上界有下界、平滑非单调,在深层模型上的效果优于 ReLU | x*tf.sigmoid(beta*x) | |||
maxout | 可拟合任意凸函数 | 1、具有ReLU的所有优点,线性、不饱和性,且没有dead ReLU。 2.添加了一层神经元,参数数量激增 |
三、深度学习中的正则化方法
1.参数范数惩罚:L1正则化、L2正则化;
2.数据集增强;
3.噪声添加;
4.early stop;
5.Dropout。
四、深度模型中的优化
1.参数初始化策略
参考自:https://blog.csdn.net/mzpmzk/article/details/79839047,https://zhuanlan.zhihu.com/p/25931903
2.优化算法(SGD、AdaGrad、RMSProp、Adam等)
推荐阅读:https://zhuanlan.zhihu.com/p/22252270,https://blog.csdn.net/qq_28031525/article/details/79535942
3.batch norm层
推荐阅读:https://zhuanlan.zhihu.com/p/34879333
4.layer norm层(LayerNorm / WeightNorm / CosineNorm是对batch norm层的改进)
推荐阅读:https://zhuanlan.zhihu.com/p/33173246