神经网络发展史
sigmoid会饱和,造成梯度消失。于是有了ReLU。
ReLU负半轴是死区,造成梯度变0。于是有了LeakyReLU,PReLU。
强调梯度和权值分布的稳定性,由此有了ELU,以及较新的SELU。
太深了,梯度传不下去,于是有了highway。
干脆连highway的参数都不要,直接变残差,于是有了ResNet。
强行稳定参数的均值和方差,于是有了BatchNorm。
在梯度流中增加噪声,于是有了 Dropout。
RNN梯度不稳定,于是加几个通路和门控,于是有了LSTM。
LSTM简化一下,有了GRU。
GAN的JS散度有问题,会导致梯度消失或无效,于是有了WGAN。
WGAN对梯度的clip有问题,于是有了WGAN-GP。
Andrew NG在coursera的ML课程中提到的神经网络结构设计指导原则:
输入层:神经元个数=feature维度
输出层:神经元个数=分类类别数
隐层:
默认只用一个隐层
如果用多个隐层,则每个隐层的神经元数目都一样
隐层神经元个数越多,分类效果越好,但计算量会增大