深度学习笔记

image Classification 图像分类

image capture 图像捕捉

Visual Question Answering 视觉问答系统

detection 发觉 探测

segmentation 细胞分裂

neuron 神经元

 

1.机器学习-人工智能的核心

机器学习(Machine Learning)是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。

2.神经网络:神经网络的目的是为了拟合某个未知的函数

激活函数->拟合非线性函数 对某线性函数整体做一个操作

神经元=网络=线性函数=感知机

3.cnn卷积神经网络:由输入层、卷积层、激活函数、池化层、全连接层组成

1)卷积:相乘求和 ->提取图像的特征和纹理,用它来进行特征提取

2)卷积核:用来相乘的,每个卷积核可以视为提取一种特征

3)池化:对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征。池化操作一般有两种,一种是Avy Pooling,一种是max Pooling,max pooling是在每一个区域中寻找最大值,Avy pooling现在不怎么用了,方法是对每一个2*2的区域元素求和,再除以4,得到主要特征。一般的filter取2*2,最大取3*3,stride取2,压缩为原来的1/4.

pooling操作是特征图缩小,有可能影响网络的准确度,因此可以通过增加特征图的深度来弥补(这里的深度变为原来的2倍)。池化的最终的结论是要把原来的维度减少到1/n.

4) 全连接层:连接所有的特征,将输出值送给分类器(如softmax分类器)

4.偏导数:对某个变量求倒数的时候把其他变量视为常数即可。深度学习是采用神经网络,用于解决线性不可分的问题。

5.深度学习:就是有很多个隐藏的神经网络。

包括输入层、隐层、输出层

深度学习是一个不断磨合的过程,刚开始定义一个标准参数,这个参数一般为经验值。先把图片给他看,并且告诉他正确的答案,需要很多图片,不断地教他,训练他,这个训练的过程,其实就是用于求解神经网络权重的过程。以后测试的时候,你只要给他图片,他就能告诉你正确结果。

 

对于深度学习而言,训练集就是用来求解神经网络的权重的,最后形成模型;而测试集,就是用来验证模型的准确度的。

 

刚开始定义一个标准参数,为了把参数调整到最佳,我们需要了解误差对每个参数的变化率,这就是求误差对于该参数的偏导数。由于激活函数的存在,所以在求偏导的时候,也要把它算进去,激活函数,一般用 sigmoid,也可以用 Relu 等。sigmoid激活函数的求导: f'(x)=f(x)*[1-f(x)] 。Relu,就是 f(x) x<0 的时候 y 等于 0,其他时候,y 等于 x(也可以自己定义)

 

学习系数,为什么叫学习系数?对于初始默认参数给一个Δ增量,到底每次增加多少合适?是不是等同于偏导数(变化率)?经验告诉我们,需要乘以一个百分比,这个就是学习系数,而且,随着训练的深入,这个系数是可以变的。

5.SGD(随机梯度下降)

mini batch 

epoch

6.sift算法(尺度不变特征转换)的主要步骤:(1)建立尺度空间,主要是指建立,Gaussian金字塔和DoG金子塔;(2)在尺度空间中寻找极值点(keypoints),并对其进行精确定位;(3)求解关键点的梯度幅值和幅角;(4)对关键点进行描述,形成128维的空间向量。

7.白化:白化的目的就是降低输入的冗余性;更正式的说,我们希望通过白化过程使得学习算法的输入具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差。

8.PCA降维:

9.VLAD编码:首先采用k-means算法将这些特征向量聚类成k类;c1l。。。就是k个聚类中心,

然后对同一聚类中心上的每一个特征向量求残差向量,即特征向量与类中心向量的差;

将同类别的残差向量求和,得到k个d维子向量,再将k个子向量拉成一个k*d的超长一维向量记为vl

10.MAP(Mean Average Precision)平均精度均值(平均正确率)

11.Padding:比如:我们需要做一个300*300的原始矩阵,用一个3*3卷积核(粉红色矩阵)来扫,扫出来,按照之前公式,结果的矩阵应该是:298*298的矩阵,但是这样很难计算,减得也不多,反而增加我计算难度,还不如池化(pooling)来得干脆是吧!那我们就在300*300矩阵外面周围加一圈“0”,记住,是在外面外包一层“0”

重点是:这样的300*300就变成了302*302的矩阵,这样就可以完全避开卷积后那两层的抵消。

12.目前的image retrieval分成两个不同领域。

第一个是追求所谓的相似,也就是从gallery里去找到相似或者相同的,常见的人脸识别,行人再识别,商品检索,草图检索,都是属于这个范畴,目前的深度学习方法,更多的就是追求如何获得更好的feature,这些领域,其实方法都是可以通用。

第二个就是传统领域需要做的一个match的问题,即如果某个建筑在一张图里出现,假使其在另外一张图里只出现一半,或者在某个角落里出现,能否再次找到。如果直接采用cnn特征,很有可能找到的轮廓相似的建筑物,而非相同的建筑物。这种情况下,一般是切成patch再分别抽特征,当然后面faster rcnn出来之后,可以在最后的feautre map上直接划分。也可以对feature map的特征做vlad或者fv的编码再检索。一般论文里的标题都是CBIR,instance retrieval这种。

以上两个可能是不大相同的领域,方法尽管有共通,但是侧重点依然不是很一样。具体做的时候需要考虑一下最终到底要做什么。

13.fine-turning 换一个和目标更相近的数据集 + 只更新一部分参数 的都算。

14.dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃

15.softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!

16.一般保留10%作验证集

17.NumPy作为通用数据的容器 ; pandas,一个开源库,为用户提供易于使用的Python数据结构和分析工具

18.原图大小:n*n  卷积核大小:s*s 则卷积后的feature map的大小为 (n-s+1)*(n-s+1

19.感受野的定义 

在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。 

20、感受野大小的计算 
感受野计算时有下面的几个情况需要说明:

  1. 第一层卷积层的输出特征图像素的感受野的大小等于滤波器的大小;
  2. 深层卷积层的感受野大小和它之前所有层的滤波器大小和步长有关系;
  3. 计算感受野大小时,忽略了图像边缘的影响,即不考虑padding的大小。

4.中心感受野:天然地注重中间区域

5.Dropout:冻结一部分神经元 让它在学习的时候把训练过的和未训练的都学习好

 

 

posted @ 2018-07-21 14:51  auvxx  阅读(279)  评论(0编辑  收藏  举报