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-CNNFaster R-CNN