CS231n Notes 1

CS231n课程笔记,记录自己看懂和没看懂的地方。

Lecture 4

  1. gradient的计算。

    • forward阶段就计算当前unitlocal gradient

    • backward阶段:local gradient * gradient from above

  2. add gate, max gate,mul gate

  3. backpropagation is an expression for the partial derivative of the cost function with respect to any weight (or bias) in the network

Lecture 5

  1. 权重初始化为什么不能全零初始化?虽然说会打破不对称性,但到底是如何打破的?产生的效果又是什么样的?

    如果全部初始化为0,那么每个unit的输出就会相同,梯度就会相同,参数更新就会相同,那还弄多个units有什么意义(intuitive 上就不对 -_- )。

    虽然有些措施(ReLuDropout)可以在中间打乱这种现象,但是还是不推荐全部初始为0

  2. 批量归一化(Batch Normalization)与Dropout有什么关系?各自在什么情况下用?

    Dropout是正则化,用来降低过拟合的程度。而Batch Normalization主要用来解决权重初始化的问题。

    在实现层面,应用Batch Normalization通常意味着在全连接层(或者是卷积层)与Activation Function之间添加一个BatchNorm层。

    为什么放在FC/CNN之后,Activation Function之前?

    因为前面一层的作用是提取特征,Activation Function的作用是对特征做非线性的变换(更深一层/抽象的提取重要的特征)。放在Activation Function之后显然可以提取到更好(表征能力更强)、更多、更重要的特征。放在后面的话,特征都已经提取了,再做Batch Normalization有什么用?!

    关于Batch Normalization可以参考下面的几个博客。

  3. 为什么要进行梯度检查?

    可以验证BP算法的实现是否又逻辑错误(BP算法解决的就是如何计算梯度的问题)。

Lecture 6

  1. 视频37:50处为什么对 x_test 操作?

  2. Dropout操作在反向传播时也进行吗?为什么?

    进行。

    注意:在test和infer阶段都不进行Dropout

  3. 51 分钟处没看懂

Lecture 7

  1. 10分钟处,可视化的是什么?

  2. 卷积核对某个特征感性兴趣(被某个特征激活)是什么意思?

  3. 图片一般首先预处理成正方形的尺寸。

  4. 为什么要用padding?为什么用0填充?什么时候用好?

    为什么用:

    • 如果不用padding的话,随着网络深度的增加图片的尺寸会逐渐减少,可能会出现卷积核尺寸大于图片尺寸的情况,这时就无法接着处理了。
    • 有种说法是:paading可以降低图片信息的损失
    • Andrej Karpathy 指出:实际应用中,padding的效果会比不padding的效果更好。

    为什么用0填充:

    • 之所以用0填充,是因为填充位置与卷积核相应神经元相乘的结果是0,可以降低因为填充对原始数据(此处为图片)产生的影响(此处有疑问,比如本人之前做过的一个用0填充的方式解决文本语义关系的课题,填充明显会对语义带来影响)。有待考究…

    什么时候用好:

    • 虽然 Andrej Karpathy 指出:实际应用中,padding的效果会比不padding的效果更好。不过实际应用中还是要根据自己的需要来设置,具体根据什么指标,正在考究…
  5. 一维卷积的用处:改变深度(也就是视频中指出的数据的depth维度),但是并没有对特征在空间(也就是widthheight方向上的特征)上进行merge。

  6. 一个层的输出深度可以很大,比如6x6x512,这不会有什么影响。

  7. Pooling会跌掉一些信息。

  8. 45分钟处没看懂。

  9. 不再使用normalization layer,因为这对网络没有 improvement。

  10. fc 7 layer 指输出结果前的最后一个全连接层,这个说法来自AlexNet

  11. Inception Module来自GoogleNet

  12. 普通的CNN指通过 evil 的方式增加网络的深度,可能不会改善效果(甚至恶化),但ResNet可以使结果更好(视频1:07:00处)

参考资料

  1. Convolutional Neural Networks (CNNs): An Illustrated Explanation - XRDSXRDS

Lecture 8

Image Detection

  1. Localization as regression

    Localization当作Regression任务,在训练时只是把 classification 网络的最后几层的全连接层改一下:输出不再是class score,而是box coordinateloss不再是softmax或其它classification任务的loss,而是L2 loss;test time 既进行classification,也进行localization

  2. Sliding Window

    Idea:在图片上的多个 positions 做多次,然后把这些不同 positions 的结果 aggregate 起来。

  3. 2 分钟处:back propagation whole net是什么意思?

Image Detection

  1. 因为图片中 object 的数量(不是种类)不确定,所以不能用Regression/Localization的方式解决。用classification的方式解决,输入为图片的不同区域。不过,window size要通过试的方式,测试所有可能的情况,所以计算量非常大。

    解决办法就是不试所有的情况,而是猜——Region Proposal。可能不够准确,也不关心每个区域的 object 的 class(类别),但是很快。最常用的方法是:Selective Search

  2. 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分钟处)。

  3. Region Proposal + CNN ——> R-CNN

    使用 AlexNet,注意需要对网络进行 fine tune,因为数据集不同

  4. Objection Detection Evaluation:mPA

    使用更好的网络能够帮助进行 detection 任务的效果。

  5. Fast R-CNN

    具体可见视频和slides。

    Problem:在 test time 没有进行Region Proposal
    Solution:Faster R-CNN

  6. Faster R-CNN