Lecture5:CNN
1. 卷积层:
卷积核的深度与原图相同

卷积层:感觉这里写错了,应该是6个5x5x3的卷积核

使用的激活函数:ReLU,多层卷积


第一层卷积是获取低级特征,例如边界;之后的mid-level获取更复杂的功能,例如拐点和斑点;之后的卷积层获取高级特征。


N是输入,F是filter,stride是步长
padding:原因---保持与以前相同的输入大小
使用0去填充图片的边界
卷积层的总结:
biases的个数和卷积核的总数相同

2. Pooling Layer
使得representation更小,更容易管理,分别处理每个activation map。深度不受影响

max pooling:

下采样:对于一个样值序列间隔几个样值取样一次,这样得到新序列就是原序列的下采样。
不使用zero padding
常用设置:

3. 全联接层
拉伸成一个向量
常见结构:

Lecture 6:训练神经网络1

1. 激活函数:

1) sigmoid
sigmoid:输出为0到1之间 作为“firing rate”。问题:1)饱和神经元“杀死”梯度(例如x为10或-10时),2)不是zero-centored 3)计算困难


2)tanh

3)ReLU
不会饱和,计算方便,更快收敛,与sigmiod的计算很接近。 -10 梯度为0,0的梯度也为0

可能有些权重不会更新

4)Leaky ReLU

5)ELU

6) Maxout

实际使用建议:

2. Data Preprocessing
1)zero-mean 2)Normarlize规范化

协方差矩阵是一个单位矩阵
训练过程和测试过程使用同样的数据预处理

3. Weight Initialization
W初始化为0,没有gradient传播,因为隐层节点之后的所有数值均为0。非常不可取,永远不要用。
方法1: small random numbers

对于更深层的网络:all activations become zero
如果将W设置为1而不是0.01,那么很容易饱和

一种好的初始化方法:

然而当使用ReLU时会出现问题,

解决ReLU这个问题的方法:

关于初始化的相关论文:

4. Batch Normalization
计算该批次内的均值和方差

通常跟在全连接层后:

然而非线性层是否需要单位高斯输入呢?可以控制。。。挤压或者缩放


gamma和beta是学习参数。。。并没有失去数据的结构
测试阶段不同:

5. Babysitting the learning process
第一步,preprocessing data 第二步,选择网络结构
确保loss是正确的,接着从很小的训练集开始训练,查看模型是否正确,接着使用全部的数据,增加小的正则化项,然后找到能使得loss递减的学习速率。
如果loss基本不变,可能是学习速率太小。。。
获得nan cost,说明爆炸啦!学习速率太大
6. Hyperparameter Optimization
使用交叉验证



网友评论