二十八. 机器学习

78 阅读7分钟

1. 入门

1.1 机器学习的定义 一

  • Machine Learning
  • 1959年 ARTHUR ASMUEL给出的定义.
Machine Learning is Fields of study that gives computers the ability to learn without being explicitly programmed.

  • 什么叫做 '非显著式编程' ? 我们让计算机自己总结规律的编程方法,叫做非显著式编程.
  • 非显著式编程 通过数据,经验自动的学习, 完成我们交给的任务.

1.2 机器学习定义二

  • 1998年 Tom Mitshell , 他的书 Machine Learning,是第一本成熟的教科书.
  • 书中对机器学习的定义如下:
A computer program is said to learn from experience E with respect to some task T and some performance measure P. if it's
performance on T, as measured by P, improves with experience E.


任务T => 编写计算机程序(如区分菊花和玫瑰)
经验 E => 一大堆菊花和玫瑰的图片

识别率: Recognition Rate, 让更多的菊花识别为菊花,让更多的玫瑰识别为玫瑰. 把识别的正确率简称识别率
识别率作为性能指标.

根据Tom Mitshell的定义,机器学习就是针对识别菊花和玫瑰这种任务,构造某种算法.

这种算法的特点: 当训练的菊花和玫瑰越来越多的时候, 也就是experience越来越多的时候,识别率Performance Measure 也会越来越高

据经验E来提高性能指标P的过程, 是一个典型的最优化的过程.那么数学中各种最优化的理论都可以应用到其中.

数学在现代机器学习中占有重要的地位.

1.3 这里有四个教计算机学习的任务

  • 教计算机下棋
  • 教计算机识别某个邮件是否是垃圾邮件.
  • 教计算机人脸识别. 教计算机通过人脸的图像,识别这个人是谁.
  • 教计算机驾驶机动车.
这个四个任务的经验E是什么? 性能指标P又是什么?
提示: 经验E和性能指标p是由设计算法的人设计的.
      没有标准答案,如果由你来设计算法,它们分别是什么呢?

1.4 机器学习任务的分类

划分的标准是经验E:
    (1)为训练数据打标签(Labeling for training data), 我们输入到计算机中的经验E 就是这些训练样本以及它们对应的标签的集合. 很多时候为数据打标签需要繁琐的人工. 
    例如,现在的人脸识别系统,需要数千万张带有标签的人脸图片. 这经常要耗费上万个小时. 
    因此近年来为数据打标签成为一个独立的行业.
    这一类所有的经验E都是由人工采集并输入进计算机的. 我们把这一类输入计算机训练数据 同时 加上标签的机器学习,称为监督学习(Supervised Learning)
    (2) 经验E 是由计算机与环境相互的互动获得的, 计算机产生行为 同时获得这个行为的结果.
    我们的程序只需要定义这些行为的收益函数(Reward function), 对行为进行奖励和惩罚.
    同时我们需要设计算法,让计算机自动的通过 改变自己的行为模式,去最大化收益函数.完成机器学习的过程.我们把这一类机器学习的任务叫做强化学习(Reinforcement Learning). 意思就是说让计算机通过与环境的互动逐渐强化自己的行为模式.
    
    总结来说: 机器学习算法,分监督学习和强化学习两类.
    
    (3)监督学习进一步细分
    (3.1)根据数据标签 存在与否的分为3类:
    传统的监督学习(Traditional Supervised Learning) 
    非监督学习(Unsupervised Learning) 
    半监督学习(Semi-supervised Learning) 
    
    如果每个训练的数据都有对应的标签,那么就是传统的监督学习.在传统的监督学习中,我们会学到的算法包括(支持向量机support vector machine, 人工神经网络 neural networks, 深度神经网络Deep Neural Networks)
    
    如果所有训练的数据都没有对应的标签,那么就是非监督学习.
    为什么我们可能通过没有标签的训练数据获得类别信息呢?
    我们需要假设: 同一类的训练数据在空间中距离更近. 我们可以根据样本的空间信息,将计算机把它聚集为两类. 从而实现没有标签的机器学习.
    在非监督学习算法包括(聚类Clustering, EM算法Expectation-Maximization algorithm, 主成分分析Principle Component Analysis)
    
    如果训练数据中一部分有标签,一部分没有.就是半监督学习.
    通过少量的有标注的数据 和 大量未标注的数据,一起训练一个更好的机器学习算法,成为了机器学习领域的热点之一.
    
    (3.2)另一种分类方法是基于标签的固有属性.我们可以将监督学习分为 分类Classification 和 回归Regression 两个类别. 
    如果标签是离散的值我们叫分类,  如果标签是连续的值我们叫回归.
    例如人脸识别就是分类问题,是离散的.
    房价的走势是连续的, 还有预测股票,温度,年龄等问题也是回归问题.

1.5 机器学习算法的过程

(1)
机器学习的第一步: 特征提取Feature Extraction
特征提取是指通过训练样本获得的对机器学习任务有帮助的多维度数据.
机器学习这门课程的重点不是研究如果提取特征, 而是假设在已经提取好了这么多特征的前提下,如何构造算法获得更好的性能.
(2) 对特征进行取舍,我们把这一步叫特征选择(Feature Selection)

1.6 哪种机器学习算法更好?

  • 1995年,D.H.Wolpert等人提出没有免费午餐定理No Free Lunch Theorem.
  • 这个定理讲的是: 任何一个预测函数,如果在一些训练样本上表现好,那么必然在另一些训练样本上表现不好, 如果不对数据在特征空间的先验分布有一定假设,那么所有的算法表现是一样的.
  • 我们在设计机器学习算法的时候有一个假设,在特征空间上距离接近的样本,他们属于同一个类别的概率会更高.
  • 这个假设有道理吗?
  • 机器学习本质是通过有限的已知数据,在复杂的高维特征空间中预测未知的样本. 因此再好的算法也存在犯错误的风险. 没有放之四海而皆准的最好算法.

1.7 总结

当我们学习完这门课程之后,我们能够做什么?

编程大作业的情况统计?
人脸识别, 人脸性别年龄估计?
下五子棋?

2. 支持向量机

  • 没有午餐定理告诉我们,没有普适的,放之四海而皆准的算法.

  • 但是人们在长期研究和实验中,总结出了能够适应大多数应用场景,相对好的算法.

  • 今天我们就从最好的机器学习之一 '支持向量机' 学起.

  • Vladimir Vapnik, 它是由俄罗斯统计学家和数学家Vladimir Vapnik在1995年发表和创造的. 有证件表明他在上个世纪70年代就已经创造了 支持向量机的 主要理论框架. 但由于冷战时期,前苏联和西方世界的对立,西方的学术圈并不知道他的研究.

  • 上个世纪90年代初前苏联解体Vapnik来到美国,他逐渐将自己的理论发表于欧美主流的学术期刊上. 获得了大家的认可.

  • 线性可分: Linear Separable, 存在一条直线

  • 线性不可分: Nonlinear Separable,不存在一条直线 能将圆圈和叉分开.

  • 超平面Hyperplane