深度学习笔记。
公式
h(x) = XW + b
方阵尺寸
X = (100,784), batch size: 100, 特征尺寸: 784
W = (784,10), 特征尺寸,输出个数
b = (10,1), 输出个数,1
h = (100,10) batch size, 输出个数
分类方法
softmax,确定图像是属于10个数字中的哪一个
激活函数
tanh, sigmoid, relu,深度神经网络中推荐使用 relu
输出值范围
- tanh
-1 ~ 1
- sigmoid
0 ~ 1, 1 / (1 + e^-x)
- relu
0 ~ 正无穷, max(0, x)
Loss function
交叉熵 Cross entropy:
- reduce\_sum(Y\_ * log(Y))
训练算法
SGD
梯度下降算法: SGD
步长: 0.01, 太大速度快但可能取不到最精确值,太小则速度慢
缺点: 步长选择比较困难
Momentum
下降初期能够很好的加速
Adagrad
前期放大梯度,后期约束梯度
依赖人工设置全局学习率
Adadelta
Adagrad的优化,不需要人工设置全局学习率
训练初中期,加速效果不错,很快
训练后期,反复在局部最小值附近抖动
RMSprop
Adadelta 的一个特例
- 依赖全局学习率
- 趋于 Adagrad 和 Adadelta 之间
- 对于 RNN 效果和好
adam
本质上是带有动量项的RMSprop
最大池化
max pooling, 比如 5x5 的池中取最大一个值作为输出值
strides 步长
步长的意义在于缩小特征尺寸。比如输入 28x28 的方阵如果使用 2x2 的步长,则输出的方阵缩小为 14x14
输入通道,输出通道
在建立深度学习的层中,一般是缩小特征尺寸,增大通道大小。整个特征个数是呈现变小的趋势。
No. 方阵 kernel 和通道 步长
1 28x28x1 5x5,1,4 1x1
2 28x28x4 4x4,4,8 2x2
3 14x14x8 4x4,8,12 2x2
4 7x7x12 全连接
5 200 softmax
6 10 用于10个数字
如何确定通道大小
比如手写的数字 4 个通道是比较小的,需要增加到6个,是个经验值
No. 方阵 kernel 和通道 步长
1 28x28x1 5x5,1,6 1x1
2 28x28x6 4x4,6,12 2x2
3 14x14x12 4x4,12,24 2x2
4 7x7x24 全连接
5 200 softmax
6 10 用于10个数字
后续阅读
https://zhuanlan.zhihu.com/p/22252270
http://ycszen.github.io/2016/08/24/SGD%EF%BC%8CAdagrad%EF%BC%8CAdadelta%EF%BC%8CAdam%E7%AD%89%E4%BC%98%E5%8C%96%E6%96%B9%E6%B3%95%E6%80%BB%E7%BB%93%E5%92%8C%E6%AF%94%E8%BE%83/
https://yq.aliyun.com/articles/250639
例子
https://www.tuicool.com/articles/vieuIbi
https://www.tuicool.com/articles/bayI7ne