什么是机器学习
机器学习出现之前:
编写算法规则,输入计算机,机器执行后输出结果。
举个栗子:垃圾邮件分辨
编写规则定义什么是垃圾邮件,新邮件根据规则去判定是否为垃圾邮件。
- 规则繁多,很难定义非常精准的规则。
- 规则可能在不断变化。
再举个栗子:分辨猫狗
人工定义无数的猫、狗特征,比如耳朵长度、斑纹、眼睛大小。。。
- 猫狗种类繁多,体态、颜色、斑纹、五官各异。
- 几乎无法用传统思路解决。
更多无数用传统方法解决的问题:人脸识别、语音识别、文字数字识别等。。。
人类如何学习?
随着年龄的增长,见闻的增加,不断吸取各类知识,对事物的判断力不断增加。
机器学习出现后
编写机器学习算法,输入计算机大量数据并训练出模型,机器根据模型去判断新的数据。
粗略的总结:
- 机器学习的方法性质和人类学习是很类似的。
- 人类的大脑很棒,可能只要见过几只猫或几只狗就能建立对猫狗的判断。
- 但人类凭借视觉,能够直接分辨出猫狗,但无法给出详细准确的解释。
- 机器很“笨”,需要喂给它成千上万张猫狗图片以及答案才能建立模型。
- 但机器很快,能够处理的数据量远远超过人类的能力边界,精确到猫狗图像的每个像素点从而做出判断。
机器学习的数据
一个非常著名的数据集:鸢尾花(Iris)
数据案例
- 共有150条鸢尾花数据
- 鸢尾花共有3种类型,每种类型50有条数据
- 每条数据均有4个维度属性:花瓣长度、花瓣宽度、花萼长度、花萼宽度
数据信息
- 数据的整体叫做数据集(data set)
- 每一行数据称为一个样本(sample)
- 除最后一列外,每一列均表达样本的一个特征(feature)
- 最后一列称为标记(label)
数学相关:
- 上例样本特征集合可以成为一个矩阵(matrix)
- 上例样本最后一列可以称为一个向量(vector)
- 通常用大写字母表示矩阵,小写字母表示向量
- 上例样本的一行特征可以表示为特征向量
- 通常数学中的向量都为列向量,可以转置后得到行向量
数据的可视化
将两类鸢尾花的前两个特征(萼片长度、萼片宽度)绘制在一个平面图内,可以得到以下图像:
- 两个特征可以在二维空间中表示,三个特征可以在三维空间中表示……1000个特征可以在1000维的空间表示
- 每个样本的本质是在特征所组成的空间中的一个点,这个空间叫做特征空间(feature space)
分类任务的本质就是在特征空间切分
特征也可以很抽象
- 黑白图像每个特征有0-255的灰度值
-
彩色图像则还要区分RGB三色的各灰度值
机器学习的主要任务
机器学习两大类任务:分类、回归
分类:
猫狗识别,垃圾邮件分类……
二分类:
- 判断邮件是垃圾邮件;不是垃圾邮件
- 判断发放信用卡有风险;无风险
- 一些算法只支持二分类任务
多分类:
- 数字识别,0~9
- 判断发放信用卡的风险评级,高、中、低
- 多分类的任务可以转换成二分类的任务,也有一些算法天然可以完成多分类的任务
多标签分类(高级):
- 比如可以将一张图片的内容划分到不同的标签下
- 左图将两个人分类到各自的标签下
- 右图将图片中的各个物体分类到更多的标签下,可以得出图片的语义
回归
回归最大的特点:结果标签列不是类别,而是连续的数字
- 房价预测
- 股票价格预测
- 学生成绩预测
回归和分类的联系:
- 有的算法只支持分类任务,有的算法只支持回归任务,也有算法同时支持分类和回顾任务
- 一些情况下回归任务可以简化成分类任务,比如:预测学生的成绩,但最终想得到的结果不是具体成绩,而是优、良、差等数字的集合,从而可以改用分类算法来解决
数学相关:
- 模型可以理解为一个函数f(x),输入的自变量x就是一个样本资料,输出则为函数的因变量y
机器学习方法分类
机器学习方法四大类:监督学习、非监督学习、半监督学习、增强学习
监督学习
给机器的训练数据拥有“标记”或“答案”,分类和回归任务都属于监督学习
- 分类:猫狗图片识别,图像已经拥有了标定信息是猫还是狗
- 回归:房价预测,市场已经积累了房屋的基本信息和最终的成交金额
无监督学习
给机器的训练数据没有任何“标记”或“答案”,聚类任务属于非监督学习
- 聚类:对没有标记的数据进行分类,由机器自行判断数据的相似度并进行划分
- 特征提取:如信用卡的评级和人的胖瘦无关,机器将自动将胖瘦从特征中去除,从而提取其他有用的特征
- 特征压缩:PCA(降维),如300 * 300像素的数字图像识别,可以使用PCA压缩至30 * 30个特征(后续会有解释),同时降维也更加方便人类的可视化
-
异常检测:自动检测出数据中具有较大偏差的异常点,从而保证绝大多数样本的一致性
半监督学习
只有部分数据有“标记”或“答案”
- 日常工作中会出现由于各种原因而产生的标记缺失
- 通常会先使用无监督学习手段对数据做处理,之后使用监督学习手段做模型的训练和预测,是前两者的结合
增强学习
根据周围环境的情况采取行动,根据行动的结果,学习行动方式
- 算法根据环境采取行动,会得到反馈,包括奖赏机制反馈和惩罚机制反馈,从而改进算法本身的行为模式,依次循环
- 适用于强人工智能模式的领域,如机器人(alphaGO)、无人驾驶等,发展领域越来越广,未来非常有前景
- 监督学习和半监督学习是基础
机器学习的其他分类
包括批量学习(非在线学习)、在线学习、参数学习、非参数学习
批量学习
一般的机器学习大多为批量学习,即模型为一次训练,不再将产出的预测结果或者新的样本投入训练
- 优点:简单,学习算法本身即可,不考虑投入生产环境后如何优化
- 问题:如何适应新的数据变化?
- 解决方案:针对数据变化较慢的场景,定时重新批量学习
- 缺点:每次重新批量学习,运算量巨大,不能适用于环境变化非常快的情况(如股价预测)
在线学习
整体的流程与批量学习大致相同,但每次用于预测的输入样例并不浪费掉,而是结合输出的正确结果再次投入模型训练
- 股价预测:可能每分钟都能拿到正确的股价,不断将新的基本面信息和新的股价投入模型训练迭代
- 优点:及时反映新的环境变化
- 问题:新的数据带来不好的变化,如竞争对手大量的恶意操作从而使错误的数据进入模型训练导致准确率下降
- 解决方案:需要加强对数据监控,如使用非监督学习进行异常检测
- 其他场景:也适用于数据量巨大,完全无法批量学习的环境
参数学习
先观察数据,假设数据符合一个统计模型(可以理解为函数),从而让机器去寻找函数中的参数
-
特点:一旦学到了参数,就不再需要原有的数据集
非参数学习
不对模型进行统计模型过多的假设,且预测的过程中,模型训练的数据集也要参与预测
- 非参数学习不等于没有参数:不将训练的过程视作建模,即不视作学习模型的参数,但在学习过程中依然需要有参数参与(后续会解释)
机器学习相关的哲学思考
数据为王?
2001年微软的论文显示,在数据集的量大到足够多时,算法之间的准确率并没有很大差别,一时间甚至有“数据即算法”的言论
- 数据确实非常重要
- 很多场景下的任务数据驱动
- 收集更多数据
- 提高数据质量
- 提升数据的代表性
- 研究更重要的特征
算法为王?
以AlphaGO ZERO为代表,从零开始,无数据冷启动,某些场景下即使没有数据,强大的算法也可以生成数据
- 再好的数据也要靠强大的算法驱动
-
未来算法的突破同样至关重要
如何选择机器学习算法
- 奥卡姆的剃刀原则:简单的就是好的
- 在机器学习领域,什么叫简单?
- 没有免费午餐定理:可以用严格的数学推导出,任意两个算法,它们的期望性能可能相同
- 具体到某个特定的问题,有些算法可能更好
- 但没有一种算法,绝对比另外一种好
- 脱离具体问题,谈哪个算法更好是没有意义的
- 在面对具体问题时,尝试使用多种算法实验对比是很重要的
其他思考
面多不确定的世界,怎么看待使用机器学习进行预测的结果?
- 人脸特征与犯罪率
- 未来会不会有机器伦理的学科?