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

查看之前文章请点击右上角 , 关注 并且 查看历史消息 所有文章全部分类和整理,让您更方便查找阅读


请在 页面菜单里查找

机器识别手写数字的问题早已经解决,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 上面第一个是谷歌的深度神经网络的模型,模型非常复杂,参数非常多,能学习的问题也更复杂,但是学习过程慢,需要大量的数据驱动,还需要高性能的运算能力


第二个模型非常简单,就是一条通过原点的直线而已,也就是说它的假设空间就是所有的 直线,训练过程是在所有的这些直线中搜索一条最好的,什么是”最好”?等下再说


我们现在可以知道的是简单模型能够学习的问题少, 这种模型只能把一个坐标系分成两部分,学出二分类问题,连三分类问题都学习不出来,甚至二分类的问题中 这条直线它都学不出来,因为假设空间里面根本没有这条直线


反观人家谷歌的模型就高大上了,模型复杂,可以学到k分类的问题,虽然我可能需要很多的数据,很多台计算机,但是至少我有学到的可能性


通过以上我们可以看到,机器学习模型假设空间的选择需要在计算效率和待解决问题的复杂度之间trade off,解决简单问题,我们需要简单的模型,这样能学习到表现好的模型,并且计算效率高


复杂问题上复杂模型,保证我们可以学到东西,但是要更多的数据和计算资源训练


2.假设空间内哪一个才是最优? 通过上面的介绍我们现在知道,机器学习问题需要现有基本假设,然后在假设空间里面做搜索,找到最优的模型


那什么才是最优? 我以线性模型为例

我的输入可以转化成大小为1*784数组,我们可以理解成有784个特征,我们给每一个特征打分,得到最终结果就表示分到某一类的可能性有多大


比如我们判断数字是不是0, 同理,判断数组是不是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


下次再更! 后台 回复下 列关键字,更多惊喜在等着 你 【区分大小写】 1.回复 每周论文 获取Market Making论文分享 2. 回复 matlab量化投资 获取大量源码 3. 回复 每周书籍 获取国外书籍电子版 4. 回复 文本挖掘 获取关于文本挖掘的资料 5. 回复 金融数学 获取金融数学藏书 6. 回复 贝叶斯Matlab 获取NBM详解与具体应用 7.回复 AdaBoost 获取AdaBoost算法文献、代码、研报 8.回复 数据包络分析 获取 选股分析 源码 9.回复 SVD 获取数据预处理之图像处理的方法 【过往文章】 0. 【机器学习】支持向量机的概念与运用初探 1 . 【Python】金融应用中用matplotlib库实现的数据可视化 2 . 【Python】信息熵和在决策树中的运用(附源码) 3 .【论文分享】因子模型是否具有良好的预测性? 4 .【Python机器学习】数据预处理——图像压缩与线性代数 5 .【Matlab量化投资】用数据包络分析和基因算法进行选股分析?你get了吗!(附源程序) 6 .【机器学习课程】经典算法之——AdaBoost在量化投资中的应用(附代码和很多论文资料) 7 .【论文分享】Market Making论文分享 8. 【机器学习 课程】深度 学习与神经网络系列之绪论介绍 9. 【Python机器学习】系列之线性回归篇【深度详细】 10. 【Python机器学习】系列五决策树非线性回归与分类(深度详细附源码) 11. 【每周研报干货】各大券商研报免费分享(附下载链接) 12. 【每周书籍干货】国外近期深度学习与机器学习书籍电子版——你知道一本买来好多刀啊! 13. 几种编程语言的优缺点 14. 【Python机器学习】系列之从线性回归到逻辑回归篇(深度详细附源码) 15. 【Python机器学习】系列之特征提取与处理篇(深度详细附源码) 16. 【最强干货】关于文本挖掘的资料(文献,报告,策略,代码) 17. 机器学习的前期入门汇总 18. 【深度原创研究】分级基金下折全攻略(一) 19. 【深度原创研究】分级基金下折全攻略(二) 20. 【知识食粮】最新华尔街牛人必读书籍排行 21. 通过 MATLAB 处理大数据 22. 【扎实资料干货分享】Python、研究报告、计量经济学、投资书籍、R语言等!(Book+Video) 23. 机器学习在统计套利中的应用 24. 量化投资修行之路 25. 统计套利在股指期货跨期套利中的应用:基于协整方法的估计 26. 股指期货跨品种套利交易 27. 沪港通股票统计套利:基于BP神经网络 28. 机器学习到底在量化金融里哪些方面有应用? 29. 【Matlab机器学习】之图像识别 30. 【干货分享】Python数据结构与算法设计总结篇 31. 基于Python的股票数据接口调用代码实例 32. 基于Python爬取腾讯网的最热评论代码实例 33. 卷积神经网络反向传播推导 34. 深度学习项目 35. 混沌分形理论 36. 【Python】基于情感词典进行情感分析(附代码) 37. 基于技术交易规则的动态模型股票价格(附论文和Matlab源程序)




欢迎投稿 职场/创业方向. 邮箱wangfzcom(AT)163.com:王夫子社区 » 【机器学习】机器到底在学习什么?

    标签:

点评 0

评论前必须登录!

登陆 注册