不一样的程序猿■如何使用这项技术?,机器学习到底是什么( 二 )


?」 。 继续拿猫狗分类为例 , 我们希望输入
?(猫与狗的图片)之后得到正确的输出
?(它是猫还是狗) , 此时学习的过程就是寻找正确的判别器
?的过程 。
如果我们预先假设
?应该符合
?形式 , 那么学习过程就是确定a与b取值的问题 。 这也是为什么机器学习也可以被理解为优化问题或者参数寻优的过程 。 在求解最优参数时 , 往往没有闭式解(closed-formsolution) , 即很少会得到
?这种明确的答案 。 因此需要用各种优化算法求解 , 且大部分优化问题是无法得到最佳答案的 , 这也是为什么我们很少会得到「完美的机器学习」模型 。
通过上面这个例子 , 我们可以看到机器学习成功与否取决于多个因素:
?任务T的定义是否明确 , 有多复杂 。 学习难度随着任务复杂度上升 , 比如分辨图片是?就比?更加复杂 。
?训练E的难度 , 比如有多少可用数据(一般而言数据越多越好) , 训练开销有多大 , 硬件是否能够支持 。 随着任务复杂度上升 , 我们对于正确模型的假设就越复杂 , 所需要搜索和寻优的空间就越大 。
?评估标准P是否适合 , 如果选择了不适当的评估可能南辕北辙 。 比如分辨猫狗时 , 评估是否能正确识别图片中动物的数量是错误的 。 随着任务的复杂度上升 , 定义评估标准也会更加复杂 。
不难看出 , 机器学习中的每个环节都互有关联 。 而且在整个过程中 , 我们不可避免地会引入各种各样的人为先验(代入我们的假设) 。 举个例子 , 我们往往基于经验提出对模型的猜想 , 比如猜测正确模型是一个二次函数 , 形式为
? , 但真实的情况可能是
? , 那不可避免的我们就引入了人为的偏差(bias) , 这样再怎样训练都无法学习到完美模型 。 同理 , 即使我们对于模型有正确的假设 , 但如果数据量不够 , 也很难寻找到最优参数 。 另一个常常被人挂在嘴边的机器学习问题是过拟合 , 也就是说在学习过程中模型“死记硬背” , 却没有发现数据中真正核心的部分只记住了表象 。 就像小王背会了很多往年高考题的答案 , 毫厘不差 , 但上了真正的考场依然低分 , 因为他并没有学会解题而只是背住了训练题的答案 。
从理论角度看 , 我们有PAC学习理论(ProbablyApproximatelyCorrect)来给定某个学习任务的过拟合误差的边界(边界) 。 PAC中给出的边界取决于:1)训练数据的数量;(2)模型假设空间的复杂度等 。 而在实际场景中 , 衡量一个学习任务的复杂度却不容易 , 比如训练数据并非是从真实数据分布中随机产生 。 即便如此 , 我们依然可以大致得到这个结论:简单且正确的模型假设+大量的训练数据=优秀的机器学习模型 , 这为我们应用机器学习方法打下了一个基础 。 4.如何应用机器学习?
如何让机器学习落地到各行各业是一个非常有价值但同时充满挑战的任务 。 除了上文提到的理论基础外 , 我们还需要选择合适的任务来实践 , 并不是任何问题都适合应用机器学习 。 从我为不同行业客户提供咨询的经验来看:
首先要解决的是认知偏差 。 我们首先要理解「机器学习不是万灵药 , 不是魔法 , 更不是诈骗」 , 它不会一期之间让所有人失业 , 也不只是噱头 。 所以当应用机器学习技术时 , 给它时间 , 要有耐心 , 不要认为有过高期待也不必不屑一顾 。
承接上一点 , 应用机器学习的过程应该是迭代式的 。 我们一般推荐「半自动系统」或者「混合系统」 , 即结合已有的「人类经验」与「机器学习模型」 , 而不是一步到位 。 举个例子 , 我们现在想用机器学习方法优化信用卡反诈骗系统 。 那么比较好的实践经验是同时用现有的规则系统与建立的机器学习系统 , 并从中找到平衡点 。 如果二者输出结果相同 , 那么接受其判断 , 否则人为验证 , 并重新训练模型 。 随着训练数据越来越多且准确 , 这套系统也会越来越智能 , 可以逐步淘汰现有的系统 。


推荐阅读