CS231n Notes 1
CS231n
课程笔记,记录自己看懂和没看懂的地方。
Lecture 4
gradient
的计算。在
forward
阶段就计算当前unit
的local gradient
。在
backward
阶段:local gradient * gradient from above
。
add gate, max gate,mul gate
backpropagation is an expression for the partial derivative of the cost function with respect to any weight (or bias) in the network
Lecture 5
权重初始化为什么不能全零初始化?虽然说会打破不对称性,但到底是如何打破的?产生的效果又是什么样的?
如果全部初始化为
0
,那么每个unit
的输出就会相同,梯度就会相同,参数更新就会相同,那还弄多个units
有什么意义(intuitive 上就不对 -_- )。虽然有些措施(
ReLu
,Dropout
)可以在中间打乱这种现象,但是还是不推荐全部初始为0
。批量归一化(
Batch Normalization
)与Dropout
有什么关系?各自在什么情况下用?Dropout
是正则化,用来降低过拟合的程度。而Batch Normalization
主要用来解决权重初始化的问题。在实现层面,应用
Batch Normalization
通常意味着在全连接层
(或者是卷积层
)与Activation Function
之间添加一个BatchNorm
层。为什么放在
FC/CNN
之后,Activation Function
之前?因为前面一层的作用是提取特征,
Activation Function
的作用是对特征做非线性的变换(更深一层/抽象的提取重要的特征)。放在Activation Function
之后显然可以提取到更好(表征能力更强)、更多、更重要的特征。放在后面的话,特征都已经提取了,再做Batch Normalization
有什么用?!关于
Batch Normalization
可以参考下面的几个博客。为什么要进行梯度检查?
可以验证
BP
算法的实现是否又逻辑错误(BP
算法解决的就是如何计算梯度的问题)。
Lecture 6
视频37:50处为什么对 x_test 操作?
Dropout
操作在反向传播时也进行吗?为什么?进行。
注意:在test和infer阶段都不进行
Dropout
。51 分钟处没看懂
Lecture 7
10分钟处,可视化的是什么?
卷积核对某个特征感性兴趣(被某个特征激活)是什么意思?
图片一般首先预处理成
正方形
的尺寸。为什么要用
padding
?为什么用0
填充?什么时候用好?为什么用:
- 如果不用
padding
的话,随着网络深度的增加图片的尺寸会逐渐减少,可能会出现卷积核尺寸大于图片尺寸的情况,这时就无法接着处理了。 - 有种说法是:
paading
可以降低图片信息的损失 - Andrej Karpathy 指出:实际应用中,
padding
的效果会比不padding
的效果更好。
为什么用
0
填充:- 之所以用
0
填充,是因为填充位置与卷积核相应神经元相乘的结果是0
,可以降低因为填充对原始数据(此处为图片)产生的影响(此处有疑问,比如本人之前做过的一个用0
填充的方式解决文本语义关系的课题,填充明显会对语义带来影响)。有待考究…
什么时候用好:
- 虽然 Andrej Karpathy 指出:实际应用中,
padding
的效果会比不padding
的效果更好。不过实际应用中还是要根据自己的需要来设置,具体根据什么指标,正在考究…
- 如果不用
一维卷积的用处:改变深度(也就是视频中指出的数据的
depth
维度),但是并没有对特征在空间(也就是width
和height
方向上的特征)上进行merge。一个层的输出深度可以很大,比如
6x6x512
,这不会有什么影响。Pooling
会跌掉一些信息。45分钟处没看懂。
不再使用
normalization layer
,因为这对网络没有 improvement。fc 7 layer
指输出结果前的最后一个全连接层,这个说法来自AlexNet
。Inception Module
来自GoogleNet
。普通的
CNN
指通过 evil 的方式增加网络的深度,可能不会改善效果(甚至恶化),但ResNet
可以使结果更好(视频1:07:00处)
参考资料
Lecture 8
Image Detection
Localization as regression
把
Localization
当作Regression
任务,在训练时只是把 classification 网络的最后几层的全连接层改一下:输出不再是class score
,而是box coordinate
;loss
不再是softmax
或其它classification任务的loss
,而是L2 loss
;test time 既进行classification
,也进行localization
。Sliding Window
Idea:在图片上的多个 positions 做多次,然后把这些不同 positions 的结果 aggregate 起来。
2 分钟处:back propagation whole net是什么意思?
Image Detection
因为图片中 object 的数量(不是种类)不确定,所以不能用
Regression/Localization
的方式解决。用classification的方式解决,输入为图片的不同区域。不过,window size
要通过试的方式,测试所有可能的情况,所以计算量非常大。解决办法就是不试所有的情况,而是猜——
Region Proposal
。可能不够准确,也不关心每个区域的 object 的 class(类别),但是很快。最常用的方法是:Selective Search
。Selective Search
Idea:从某个 pixel 开始,把与它具有 similar color and texture 的 adjacent pixels 都 merge 起来 ——> connected blob-like regions(如果接着把这些 regions 各自 merge up 起来就可以得到 bigger bloby parts/regions )——> different scales to different size detecting box——> a whole bunch of boxs(详细可以见31分钟处)。
Region Proposal
+CNN
——>R-CNN
使用 AlexNet,注意需要对网络进行 fine tune,因为数据集不同
Objection Detection Evaluation:
mPA
使用更好的网络能够帮助进行 detection 任务的效果。
Fast R-CNN
具体可见视频和slides。
Problem:在 test time 没有进行
Region Proposal
。
Solution:Faster R-CNN
Faster R-CNN