机器学习基本理论

机器学习基本理论

基本概念

人工智能、机器学习、深度学习

  • 机器学习

    研究和构建的是一种特殊算法(而非某一个特定的算法),能够让计算机自己在数据中学习从而进行预测。所以,机器学习不是某种具体的算法,而是很多算法的统称。

    • 机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。
    • 机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。
    • 因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论
  • 深度学习

    深度学习是机器学习中的一种算法。详细介绍请看后续深度学习章节。

    • 传统机器学习和深度学习的核心区别

    传统机器学习和深度学习的核心区别

    传统机器学习的特征提取主要依赖人工,针对特定简单任务的时候人工提取特征会简单有效,但是并不能通用。

    深度学习的特征提取并不依靠人工,而是机器自动提取的。这也是为什么大家都说深度学习的可解释性很差,因为有时候深度学习虽然能有好的表现,但是我们并不知道他的原理是什么。

    • 深度学习的优缺点

    深度学习的优缺点

  • 人工智能

    机器从「特定的」大量数据中总结规律,归纳出某些「特定的知识」,然后将这种「知识」应用到现实场景中去解决实际问题。

    人工智能逻辑:从数据中归纳知识

  • 关系

    不管是机器学习还是深度学习,都属于人工智能(AI)的范畴,其关系如下图所示:

    人工智能、机器学习、深度学习的关系

机器学习训练方法

监督学习

  • 定义

    监督学习是指我们给算法一个数据集,并且给定正确答案。机器通过数据来学习正确答案的计算方法。

    流程:

    1. 选择一个适合目标任务的数学模型;
    2. 先把一部分已知的问题和答案(训练集)给机器去学习;
    3. 机器总结出了自己的方法论
    4. 把新的问题(测试集)给机器,让他去解答。
  • 任务

    img

    • 分类 (Classification)

    输出y为离散值,说白了就是将一些未知类别的数据分到现在已知的类别中去。评判分类效果好坏的三个指标就是上面介绍的三个指标:正确率,召回率,F值。例如:垃圾短信分类。

    • 回归 (Regression)

    输出y为连续值,对数值型连续随机变量进行预测和建模的监督学习算法。回归往往会通过计算误差(Error)来确定模型的精确性。例如:房价预测、股票预测。

非监督学习

  • 定义

    无监督学习本质上是一个统计手段,在没有标签的数据里可以发现潜在的一些结构的一种训练方式。

    发现数据中的“有意义的模式”,亦被称为 知识发现。

  • 任务

    • 聚类 (Clustering)

    一组输入将被分成组,与分类不同的是,这些组事先并不为人所知。该算法基于数据的内部结构寻找观察样本的自然族群(即集群)。聚类问题的标准一般基于距离:簇内距离(Intra-cluster Distance) 和 簇间距离(Inter-cluster Distance) 。簇内距离是越小越好,也就是簇内的元素越相似越好;而簇间距离越大越好,也就是说簇间(不同簇)元素越不相同越好。

    • 降维 (Dimensionality Reduction)

    通过将输入映射到一个低维度空间来简化输入 。即减少需要考虑的变量数量。在许多应用中,原始数据具有非常高的维度特征,并且一些特征对于任务是多余的或不相关的。降维有助于找到数据内在真实的、潜在的关系。

半监督学习

计算机只提供了一个不完整的训练信号:一个训练集,有一些目标输出缺失。

强化学习

img

强化学习强调通过基于环境的反馈行为分析、优化以取得最佳预期。机器尝试不同的场景来发现哪些行为能产生最大的回报,而不是被告知要采取何种行动。

强化学习目前还不够成熟,应用场景也比较局限。最大的应用场景就是游戏了。

  • 主流算法

    • 免模型学习(Model-Free) vs 有模型学习(Model-Based)

    主流的强化学习算法分类

  • 监督学习与非监督学习比较

    监督学习对比无监督学习

机器学习步骤

机器学习的7个步骤

  1. 收集数据

    数据的数量和质量直接决定了预测模型的好坏。

  2. 数据准备

    数据要分为3个部分:训练集、验证集、测试集

    ​ 数据集的划分

    • 训练集(Training set) —— 学习样本数据集,通过匹配一些参数来建立一个模型,主要用来训练模型。
    • 验证集(validation set) —— 对学习出来的模型,调整模型的参数,如在神经网络中选择隐藏单元数。验证集还用来确定网络结构或者控制模型复杂程度的参数。
    • 测试集(Test set) —— 测试训练好的模型的分辨能力,评估模型效果。
  3. 选择一个模型

    见后续章节——算法选择

  4. 训练

    这个过程就不需要人来参与的,机器独立就可以完成,整个过程就好像是在做算术题。因为机器学习的本质就是将问题转化为数学问题,然后解答数学题的过程

  5. 评估

    一旦训练完成,就可以评估模型是否有用。这是我们之前预留的验证集和测试集发挥作用的地方。

    评估的指标主要有 准确率、召回率、F值。

  6. 参数调整

    当我们进行训练时,我们隐含地假设了一些参数,我们可以通过人为的调整这些参数让模型表现的更出色。

  7. 预测

    开始使用。

基础知识

算法与模型

  • 算法

    指在已知的大量数据的基础上,按照预先设定的架构,由计算机运行,以创建学习“模型”的过程

    简单来讲,就是对于获得的海量数据,你是按照什么方法去分析处理,获取信息的。这个方法就是“算法”

  • 模型

    指基于已有数据集,运行机器学习算法,所得到的输出

    简单来说,就是通过算法,我们学到的东西

    模型 == 模型数据 + 预测算法

模型拟合程度

  • 欠拟合(Underfitting):模型没有很好地捕捉到数据特征,不能够很好地拟合数据,对训练样本的一般性质尚未学好。——“你太天真了!”
  • 过拟合(Overfitting):模型把训练样本学习“太好了”,可能把一些训练样本自身的特性当做了所有潜在样本都有的一般性质,导致泛化能力下降。——“你想太多了!”

常见的模型指标

  • 正确率 —— 提取出的正确信息条数 / 提取出的信息条数

  • 召回率 —— 提取出的正确信息条数 / 样本中的信息条数

  • F 值 —— 正确率 召回率 2 / (正确率 + 召回率)(F值即为正确率和召回率的调和平均值)

    调和平均值是总体各统计变量倒数的算术平均数的倒数。典型问题,在同距离不同速度条件下求平均速度。

正则化基本概念

正则化是一种有效的防止过拟合、提高模型泛化能力的方法。

  • 早期概念

    早期的机器学习领域一般只是将范数惩罚叫做正则化技术。

  • 深度学习领域

    能够显著减少方差,而不过度增加偏差的策略都可以认为是正则化技术。

正则化等价于结构风险最小化,通过在经验风险项后加上模型复杂度的正则化项或惩罚项,达到经验风险和模型复杂度都较小的模型目的。

  • 经验风险

    机器学习中的风险是指模型与真实解之间的误差的积累,经验风险是指使用训练出来的模型进行预测或者分类存在的误差的积累,可以简单理解为训练误差,经验风险最小化即为训练误差最小。

  • 结构风险

    结构风险定义为经验风险与置信风险(置信是指可信程度)的和,置信风险越大,模型推广能力越差。可以简单认为结构风险是经验风险后面多加了一项表示模型复杂度的函数项,从而可以保证模型分类精度(经验风险)的同时,降低模型复杂度,提高泛化能力。 $$ R(f) = \frac{1}{n}\sum\limits_{i = 1}^n{L({y_i,f({x_i})})} + \lambda \Omega (f) $$ 其中,$$R(f)$$表示结构风险,$$L(yi,f(xi))$$表示第i个样本的经验风险,Ω(f)Ω(f)是表征模型复杂度的正则项,λ是正则化参数。根据奥卡姆剃刀定律,“如无必要,勿增实体”,即认为相对简单的模型泛化能力更好。而模型泛化能力强、泛化误差小就表示模型推广能力强,通俗理解就是在训练集中训练得到的优秀模型能够很好的适用于实际测试数据,而不仅仅是减少训练误差或者测试误差。

L1与L2范数

  • L2范数正则 $$ J(\beta) = \sum\limits_{i = 1}^n (y_i-\beta^T x_i)^2 + \lambda|\beta|_2^2 $$ 201-ml-basics-08

    说明:

    蓝色的圆形空间表示L2范数空间,设为$\beta_1^2 + \beta 2^2 = r^2$可以看出,当r从0逐渐增大时,该圆形也逐渐增大,红色的线表示原始代价函数解空间即从0逐渐增大时,该圆形也逐渐增大,红色的线表示原始代价函数解空间即$\sum\limits{i=1}^n {(y_i-\beta^Tx_i)^2}$,此处为了方便绘图,设参数只有2维。红色圆环上的任何一点都表示一个可行解,即,此处为了方便绘图,设参数只有2维。红色圆环上的任何一点都表示一个可行解,即$\hat\beta$代表最佳解空间。

    由于初中数学知识可知,当正则项$\beta_1^2 + \beta _2^2 = r^2$和原代价函数项和原代价函数项$\sum\limits*^n (y_i-\beta^Txi)^2$这两个空间有交集时候,即代表了一个这两个空间有交集时候,即代表了一个$J(\beta)$的解,当不存在正则项时候,$ \lambda$为0,$J(\beta)$的解即为$\sum\limits{i = 1}^n(y_i-\beta^T x_i)^2$的解,表示解空间没有受到任何约束,通过样本集训练,不容易直接收敛到最优值$\hat \beta$,出现过拟合,然而在增加了正则项后,随着不断增加r取值,原始解空间会被不断压缩,如果选择的$\lambda$合适,则可以将最优点压缩到$\hat \beta$处,从而得到合适的模型。上面就是$L2$范数正则可以避免过拟合的图示。

  • L1范数正则 $$ J(\beta) = \sum\limits_{i = 1}^n (y_i - \beta ^T xi)^2 + \lambda \sum\limits{j = 1}^d |\beta_j| $$ 201-ml-basics-09

    同上述L2范数正则分析一致,L1范数对应的解空间图形为菱形,作用和L2范数一致。

    需要注意:L2范数与原代价函数的交点处所得到的参数β可以无限缩小,但是一定不会为0,然而L1范数与原代价函数的交点一般在坐标轴上,从而使得某些$β_i=0$,得到稀疏解(当然,并没有绝对保证一定交于坐标轴,但是通过实验发现,大部分都可以得到稀疏解)。同时观察上一节的L0范数的解空间图形发现:如果使用L0范数正则,则可以保证一定得到稀疏解,但是由于L0范数的实际求解是NP问题,难以计算,故在实际应用中一般都是采用L1范数代替L0范数得到稀疏解,可以简单认为L1范数是L0范数的凸近似。

应用技巧

非均衡数据

非均衡数据(Inbanlanced data)被定义为,在有监督学习当中,对于分类问题,不同分类的训练数据的数量占数据总量的比例不同,有一些分类占总数据量的比例过小。

举例说明:

做个假设,体检数据有1W份,其中只有一个癌症案例。那么如果我们构建一个模型,针对任何输入都输出无癌症,最终这个模型的准确率为99.99%。我们知道,这个结果是没有任何意义的。

为了应对这种情况,我们引入精确率(precision),召回(recall)的概念:

  • 精确度(precision)定义为模型判定为正的样本中有多少实际为正。以上述例子解释,模型找到的癌症患者中,有多少确实是有癌症的。
  • 召回(recall)定位为模型判定为正的样本,占实际为正的样本的比例。以癌症例子解释,模型找到的患者,占实际患癌症的患者的比例。
解决方案
  1. 采样方法

    • 随机过采样(Random Oversampling):向少数类中添加数据,可通过复制少数类数据等,使得少数类和多数类数目相等。缺点是添加了重复数据,可能导致数据过拟合(overfit)
    • 随机欠采样(Random Undersampling):从多数类中减掉数据,使得多数类和少数类数目相等。缺点是可能会丢失一些重要的数据。
  2. 代价敏感方法

    采样方法主要考虑正负例的分布,而代价敏感方法主要考虑误分类样本的代价,通过代价矩阵来度量。

  3. 基于核的算法和不平衡数据的积极学习算法

    基于核函数的采样算法GSVM-RU(Granular Support Vector Machines-Repetitive Undersampling)算法。

    GSVM算法的思想:

    • 通过观察本地子集重要性和全局关联的trade-off分析内部数据的分布。
    • 通过使用平行计算提高计算效率。

这里讨论的不平衡数据的处理,都是在进行模型构建之前的预处理工作,不涉及模型训练的过程。如果考虑模型的训练过程,则不平衡数据还有其他的一些处理方式,例如后面即将提到的 HardExample。

  1. Hard-Example

    难例(或叫做难样本,Hard Example,Hard Negative,Hard Instance)。

    在机器学习,尤其是分类任务中,通常会长生大量负样本(不包含实际检测物体的标定框),负样本因为不包含可供学习的特征,会出现大量误报,我们将首次训练的负样本加入负样本集合中,重新进行模型训练,可显著减少误报。

    这种训练方法叫做自举法(Bootstrap),自举法首先使用初始负样本集来训练一个模型,然后收集被这个初始模型错误分类的负样本来形成一个负样本难例集。用此负样本难例集训练新的模型,此过程可以重复多次。

Early Stop

在模型训练的过程中,随着时间的增长,epoch数增加,通过对训练集的学习,模型在训练集上的loss会越来越低,模型的复杂度随之增加。而当模型复杂度增加到一定的程度之后,在验证集上,模型的loss不再降低,同时验证集上的准确度不再提升甚至下降。也就是,这种时候,模型发生了过拟合的问题,泛化能力降低。

这种情况,避免过拟合出现的方式之一,就是EarlyStop。做法比较简单,就是在验证集准确度不再上升的时候停止训练。这种做法比较符合直观感受,准确度都已经不再提升了,那么继续训练只会浪费计算资源。

基础算法

算法简述

  • 回归方法

    回归方法是一种对数值型连续随机变量进行预测和建模的监督学习算法。

    回归任务的特点是标注的数据集具有数值型的目标变量。也就是说,每一个观察样本都有一个数值型的标注真值以监督算法。

  • 分类方法

    分类方法是一种对离散型随机变量建模或预测的监督学习算法。

    回归算法都有与其相对应的分类算法,分类算法通常适用于预测一个类别(或类别的概率)而不是连续的数值。

  • 聚类

    聚类是一种无监督学习任务,该算法基于数据的内部结构寻找观察样本的自然族群(即集群)。

    因为聚类是一种无监督学习(即数据没有标注),并且通常使用数据可视化评价结果。如果存在「正确的回答」(即在训练集中存在预标注的集群),那么分类算法可能更加合适。

  • 本文算法汇总

    算法 训练方式 应用
    线性回归 监督学习 回归
    Logistic 回归 监督学习 分类
    SVM 监督学习 分类
    KNN 监督学习 回归、分类
    朴素贝叶斯 监督学习 分类
    决策树 监督学习 回归、分类
    随机森林 监督学习 回归、分类、聚类
    AdaBoost 监督学习 回归、分类
    GBDT 监督学习 回归、分类
    聚类算法(k-means、AP) 无监督学习 聚类
    PCA 无监督学习 降维

线性回归

基本概念

  • 基本定义

    给定训练数据$D={X_i,Yi}{i=1}^N$,其中$y\in R$,回归学习一个从输入x 到输出y的映射f,若映射f是一个线性函数,我们称之为线性回归模型。

    • 求解

    ​ 对于只有一个自变量x和一个因变量y的数据集,我们假设(x,y)之间的关系可以用$h(x)=\theta x + b$进行映射,那么我们就把求解这个函数的过程称为线性回归求解。

    ​ 很显然,不可能所有的点刚好在这条直线上,所以求解最优的标准就是,使点集(x,y)与拟合函数间的误差(平方误差)最小,推广到多个自变量,假设一个数据集有n个自变量,也可以说成n个属性,如果使用线性模型去拟合则有 $$ h_{\theta}(\textbf{x}_i)= \theta_1 x_1 +\theta_2 x_2 +...+\theta_n x_n+b $$ 这种方式称为多元线性回归(multivariate linear regression).需要求解的未知量有$θ_1,θ_2,...,θ_n,b$。为了便于讨论,令$b=\theta_0x_0$,其中$x0=1$,那么,原来的函数就可以表示为 $$ h{\theta}(\textbf{x}_i)= \theta_0 x_0+\theta_1 x_1 +\theta_2 x_2 +...+\theta_n xn $$ 目标函数通常包含两项:损失函数和正则项。 $$ J(\theta)= \sum{i=1}^N{L(y_i,f(xi))+\lambda R(\theta)} $$ 求解损失函数,对变量求偏导联立便可求: $$ J(\theta)=\sum{i=1}^m (h_{\theta}(x^{(i)}) - y^{(i)})^2 $$ 进一步用矩阵形式表达损失函数: $$ J(\theta)=\frac{1}{2}(X\theta-Y)^T(X\theta-Y) $$ 我们常用的有两种方法来求损失函数最小化时候的θ参数:一种是梯度下降法,一种是最小二乘法

    梯度下降法,则θ的迭代公式是这样的: $$ \theta=\theta-\alpha X^T(X\theta-Y) $$ 如果采用最小二乘法,则θ的结果公式如下: $$ \theta=(XTX){-1}X^TY $$

  • 算法原理图

    通俗解释线性回归

线性回归的优缺点

  • 优点:

    1. 建模速度快,不需要很复杂的计算,在数据量大的情况下依然运行速度很快。
    2. 可以根据系数给出每个变量的理解和解释
  • 缺点:
    1. 不能很好地拟合非线性数据。所以需要先判断变量之间是否是线性关系。

Logistic回归

(LR,Logistic Regression)或者叫逻辑回归 虽然名字有回归,但是它是用来做分类的。

基本概念

线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数θ,满足Y=Xθ。此时我们的Y是连续的,所以是回归模型。如果我们想要Y是离散的话,我们对于这个Y再做一次函数转换,变为g(Y)。如果我们令g(Y)的值在某个实数区间的时候是类别A,在另一个实数区间的时候是类别B,以此类推,就得到了一个分类模型。

通常我们所指逻辑回归一般为二分类的 Sigmoid 函数回归,后面扩展升级衍生到多分类的 Softmax 函数回归。 Sigmoid 函数示例如下图所示:

clip_image004

逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型。

Logistic回归的优缺点

  • 优点:

    • 实现简单,广泛的应用于工业问题上;
    • 分类时计算量非常小,速度很快,存储资源低;
    • 便利的观测样本概率分数;
    • 对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决该问题;
    • 计算代价不高,易于理解和实现;
  • 缺点:
    • 当特征空间很大时,逻辑回归的性能不是很好;
    • 容易欠拟合,一般准确度不太高
    • 不能很好地处理大量多类特征或变量;
    • 只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分
    • 对于非线性特征,需要进行转换;

线性回归、逻辑回归比较

线性回归和逻辑回归的区别

SVM(支持向量机)

基本概念

  • 基本定义

    超平面与最近数据点之间的距离称为边距。支持向量机是一种二分类模型,其基本模型定义为特征空间上的边距最大的线性分类器。

    线性支持向量机、非线性支持向量机+核函数

  • 算法原理

    202-ml-basics-01

从图上看,直观感觉最合适的分类直线应该是那条粗线,因为它符合两个特点:

  1. 该分类直线到两类训练样本最近点的距离相等

  2. 在上一个特点的基础上,该分类直线离两类训练样本最近点的距离比其它任何直线都要长

SVM的优缺点

优点

  • 可以解决高维问题,即大型特征空间;
  • 解决小样本下机器学习问题;
  • 能够处理非线性特征的相互作用;
  • 无局部极小值问题;(相对于神经网络等算法)
  • 无需依赖整个数据;
  • 泛化能力比较强;

缺点

  • 当观测样本很多时,效率并不是很高;
  • 对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数;
  • 对于核函数的高维映射解释力不强,尤其是径向基函数;
  • 常规SVM只支持二分类;
  • 对缺失数据敏感;

KNN(k-近邻, k-NearestNeighbor)

基本概念

  • 基本定义

    k如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。

  • 算法原理

    img

  • 说明

    1. 确定选出K个相邻数据样本;
    2. 计算出K个最近数据样本;
    3. 根据K的相邻样本,统计各个分类的数量;
    4. 将新数据点K分配给您计数最多的邻居的类别;

KNN的优缺点

优点

  • 理论成熟,思想简单,既可以用来做分类也可以用来做回归;
  • 可用于非线性分类;
  • 训练时间复杂度为O(n);
  • 对数据没有假设,准确度高,对outlier不敏感;
  • KNN是一种在线技术,新数据可以直接加入数据集而不必进行重新训练;
  • KNN理论简单,容易实现;

缺点

  • 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少)效果差;
  • 需要大量内存;
  • 对于样本容量大的数据集计算量比较大(体现在距离计算上);
  • 样本不平衡时,预测偏差比较大。如:某一类的样本比较少,而其它类样本比较多;
  • KNN每一次分类都会重新进行一次全局运算;
  • k值大小的选择没有理论选择最优,往往是结合K-折交叉验证得到最优k值选择;

朴素贝叶斯

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本文着重介绍一些朴素贝叶斯分类器。

基本概念

  • 贝叶斯定理

    $P(A|B)$表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为:$P(A|B) = \frac{P(AB)}{P(B)}$。

    生活中,我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。

    下面不加证明地直接给出贝叶斯定理: $$ P(B|A)=\frac{P(A|B)P(B)}{P(A)} $$

  • 基本定义

    假设每个输入变量都是独立的,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。

  • 算法原理

    img

  • 说明:

    1. 确定样本特征属性;
    2. 计算各个分类概率;
    3. 计算各分类下特征属性的概率;
    4. 计算各特征概率;
    5. 计算比较各特征分类概率$P(类别|特征)=\frac{p(特征|类别)p(类别)}{p(特征)}$。

朴素贝叶斯的优缺点

优点:

  • 朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。
  • 对大数量训练和查询时具有较高的速度。即使使用超大规模的训练集,针对每个项目通常也只会有相对较少的特征数,并且对项目的训练和分类也仅仅是特征概率的数学运算而已;
  • 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练(即可以实时的对新增的样本进行训练);
  • 对缺失数据不太敏感,算法也比较简单,常用于文本分类;
  • 朴素贝叶斯对结果解释容易理解。

缺点:

  • 需要计算先验概率;
  • 分类决策存在错误率;
  • 对输入数据的表达形式很敏感;
  • 由于使用了样本属性独立性的假设,所以如果样本属性有关联时其效果不好。

决策树

基本概念

  • 基本定义

    决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程。

  • 算法原理

    202-ml-basics-02-01-decision

    如上图所示的树结构进行决策,每一个非叶子节点是一个判断条件,每一个叶子节点是结论。从跟节点开始,经过多次判断得出结论。

    决策树学习的 3 个步骤

  • 特征选择

    特征选择决定了使用哪些特征来做判断。在训练数据集中,每个样本的属性可能有很多个,不同属性的作用有大有小。因而特征选择的作用就是筛选出跟分类结果相关性较高的特征,也就是分类能力较强的特征。

    在特征选择中通常使用的准则是:信息增益。

    信息增益:表示在一个条件下,信息不确定性减少的程度。

    信息熵:信息混乱程度。

    基尼值:数据不一致概率。

  • 决策树生成

    选择好特征后,就从根节点触发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。

    停止分裂条件:

    1. 节点数据量过小;
    2. 熵或基尼值小于阀值;
    3. 决策树深度超过最大深度;
    4. 特征已经使用完毕。
  • 决策树剪枝

    剪枝的主要目的是对抗「过拟合」,通过主动去掉部分分支来降低过拟合的风险。

决策树的优缺点

优点

  • 决策树易于理解和解释,可以可视化分析,容易提取出规则;
  • 可以同时处理标称型和数值型数据;
  • 比较适合处理有缺失属性的样本;
  • 能够处理不相关的特征;
  • 测试数据集时,运行速度比较快;
  • 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

缺点

  • 容易发生过拟合(随机森林可以很大程度上减少过拟合);
  • 容易忽略数据集中属性的相互关联;
  • 对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率尽心划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)。
  • ID3算法计算信息增益时结果偏向数值比较多的特征。

典型算法

  • ID3 算法

    ID3 是最早提出的决策树算法,他就是利用信息增益来选择特征的。

  • C4.5 算法

    他是 ID3 的改进版,他不是直接使用信息增益,而是引入“信息增益比”指标作为特征的选择依据。

  • CART(Classification and Regression Tree)

    这种算法即可以用于分类,也可以用于回归问题。CART 算法使用了基尼系数取代了信息熵模型。

聚类算法

类型 焦点 典型算法
原型聚类 基于样本空间中具有代表性的点 k-means、吸引力传播算法
密度聚类 分布密度 DBSCAN
层次聚类 数据分层合并 AGNES

基本概念

聚类就是对大量未标注的数据集,按照数据内部存在的数据结构特征将数据集划分为若干类,使类内的数据比较相似,类间的数据比较相异,属于无监督学习方法。 聚类算法的重点是计算数据之间的相似度,即数据间的距离。

典型聚类算法

k-means(K均值聚类)
  • 基本概念

    对于于给定的样本集,按照样本之间的距离大小,将样本集划分为k个簇,让簇内的点尽量紧密地连在一起,而让簇间的距离尽量大。

    k-means算法的目标是最小化平方误差: $$ E=\sum \limits{i=1}^{k} \sum \limits{x \in C_i} |x-\mu_i|_2^2 $$

    其中,$\mu_i=\dfrac{1}{|Ci|}\sum \limits{x \in C_i}x$是簇$ C_i $的均值向量,有时也称为质心; $ |x-\mu_i|^2$代表每个样本点到均值点的欧氏距离。

  • 算法原理

    假设输入样本集$ D={x_1,x_2,..,x_m}$,则k-means算法步骤为:

    1. 从样本集$D$中随机选择k个样本作为初始类别中心$ {\mu_1,\mu_2,...,\mu_k}$;
    2. 对任一样本$x_i$,将其标记为距离最近的类别中心$ \mu_j$所属的类j;
    3. 更新每个类别中心点$ \mu_j$为隶属于该类别的所有样本的均值;
    4. 循环以上操作,直到达到某个中止条件。

    中止条件:

    • 达到预设的迭代次数;
    • 最小平均误差MSE(均方误差)小于预设值;
    • 簇中心点变化率小于预设值。
  • K均值聚类的优缺点

    优点

    • 算法简单,容易实现 ;
    • 算法速度很快;
    • 对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<<n。这个算法通常局部收敛。
    • 算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。

    缺点

    • 对数据类型要求较高,适合数值型数据;
    • 可能收敛到局部最小值,在大规模数据上收敛较慢
    • 分组的数目k是一个输入参数,不合适的k可能返回较差的结果。
    • 对初值的簇心值敏感,对于不同的初始值,可能会导致不同的聚类结果;
    • 不适合于发现非凸面形状的簇,或者大小差别很大的簇。
    • 对于”噪声”和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。

    k均值聚类之前运行降维算法(例如主成分分析(PCA))可以降低误差并加快计算速度。

AP算法(吸引力传播-Affinity Propagation)
  • 基本概念

    AP算法的基本思想是将全部数据点都当作潜在的聚类中心(称之为exemplar),然后数据点两两之间连线构成一个网络(相似度矩阵),再通过网络中各条边的消息(responsibility和availability)传递计算出各样本的聚类中心。

    202-ml-basics-02

  • 算法原理

    1. 假设$ {x_1,x_2,...,x_n}$是数据样本集,数据间没有任何内在结构的假设;

    2. 计算相似度矩阵,N个点之间两两计算相似度,这些相似度就组成了相似度矩阵;

    3. 计算吸引度矩阵R,$ r(i,k)$描述了数据对象k适合作为数据对象i的聚类中心的程度,表示的是从i到k的消息;

    4. 计算归属度矩阵A,$ a(i,k)$描述了数据对象i选择数据对象k作为其聚类中心的合适程度,表示从k到i的消息;

    5. 迭代更新R值和A值。终止条件是聚类中心在一定程度上不再更新或者达到最大迭代次数;

    6. 根据求出的聚类中心,对数据进行分类。

    亲和力传播可能会很有趣,因为它会根据提供的数据选择簇的数量。为此,两个重要的参数是:preference(首选项),它控制使用多少个示例;以及阻尼因数,它阻尼责任和可用性消息,以避免在更新这些消息时出现数值振荡。

  • 吸引力传播算法的优缺点

    • 优点:

    不需要提供聚类的类别数k。

    • 缺点:

    复杂度太高,计算量太大,适合中小型数据集。该算法的时间复杂度为$ O(N^2T)$,N 是样本数,T是直到收敛的迭代次数;内存复杂度$O(N^2)$。

降维算法

PCA(主成分分析-Principal Component Analysis)

  • 基本概念

    PCA顾名思义,就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。

  • 算法原理

    应用PCA降维

    1. 找出第一个主成分的方向,也就是数据 方差最大 的方向。
    2. 找出第二个主成分的方向,也就是数据 方差次大 的方向,并且该方向与第一个主成分方向 正交(orthogonal 如果是二维空间就叫垂直)
    3. 通过这种方式计算出所有的主成分方向。
    4. 通过数据集的协方差矩阵及其特征值分析,我们就可以得到这些主成分的值。
    5. 一旦得到了协方差矩阵的特征值和特征向量,我们就可以保留最大的 N 个特征。这些特征向量也给出了 N 个最重要特征的真实结构,我们就可以通过将数据乘上这 N 个特征向量 从而将它转换到新的空间上。

    方差最大,使数据集尽可能展开保留原始差异。

  • PCA的优缺点:

    优点:

    • 仅仅需要以方差衡量信息量,不受数据集以外的因素影响。 
    • 各主成分之间正交,可消除原始数据成分间的相互影响的因素。
    • 计算方法简单,主要运算是特征值分解,易于实现。 PCA算法的主要缺点有:
    • 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。
    • 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

    缺点:

    • 不一定需要,且可能损失有用信息。

其他降维算法

  • 因子分析(Factor Analysis)
    • 通俗理解:将多个实测变量转换为少数几个综合指标。它反映一种降维的思想,通过降维将相关性高的变量聚在一起,从而减少需要分析的变量的数量,而减少问题分析的复杂性
    • 例如: 考察一个人的整体情况,就直接组合3样成绩(隐变量),看平均成绩就行(存在:数学、语文、英语成绩)
    • 应用的领域:社会科学、金融和其他领域
    • 在因子分析中
    • 假设观察数据的成分中有一些观察不到的隐变量(latent variable)。
    • 假设观察数据是这些隐变量和某些噪音的线性组合。
    • 那么隐变量的数据可能比观察数据的数目少,也就说通过找到隐变量就可以实现数据的降维。
  • 独立成分分析(Independ Component Analysis, ICA)
    • 通俗理解:ICA 认为观测信号是若干个独立信号的线性组合,ICA 要做的是一个解混过程。
    • 例如:我们去ktv唱歌,想辨别唱的是什么歌曲?ICA 是观察发现是原唱唱的一首歌【2个独立的声音(原唱/主唱)】。
    • ICA 是假设数据是从 N 个数据源混合组成的,这一点和因子分析有些类似,这些数据源之间在统计上是相互独立的,而在 PCA 中只假设数据是不 相关(线性关系)的。
    • 同因子分析一样,如果数据源的数目少于观察数据的数目,则可以实现降维过程。

集成学习

基本概念

集成学习归属于机器学习,他是一种「训练思路」,并不是某种具体的方法或者算法。

集成学习的核心思路就是「人多力量大」,它并没有创造出新的算法,而是把已有的算法进行结合,从而得到更好的效果。

  • 学习器选择

    • 同质:所有的个体学习器都是一个种类的。

    目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。

    同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类:

    1. 第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法;
    2. 第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging系列算法
    • boosting与bagging区别

      • 样本选择

      Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

      Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

      • 样例权重

      Bagging:使用均匀取样,每个样例的权重相等

      Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

      • 预测函数

      Bagging:所有预测函数的权重相等。

      Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

      • 并行计算

      Bagging:各个预测函数可以并行生成

      Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

    • 异质:所有的个体学习器不全是一个种类的。

Boosting(推进法)

基本概念

  • 基本定义

    Boosting对基础模型不是一致对待的,而是经过不停的考验和筛选来挑选出「精英」,然后给精英更多的投票权,表现不好的基础模型则给较少的投票权,然后综合所有人的投票得到最终结果。

    大部分情况下,经过 boosting 得到的结果偏差(bias)更小

  • 算法原理图

    boosting的具体过程

  • 解释说明:

    1. 通过加法模型将基础模型进行线性的组合。
    2. 每一轮训练都提升那些错误率小的基础模型权重,同时减小错误率高的模型权重。
    3. 在每一轮改变训练数据的权值或概率分布,通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。

典型算法

Adaboost
基本概念
  • 基本定义

    Adaboost是Boosting中较为代表的算法,基本思想是通过训练数据的分布构造一个分类器,然后通过误差率求出这个若弱分类器的权重,通过更新训练数据的分布,迭代进行,直到达到迭代次数或者损失函数小于某一阈值。

    AdaBoost是第一个为二进制分类开发的真正成功的增强算法。

  • 算法原理

    img

    AdaBoost用于短决策树。在创建第一个树之后,每个训练实例上的树的性能用于加权创建的下一个树应该关注每个训练实例的注意力。难以预测的训练数据被赋予更多权重,而易于预测的实例被赋予更少的权重。模型一个接一个地顺序创建,每个模型更新训练实例上的权重,这些权重影响序列中下一个树所执行的学习。构建完所有树之后,将对新数据进行预测,并根据训练数据的准确性对每棵树的性能进行加权。

    因为通过算法如此关注纠正错误,所以必须删除带有异常值的干净数据。

AdaBoost优缺点

优点:

  • 很好的利用了弱分类器进行级联;
  • 可以将不同的分类算法作为弱分类器;
  • AdaBoost具有很高的精度;
  • 相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重;

缺点:

  • AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定;
  • 数据不平衡导致分类精度下降;
  • 训练比较耗时,每次重新选择当前分类器最好切分点;
GBDT
基本概念
  • 定义

    GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。

    梯度提升树GBT(Gradient Boosting Tree),又名GTB(Gradient Tree Boosting ),用于分类模型时,是梯度提升决策树GBDT;用于回归模型时,是梯度提升回归树-GBRT(Gradient Boosting Regression Tree),二者的区别主要是损失函数不同。

  • 算法原理

    img

    1. GBDT通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练。对弱分类器的要求一般是足够简单,并且是低方差和高偏差的。因为训练的过程是通过降低偏差来不断提高最终分类器的精度。

    2. 弱分类器一般会选择为CART TREE(也就是分类回归树)。由于上述高偏差和简单的要求每个分类回归树的深度不会很深。

    3. 最终的总分类器 是将每轮训练得到的弱分类器加权求和得到的(也就是加法模型)。

    GBDT 也是一种鲁棒的算法,可以使用在很多领域。 GBDT 的超参越好,就能获得越好的性能。

    参数不能通过训练来优化,我们称为超参数(Hyper parameter)。

GBDT的优缺点
  • 优点

    1. 泛化能力强;
    2. 可以灵活处理各种类型的数据,包括连续值和离散值。
    3. 在相对少的调参时间情况下,预测的准备率也可以比较高。这个是相对SVM来说的。
    4. 使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。
  • 缺点

    1. 由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行;

      SGBT只是在GBDT的基础上加了一个随机子采样,不把全部的数据都放进去做boosting,而是只随机选取一部分,这样可以减少计算量,加快模型学习的速度。

    2. 单独的使用GBDT模型,容易出现过拟合,在实际应用中往往使用 GBDT+LR的方式做模型训练;

    3. GBDT在高维稀疏的数据集上,表现不如SVM或者神经网络;

    4. GBDT在处理文本分类特征问题上,相对其他模型的优势不如在处理数值特征时明显。

Bagging(袋装法)

基本概念

  • 基本定义

    Bagging 的思路是所有基础模型都一致对待,每个基础模型手里都只有一票。然后使用民主投票的方式得到最终的结果。

    大部分情况下,经过 bagging 得到的结果方差(variance)更小

  • 算法原理图

    bagging的具体过程

  • 解释说明

    1. 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
    2. 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
    3. 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

典型算法

随机森林

随机森林(Random Forest,以下简称RF),Bagging算法的进化版。

基本概念
  • 基本定义

    进行分类任务时,新的输入样本进入,就让森林中的每一棵决策树分别进行判断和分类,每个决策树会得到一个自己的分类结果,决策树的分类结果中哪一个分类最多,那么随机森林就会把这个结果当做最终的结果。

  • 算法原理图

    图解随机森林

  • 解释说明

    构造随机森林的4个步骤

    1. 好了的N个样本用来训练一个决策树,作为决策树根节点处的样本。

    2. 当每个样本有M个属性时,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性,满足条件m << M。然后从这m个属性中采用某种策略(比如说信息增益)来选择1个属性作为该节点的分裂属性。
    3. 决策树形成过程中每个节点都要按照步骤2来分裂(很容易理解,如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性,则该节点已经达到了叶子节点,无须继续分裂了)。一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。
    4. 按照步骤1~3建立大量的决策树,这样就构成了随机森林了。
随机森林的优缺点

优点

  1. 它可以出来很高维度(特征很多)的数据,并且不用降维,无需做特征选择
  2. 它可以判断特征的重要程度
  3. 可以判断出不同特征之间的相互影响
  4. 不容易过拟合
  5. 训练速度比较快,容易做成并行方法
  6. 实现起来比较简单
  7. 对于不平衡的数据集来说,它可以平衡误差。
  8. 如果有很大一部分的特征遗失,仍可以维持准确度。

缺点

  1. 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
  2. 对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。

算法选择

选择概览

img

精准分析

  • 分类问题

    1. 速度慢,但是准确

      • 非线性支持向量机(SVM) 有关使用SVM的更多信息,请查看分类问题结尾部分的注意事项;
      • 随机森林(Random Forest);
      • 神经网络(需要大量数据点);
      • 梯度提升决策树(Gradient Boosting Tree,类似于随机森林,但容易过度拟合)。
    2. 速度快

      • 可解释的模型:决策树和逻辑回归;

      • 不可解释的模型:线性支持向量机(SVM)和朴素贝叶斯(Naive Bayes)。

      对支持向量机(SVM)内核的选择:

      • 当特征数量大于观测数量时,使用线性内核;
      • 当观测数量大于特征数量时,使用高斯核心;
      • 如果观测数量大于50k,使用高斯内核时速度可能会成为问题;因此这时可以考虑使用线性内核。
  • 回归问题

    1. 精确,但是速度慢

      • 随机森林(Random Forest);
      • 神经网络(需要大量数据点);
      • 梯度提升决策树(类似于随机森林,但容易过度拟合)。
    2. 速度快
      • 决策树;
      • 线性回归。
  • 聚类问题

    1. 层次聚类

      • 凝聚:这是一种“自下而上”的方法。每个观测点从自己的集群开始凝聚,当一个集群向上移动时,成对的集群将进行合并。;
      • 分裂:这是一种“自上而下”的方法。所有观测点都在一个群集中开始分裂,当一个集群向下移动时,递归地执行分割。
    2. 非层次聚类

      • DBSCAN(不需要指定k的值,即集群的数量);
      • k-means;
      • 混合高斯模型。

      如果你对分类数据进行聚类分析,请使用k-modes。

  • 降维方法

    • PCA:principal component analysis ,主成分分析
    • ICA :Independent component analysis,独立成分分析

常规选择

  1. 首当其冲应该选择的就是逻辑回归,如果它的效果不怎么样,那么可以将它的结果作为基准来参考,在基础上与其他算法进行比较;
  2. 然后试试决策树(随机森林)看看是否可以大幅度提升你的模型性能。即便最后你并没有把它当做为最终模型,你也可以使用随机森林来移除噪声变量,做特征选择;
  3. 如果特征的数量和观测样本特别多,那么当资源和时间充足时(这个前提很重要),使用SVM不失为一种选择。

通常情况下:【GBDT>=SVM>=RF>=Adaboost>=Other…】

深度学习

基本概念

深度学习

  • 基本定义

    现代机器学习算法的表现为以自动化算法从大量数据中抽取针对某个特定问题的一般解决方案的方法。特别的,以深度神经网络来构建模型,并利用前向反向传播来训练模型的方法,被称为深度学习。

    深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

  • 解释说明

    深度学习的概念中,深度(deep)表示的是深度神经网络模型,基础是机器学习中的分散表示(distributed representation)。分散表示假定观测值是由不同因子相互作用及组合生成。

    在此基础上,深度学习进一步假定这一相互作用的过程可分为多个层次,代表对观测值的多层抽象。不同的层数和层的规模可用于不同程度的抽象。深度神经网络以多层神经网络的方式来处理这种抽象层次,低层次的网络学习物体低层次的特征,如纹理,颜色等等的信息,高层次的网络则组合低层次的网络信息,形成对物体更高层概念的表达。

    通过组合足够多层次的神经网络,深度神经网络模型可以形成复杂的判别模式,相比与线性模型,具有更丰富的表达能力。

    深度学习模拟自大脑的结构和功能,即许多神经元的互连。人工神经网络(ANN)是模拟大脑生物结构的算法。

  • 深度学习优缺点

    深度学习的优点:

    1. 学习能力强
    2. 覆盖范围广,适应性好
    3. 数据驱动,上限高
    4. 可移植性好

    深度学习的缺点:

    1. 计算量大,便携性差
    2. 硬件需求高
    3. 模型设计复杂
    4. 没有”人性”,容易存在偏见

神经网络

  • 基本定义

    神经网络,或称为人工神经网络(Artificial Neural Network,即ANN ),它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。

    神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。

  • 算法原理

    一系列圆圈和线显示了输入层、隐藏层和输出层之间相互作用 - 映射和学习

    1. 神经网络通过一个模型将输入矢量处理为结果输出矢量,该模型的灵感来源于大脑中的神经元和它们之间的连接。
    2. 该模型包含一些通过权值相互连接的神经元层,权值可以调节某些输入相对于其他输入的重要性。
    3. 每个神经元都包含一个用来确定该神经元的输出的激活函数(作为输入矢量与权矢量的乘积的函数)。计算输出的方式是,将输入矢量应用于网络的输入层,然后(采用前馈方式)计算网络中每个神经元的输出。

    最常用于神经网络的监督学习方法之一是反向传播

    在反向传播中,会应用一个输入矢量并计算输出矢量。计算(实际输出与目标输出的)误差,然后从输出层向输入层执行反向传播,以便调节权值和偏差(作为对输出的贡献的函数,可以针对学习率进行调节)。

感知器

  • 基本定义

    感知器,也可翻译为感知机,它可以被视为一种最简单形式的前馈式人工神经网络,是一种二元线性分类器。

    感知器的发明,受到了生物大脑中神经原结构的启发。一个典型的神经元结构如下:

    211-dl-intro

  • 算法原理

    img

    1. 感知器可以接收多个输入$(x1,x2,...,xn∣xi∈R)$,每个输入上有一个权值$w_i∈R$,此外还有一个偏置项$b∈R$,就是上图中的$w_0$;

    2. 我们将输入、权重和偏移结合可以得到一个传递函数,传递函数的结果将被输入到一个激活函数中;

    3. 感知器的激活函数可以有很多选择,一般阶跃函数来作为激活函数,只有当输入超过某个阀值才会输出1,也就是神经元被激活。感知器的激活函数可以有很多选择,一般阶跃函数来作为激活函数,只有当输入超过某个阀值才会输出1,也就是神经元被激活。

      训练感知器

      感知器的训练包括多个训练样本的输入和计算每个样本的输出。每个样本的权重w都要调整以便最小化输出误差,这个误差由需求目标与实际输出的差异得出。还有其他误差计算方法,比如均方差,但是基本的训练原则保持不变。

  • 单层感知器

    感知机结构:

    perceptron

    逻辑门:

    image

    单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。

  • 多层网络

    • 异或门

    image

    单层感知机不能表示异或门,但可以通过感知机的叠加层,如下图,通过and和or的叠加,可以实现上述非线性的空间。

    • 向前结构

    向前结构,也叫前馈结构的神经网络,同时也是最简单的神经网络结构。

    mlp

    我们可以看到网络被划分成为了三个区域:最左边的输入层,中间的隐藏层,和最右侧的输出层。简单来说,输入层(input layer)负责获取外部信息, 需要注意的是,这里不会进行计算,只是向隐藏层传递信息。隐藏层(hidden layer)则负责大部分的计算,但其实一个前馈网络中,可以有多个,也可以没有隐藏层。输出层(output layer)负责一部分计算,并会向外界传递信息。

    我们说前馈神经网络是最简单的网络是因为: 信息只作单向移动,从输入层开始前向移动,然后通过隐藏层,再到输出层,网络中没有循环或回路。

典型算法

4种典型的深度学习算法

CNN——卷积神经网络

  • 基本概念

    CNN 最擅长的就是图片的处理。它受到人类视觉神经系统的启发。

    卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。卷积网络执行的是有监督训练,所以其样本集是由形如:<输入信号,标签值>的向量对构成的。

    卷积神经网络是一个多层的神经网络,其基本运算单元包括:卷积运算、池化运算、全连接运算和识别运算。

    典型的 CNN 由3个部分构成

  • 算法原理

    • 卷积——提取特征

    卷积层运算过程

    • 池化——数据降维,避免过拟合

    池化层过程

    • 全连接

    这个部分就是算法最后一步了,经过卷积层和池化层处理过的数据输入到全连接层,得到最终想要的结果。

    img.png

    典型的 CNN 并非只是上面提到的3层结构,而是多层结构。

    • 识别运算:上述运算过程为特征学习运算,需在上述运算基础上根据业务需求(分类或回归问题)增加一层网络用于分类或回归计算。
  • CNN的优缺点

    优点:

    • 共享卷积核,对高维数据处理无压力;
    • 无需手动选取特征,训练好权重,即得特征分类效果好;

    缺点:

    • 深度模型容易出现梯度消散问题;

    梯度消散:

    • 需要调参,需要大样本量,训练最好要GPU;

    • 模型解释性不高-黑盒。

CNN 的实际应用:

  1. 图片分类、检索
  2. 目标定位检测
  3. 目标分割
  4. 人脸识别
  5. 骨骼识别

RNN——循环神经网络

RNN 是一种能有效的处理序列数据的算法。比如:文章内容、语音音频、股票价格走势…

之所以他能处理序列数据,是因为在序列中前面的输入也会影响到后面的输出,相当于有了“记忆功能”。但是 RNN 存在严重的短期记忆问题,长期的数据影响很小(哪怕他是重要的信息)。

于是基于 RNN 出现了 LSTM 和 GRU 等变种算法。这些变种算法主要有几个特点:

  1. 长期信息可以有效的保留
  2. 挑选重要信息保留,不重要的信息会选择“遗忘”

RNN 几个典型的应用如下:

  1. 文本生成
  2. 语音识别
  3. 机器翻译
  4. 生成图像描述
  5. 视频标记

GANs——生成对抗网络

RL——深度强化学习