查看往期文章请点击右上角,关注查看历史新闻
所有文章都经过分类和组织,使您更容易查找和阅读。 请在页面菜单中找到它。
手写数字的机器识别问题早已得到解决,MNIST数据集中机器识别的准确率已经超过99%。 事实上,这些问题还没有通过硬编码一一解决,我们不得不承认机器确实学到了一些东西。 但我们好奇的是机器学到了什么? 它是如何学习的?
问题设置
我们现在有 60,000 张手写数字图片,已在 MNIST 数据集中进行了标记。 每张图片都可以看成一个(28,28)的二维域,如下图所示。 我们需要从这些训练数据中预测未标记的数据。
思路
我们得到一张未知的图片,我们将它与训练集中的所有图片进行比较,我们找到训练集中与它最相似的图片,如果这张图片的标签是k,我们可以说我预测了未知的图片的手写数字也是k。 这种手写数字识别方法确实有效。 KNN算法稍微提升了这种方法,取得了90%以上的好结果。 我们能够使用这些方法非常快速地检测到问题。
首先,我学到了什么? KNN算法实际上并没有学习任何东西,它只是存储了已知的数据,没有真正的“训练”过程,所以我们每次预测都需要大量的估计,我们拿出一个训练数据集来与训练数据集进行比较需要预测的事情需要大量资源。
另外,如果新的机器学习问题太复杂,例如识别人脸、对更复杂的图像进行分类,而我没有足够大的训练集怎么办? 虽然我对每个复杂问题都有足够的训练集,但当我预测时,它会带来更多耗时的问题来估计。
理想的训练情境是怎样的? 我的训练过程可能需要一些时间,一旦我完成训练,就需要非常快地做出预测。 例如,在新闻分类问题中,每天都会形成大量的数据,每天晚上也需要对大量的新闻进行分类,所以我们必须将预测时间限制在可控范围内。 另一个例子是量化策略中的预测。 如果需要一天的时间来预测未来三天的市场,这些模型就不可靠。 高频交易对时间的要求越来越严格。 如果下一步棋的预测过程需要30分钟,那是绝对不可能打败李世石的。
其实机器学习的过程应该大致分为三个步骤:
1. 做出基本假设(什么模型可能是正确的?),确定模型的空间:线性模型? 非线性模型? 简单的模型? 复杂模型?
2.什么是“最好”的定义模型?:损失函数Loss
3.如何找到最好的? :梯度增长法
1. 什么模型可能是正确的?
这是一个可能有效的模型:
这也是一个潜在有效的模型:=*input
第一个是微软的深度神经网络模型。 模型非常复杂,参数很多,能够学习的问题也比较复杂,学习过程比较慢,需要大量的数据来驱动机械效率高表示什么,需要高性能的计算能力。第二种模型很简单,只是一条穿过原点的直线,也就是说,它的假设空间是全部
直线,训练的过程就是在所有这样的直线中寻找最好的一条,哪一条是“最好的”? 我们稍后再说吧。 我们现在可以知道的是,简单的模型可以学习更少的问题,
这些模型只能将坐标系分为两部分,并学习二分类问题。 他们连三类问题都学不会,甚至二类问题也学不会
它甚至无法学习这条直线,因为它假设空间中不存在这样的直线。 另一方面,微软的模型又高又复杂,可以学习k分类问题,尽管我可能需要大量数据和很多计算机,但至少我有学习的可能性。
由上可知,机器学习模型假设空间的选择需要在估计效率和待解决问题的复杂度之间进行权衡。 解决简单的问题,我们需要一个简单的模型,这样我们才能学习到性能好的模型,估计效率也高。 复杂问题上的复杂模型确保我们能够学到一些东西,并且需要更多的数据和估计资源来进行训练。
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要求正确标签的分数至少比其他分数大1。 ,距离这些状态越近越好。
例如,预测结果为[0.01, 0.01, 0.9, 0.01….]的模型肯定优于[0.1, 0.1, 0.6, 0.05,…..](SVM的预测分数可以小于1,这里是为了说明“可能性”,举的例子都大于1)。 定义的最优值与SVM不同。 首先对线性模型的结果放一个函数,将结果压缩到[0,1]的范围来表示概率,然后估计与真实结果的交叉熵交叉。 交叉熵越大,交叉熵损失函数越小越好。 这里引入的损失函数(loss/)实际上是“最好”的物理表达。例如SVM的损失函数为
损失函数意味着模型的当前状态偏离我定义的“最优”越多,损失函数就越大,所以找到最优模型就是最小化损失函数。
3. 如何搜索最优模型
我们已经知道机器学习就是在我们的假设空间中找到一个最优模型,而最优模型就是最小化损失函数。 如何最小化损失函数就对应了我们要解决的“如何寻找最优模型”。
我们知道机器学习是不断调整参数,直到损失最小化。 也就是说每一个变化都会引起变化。这里引入微积分来估计Loss的梯度
梯度表示在当前状态下,W每减少dW,b减少db,损失函数就会减少。 如果我每次让W和b按照dW和db的范围减小,损失函数就会减小一定量。因此学习/训练过程可以表示为
一般是一个很小的数,以免学习范围太大而达不到最优点。
总结
机器学习的问题非常复杂,复杂性主要表现在:解决复杂问题所需的模型也复杂,复杂的模型带来更多的参数、更多的数据需求、更大的计算能力。 在我们的设计假设有空间的时候会有很多的设置等等。 当我们面对新的机器学习问题时,我们需要思考的是:
1. 我使用多复杂的模型?
超平面可以在线性模型中工作吗? 多个超平面可以在线性模型中工作吗? 不是,那么做非线性模型,有隐藏层的神经网络能行吗? 两个呢? 十楼呢? ...(事实上,寻找特征往往比选择模型更重要)
2. 我对最佳模型的定义是什么?
使用哪个损失函数? 什么样的交叉熵? 什么样的支持向量机?
3.如何找到最好的?
梯度增长? 其他方法?
上述三个问题背后都有大量的理论支撑。 学完这个理论后,你会发现机器学习和深度学习是一系列物理、计算机和统计工具的结合。 您对工具的理解还需要您掌握领域知识以及对数据或业务需求的敏感性。
在量化投资领域机械效率高表示什么,机器学习更像是一套验证你投资想法的工具。 我们不可能把它当作一个黑匣子,输入一些训练数据,得到一个通用的预测模型。 不知道这一点很容易误入歧途。
前面我们会在机器学习这条主线的基础上介绍一些例子,主要介绍工具的使用。 使用的环境主要是++。 上次更新啦!