百科问答小站 logo
百科问答小站 font logo



机器学习到底是什么,如何使用这项技术? 第1页

  

user avatar   yang-tong-12 网友的相关建议: 
      

明白机器学习是一种算法,想要了解这种算法就要知道它和以往的算法有什么区别。

举个例子,过去在实现人脸识别技术上是通过人为在程序中对每个人脸图像进行区域划分,找到人的五官,然后计算五官尺寸,然后跟数据库对比,数据库中也全部是五官尺寸数据。这样做的好处是人很容易理解这个过程,也可以通过修改具体参数来调整识别能力。简单来说,算法越复杂,包含数据越多,识别出来的精确度相对就更高。

机器学习换了另一种思路,程序员不再写明机器如何做判断,而是通过输入大量人脸图片,然后告诉程序这个判断是正确还是错误的,一开始的错误率当然很高,猫和狗和人都区分不出来,就像傻子一样数据乱飞,但是随着数据越来越大,程序不断根据设定来调整自己的计算系数,直到最后这些系数能够精确判断随意输入的图片是什么。

如果这时候你再研究他的算法可能会惊异的发现原来区别不同人的方式不是看五官,而是看发际线的位置和发际线形状。这是大量运算后得出的最明显差异。对于机器来说,他是不知道这个到底是什么的。对他来说只是一堆数据而已,而他只是找到了这所有数据中最不同的部分,次不同的部分等等。

说的更粗浅一些,以前编程是看你怎么写公式,电脑只要把接收到的数据代进去算一遍然后给你结果就好了!机器学习不同的是我把数学运算法则和数学定理写好,然后不断告诉你我输入得数和最终的正确结果是什么。电脑通过不断重复试错,找到一个最适合的运算公式。当然执行过程要比这个复杂得多得多的多得多……

补充一些小关点吧!深度学习(deep learning)属于机器学习(machine learning)的范畴下,而且是其中相对简单的部分,而深度学习又属于人工智能AI中一个小范畴。而且目前的机器识别主要用于识别,也就是帮助人类从繁杂的数据中挑选规律进而得出结果的这个等级。更简单的说,是从海量数据中得出有规律的简单结果。而人类的思维特征能从简单事物推论出复杂结论,并且指导行动。比如,机器学习可以通过数据练习后帮你判断什么样的茶壶好卖,但是并不能帮你设计茶壶。机器学习能够识别你的床单是否平整但是不能帮你铺床。所以从这个角度,机器学习和电影中的机器人三大定律什么的不是一个物种,当前人类谈惧怕AI实在有点多虑。

这个只是我了解的粗浅角度,如理解有误,望大神指正!


user avatar   chen-kai-yun-68 网友的相关建议: 
      

简单来说:

编程的技术是

问题 —> 算法 —> 结果

遇到问题,提出算法,得到结果

机器学习

问题 —> 结果 —> 算法(方法)

遇到问题,知道结果,通过机器学习得到最优的算法(不停用 training data建立模型然后和 testing data 比较准确率)

虽然很多时候我们并不知道原理(带了一堆你认为无关的变量后准确率高了很多)但是确实好用


应用上来说:银行的信用评级系统(芝麻信用分之类) google精准投放的广告,都是机器学习的应用了


有一定算法基础可以用weka自己试试看


user avatar   breaknever 网友的相关建议: 
      

1. 人工智能与机器学习

一个常常让大众感到困惑的问题是:人工智能(AI),机器学习(ML),深度学习(DL),机器视觉(CV)以及自然语言处理(NLP)之间是什么关系

从科普角度粗略地说,人工智能涵盖了其他所有概念[图1],而机器学习是人工智能的一个子方向,而深度学习又是机器学习中的一类方法。至于机器视觉自然语言处理,它们是人工智能领域的两个具体应用,而且往往会用到深度学习。

2. 什么是机器学习?

越是简单的概念其实越难解释。比如有人提到机器学习问题事实上是一个「优化问题」,有人认为是机器学习是一个「编程概念」,也有人认为现阶段的机器学习是「统计推断」。

从不同的角度看,这些说法都有道理。我个人比较喜欢Tom Mitchell对于「学习任务」的定义[1]:

每个机器学习都可以被精准地定义为:1) 任务T;2) 训练过程E;3) 模型表现P。而学习过程则可以被拆解为「为了实现任务T」,我们「通过训练过程E」,逐步「提高表现P」的一个过程

比如我们想要做一个模型来判断一张图片是猫还是狗(任务T)。为了提高模型的准确度(模型表现P),我们不断给模型提供图片让其学习猫与狗的区别(训练过程E)。在这个学习过程中,我们所得到的最终模型就是机器学习的产物,而训练过程就是学习过程。「机器学习」和「人类学习」是可以做类比的。套用刚才的公式:为了在高考中得到高分(任务T),小王每天做10套模拟题(训练E),并不断参加模考检测自己的错误率(评估P)。

但除了相似性以外,机器与人类在学习过程中也有很多差异:

  1. 机器可以标准化学习过程,并提取出了学习结果(模型),使得结果可迁移可复制。而人类的知识往往迁移成本更高,比如小王高考得到了高分,即使可以培训,但他没法把这个秘诀直接传授给小张。
  2. 机器可以从大量数据中进行学习,而人类则有更大的限制。随着硬件发展和数据量累计,机器学习模型可以从海量数据中学习,而人类的大脑并不能做到这一点。但换个角度看,人类最擅长的就是小样本学习并进行举一反三,比如看两张猫狗图片就能大致有个概念,而机器则往往需要海量数据才能做到。
  3. 机器更加擅长准确定义问题,而人类更擅长复杂且模糊问题。因为现阶段模型的限制,机器学习更擅长定义清晰的问题,比如是猫还是狗,是高还是矮,在局部问题上表现出众。而人类更擅长是做出复杂情况下判断,拥有更好的“全局观”。
  4. 值得一提的是对于同一任务,机器和人类的解决思路不同。比如分辨猫与狗,人类可能会依靠舌头的位置,而机器从数据中可能学到的显著差别是瞳距鼻形等(只是假设)。

机器与人类的学习过程中有很多差别,上面只是其中的一小部分。比较显著的差别是现阶段的机器更适合简单问题、大量数据的高效且准确的预测,而人类更适合复杂状况下面临有限数据做出决策在可预见的未来,我们依然还是需要两条腿走路,让机器和人类做各自擅长的事情,不能单纯的说谁更好。其实结合人类知识与机器的学习能力是非常自然的想法,比如现在比较流行的主动学习(active learning),比如让机器学会阅读从人类知识库中收集知识,比如人机互动(HCI)与机器学习的交叉研究等。

3. 机器学习任务的复杂度

前面提到了机器学习的最终产物往往是一个「模型」。因此从另一个角度看,机器学习其实是在「寻找一个映射函数 ,使得输入 经过后得到期望的输出 ,也就是 」。继续拿猫狗分类为例,我们希望输入 (猫与狗的图片)之后得到正确的输出 (它是猫还是狗),此时学习的过程就是寻找正确的判别器的过程。

如果我们预先假设应该符合 形式,那么学习过程就是确定a与b取值的问题。这也是为什么机器学习也可以被理解为优化问题或者参数寻优的过程。在求解最优参数时,往往没有闭式解(closed-form solution),即很少会得到 这种明确的答案。因此需要用各种优化算法求解,且大部分优化问题是无法得到最佳答案的,这也是为什么我们很少会得到「完美的机器学习」模型

通过上面这个例子,我们可以看到机器学习成功与否取决于多个因素:

  • 任务T的定义是否明确,有多复杂。学习难度随着任务复杂度上升,比如分辨图片是 就比 更加复杂。
  • 训练E的难度,比如有多少可用数据(一般而言数据越多越好),训练开销有多大,硬件是否能够支持。随着任务复杂度上升,我们对于正确模型的假设就越复杂,所需要搜索和寻优的空间就越大。
  • 评估标准P是否适合,如果选择了不适当的评估可能南辕北辙。比如分辨猫狗时,评估是否能正确识别图片中动物的数量是错误的。随着任务的复杂度上升,定义评估标准也会更加复杂

不难看出,机器学习中的每个环节都互有关联。而且在整个过程中,我们不可避免地会引入各种各样的人为先验(代入我们的假设)。举个例子,我们往往基于经验提出对模型的猜想,比如猜测正确模型是一个二次函数,形式为 ,但真实的情况可能是 ,那不可避免的我们就引入了人为的偏差(bias),这样再怎样训练都无法学习到完美模型。同理,即使我们对于模型有正确的假设,但如果数据量不够,也很难寻找到最优参数。另一个常常被人挂在嘴边的机器学习问题是过拟合,也就是说在学习过程中模型“死记硬背”,却没有发现数据中真正核心的部分只记住了表象。就像小王背会了很多往年高考题的答案,毫厘不差,但上了真正的考场依然低分,因为他并没有学会解题而只是背住了训练题的答案。

从理论角度看,我们有PAC学习理论(Probably Approximately Correct)来给定某个学习任务的过拟合误差的边界(边界)。PAC中给出的边界取决于:1) 训练数据的数量;(2) 模型假设空间的复杂度等。而在实际场景中,衡量一个学习任务的复杂度却不容易,比如训练数据并非是从真实数据分布中随机产生。即便如此,我们依然可以大致得到这个结论:简单且正确的模型假设+大量的训练数据=优秀的机器学习模型,这为我们应用机器学习方法打下了一个基础。

4. 如何应用机器学习?

如何让机器学习落地到各行各业是一个非常有价值但同时充满挑战的任务。除了上文提到的理论基础外,我们还需要选择合适的任务来实践,并不是任何问题都适合应用机器学习。从我为不同行业客户提供咨询的经验来看:

  1. 首先要解决的是认知偏差。我们首先要理解「机器学习不是万灵药,不是魔法,更不是诈骗」,它不会一期之间让所有人失业,也不只是噱头。所以当应用机器学习技术时,给它时间,要有耐心,不要认为有过高期待也不必不屑一顾。
  2. 承接上一点,应用机器学习的过程应该是迭代式的。我们一般推荐「半自动系统」或者「混合系统」,即结合已有的「人类经验」与「机器学习模型」,而不是一步到位。举个例子,我们现在想用机器学习方法优化信用卡反诈骗系统。那么比较好的实践经验是同时用现有的规则系统建立的机器学习系统,并从中找到平衡点。如果二者输出结果相同,那么接受其判断,否则人为验证,并重新训练模型。随着训练数据越来越多且准确,这套系统也会越来越智能,可以逐步淘汰现有的系统。
  3. 有了合理预期的前提下,要选择适当的方向来应用机器学习模型。一般情况下,我们建议从「问题定义明确,数据储量充沛,能提供关键价值」的方向入手,每次尝试解决一个重要小问题。比如预测一个公司的营收就比预测它的股价发展要容易一些,因为后者还会受到更多复杂因素的影响。选择对的问题比努力有时候还要更重要。
  4. 利用现有工具,避免重复开发。市面上已经有了很多针对各种任务的工具库和成功的解决方案。比如通用机器学习工具库Sklearn,更偏向深度学习的TensorFlow和PyTorch,分布式机器学习PySpark,图形式(无需编程)的平台ML Studio,各种针对视觉、自然语言的API服务[2,3]。使用这些已有的成熟的工具,很多时候可以快速判断是否值得投入使用机器学习。

5. 总结

总结来看,机器学习可以被看做是一种与人类思维有异曲同工的学习方法,各有擅长之处。进入二十一世纪后,随着硬件与数据量的发展,高精度的机器学习模型正在变为可能,特别是在机器视觉和自然语言领域已经有了很多突破。即使如此,我们也还是要认识到它不是个新概念,也不会让每个人都失业。从实际角度出发,机器学习模型的结果跟问题的复杂度、可用数据量,以及正确的评估方法都有很大的关系。从应用角度出发,传统企业应该从「问题定义明确,数据处理大,利润率高的问题」出发,引入混合模型,即同时使用人为的经验与机器学习进行预测。从降低成本的角度出发,要善用已有的工具与成熟的模型,快速迭代。

而在科技快速发展的年代,我也推荐大家对机器学习有更多了解和学习,欢迎参考「微调:未来 3~5 年内,哪个方向的机器学习人才最紧缺?」「 如何用3个月零基础入门机器学习?

[1] Mitchell, T., 2017, Dec. Key Ideas in Machine Learning. cs.cmu.edu/~tom/mlbook/

[2] Image Processing with the Computer Vision API | Microsoft Azure

[3] cloud.google.com/vision




  

相关话题

  如何看待网传依图科技集体降薪 10% 以上?还有哪些信息值得关注? 
  有哪些你看了以后大呼过瘾的编程书? 
  为什么很多理工科出身的优秀的学生最终选择做咨询或金融?工作几年后对当时的选择是否感到一丝遗憾? 
  如何看待 Uber 发生全球首例自动驾驶致死事件? 
  参加kaggle竞赛是怎样一种体验? 
  如何用python来统计MacPro的圆圈个数? 
  计算机是如何计算逆矩阵的? 
  现在tensorflow和mxnet很火,是否还有必要学习scikit-learn等框架? 
  人工智能将会如何影响和服务医疗行业?未来十年会有哪些值得期待的应用? 
  写一个操作系统内核有多难?大概的内容、步骤是什么? 

前一个讨论
如何看待网红 Saya一 涉嫌殴打孕妇一事?
下一个讨论
如何看待杭州一小伙去理发店提发际线修鬓角被收费四万一事?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利