Make things as simple as possible, But no simpler

机器学习(ML)的总结和思考

    技术总结

怎么样能知道机器学习在某个项目/环境中的可行的(可行性分析)?
目前判断AI技术是否能够实现某个项目,一个简单的思路是:一般人能在几秒钟内想出来的事情,就能够用AI去实现。即:人能够预测、分类或者判断的事物,机器学习在理论上都可以完成。
AI进展最快的领域正是人能够做得到的领域。而人类难以做到的事情,AI可能也难做到。
原因1:人类能做的,至少是可行的
原因2:可以利用人类的数据作为培训样本,比如:有监督的学习
原因3:人类能提供指导。通过人类的判断,对机器学习算法/参数进行修正
原因4:目前机器学习/AI的水平还是处在模仿人类的初级阶段,并没有到超越人类的阶段。

什么是机器学习?
两种解释:

  1. 机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法
  2. 机器学习就是通过算法,使得机器能从大量历史数据中学习规律,从而对新的样本做智能识别或对未来做预测

机器学习的本质是什么?
机器学习是统计学、概率论、计算机科学和生物学等相互交叉的综合学科。但是从目前的实用来看,机器学习更偏向于统计学和概率论。因此凡是统计学上的研究方式或方法,基本上是适合机器学习的。统计学中,几百年不变的方法:获取数据—>分析数据—>建立模型—>预测未知,在机器学习中也是如此。

机器学习统计学
收集数据采样/获取数据
找特征分析数据
向量化数据化
建立模型建立模型/寻找分布函数
预测获取分布概率/预测

机器学习的三种方式
机器学习本质是统计学,统计学的准确度,只和两个变量有关:1. 数据 2. 模型。因此机器学习通常使用以下三种方式:

  1. 数据量大,但是采用比较简单的模型,而且比较少的迭代次数,也就是说用大量的数据做一个浅层的机器学习。(传统机器学习)
  2. 数据量小,但是采用比较复杂的模型,而且经过很多次迭代训练出准确的模型参数。(早期机器学习研究方式,统计学习)
  3. 数据量大,但是使用多个简单的模型(越等于复杂模型),多次迭代,训练出准确的模型。(深度学习)
    通常,由大量的数据,较少迭代训练出来的“较粗糙”的模型,要比用少量的数据、深度的学习精耕细作得到的模型效果更好。
    深度学习在数据量足够大的情况下,能够用若干简单的模型取代一个复杂的模型。它是先有大量的数据,而不是预设模型,然后用很多简单的模型去契合数据(Fit Data)。

机器学习和大数据
目前机器学习的驱动力,是大数据。机器学习的另一个角度是:统计模型+数据 = 人工智能,其思路是变智能问题为数据问题。所以目前机器学习的重点在于如何提取数据中的信息来教会机器进行预测/判断。从信息的角度上看机器学习,机器学习就是把智能问题转化成消除不确定性的问题,然后再找到能够消除相应不确定性的信息,如此而已。机器学习的方法论是信息论。

机器学习的数据集和特征
根据统计学,机器学习的数据集基本要满足以下两点。

  1. 测试样本和训练样本独立分布,即样本必须和实际应用场景高度相似,否则不能保证算法的有效性。
  2. 样本数量必须足够大。当样本的数据只是全集的一部分时,所得到的样本要尽量有代表性(样本的完备性)。训练的数据由两部分构成:正确的训练集和错误的训练集,这两部分训练集最好在数量上相等,并且样本数量足够全,能够覆盖到最多情况。

什么是深度神经网络?
深度神经网络是一种具备至少一个隐藏层的神经网络。与浅层神经网络类似,深度神经网络也能为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。深度神经网络通常都是前馈网络,但也有语言建模等方面的研究将其拓展到循环(递归)神经网络。
总的来说:

  1. 深度神经网络通常是前馈型神经网络
  2. 深度神经网络说的是一种结构,而不是一种算法。
    所以,我们在谈论机器学习的某种网络的时候,我们在谈论什么? 谈论的是网络结构。
    深度学习是神经网络的一个大分支,深度学习的基本结构是深度神经网络。

什么是强化学习?
强化学习有点像是有监督的学习,只是标注的数据不是预先准备好的,而是通过一个过程来回地调整并给出所谓的“标注数据”。这个过程通常称为回报函数,这个回报函数决定当前状态得到什么样的结果(”好“还是”坏“),其数学本质是一个马尔科夫决策过程。最终的目的是决策过程中整体回报函数期望最优。

监督学习的方法
监督学习方法分成生成方法(Generative Approach)和判别方法(Discriminative Approach),所学到的模型分别称为生成模型(Generative Model)和判别模型(Discriminative Model)。

  1. 判别方法:由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测模型,即判别模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。典型的判别模型包括:感知机、决策树、支持向量机等
  2. 生成方法:从数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X),即生成模型P(Y|X)=P(X,Y)/P(X)。典型的生成模型有:朴素贝叶斯模型,隐马尔科夫模型等。

生成算法(GAN)尝试找出到底这个数据是怎么生成的(产生的),然后再对一个信号进行分类。基于你的生成假设,那么那个类别最有可能产生这个信号,这个信号就属于那个类别。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别简单地对给定的一个信号进行分类。
有生成模型可以得到判别模型,但由判别模型得不到生成模型。

深度学习和传统机器学习(模式识别)区别

除了传统机器学习深度(建模层数)上的差异。传统的机器学习一般人工手动提取数据集中的特征,而深度学习能够自己提取/学习数据集中的特征。深度学习有个别名Unsupervised Feature Learning,Unsupervised意思是深度学习一般在获取数据的特征上是无监督的。
准确说,深度学习首先利用无监督学习对每一层进行逐层预训练(Layerwise Pre-Training)去学习特征;每次单独训练一层,并将训练结果作为更高一层的输入;然后到最上层改用监督学习从上到下进行微调(Fine-Tune)去学习模型。

  1. 使用自下而上的非监督学习(就是从底层开始,一层一层地往顶层训练)。
  2. 自顶向下的监督学习,就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调。

深度学习和降维
在深度学习中,隐藏层的特征数(节点数)往往比上一层要少,在机器学习中,这叫做降维。
为什么深度学习要降维:
由于深度学习的输入数据往往是原始数据(例如:一幅图的像素),给的特征粒度太细了,如果不进行处理,这些特征将毫无意义。

  1. 抽象,将细粒度的特征组合成有意义的特征。模仿人类的大脑,字组成词,词组成句子,句子组成文章。
  2. 压缩,将特征的数据量进行压缩,能够更快的进行计算
  3. 去噪,根据信息论的观点,原始的数据包含了太多信息噪音,不利于信息的获取,需要在使用之前去噪。

迁移学习
监督学习是一种用已标记数据训练预测算法的技术。监督学习需要大量已标记的训练数据,但是数据有时是非常昂贵的。
通常,机器学习算法需要大约5000个已标记的训练样本才能达到一定的效果。但如果要达到人类预测水平的话,则需要至少50,000个已标记样本。
监督学习最大的困难,是获取足够大的已标记数据的语料库。
如果克服这些数据挑战已成为一个主要的研究领域。而其中的一种解决方案就是迁移学习,一种将解决某一问题时得到的知识应用于其他相关问题的技术。
可以首先寻找那些廉价或免费可用的标签数据集来训练算法,然后,使用较小的一个标签数据集训练同一算法以进行预测。
迁移学习是运用已有的知识对不同但相关领域问题进行求解的一种新的机器学习方法,迁移学习的目标是将从一个环境中学到的知识用来帮助新环境中的学习任务,迁移已有的知识解决目标领域中仅有少量有标签样本数据甚至没有样本数据的学习问题。
两个不同领域相关的方面越多,迁移学习就越容易实现;相关的方面越少,则迁移学习就越困难,甚至可能产生副作用。
迁移学习可以从现有的样本数据中迁移只是到相关领域,用来帮助相关领域的学习。利用好迁移学习,可以提高样本数据利用率,提供机器学习效率。

深度学习总结

深度学习的前身是人工神经网络(artifical neural network, ANN),人工神经网络由各个层组成,输入层(input layer)输入训练数据,在输出层(output layer)输出计算结果,中间有1个或多个隐藏层(hidden layer),使输入数据向前传播到输出层。“深度”一词没有具体的特指,一般就是要求隐藏层很多(一般是指5层,10层,几百层甚至几千层)

人工神经网络的每一层由大量的节点(神经元)组成,层与层之间有大量的连接,但是层内部的神经元一般互相独立。深度学习的过程需要神经元具备以下两个特性。
1)激活函数(activation function):这个函数一般是非线性函数,也就是每个神经元通过这个函数将原有的来自其他神经元的输入做一个非线性变化,输出给下一层神经元。激活函数实现的非线性能力是前向传播(forward propagation)很重要的一部分。
2)成本函数(cost function):用来定量评估在特定输入值下,计算出来的输出结果距离这个输入值的真实值有多远,然后不断调整每一层的权重参数,是最后的损失值最小。这就是完成了一次反向传播(backward propagation)。损失值越小,结果就越可靠。

神经网络算法的核心就是计算、连接、评估、纠错和训练,而深度学习的深度就在于通过不断增加中间隐藏层数和神经元数量,让神经网络变得又深又宽,让系统运行大量数据,训练它。

计算机的学习和人类的学习类似,我们平时大量做题(训练数据),不断地经过阶段性考试(验证数据)的检验,用这些知识和解题方法(模型)最终走向最终(测试数据)的考场。

“学习”家族的整体构造图

深入学习入门

深入学习流行框架: TensorFLow. TensorFLow的一大亮点是支持异构设备分布式计算(heterogeneous distributed computing)

在目前的深度学习的研究领域主要有以下3类人群

  1. 学者。主要做深度学习的理论研究,研究如何设计一个“网络模型”,如何修改参数以及为什么这样修改效果会好。平时的工作主要是关注科研前沿和进行理论研究、模型实验等,对新技术、新理论很敏感。
  2. 算法改进者。这些人为了把现有的网络模型能够适配自己的应用,达到更好的效果,会对模型做出一些改进,把一些新算法改进应用到现有模型中。这类人主要是做一些基础的应用服务,如基础的语音识别服务、基础的人脸识别服务,为其他上层应用方提供优良的模型。
  3. 工业研究者。这类人群不会涉及太深的算法,主要掌握各种模型的网络结构和一些算法实现。他们更多地是阅读优秀论文,根据论文去复现成果,然后应用到自己所在的工业领域。这个层次的人也是现在深度学习研究的主流人群。

深度学习和机器学习及控制系统之间的区别
这一轮人工智能火爆起来就是因为CNN用来处理人脸识别的图象,CNN最早的是模拟猫的眼睛处理图像的视觉相关部分的神经和大脑结构,它是天然的比较适合用来处理图像。时序神经网络RNN,因为交易类场景有下单和成交时序,适合于股票期货交易算法,长短时神经元网络族LSTMfamily,适用于语音识别,科大讯飞的核心语音识别算法就是属于一个变形的LSTM算法。级联随机森林 cascade random forest,适合于决策,最高法和某大型国有科研机构合作的智慧司法项目去年底找到我们外包做人工智能模拟法官判案决策逻辑。量子热力学模拟退火算法,它也不属于深度学习,当我们在超级复杂的系统里面,想计算系统的状态代价函数的全局最小点,这种特别复杂的情况下,有时候用梯度下降算法容易陷在局部最小点跳不出来,就要用这种算法。


本文地址https://leaf0s.fun/2017/06/11/3454466964/

页阅读量:  ・  站访问量:  ・  站访客数: