-
介绍神经网络
反向传播(这一小节非常重要,非常精彩)
这里可以看下视频,视频里面介绍了一种计算图,如下图所示,绿色的是计算的输入,红色的将左边看作x,右边当作y之后的导数值,最右边当然是1,df/dx是一样的,后面根据chain rule计算最后一个环节的导数,然后乘上前面的即是加多一个环节的导数。这里max的很特殊,对其中一个最后一个环节为1,一个为0,然后再乘以前面的。
多个指向其中一个,分别相加
向量化的梯度计算
实践操作
下面的格式可以看出,梯度是各个x分别计算出来的,因此我们可以针对每个x分别计算下面的表达式求和即可算出梯度。
神经网络
各种激活函数
-
RNN
卷积层(每次卷积只产生一个值)
两个卷积核
padding
pooling,只是在每一层上面进行
-
激活函数
sigmoid函数的问题:
1.在极大和极小的时候梯度几乎为0,向后映射求解梯度的时候就会出现梯度消失。
2.sigmoid计算出来的值都是大于0的,作为下一层的输入,计算出来的导数要么全正要么全负,导致进行的方向只能是两个大方向,会出现zigzag路径。所以一般我们希望我们的数据均值为0(有正有负)。
tanh要好一点
relu:
计算量小
正的方向不存在饱和问题
leaky relu
ELU
训练技巧
1.系数初始值都非常小,可以大概预测出lost是否合理
2.用很小的数据集看是否可以overfit然后将准确率大概提升到1
3.learning rate
4.超参数优化
交叉验证
5.初始化不好
计算框架