机器学习(一)模型三要素

传统机器学习算法基础(一)

  • 一、机器学习三要素
    • (一)模型:
      • 1. 数学描述
      • 2. 假设空间
    • (二)策略:
      • 1. 量化误差
      • 2. 风险函数
      • 3.模型迭代要求
      • 4. 策略阶段要点
    • (三)优化算法:
      • 1. 普通参数
      • 2. 超参数
  • 二、深度学习改变了什么
    • 1、大规模数据性能提升可观
    • 2、隐式特征学习
    • -- AE

本文是对李航博士《机器学习方法》,邱锡鹏博士的《神经网络与深度学习》,吴恩达机器学习课程,小象学院邹博机器学习视频和网上一些资料的汇总笔记。机器学习博大精深难免有错漏,欢迎一起讨论学习。

一、机器学习三要素

一个机器学习方法由三要素组成:模型,策略和算法。通俗描述就是先圈定问题类型,再描述什么样的结果是好的,最后是如何通过计算机程序找到最好的结果。对每个模型的学习都要带着这三个问题。

(一)模型:

1. 数学描述

真实世界中的对象都可以从很多维度进行观测,比如房子可以从房价信息,面积,户型,位置,总价等等来描述。每个维度之间是有相关性的,数学上可以用一个未知的联合概率密度函数来描述,联合概率密度就是几件事同时发生的概率。而我们感兴趣的元素可能只是其中的一个,把感兴趣的元素用y表示,其他元素用x的向量来描述:
则联合概率密度函数为 f(x,y)
由概率的定义可得,所有可能事件加起来就是必然事件, ∑ f(x,y) = 1
根据x对y进行预测的过程,可以认为是求在x发生的情况下,y的条件概率,即为p(y|x) = p(x,y) /p(x) 【附1:贝叶斯系列之:贝叶斯概率,贝叶斯模型,贝叶斯学派】

2. 假设空间

由于条件概率的细节是完全未知的,模型的第一步是要界定出所有的备选可能,再通过样本数据在空间中选择最合适的那一个。所有可能组成的集合就被称为假设空间。
假设空间只有两种:

  • 线性模型
    y= w1x1+w2x2+…+wixi + b的形式.。
  • 非线性模型
    非线性的类型很多,以Θ表示某种非线性计算,比如求个指数,求个平方等等。
    • 最简单的形式:为y=wΘ(x)+b,(同线性模型一样,其中x可能是多个维度)。
    • 更复杂的形式:y = Θ(Θ(Θ(Θ(Θ(wΘ(x)+b)+b)+b)+b)+b)+b)。。。。。。这种结构看起来很复杂,但是用神经网络描述却非常合适。每一层括号的嵌套,都通过一层网络来实现,这样对每一层网络来说,要处理的信息变成了最简单的形式。

(二)策略:

策略阶段有两个问题,1是要如何将真实世界的样本描述在计算机中,也就是量化。2是如何把数据充分利用起来,在数据越多的情况下,让模型越准。

1. 量化误差

假设空间的备选方案太多了,一般先选一个作为开始模型(随机值或者参考先验知识)。策略阶段的任务是要量化每个模型的预测结果与真是值之间的差异,一般称每个样本的误差为损失函数(字母L表示)。

  • L的常见类型包括:
    – 01损失:计算对的为0,计算错的为1.
    – 平方损失:(Y-f(x))2 【附2:平方损失合理性证明】
    – 绝对值损失:|Y-f(x)| (为了方便求导计算时可以去掉绝对值符号,乘以一个带符号的项)

2. 风险函数

量化了单个误差之后,把样本的整体损失加在一起称为风险函数(字母R表示),假设每个样本的发生概率是p,总样本个数为N,则R = (Σp(xi)*L(xi))/N。
理想的策略是在模型完美匹配的时候,风险函数输出一个好结果,比如0,模型错误率很高的时候,风险函数输出一个坏结果,比如无穷大。

3.模型迭代要求

很容易想到的是,根据风险函数结果来调整模型。在数学上需要风险函数支持对每个参数的偏导。

4. 策略阶段要点

  1. 样本概率未知:
    样本的个数很多,几百万量级都是小意思。而每个样本的发生概率都是未知的,风险函数的计算方式却是需要这样的:R = Σp(xi)*L(xi),其中的p就是每个样本的发生概率。这个公式的直观理解就是经常发生的样本要准一点,不经常发生的有点错可以接受。实践中一般是直接把样本的损失函数平均,认为样本发生的概率就是实际发生的概率,当样本的量够大,且随机性可以保证时,确实可以这样,但是样本如果不是随机的,且数据量不够时要关注不同样本在期望风险中的权重。
  2. 过拟合
    如果以期望风险最小为唯一目标,有时候会出现一种明明在训练数据上误差很小,在其他数据集上却效果很差的情况,这就叫过拟合。过拟合是因为选用了太复杂的模型。
    机器学习(一)模型三要素_第1张图片如上图所示,在数学上给定九个点,一定有一个八阶函数可以完美经过这几个点,如图兰色的线就拟合的很好,期望风险甚至是0,但是肯定泛化性能很差。
    每个函数系数以N元模型为例,复杂的模型,往往系数的抖动幅度更大,可以考虑把系数作为损失函数的一部分,就可以同时优化模型和误差了。这种做法称为结构风险最小化(SRM structural risk minimization),而之前不带系数的方式称为经验风险最小化(empirical risk minimization)。结构风险最小化也被称作正则化(regularizer),模型复杂度在损失函数中的部分往往也被称为正则化项(一般用J(f)表达)。
    则损失函数最终形式为:R =(Σp(xi)*L(xi))/N + J(f) 。 【附3:结构风险最小、经验风险最小和极大似然估计、最大后验概率之间的关系】

(三)优化算法:

有了目标函数之后,只剩下最后一个问题了,如何得到让期望风险最小的参数,论文中经常会用min max单词来描述这一过程。
需要注意的是,机器学习中,不管是什么类型的损失函数,都转化成求最小值(如果损失函数越大越准确,可以先乘以一个负号)。
参数分为普通参数和超参数两种。

1. 普通参数

就是函数中的各种系数和常数项等,这些是通过样本一步步优化调整的。最常见的方式是梯度下降法:首先随机初始化一些参数,根据损失函数对每个参数的偏导,来迭代地优化参数。
梯度下降的优化方式有很多:比如提前停止,随机梯度下降(每个给样本都更新模型),小批量梯度下降(小部分样本计算完后更新一次模型)。

2. 超参数

是用来描述结构的,比如随机森林的抽样率,k-means的k是几,每次迭代的学习率等等。也就是调参侠的参,这些超参数的选择有很多trick。随着机器学习的发展,会有很多成熟的模型,实践性能差异的主要原因可能就是不同场景下超参数不一样。这部分的参数一般是手动预设的,框架中也有一些自适应的方式,但是总的来说都是通过试出来的。

二、深度学习改变了什么

以前也有神经网络,也有各种机器学习算法,为什么到了深度学习时代突然效果就变好了,可以大规模应用到各种领域上了呢。也许有人会说有了大规模的数据和更快的计算机,确实有一些原因,但是为什么不是所有算法的大爆发,只是深度学习一枝独秀呢?主要是有这两个优势:

1、大规模数据性能提升可观

机器学习(一)模型三要素_第2张图片
传统机器学习数据量到一定程度的提升有限,比如svm,非支持向量的数据再多也没用,深度学习数据越多一般效果越好。

2、隐式特征学习

  1. 传统特征学习 图像识别等计算,一般是要预先设计特征,比如扫二维码,要先找三个黑色框来定位,再开始识别。很多工业中的特征需要靠专家几十年的经验,每个场景特征都不同,需要占用大量的时间,这是有多少人工就有多少智能的时代。常用的有以下几种方式:
  • 特征选择
    – 每次选取信息量最大的特征,或删除信息量最小的特征。.或留下对模型正确率最有帮助的特征。【附4 信息增益 熵家族】
  • 特征抽取
    – 主成分分析(PCA):【附5:方差、协方差与相关系数】【附6:矩阵特征值分解】
    PCA分析的作用是将数据降维,同时尽量保持最大的方差。
    机器学习(一)模型三要素_第3张图片
    降维的操作可以在空间中理解成投影,假设所有样本空间投影在模为1的投影向量w,则每个样本点投影后可以表示成wtx(n) 。投影后每个样本的总方差为
    1 N ∑ \frac 1 N\sum N1(wtx(n) - wtx)2
    =wt Σ \varSigma Σw
    同时w需要满足模为一,可以用拉格朗是法转化为多条件优化问题,
    等于求max wt Σ \varSigma Σw + λ \lambda λ(1-wtw) ,这是一个凸函数,求导可得
    Σ \varSigma Σw = λ \lambda λw
    其中 Σ \varSigma Σ是原始样本的协方差。

– AE

你可能感兴趣的:(机器学习,人工智能,算法)