CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络

Lecture5:CNN

1. 卷积层:

卷积核的深度与原图相同


CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第1张图片



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

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第2张图片

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

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第3张图片


CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第4张图片

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


CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第5张图片


卷积之后的大小

N是输入,F是filter,stride是步长


padding:原因---保持与以前相同的输入大小

使用0去填充图片的边界

卷积层的总结:

 biases的个数和卷积核的总数相同

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第6张图片


2. Pooling Layer

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

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第7张图片

max pooling:

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第8张图片

下采样:对于一个样值序列间隔几个样值取样一次,这样得到新序列就是原序列的下采样。

不使用zero padding

常用设置:


3.  全联接层

拉伸成一个向量

常见结构:

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第9张图片




Lecture 6:训练神经网络1

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第10张图片
随机梯度下降

1. 激活函数:

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第11张图片

1) sigmoid

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

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第12张图片
sigmoid函数的优缺点
CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第13张图片
希望输入数据是平均值是zero


2)tanh

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第14张图片
tanh的优缺点

3)ReLU

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

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第15张图片
ReLU的优点缺点

可能有些权重不会更新

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第16张图片

4)Leaky ReLU

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第17张图片

5)ELU

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第18张图片

6) Maxout

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第19张图片

实际使用建议:

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第20张图片


2. Data Preprocessing

1)zero-mean  2)Normarlize规范化

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第21张图片

协方差矩阵是一个单位矩阵

训练过程和测试过程使用同样的数据预处理

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第22张图片


3. Weight Initialization

W初始化为0,没有gradient传播,因为隐层节点之后的所有数值均为0。非常不可取,永远不要用。

方法1: small random numbers

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第23张图片
small random numbers

对于更深层的网络:all activations become zero

如果将W设置为1而不是0.01,那么很容易饱和

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第24张图片

一种好的初始化方法:

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第25张图片
使用linear activations

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


CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第26张图片

解决ReLU这个问题的方法:

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第27张图片

关于初始化的相关论文:

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第28张图片


4. Batch Normalization

计算该批次内的均值和方差

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第29张图片

通常跟在全连接层后:

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第30张图片

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

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第31张图片
希望给数据更多的灵活性,而不仅仅是单位高斯


CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第32张图片
算法

gamma和beta是学习参数。。。并没有失去数据的结构

测试阶段不同:

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第33张图片


5. Babysitting the learning process

第一步,preprocessing data 第二步,选择网络结构

确保loss是正确的,接着从很小的训练集开始训练,查看模型是否正确,接着使用全部的数据,增加小的正则化项,然后找到能使得loss递减的学习速率。

如果loss基本不变,可能是学习速率太小。。。

获得nan cost,说明爆炸啦!学习速率太大


6. Hyperparameter Optimization

使用交叉验证

CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第34张图片


CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第35张图片



CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络_第36张图片
可能原因:bad initialization

你可能感兴趣的:(CS231N 学习笔记 Lecture 5&6 CNN及训练神经网络)