机器学习基础综述

来源:互联网 发布:suse linux安装 编辑:程序博客网 时间:2024/06/05 14:52

1、张量,标量、向量可以看做一维和二维张量,我们还可以将这一定义继续扩展,即:我们可以用四阶张量表示一个包含多张图片的数据集,这四个维度分别是:图片在数据集中的编号,图片高度、宽度,以及色彩数据。张量在深度学习中是一个很重要的概念,因为它是一个深度学习框架中的一个核心组件,后续的所有运算和优化算法几乎都是基于张量进行的。

2、范数,L1范数:为x向量各个元素绝对值之和;L2范数:为x向量各个元素平方和的开方。在机器学习中,我们经常使用被称为范数(norm) 的函数衡量矩阵大小。

3、概率,常见概率分布:高斯分布、泊松分布

4、统计量,期望、方差、协方差

5、拉格朗日乘子,拉格朗日乘子用来求一个满足一定约束条件的极值,一般把约束项添加到原函数上,然后对构造的新函数求导。

6、熵,离散随机事件的出现概率。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。信息熵可以被认为是系统有序化程度的一个度量。常见度量:

6.1条件熵:衡量在已知随机变量X的条件下,随机变量Y的不确定性;

6.2相对熵:又称互熵、交叉熵、KL散度、信息增益,表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布;

6.3互信息:一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不确定性。

6.4最大熵模型:学习概率模型时,在所有可能的概率分布中,熵最大的模型是最好的模型。通常用约束条件来确定模型的集合,所以,最大熵模型原理也可以表述为:在满足约束条件的模型集合中选取熵最大的模型。

7、最大似然法,也称为最大概似估计,即:在“模型已定,参数θ未知”的情况下,通过观测数据估计未知参数θ的一种思想或方法。其基本思想是:给定样本取值后,该样本最有可能来自参数θ为何值的总体。即:寻找θ使得观测到样本数据的可能性最大。

8、最优化方法,最优化有三个基本要素:1、设计变量:x是一个实数域范围内的n维向量,被称为决策变量或问题的解;2、目标函数:f(x)为目标函数;3、约束条件:hi(x)称为等式约束,gi(x)为不等式约束,i=0,1,2,3,……

9、凸集,实数域R上(或复数C上)的向量空间中,如果集合S中任两点的连线上的点都在S内,则称集合S为凸集。

10、超平面和半空间,二维空间的超平面就是一条线(可以使曲线),三维空间的超平面就是一个面(可以是曲面)。

11、所谓两个凸集分离,直观地看是指两个凸集合没有交叉和重合的部分,因此可以用一张超平面将两者隔在两边。

12、凸函数性质:如果一个函数是凸函数,则其局部最优点就是它的全局最优点。这个性质在机器学习算法优化中有很重要的应用,因为机器学习模型最后就是在求某个函数的全局最优点,一旦证明该函数(机器学习里面叫“损失函数”)是凸函数,那相当于我们只用求它的局部最优点了。

13、梯度下降算法,在多元微分学中,梯度就是函数的导数方向。梯度法是求解无约束多元函数极值最早的数值方法,很多机器学习的常用算法都是以它作为算法框架,进行改进而导出更为复杂的优化方法。

14、随机梯度下降算法(SGD),在梯度下降法的迭代中,步长的取值很关键:步长值取得越大,收敛速度就会越快,但是带来的可能后果就是容易越过函数的最优点,导致发散;步长取太小,算法的收敛速度又会明显降低。因此我们希望找到一种比较好的方法能够平衡步长。批量梯度下降法每次迭代时都会计算训练集中所有的数据,而随机梯度下降法每次迭代只是随机取了训练集中的一部分样本数据进行梯度计算,这样做最大的好处是可以避免有时候陷入局部极小值的情况(因为批量梯度下降法每次都使用全部数据,一旦到了某个局部极小值点可能就停止更新了;而随机梯度法由于每次都是随机取部分数据,所以就算局部极小值点,在下一步也还是可以跳出)总体来讲,随机梯度下降方法以损失很小的一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。

15、牛顿法,从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。通俗地说,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法 每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。

16、阻尼牛顿法,牛顿法的迭代公式中没有步长因子,是定步长迭代。这表明,原始牛顿法不能保证函数值稳定的下降。在严重的情况下甚至会造成序列发散而导致计算失败。为消除这一弊病,人们又提出阻尼牛顿法。该算法每次迭代会沿此方向做一维搜索,寻求最优的步长因子。

17、拟牛顿法,由于牛顿法每一步都要求解目标函数的Hessen矩阵的逆矩阵,计算量比较大(求矩阵的逆运算量比较大),因此提出一种改进方法,即通过正定矩阵近似代替Hessen矩阵的逆矩阵,简化这一计算过程,改进后的方法称为拟牛顿法。

 

 

以下是一些常见的机器学习模型

生成模型:

1、混合高斯模型(GMM):用K个(一般3到5个)高斯模型来表示数据特征,主要学习均值和方差两个参数。

2、朴素贝叶斯法:通过联合分布来求解先验概率和类别条件概率。

3、隐马尔科夫模型(HMM):隐马尔科夫模型是一种动态贝叶斯网络,它用来描述一个含有隐含未知参数的马尔可夫过程。难点在于从可观察的参数中确定该过程的隐含参数。

判别模型:

1、SVM:使用核函数来对数据空间进行升维,使得原本线性不可分的数据在高维空间线性可分。SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法(如基于规则的分类器和人工神经网络)都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。

2、LR:线性分类器,核心就是为函数找到最合适的参数,使得函数的值和样本的值最接近,常用于二分类。                            

3、Softmax:可以看做是logistic回归对多分类问题的推广,而且softmax回归更适合类别间互斥,常用于多分类。

 

 

深度学习:

1、CNN:一种前馈神经网络,包括卷积层(alternating convolutional layer)、非线性层(nolinear)和池化层(poolinglayer),常用于大型图像处理。

2、RNN:是一种节点定向连接成环的人工神经网络不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这使得这种网络可以展示动态时序行为。

 

 

卷积神经网络:

1、前馈神经网络:简称前馈网络。在此种神经网络中,各神经元从输入层开始,接收前一级输入,并输出到下一级,直至输出层。整个网络中无反馈,可用一个有向无环图表示。

2、反向传播算法:将激励响应同训练输入对应的目标输出求差,获得隐层和输出层的响应误差,从而获得权重的梯度,最后将这个梯度乘上一个比例并取反后加到权重上。这个比例将会影响到训练过程的速度和效果,因此称为“训练因子”。梯度的方向指明了误差扩大的方向,因此在更新权重的时候需要对其取反,从而减小权重引起的误差。

3、自编码算法和稀疏性:自编码算法尝试构造一个两层神经网络来拟合一个恒等函数,即f(x)=x,恒等函数虽然看上去不太有学习的意义,但是当我们为自编码神经网络加入某些限制,比如限定隐藏神经元的数量,这样可以学习出一个跟主元分析(PCA)结果非常相似的输入数据的低维表示。此外,即使隐藏神经元的数量较大(可能比输入像素的个数还要多),我们仍然通过给自编码神经网络施加一些其他的限制条件来发现输入数据中的结构。具体来说,如果我们给隐藏神经元加入稀疏性限制,那么自编码神经网络即使在隐藏神经元数量较多的情况下仍然可以发现输入数据中一些有趣的结构。

4、主成分分析(PCA):PCA是一种能提升无监督特征学习速度的数据降维算法。在输入向量中,由于相邻元素间的相关性,PCA算法可以将输入向量转换为一个维数低很多的近似向量,而且误差非常小。一般情况下,算法通过旋转数据来获得降维的主方向,然后将数据向主方向投影。

5、卷积特征提取:卷积是卷积核和输入图像做内积的过程,一个卷积核生成一个特征图(feature map),而在实际应用中,为了增强卷积层的表示能力,会使用很多个卷积核从而得到多个特征图。卷积过程的参数一般包括卷积核大小,填充,步长。

6、池化:为了描述大的图像,我们对不同位置的特征进行聚合统计,一般取平均值或最大值。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化。

7、激励函数(非线性):常用的非线性函数有sigmoid、tanh、relu函数。其中,relu常见于卷积层。

8、Dropout:Dropout以概率p舍弃神经元并让其它神经元以概率q=1-p保留。每个神经元被关闭的概率是相同的。在标准神经网络中,每个参数的导数告诉其应该如何改变,以致损失函数最后被减少。因此神经元元可以通过这种方式修正其他单元的错误。但这可能导致复杂的协调,反过来导致过拟合,因为这些协调没有推广到未知数据。Dropout通过使其他隐藏单元存在不可靠性来防止共拟合。简而言之:Dropout在实践中能很好工作是因为其在训练阶段阻止神经元的共适应。

9、数据增强:常用的数据增强的办法有水平翻转、随机裁剪、平移变换、颜色、光照变换等等。

10、经典卷积神经网络:LeNet,VGG,GoogleNet,ResNet

 

 

 

 

 

语义分割:

1、FCN网络:全卷积网络,主要使用了三种技术:卷积化(Convolutional),上采样(Upsample),跳跃结构(Skip Layer)。

2、卷积化(Convolutional):卷积化即是将普通的分类网络,比如VGG16,ResNet50/101等网络丢弃全连接层,换上对应的卷积层即可。

3、上采样(Upsample):普通的池化会缩小图片的尺寸,比如VGG16 五次池化后图片被缩小了32倍。为了得到和原图等大的分割图,我们需要上采样/反卷积。

4、跳跃结构(Skip Layer):按论文中描述,该结构是为了将深层的语义信息和浅层的图像信息结合起来,来形成一个精确详细的分割。

5、条件随机场(CRF):条件随机场是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,在图像处理中我们把每个像素点看做节点,像素与像素间的关系作为边,即构成了一个条件随机场。在FCN+CRF(模型中用全连接条件随机场)模型中,二元势函数就是描述像素点与像素点之间的关系,鼓励相似像素分配相同的标签,而相差较大的像素分配不同标签,而这个“距离”的定义与颜色值和实际相对距离有关。所以这样CRF能够使图片尽量在边界处分割。二元势函数描述的是每一个像素与其他所有像素的关系,所以叫“全连接”。

6、马尔科夫随机场(MRF)和高斯条件随机场(G-CRF):

6.1、MRF的特点在于1、将平均场构造成了CNN。2、联合训练并且可以one-passinference,而不用迭代。

6.2、G-CRF的特点在于1、二次能量有明确全局。2、解线性简便很多

  个人感觉卷积网+概率图模型(PGM)是一种较为良性的结合,卷积网进行特征提取,而PGM能更加细化FCN分割的边界。此外PGM通常难以加入DL的模型中,将PGM网络化后能够让PGM参数自学习,同时构成端到端的系统。

 

 

  弱监督和细粒度分割:

  这部分看得还不是特别详细,把几个简单的概念罗列一下:

  1、细粒度分割:比通用图像分类更深层的一个概念,在视觉领域叫做Fine-grained Image Classification,就是不仅要识别出他的大类别,而且要识别的他的细粒度类别,以昆虫为例子,不仅要分别出是否是蝴蝶,还要分辨出灰绒麝凤蝶和糙绒麝凤蝶,这种分类基本是需要专家才能辨认出来。目前一个比较主流的方案是,训练一个通类模型来识别出物体的大类别,也就是触发模型,再针对各个小类别训练一个fine grain模型识别。

  2、基于弱监督信息的fine-grain模型,弱监督信息就是说没有bounding box或者landmark信息,只有类别信息,bilinear cnn就是一个典型的基于弱监督信息的fine-grain模型。还有相关优化(运行速度)的模型Compact Bilinear Pooling,Low-rank Bilinear Pooling,Factorized Bilinear。

 

 

  计算机环境配置方面:

  系统层:Ubuntu14.04(Linux)+cuda8

  运行环境:anaconda4.4(python2.7)

  库:caffe+tensorflow

  个人感觉现在很多DL模型都转到Python上去了,就做了这个配置,caffe比较专用于图像处理,tensorflow泛化性能更好(感觉本质上是一个数据流图的计算框架,只要可以转化为数据流图的计算过程都能用tensorflow),我在这个配置用VOC数据集跑过fcn,还跑了MNIST来测试tensorflow,运行都很稳定,没出什么问题,就是Ubuntu系统本身不太稳,安装cuda会导致在开机的时候有点小BUG。

原创粉丝点击