σ′(⋅)=σ(⋅)(1−σ(⋅)) ,tanh′=1−tanh2 - batch_size:将数据集划分为不同的 batch,是为了限制 RAM 的使用,防止内存溢出;
- batch_size = 256;
ℓ 层的神经网络,对于着ℓ−1 个层间权值矩阵;
0. 简单参数
- hyperparameters:
- learning rate:一般从 0.01 开始设起,变化的幅度为 10 倍;
1. 激活函数:做非线性映射
Sigmoid 和 tanh 激活函数的问题在于,在函数的最左侧和最右侧,斜率为 0;
- 这样当 BP 时,复合函数的求导(连乘) ==> 导致梯度消失;
- ReLU 收敛的速度要比 tanh 的速度快 6 倍,其收敛速度足够快;
CNN 尽量不要用 sigmoid(RNN 会用到 Sigmoid 和 tanh)
- 首先试 ReLU,因为快,但需要小心;
- 如果 ReLU 失效,使用 Leaky ReLU 或者 Maxout
当然神经网络的输出层一般还是 Sigmoid 函数,因为其值接近于概率输出分布;
2. 池化层的选择
池化层(Pooling Layer),downsampling,压缩数据和参数的量,减少过拟合;
- 图像识别一般使用 maxpooling
- neural style 使用 average pooling
3. 深度模型的结构
- CNN
- Input
- [ [CONV -> ReLU]*N -> Pool ?]*M
- ? 表示可能会接池化层
- [FC -> ReLU] * K
- FC
- [ [CONV -> ReLU]*N -> Pool ?]*M
4. 从框架的角度
- caffe:
- 每一层都可以定义 learning rate,因此可以分段调整学习率(learning rate)