【机器学习】机器到底在学习什么?

机器识别手写数字的问题早已经解决,MNIST数据集http://yann.lecun.com/exdb/mnist/如今机器识别的准确率已经超过99%。事实上,这种问题无法通过一条条规则去hard code式的解决,我们不得不承认机器确实学到了东西。但我们好奇的是机器到底学到了什么?它是如何学到的?

问题设定

我们现在有MNIST数据集中60000张已经标注过得手写数字图片,每一张图片可以看做(28,28)的二维数组,像右图这样。我们需要通过这些训练数据预测未标注的数据。

思路

我们拿到一张未知的图片,我们把它与训练集的所有图片进行比较,我们找到训练集中与它最相似的一张图片,如果这张图片的label是k,我们就可以说我预测未知的手写数字也是k。这样的方法对手写数字识别确实有效,KNN算法对此方法稍作了推广,取得了90%以上的好成绩。但是我们很快就能发现这种方法的问题。

首先,我学到了什么?KNN算法实际上没有学到任何东西,它只不过是把已知的数据存起来,没有真正的“训练”过程,因此我们每一次预测都需要巨大的计算量,把训练数据集拿出来一张一张的跟需要预测的这样比较,耗时耗费资源。

再者,如果某一个新的机器学习问题过于复杂,比如识别人脸,分类更复杂的图像,那我没有足够大的训练集怎么办?即使我对每一个复杂的问题都有足够多的训练集,那我预测的时候又会带来计算更耗时的问题。

理想的训练情况是什么样?我训练的过程可以耗费一些时间,一旦我训练完成,拿去做预测就需要非常快才行。比如说新闻分类问题,每天都会产生大量数据,每天要对大量新闻分类,所以我们必须把预测的时间限制在可控的范围内。再比如,量化策略中的预测,如果预测未来一天的行情需要三天,这种模型就不靠谱。高频交易对时间的要求更加严格,AlphaGo下一步棋的预测过程如果需要30分钟,肯定无法打败李世石了。

实际上,机器学习的过程应该大致可以分为三步:

1.提出基本假设(哪些模型可能是对的?),确定模型的空间:线性模型?非线性模型?简单模型?复杂模型? 2.定义模型的”最优”到底是什么?:损失函数Loss Function 3.如何找到最优?: 梯度下降法 Gradient Discent

1.哪些模型可能是对的?

这是可能有效的模型 :GoogLeNet

这也是可能有效的模型:output = weight*input

上面第一个是谷歌的深度神经网络的模型,模型非常复杂,参数非常多,能学习的问题也更复杂,但是学习过程慢,需要大量的数据驱动,还需要高性能的运算能力。第二个模型非常简单,就是一条通过原点的直线而已,也就是说它的假设空间就是所有的

直线,训练过程是在所有的这些直线中搜索一条最好的,什么是”最好”?等下再说。我们现在可以知道的是简单模型能够学习的问题少,y=kx 这种模型只能把一个坐标系分成两部分,学出二分类问题,连三分类问题都学习不出来,甚至二分类的问题中y=3x+1 这条直线它都学不出来,因为假设空间里面根本没有这条直线。反观人家谷歌的模型就高大上了,模型复杂,可以学到k分类的问题,虽然我可能需要很多的数据,很多台计算机,但是至少我有学到的可能性。

通过以上我们可以看到,机器学习模型假设空间的选择需要在计算效率和待解决问题的复杂度之间trade off,解决简单问题,我们需要简单的模型,这样能学习到表现好的模型,并且计算效率高。复杂问题上复杂模型,保证我们可以学到东西,但是要更多的数据和计算资源训练。

2.假设空间内哪一个才是最优?

通过上面的介绍我们现在知道,机器学习问题需要现有基本假设,然后在假设空间里面做搜索,找到最优的模型。那什么才是最优? 我以线性模型为例。

我的输入可以转化成大小为1*784数组,我们可以理解成有784个特征,我们给每一个特征打分,得到最终结果就表示分到某一类的可能性有多大。 比如我们判断数字是不是0,y^{(0)}=\sum_{i}^{784}x_{i}w_{i}^{(0)} 同理,判断数组是不是1,也可以打一个分 y^{(1)}=\sum_{i}^{784}x_{i}w_{i}^{(1)} 以此类推,我们有10个这样的模型,我们的参数有10*784=7840个。我们的学习过程实际就是找到最优的这7840个参数,对应的是784维特征空间的10个超平面(其实就相当于二维平面中找到10条直线,只不过输入数据的维度高,直线表示为超平面)。现在这个模型中,我只要输入一张图,它会告诉我是这张图是[0,1,2,3,4,…..]的可能性分别是[0.01, 0.03, 0.8, 0.09….],我们就知道模型预测的是3。

那么什么是最优?SVM定义的最优是这样的,模型给我的结果是1*10的数组,表示图像是手写数字0到9的可能性大小,SVM要求正确的label的分值至少比其他分值大1,越接近这种状态,越好。 比如预测结果为[0.01, 0.01,0.9, 0.01….]的模型肯定比[0.1, 0.1, 0.6, 0.05,…..]要好(SVM的预测分值可以大于1,这里为了说明是“可能性”举得例子小于1)。Logistic Regression定义的最优跟SVM不一样,Logistic Regression先在线性模型的结果上套一个softmax函数,把结果压缩到[0,1]的范围内,表示概率,然后和真实结果计算交叉熵cross entropy,交叉熵越大,交叉熵损失函数越小越好。这里引入的损失函数(loss function/costfunction)实际上就是对”最好的”一种数学表达。比如SVM的损失函数就是

损失函数的意思就是模型当前的状态越偏离我定义的”最优”,损失函数就越大,这样找最优的模型就是对损失函数的最小化。

3.如何搜索到最优模型

我们现在已经知道机器学习就是在我们的假设空间找到一个最优的模型,最优就是损失函数最小化。如何做到损失函数最小化就对应我们要解决的”如何搜索到最优模型”。 我们知道机器学习现在就是在不断的调节参数,直到loss function最小。也就是说的每一次变动都会导致的变动。这里引入微积分,计算Loss function的梯度

梯度表示当前状态下,W每增加dW,b每增加db,损失函数增大的幅度,如果我每次让W,b都按照dW,db的幅度减小,那么损失函数就对减小一定幅度。因此学习/训练过程可以表示为

learning_rate通常是一个很小的数,这样避免学习幅度过大,到不了最优的点。

总结

机器学习的问题非常复杂,但是复杂主要体现在:要解决复杂问题需要的模型也要复杂,复杂模型带来了更多的参数,更多的数据需求,更大的运算能力,在我们设计假设空间时又有很多hyperparameter需要设置等等。 我们面临一个新的机器学习问题时,我们需要思考的是:

1.我用多复杂的模型? 线性模型中一个超平面行不行?线性模型中多个超平面行不行?不行再做非线性模型,一个隐藏层的神经网络行不行?两个呢?十层呢?…(当然比选择模型更重要的往往还是找特征) 2.我对最优模型的定义是什么? 采用哪种损失函数?logistic哪种的的交叉熵?svm哪种的? 3.怎么找到最优? 梯度下降?其他方法?

以上三个问题的背后都有大量的理论支撑,学习这些理论,你会发现机器学习,深度学习就是一系列数学的,计算机的,统计学的工具的组合,如何用好这些工具不仅需要你对工具的理解,还需要你对领域知识的掌握,对数据或者业务需求的敏感。

在量化投资领域,机器学习更像是一套验证你投资思路的工具,我们不可能把他当成一个黑箱,输入一些训练数据,得到一个万能预测模型。不明确这一点很容易误入歧途。

后面我们会在这条机器学习主线的基础上引入一些例子,主要介绍工具的使用。使用的环境主要是Python+anaconda+theano。下次再更!

原文发布于微信公众号 - 量化投资与机器学习(ZXL_LHTZ_JQXX)

原文发表时间:2016-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

【干货】机器学习常用 35 大算法盘点(附思维导图)

【新智元导读】本文将带你遍历机器学习领域最受欢迎的算法。系统地了解这些算法有助于进一步掌握机器学习。当然,本文收录的算法并不完全,分类的方式也不唯一。不过,看完...

51470
来自专栏机器之心

深度 | 理解神经网络中的目标函数

选自Kdnuggets 作者:Lars Hulstaert 机器之心编译 参与:晏奇、李泽南 本文面向稍有经验的机器学习开发者,来自微软的 Lars Hulst...

35390
来自专栏企鹅号快讯

通俗理解神经网络中激活函数作用

推荐阅读时间8min~13min 主要内容:通俗理解激活函数,主要来自我在学习会的slides,讲解了激活函数的非线性能力和组合特征的作用 ? ? 下面我分别对...

24770
来自专栏云时之间

《统计学习方法》笔记

1:统计学习方法概论 1.1:统计学习特点,统计学习是关于计算机基于数据构建概率统计模型并运用模型进行数据分析和预测的一门学科。统计学习也称为统计机器学习 西...

35470
来自专栏云时之间

译文 朴素贝叶斯算法总结

在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是...

29590
来自专栏AI科技评论

学界 | 美图云联合中科院提出基于交互感知注意力机制神经网络的行为分类技术 | ECCV 2018

以往注意机制模型通过加权所有局部特征计算和提取关键特征,忽略了各局部特征间的强相关性,特征间存在较强的信息冗余。为解决此问题,来自美图云视觉技术部门和中科院自动...

12720
来自专栏null的专栏

图解机器学习总结——1、基本概念

序言:近期主要帮同事讲解《图解机器学习》,刚拿到这本书觉得内容相比较平常使用的机器学习算法,很多地方讲解得比较奇怪,在认真的读完后,觉得还是有很多重要的东西,因...

43180
来自专栏量子位

视觉目标检测和识别之过去,现在及可能

作者:李习华 知乎专栏:碧空的cv之旅 量子位 已获授权编辑发布 计算机视觉中目标检测、跟踪、识别是最基本的几个task,尤其又以检测最为重要和基础。同时基本上...

41570
来自专栏机器之心

深度 | 从Boosting到Stacking,概览集成学习的方法与性能

选自Statsbot 作者:Vadim Smolyakov 机器之心编译 参与:Jane W 集成学习(Ensemble learning)通过组合几种模型来提...

26480
来自专栏SIGAI学习与实践平台

关于感受野的总结

感受野是卷积神经网络里面最重要的概念之一,为了更好地理解卷积神经网络结构,甚至自己设计卷积神经网络,对于感受野的理解是必备的。

1.2K20

扫码关注云+社区

领取腾讯云代金券