本文记录官方note中比较新颖和有价值的观点(从反向传播开始)
一 反向传播
1 “反向传播是一个优美的局部过程。在整个计算线路图中,每个门单元都会得到一些输入并立即计算两个东西:1. 这个门的输出值,和2.其输出值关于输入值的局部梯度。门单元完成这两件事是完全独立的,它不需要知道计算线路中的其他细节。”
2 反向传播的编程中要学会分段计算,即在前向传播过程中把有用的中间变量缓存下来。
3 输入的大小对梯度有巨大影响,因此数据预处理很重要。例如乘法门会将大梯度分给小输入,小梯度分给大输入,因此当输入变化时,需要调整学习率。
二 神经网络介绍
1 生物动机:神经网络模型与实际的生物神经有一定的相似之处,但只是一个粗糙的近似模型,通常生物中更复杂,表现在突触不是线性的权重,输出的峰值信号的精确时间点很重要,等等。
2 “正则化损失从生物学角度可以看做逐渐遗忘,因为它的效果是让所有突触权重在参数更新过程中逐渐向着0变化。”
3 常见激活函数及其特点:
sigmoid:饱和性导致梯度消失,非零中心性导致梯度下降低效。
Tanh:仍然具有饱和性,但是输出是0中心的。
Relu:计算简单,收敛比tanh快6倍。缺点是会死亡。
Leaky ReLU,PRelu,elu等Relu变种:克服了Relu会死亡的缺点,但是效果不稳定。
Maxout:是Relu和Leaky ReLU的一般化归纳,继承了Relu的优点,克服了Relu的缺点,缺点是参数量翻倍。
选择激活函数的准则:“用ReLU非线性函数。注意设置好学习率,或许可以监控你的网络中死亡的神经元占的比例。如果单元死亡问题困扰你,就试试Leaky ReLU或者Maxout,不要再用sigmoid了。也可以试试tanh,但是其效果应该不如ReLU或者Maxout。”
4 有研究证明,拥有至少一个隐层的神经网络就可以近似任何连续函数。
参考文献:
贺完结!CS231n官方笔记授权翻译总集篇发布 https://zhuanlan.zhihu.com/p/21930884