首页 > 代码库 > machine learning概述

machine learning概述

一、机器学习是什么?

1、概述

a机器学习是一个比较泛的概念

b是不是会觉得机器学习和人工智能,数据挖掘讲的东西很像?
1)机器学习是人工智能的一个子方向
2)机器学习是数据挖掘的一种实现方式

c数据挖掘的三种方式
1)数据库 ---强调的是效率,即如何组织信息使得能够快速有效的查找信息
2)机器学习----强调有效性,在数据分析中
3)统计方法------强调正确性,更多的是为机器学习算法提供理论支撑

d、举个例子

技术分享

给一些苹果和香蕉,人会通过特征的判断做区分,并且记忆这些特征,下次来了一个新的苹果或者香蕉的时候,就可以判断是香蕉还是苹果了。

左边一栏是输入,上边一栏是输出,而这个表中的数据,就相当于训练出来的模型。

 

2、数学表示

a、算法或者说用程序执行的数学问题
       (1)输入----多个特征所构成向量的向量,或者说是一个矩阵
            (如果只有一个特征向量是一个弱化的矩阵概念,统一称作矩阵)
       (2)输出----通过对特征的判断得出的做区分的规则

 

b、目前机器学习的核心技术是基于矩阵的优化技术
– 输入:矩阵 – 待学习的信息
– 输出:模型 – 总结出的规则

 

3、形式化表示

a、主流的机器学习技术就可以形式化为

    ---输入:特征矩阵 X、标注向量 y

              (是特征矩阵,不包括“样本名称”和“样本 标注”)

                 (y 是标注向量,即“样本标注”那列)

   ---输出:模型向量 w

                (期望:X·尽可能接近 y)

                (多种优化算法可以解 w,区别在于如何定义 “尽可能接近”)

b、举个例子:要计算广告的CTR(点击率)

技术分享

例子中特征只有两个,query关键词和“是否飘红” —特征输入

目标是要根据已知的auc特征,猜测这个目标广告是否会被点击 —模型输出

 

二、一般的机器学习的步骤是什么?

 

1、问题分析

输入输出都有了,具体解决这个问题,就可以选用相关的算法
(1)前面定义里面有这么一个隐含的关键点:X w 尽可能接近 y
(2)如何定义这个“接近”,思路不同,算法就不同
  -- LR (Logistic Regression)
  -- SVMSupport Vector Machine
(3)实际例子分析(还是那个苹果的例子,因为简单)

 

a.形象化表示

技术分享

之后会发现,利用Logistic regression其实就是通过一批样本数据训练出系数,得出一个方程系数矩阵,之后将未知分类样本作为输入,结合训练出来的矩阵,得到的输出就是分类的结果,可以想象为是一条曲线的模拟。

技术分享

b.数学化的目标函数表示

技术分享

"接近"的定义不同,学术的讲,就是“优化目标不同”,无论是否相同,我们都至少可以选一个优化目标了,有了优化目标,下面要做的就是如何求解这个优化目标了

一般现在用的思路主要是L-BFGSCDNSGD

 

2、用机器学习的方法去解决问题

优化步骤:

   (1)算法 ---优化目标 优化算法

   (2)数据 ---尽可能和实际同分布的数据 尽可能充分的数据

   (3)特征 ---尽可能包含足够多的需要识别对象的信息

优化算法:

从优化目标的角度(学术界,发现新的算法)

从优化算法的角度(工业界,基于现有算法进行扩展)
1)更小的计算代价---机器就可以做别的事情
2)更快的收敛---可以更好的把结果投入使用
3)更好的并行---用现有的大数据框架解决问题

训练数据:

1)同分布

    ---样本数据和实际数据分布差异很大的话,那么你的算法得出的结果基本上就没啥用,也就是泛化能力差。

 

2)数据充分

   ---由于期望的往往是总的误差最小,所以很可能讲数据量小的类目判别错误,所以数据越充分,训练就越充分,误判率就越低。

 

特征:

要求:数量多,质量高。

有一种疾病,这种疾病容易在个高且胖的人群,以及个矮且瘦的人群中易感。那么任意从给一个特征角度上看,比如肥胖,那么胖的这部分人中,得此病的概率为50%,不胖的也是50%,那么“胖”这个特征没有表达力,所以这个特征的质量就为0

一个工程问题,特征是往往是决定最多的

一个算法方面的优化,可能只是优化了2~3%的效果,但是特征可能就是50~60%了。

一个工程项目七八成的精力往往都是花在特征选取上的,但是高质量的并不是那么容易被发现的,比如百度CTR预测,特征数据目前就是100亿级别的,通过数量弥补质量,那怎么提高特征的质量呢,答案就是深度学习,所以接下来我们来看看深度学习是怎么样提取高质量的特征的。

 

三、机器学习与深度学习的区别?

 

1、简介

Deep Learning那么一定就相对有Shallow Learning(机器学习的别名),最大的区别在于特征层数。

技术分享

目前的机器学习算法主要是一层的,就是从特征直接推断出结果

 

Deep Learning和人类的处理问题的结果更接近,是由特征推断出一些中间层的结果,进而推断出最终结果的,也就是说其实特征只是一种外在表现,如何挖掘特征是如何表现的,其实这是一个特征表达力的问题,传统方法特征表达力,不如Deep Learning的多层学习得到的更有效果的表达。

 

2、特征表示的粒度

技术分享

一个图片来说,像素级的特征根本没有价值,无法进行摩托车正例和负例的区分,而如果特征是一个具有结构性(或者说有含义)的时候,比如是否具有handlebars(把手),是否具有wheel(车轮子),就很容易把正例和负例区分,学习算法才能发挥作用

 

题外话:为什么LDA(一种主题模型)是合理的?

 

从文本来说,文本这个概念或者说一句话,一个doc表达的是什么意思,用什么来表示比较合适?

最简单的就是用一个一个字,也即是我们常用的词袋模型,但是这样只是简化方便而已,字是像素级别的,起码应该是term,换句话说每个doc都由term构成,但这样表示概念的能力就够了嘛?

可能也不够,需要再上一步,达到topic级,有了topic,再到doc就合理。注意这里就是主题模型的精髓了,但每个层次的数量差距很大,比如doc表示的概念->topic(千-万量级)->term10万量级)->word(百万量级)

这就是主题模型的从Deep Learning角度来看的合理性

deep的含义就是多层神经元网络,每一层代表一种层次的概念,越往下概念的正交性越好,越往上概念的正交性越差,越具有相似度。因为高层概念彼此可能互相包含了相同的基本结构

 高层概念分离出基本结构的方法也很容易理解,就是打散了聚类,比如doc可以通过LDA的方法搞出topic,有限个topic就可以描述一个doctopic内部还可以通过类似的方法,再打散了聚类,得到更浅层的topic,这就好比新闻聚类可以从小类聚到大类,从大类聚到超大类就是这个思路。数据挖掘中数据仓库也有类似的情况,上卷或是下钻。

 

2、为什么要用多层神经网络来挖特征?

正式一点的话,身高和体型是两个Marginally independent的变量,即如果观察到了他们产生的结果,他们就不独立了。

技术分享

也就是如果身高和体型在用于检测这种疾病的时候,他们就不独立了,因此需要有一种特征表示的方式来表示他们的这种不独立性,能够combine他们以形成更好的特征。

而这种更结构化的特征,需要大量的语料才能training出来。而独立性的特征,往往少部分语料就可以获得很好的结果,但随着语料数量的提高,无法observe到结构化的特征,因此更多的语料就浪费了。这就设计到机器学习里面的一些关于选取样本的问题,如何选样本,训练多少样本够。

我们都知道这是AI领域的XOR问题,也就是二层神经网络就能求解,换言之,多层神经网络能够挖掘出来更好的特征。

 

4、怎么进行挖掘?

技术分享技术分享

小块的图形可以由基本edge构成,更结构化,更复杂的,具有概念性的图形如何表示呢?这就需要更高层次的特征表示,比如V2V3。因此V1看像素级是像素级。V2V1是像素级,这个是层次递进的,就好像高中生看初中生naive,大学生看高中生naive一样。

 

5、和人脑有什么类似的地方?原理何在?

人脑中大部分感知器是一个非常简单的计算过程。但通过组合可以达到很高的理解力。

但问题是如何组合,感知的过程如何从低级阶段到高级阶段,从明暗,色彩的感知,到人类喜怒哀乐的情感,整个过程的每一步可能都是naive得,但整个认知链条的末端一定是语义的,有感情的,上升到概念的。

比如看一本小说,脑海中就能自然浮现画面,可见不同神经感知器也不是完全独立的,而是彼此联系的。

 

6、如何训练?

语料切成n个部分,每个部分产生表达力强的特征,而这些表达力强的特征在一个阶段进行combine,也就是那个hidden layer可以很好的表达来自不同shard的特征,最后再展开各层,用不同shard上的tagged data 来进一步调整每条边的权重。

通常学生试验在10 million connections这个水平,因为再大已经超出计算的能力,但如果采用并发的方法,160000万个CPUs的情况下,可以达到1 billion connections这个水平。如果采用特制的GPU来计算,可以达到10 billion connections的水平。

 

7、需要多少特征?

  我们知道需要层次的特征构建,有浅入深,但每一层该有多少个特征呢?

任何一种方法,只要特征足够多,效果总能提高,但特征多意味着计算复杂,探索的空间大,可以用来训练的数据在每个特征上就会稀疏,都会带来各种问题,并不一定特征越多越好。

 

8、MLDL比较

大量使用Shallow learning主要是因为它有很好的数学特征:
   ---解空间是凸函数

  ---凸函数有大量的求解方法


machine learning概述