前言
人工智能起源于1956的达特茅斯会议,机器学习则是其中的开宗立派的存在,我们都知道,人工智能的三驾马车分别是数据、算法和算力,从1956年到2008年,我们不断的发现更优秀的算法模型,但一直困苦于数据和算力的限制,整个人工智能的研究仍处于艰难前进之中,事情的转折点则在2008年以后,得益于前面几十年的互联网发展所积累的海量数据,以及英伟达GPU在并行计算(特别是张量运算)上的极高效率,我们在数据和算力方面取得了突破性进展,之后到了2012年时,由辛顿及其弟子所提出的AlexNet在ImageNet图像识别挑战赛中取得压倒性胜利,人工智能第三次复兴由此开始了,这一次我们取得了许多令人惊喜的成就,并且加速了工程化实践进程,因为许多此前受限于条件而无法验证的想法,终于得以实现和验证。
我主要想阐述三个问题,什么是机器学习、为什么要使用机器学习以及如何运用机器学习。
1.什么是机器学习?
机器学习(Machine Learning)是人工智能的一个重要分支,”机器学习“一词是在1959年由阿瑟·塞缪尔(Arthur Samuel)提出。
关于机器学习目前没有一个公认的定义,但是我们可以从诸位人工智能先驱的描述中,窥见前人对机器学习的认识。
机器学习是一个研究领域,让计算机无须进行明确编程就具备学习能力。
——阿瑟·塞缪尔(Arthur Samuel),1959
一个计算机程序利用经验E来学习任务T,性能是P,如果针对任务T的性能P随着经验E不断增长,则称为机器学习。
——汤姆·米切尔(Tom Mitchell),1997
机器学习,就是一种从经验中学习关于某类任务和该任务的执行性能衡量参数,并且性能衡量参数会随着经验的增加而提高的计算机程序。
——汤姆·米切尔(Tom Mitchell),1997
举一个经典的例子,我们都有一个电子邮箱,在Email客户端上,我们观察会发现在收件箱有收到的邮件,同时在垃圾邮件中也有收到的邮件,我们怎么去区分一封邮件它是否应该标记为垃圾邮件?我们来寻找T、P、E分别是什么?
任务T:分类邮件是否为垃圾邮件
性能P:垃圾邮件分类的正确率
经验E:学习邮件的标记特点和习惯
以下是我个人的看法,我们姑且可以认为,我们希望设计一个算法,通过输入从现实世界经过规范化处理的数据,并且可以考虑是否给数据打标签,算法通过学习输入的数据,得到了经验,而我们主要是想让它能够很好的拟合现实情况,去预测目标的概率。
2.为什么要使用机器学习
那我们为什么要使用机器学习呢,那就要对比传统编程和机器学习的区别。
|
| 传统编程 | 机器学习 |
|---|
| 核心逻辑 | 规则 + 数据 = 答案 | 答案 + 数据 = 规则 |
| 如何工作 | 编写明确的规则,计算机执行规则处理输入数据并按既定规则输出结果 | 计算机从已有的输入的数据中学习规则,利用这个规则来处理新的输入数据 |
| 适用场景 | 规则明确、逻辑清晰的问题 | 规则模糊、复杂或未知的问题 |
2.1传统编程
在传统的编程范式中,通过编写程序,给定输入并计算,就会得到可预期的结果。
2.2机器学习
在机器学习中,会在给定输入和预期结果的基础上,去拟合数据得到规则(模型参数),基于规则去泛化处理新的输入,得到预期结果的准确率。
3.如何运用机器学习
3.1机器学习工程生命周期
定义问题与目标
数据收集与标注
数据预处理与特征工程
选择模型预训练
模型评估,效果不好回到3或4
模型部署与上线
持续监控与维护
运用机器学习并不是上述一个线性的流程,而是一个不断迭代的循环,我们可能要在“特征工程”和“模型训练”反复多次,不断调整参数去拟合数据,却要警惕欠拟合和过拟合,目标是让其正常拟合数据,欠拟合说明模型没有很好的学习到数据的特征表示,而过拟合则说明模型学的太好了,变成了教条主义,不能去泛化新的数据。
3.2 机器学习分类
| 学习范式 | 任务类型 | 特点 |
|---|
| 有监督学习 | 分类/回归 | 训练数据集有标签。预测离散的类别标签/预测连续的数值输出。 |
| 无监督学习 | 聚类/降维/关联规则 | 训练数据集无标签 |
| 半监督学习 | 推荐 | 有一部分数据集有标签 |
| 强化学习 | 决策序列 | 智能体通过与环境交互,根据获得的奖励/惩罚学习最优策略。 |
3.3机器学习应用示例
鸢尾花分类(分类任务)
波士顿房价预测(回归任务)
检测信用卡欺诈(异常检测)
基于客户的购买记录来对客户进行分类(聚类任务)
4.后记
我知道我现在写的还不够好,而我很早之前就想开始写一些机器学习的文章,去总结和梳理我学到的关于机器学习的知识,但是却陷入觉得自己学的还不够好,故而不敢动笔的困境,我觉得一直这样不是办法,我希望尝试先去写,然后继续补充,继续改,理论总是没那么有趣的,下一篇就开始实践了。
5.参考资料
《人工智能简史》尼克
刘宇波机器学习:https://github.com/liuyubobobo/Play-with-Machine-Learning-Algorithms.git
Python机器学习:https://github.com/rasbt/python-machine-learning-book-3rd-edition
机器学习实战:基于scikit-learn、keras和tensorflow:https://github.com/ageron/handson-ml2