机器学习相关整理

机器学习(ML; Machine Learning)

在早期的工程领域机器学习也经常称为模式识别(PR; Pattern Recognition)偏向特定场景的具体应用这类应用被称为任务(Task)如光学字符识别(OCR; Optical Character Recognition)和语音识别(Speech Recognition)机器需要学习被称为经验(Experience)的历史数据并在任务上取得良好性能(Performance)

亚瑟·萨缪尔(Arthur Samuel)

美国计算机科学家提出的西洋棋程序是世界上第一个会自主学习的程序

亚瑟·萨缪尔发明了机器学习一词并将其定义为不显式编程地赋予计算机能力的研究领域

汤姆·米切尔(Tom Mitchell)

美国计算机科学家以对机器学习等领域的进步所作的贡献闻名

汤姆·米切尔提供了对机器学习的现代定义对于某类任务和性能度量一个计算机程序被认为可以从经验中学习是指通过经验改进后它在任务上由性能度量衡量的性能有所提升

传统算法解决某些问题需要人为制定并不断更新检测规则是复杂而难以维护的其决策逻辑只适用于单一领域或单一任务且制定规则需要对人类专家的决策过程有深刻理解而机器学习自动捕获特征程序更短更容易维护而且更精确还能在没有人工干预的情况下标记新的数据自动更新检测规则

机器学习的主要学派如下

  • 符号主义(Symbolism)又称逻辑主义心理学派或计算机学派认为所有的智能行为都可以被简化为逻辑系统的符号操作过程符号主义方法的优点就是可解释性强代表算法如决策树
  • 贝叶斯学派(Bayesians)注重统计学和概率推理代表算法如朴素贝叶斯
  • 联结主义(Connectionism)又称仿生学派或生理学派认为人类的认知过程是由大量简单神经元构成的神经网络的信息处理过程专注于用神经科学模拟智能行为联结主义方法的弊端是可解释性差代表算法如神经网络
  • 进化主义(Evolutionism)将自然选择视为真正有价值的学习在遗传学和进化生物学的基础上得出结论代表算法如遗传算法等
  • 类推学派(Analogizers)以数学最优化来推断相似性判断代表算法如支持向量机

机器学习虽然有用但并不意味着它有人类一般的智能人工智能机器学习是为了实现人工智能这个更宏大目标的技术之一是人工智能的重要分支且受到统计学的深刻影响

使用TensorFlow实现机器学习

TensorFlow是常用的机器学习库通常导入包的操作如下

1
2
import tensorflow as tf
from tensorflow.keras import layers

TensorFlow是一个定义和运算涉及张量的计算的框架其中张量tf.Tensor具有数据类型和形状一些特殊的张量有tf.Variabletf.constanttf.placeholdertf.SparseTensor其中变量tf.Variable最常用是可将张量标记为可训练的变量声明形式被标记的变量会在反向传播中记录梯度信息因此常用于声明待训练的参数

通过传入的指定维度可使用如下方法创建特殊的张量tf.zerostf.onestf.fill可创建全为0全为1的张量和全为指定值的张量指定可选参数均值mean和方差stddevtf.random.normal可生成正态分布的随机数张量tf.random.truncated_normal可生成截断式正态分布的随机数张量即若生成的数据在之外时重新进行生成保证生成值在均值附近指定可选参数最小值minval和最大值maxvaltf.random.uniform可生成均匀分布的随机数张量

定义多元线性回归待估计参数的代码如下

1
2
w = tf.Variable(tf.random.normal(shape=(n, 1)))
b = tf.Variable(tf.zeros(1))

使用tf.cast方法可将张量强制转换为某种数据类型当数据是NumPy的形式时可以使用tf.convert_to_tensor方法将数据变为TensorFlow的形式即tf.Tensorbatch方法可按指定批量大小将数据分批次将数据集转换为tf.float32类型的张量并分批次的操作如下

1
2
3
X_train = tf.cast(X_train, dtype=tf.float32)
y_train = tf.cast(y_train, dtype=tf.float32)
dataset = tf.data.Dataset.from_tensor_slices((X_train, y_train)).batch(batch_size)

张量的元素级的四则运算方式分别为tf.addtf.subtracttf.multiplytf.divide且只有维度相同的张量才能运算tf.squaretf.powtf.sqrt分别对应张量的平方次方和开方操作矩阵相乘的操作对应tf.matmul方法如下的线性回归模型即通过这种方法建立

1
2
def linreg(X, w, b):
return tf.matmul(X, w) + b

tf.where方法以元素级实现张量的条件三目运算

获取变量的秩可使用tf.rank方法获取变量形状可通过变量的shape属性通常矩阵运算的结果与标记数据的维度是不一致的需要使用tf.reshape方法以改变张量的形状基于上述损失函数的代码如下

1
2
def loss(y_hat, y):
return (y_hat - tf.reshape(y, y_hat.shape)) ** 2 / 2

tf.reduce_meantf.reduce_sumtf.reduce_min方法和tf.reduce_max方法可以分别计算张量维度上元素的均值总和最小值和最大值tf.argmintf.argmax分别获得张量维度上元素最小值的索引和最大值的索引而可选参数axis可控制操作轴即计算的方向

变量tf.Variableassign_sub方法用于参数的自减更新考虑多个变量作为参数传入的情况基于小批量样本梯度下降更新参数的代码如下

1
2
3
def sgd(params, grads, lr, batch_size):
for param, grad in zip(params, grads):
param.assign_sub(lr * grad / batch_size)

线性回归模型中计算损失函数对各待训练参数求导的操作如下

1
2
3
4
5
6
7
8
for epoch in range(num_epochs):
for step, (X, y) in enumerate(dataset):
with tf.GradientTape() as g:
l = loss(linreg(X, w, b), y)
dw, db = g.gradient(l, [w, b])
sgd([w, b], [dw, db], lr, y.shape[0])
l_train = loss(linreg(X_train, w, b), y_train)
print(f'epoch {epoch + 1}, loss {float(tf.reduce_mean(l_train)):f}')

TensorFlow使用tf.GradientTape记录计算过程gradient方法可求张量的梯度

流水线(Pipeline)指机器学习算法的基础架构流水线包括收集数据将数据制备成训练数据文件训练一个或多个模型以及将模型导出至生产环境

数据集(Data Set)

数据集是记录的集合通常具有如下数学形式

其中称为数据的特征则称为特征空间(Feature Space)称为数据的标记则称为标记空间(Label Space)样本根据标记的有无可称作有标记的(Labeled)或无标记的(Unlabeled)

数据集的每条记录是关于一个事件或对象的描述称为样本(Sample)样例(Example)或数据点(Data Point)假定之间的关系可以通过一个未知的真是映射函数或真实条件概率分布来描述机器学习的目标就是寻找的近似物

通常对数据集做独立同分布(IID; Independent and Identically Distributed)假设即数据集的样本彼此相互独立并且训练集和测试集是满足相同概率分布的

众包(Crowdsourcing)指将工作先分配给很多参与者再合成为最终结果的模式是获取数据集资源的常见模式

常见公开数据集

scikit-learn提供了各种常见公开数据集

安德森鸢尾花数据集(Anderson's Iris Dataset)是机器学习和统计学中一个经典的数据集包含于scikit-learndatasets模块中其加载方式如下

1
2
from sklearn.datasets import load_iris
dataset = load_iris()

鸢尾花数据集包含花瓣的长度和宽度及花萼的长度和宽度的测量数据其单位为厘米每一项测量数据对应的鸢尾花已经被鉴定为属于山鸢尾(setosa)变色鸢尾(versicolor)和维吉尼亚鸢尾(virginica)三个品种之一

乳腺癌威斯康星数据集(Breast Cancer Wisconsin Dataset)是经典的二分类数据集加载方式如下

1
2
from sklearn.datasets import load_breast_cancer
dataset = load_breast_cancer()

乳腺癌数据集通过医学指标预测乳腺癌的恶性或良性

训练(Training)又称学习(Learning)指从数据中学得模型的过程即调整映射函数的参数使得训练样本的预测结果与标记尽可能接近训练过程中使用的数据称为训练集(Training Set)

通常需要随机打乱训练集scikit-learn中随机打乱训练集的代码如下

1
2
from sklearn.utils import shuffle
X_train, y_train = shuffle(X_train, y_train)

测试(Testing)指将学得模型用于预测的过程即验证测试样本的预测结果是否与接近测试过程中使用的数据称为测试集(Testing Set)

验证(Validation)即训练过程中的测试通常用于指导超参数的调整验证过程中使用的数据称为验证集(Validation Set)

训练集用于构建模型而验证集和测试集用于评估模型对前所未见的新数据的泛化能力训练期间故意不使用的样本即维持数据(Holdout Data)验证集和测试集都属于维持数据与纯粹基于训练集的损失相比基于维持数据的损失有助于更好地估算未知数据集的损失

训练集和测试集的划分方法

留出法(Hold-Out)直接将数据集随机划分为训练集和测试集两个互斥集合可重复实验取平均值scikit-learn中使用留出法划分数据集的代码如下其中可选参数test_sizerandom_state分别设置测试集的数量(或占比)和伪随机数种子

1
2
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(feature, label)

折交叉验证(-Fold Cross Validation)可将数据集分层采样划分为个大小相似的互斥子集每次用个子集作为训练集余下的子集作为测试集最终返回个测试结果的平均值scikit-learn中使用折交叉验证评价模型的代码如下其中可选参数cv用于设置折数

1
2
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y)

分层折交叉验证(Stratified -Fold Cross Validation)使每折的类别比例与数据集的类别比例相同scikit-learn使用交叉验证分离器KFold折交叉验证进行更多控制以实现分层折交叉验证代码如下

1
2
3
from sklearn.model_selection import KFold
kfold = KFold(n_splits=k, shuffle=True)
scores = cross_val_score(model, X, y, cv=kfold)

留一法(Leave-One-Out)是特殊的折交叉验证使测试集只包含单个样本留一法对于大型数据集非常耗时但在小型数据集上有时能有更好的估计结果scikit-learn使用留一法评价模型的代码如下

1
2
3
from sklearn.model_selection import LeaveOneOut
loo = LeaveOneOut()
scores = cross_val_score(model, X, y, cv=loo)

自助法(Bootstrap)对数据集有放回采样多次得到训练集余下的用做测试集自助法也是集成学习中Bagging的思想

稀疏数据集(Sparse Dataset)指数据集中存在大量特征值未知的数据不利于进行机器学习数据集包含太少的样本也不利于进行机器学习

数据集不一定包含目标在各种扰动下的信息此时需要进行数据增强(DA; Data Augmentation)以提升模型预测能力对于图像数据而言数据增强一般包括图像的旋转平移颜色变换裁剪仿射变换(定义见数学拾遗的线性变换)数据增强又译作数据扩充

对于大部分实际应用原始输入通常需要经过预处理(Pre-Processing)的工序以变换到新的空间而使得问题可以更容易被解决有时预处理的目的是为了加快计算速度通常预处理阶段是降维即遗弃信息的过程因此如果信息对于问题的解决很重要时系统整体的精度会下降

先验信念(Prior Belief)指在开始采用相应数据进行训练前对数据持有的假设

特征(Feature)

反映事件或对象在某方面的表现或性质是标记的证据

通常也把一个样本称为一个特征向量(Feature Vector)特征的数量称为样本的维度(Dimension)特征可根据其连续性或离散型分为连续特征(Continuous Feature)和离散特征(Discrete Feature)其中离散特征又称分类特征(Categorical)或属性(Attribute)

分桶(Bucketing)又称分箱(Binning)是根据值区间将连续特征转换为离散特征的操作转换后的离散特征单元称为桶(Bucket)或箱(Bin)

嵌套(Embedding)则是以连续特征表示分类特征的操作通常指将高维度向量映射到低纬度的空间深度学习中嵌套是可训练的

特征工程(Feature Engineering)包含特征提取(Feature Extraction)和特征选择(Feature Selection)旨在构建良好的数据表征即对于特定领域应用而言寻找最佳的数据表示常见的手工特征(Hand-Crafted Feature)有尺度不变特征变换(SIFT; Scale-Invariant Feature Transform)方向梯度直方图(HOG; Histogram of Oriented Gradient)由于手工特征是启发式的其算法设计背后的出发点不同将这些特征组合时有可能会产生冲突特征选择可将组合特征的效能发挥出来使原始数据在特征空间中的判别性最大化

特征缩放(Feature Scaling)可回避由于量纲不同自身变异或者数值相差较大所引起的误差使数据的尺度尽量统一手段包括标准化(Normalization)归一化(Standardization)

特征缩放的方法

scikit-learn提供了各种特征缩放的方法

sklearn.preprocessing.StandardScaler确保所有特征符合标准正态分布为所有特征的均值为所有特征的标准差其对每个数据点的转换如下式 sklearn.preprocessing.MinMaxScaler确保所有特征位于区间为所有特征的最小值为所有特征的最大值其对每个数据点的转换如下式 sklearn.preprocessing.Normalizer默认使用范数确保所有特征构成的向量长度为1为所有特征的范数其对每个数据点的转换如下式 特征缩放器首先使用fit方法进行拟合然后使用transform方法进行数据变换fit_transform方法是该流程的高效版本

对于基于梯度下降的算法如神经网络等未经特征缩放的数据需要梯度下降算法花费很多次迭代才能收敛对于基于距离的算法如支持向量机等未经特征缩放的数据可能因较大的尺度对结果的影响程度更大

基于树的算法如决策树线性判别分析朴素贝叶斯等不需要进行特征缩放

合成特征(Synthetic Feature)从一个或多个特征衍生而来包括如下类型对连续特征的分桶将一个特征值与其本身或其他特征值相乘或相除仅通过特征缩放创建的特征不属于合成特征

标记(Label)

又译作标签或称目标(Target)作为样本对应的归纳性描述是特征的结论

为样本提供标记的专家有时称为评分者(Rater)根据训练集中样本标记的情况机器学习可分为有监督学习无监督学习弱监督学习等类别

预测(Prediction)又称推断(Inference)覆盖有监督学习领域的大多数任务推断可分为如下两种类型离线推断(Offline Inference)即生成一组预测并存储然后根据需求检索这些预测在线推断(Online Inference)与之相对根据需求生成预测

优化(Optimization)

几乎所有的机器学习算法最后都归结为最优化问题

手动预先指定用于定义模型结构或优化策略而不在训练过程中更新的参数称为超参数(Hyperparameter)如学习率和批量大小等调参(Tuning)即选择超参数的过程是不断试错调整的优化手段需要依靠丰富的经验

损失函数(Loss Function)接受模型函数或模型函数的参数作为输入输出模型预测不准确的程度通常记为

通常会选择非负数作为损失且数值越小表示损失越小完美预测时的损失为零然而在现实中很难找到完美的数据集无论用何种手段观察特征与标记的潜在关系都可能会出现少量的观测误差

代价函数(Cost Function)指能衡量模型预测与真实情况差异的函数记为一般情况下损失函数针对单个样本而代价函数针对所有样本而在不严谨的讨论下损失函数可以和代价函数划等号代价函数有时又称经验风险(Empirical Risk)经验风险最小化(ERM; Empirical Risk Minimization)即寻找合适的模型参数使得经验风险最小即如下数学形式 目标(Objective)或称目标函数(Object Function)指有待优化的函数而代价函数是目标函数的一种

对于回归问题最常用的损失函数是残差平方和的变形即下式

其中常数系数不会带来本质的差别其作用是使求导后系数能够约去下同

为了度量模型在整个数据集上的质量使用的代价函数即下式又称二次代价(Quadratic Cost)

收敛(Convergence)即训练过程中经历一定次数的迭代损失变化很小或基本没有变化的状态在深度学习中损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变暂时形成收敛的假象

正则化(Regularization)指加入额外信息以解决过拟合问题的过程会使权重值变小使用正则化后损失函数如下式

上式称为正则化项正则化参数过大可能会造成欠拟合定义正则化参数以对之调整

引入正则化以限制模型能力使其不过度最小化经验风险称为结构风险最小化(SRM; Structure Risk Minimization)原则即如下数学形式 正则化(-Regularization)有时称为权重衰减(Weight Decay)使用平方范数定义如下

其中控制正则化的相对重要性称为正则化率(Regularization Rate)

使用正则化的梯度下降参数更新

为简化表达仅讨论单个参数的情况即使用代替下同使用正则化后梯度下降中偏导数的计算如下式

进而有参数的更新式如下式

正则化会使参数更接近零因此该方法可通过减小参数值的大小以降低模型复杂度正则化的应用可见岭回归

正则化(-Regularization)使用范数定义如下

使用正则化的梯度下降参数更新

使用正则化后梯度下降中偏导数的计算如下式

进而有参数的更新式如下式

正则化大概率会使很多参数变为零因此该方法可通过稀疏参数即减少参数的数量的方式来降低模型复杂度正则化可间接地实现特征选择正则化的应用可见套索回归

其他的正则化形式如下

  • 正则化(-Regularization)[13]对矩阵逐行计算范数促进最具鉴别性特征的选择
  • 提前停止(Early Stopping)又称早停即当模型在测试集上的性能不再提升时就提前停止训练可以视作时间维度上的正则化
  • Dropout[10]在网络训练过程中按照一定的概率将部分中间层的单元暂时从网络中丢弃即将单元的输出值置零
  • DropConnect将部分连接权重置零相比Dropout使用DropConnect时更不容易发生过拟合

利普希茨连续(Lipschitz Continuity)是指存在一个正实数使得函数的任意两个输入之间的差的绝对值与函数输出之间的差的绝对值成比例比例系数为即下式

其中又称利普希茨常数(Lipschitz Constant)并非固定不变的而是根据具体的函数而言的

可见若函数满足利普希茨条件每对点连线斜率的绝对值不大于若函数满足利普希茨条件则其在输入空间中的变化不会太快即输入的微小变化只会导致输出的微小变化

满足利普希条件的函数未必处处可微

双利普希茨连续(Bi-Lipschitz Continuity)定义如下 利普希茨连续的衍生概念如下

  • Lipschitz Continuous Gradient
  • Lipschitz Continuous Hessian

以此类推可构建更高阶的利普希茨连续条件

若函数是Lipschitz Continuous Gradient则有下式 若函数是Lipschitz Continuous Hessian则有下式

梯度下降(Gradient Descent)

梯度下降的目标是将损失函数最小化只要代价函数对参数的导数存在就能使用梯度下降方法因此是求解机器学习算法模型参数最常采用的方法之一考虑参数为单变量的情况梯度下降的参数更新公式如下 多变量的情况则使用梯度向量可理解为各权重偏置的重要程度即改变哪些参数性价比

梯度下降的伪代码

GRADIENT-DESCENT
输入学习率代价函数参数
输出更新后的参数
一开始随机初始化参数;
尚未达到局部最小值
;

学习率(Learning Rate)控制梯度下降的程度其设置的要点如下学习率太大难以到达局部最小值而是在其附近反复跳跃无法收敛学习率太小收敛速度缓慢

优化器(Optimizer)指梯度下降法的一种具体实现

最原始的梯度下降算法每次迭代使用所有样本来进行梯度的更新又称为批量梯度下降(BGD; Batch Gradient Descent)属于批量学习(Batch Learning)遍历整个数据集将导致实际中的执行可能会非常慢但由整个数据集确定的方向能够更好地代表样本总体从而更准确地朝向极值所在的方向

随机梯度下降(SGD; Stochastic Gradient Descent)又称朴素随机梯度下降(Vanilla SGD)每次迭代时使用一个样本来对参数进行更新属于在线学习(Online Learning)速度大大加快但难以收敛迭代次数也较多

小批量梯度下降(MBGD; Mini-batch Gradient Descent)则是批量学习和在线学习的折衷此处批量(Batch)即一次参数更新中使用的样本集批量大小(Batch Size)小批量梯度下降的参数更新公式如下 每次小批量更新称为迭代(Iteration)完整的训练集更新称为周期(Epoch)以确保不遗漏任何样本小批量梯度下降在实践中有必要随时间推移逐渐降低学习率即学习率衰减(Learning Rate Decay)或称学习率退火(Learning Rate Annealing)

深度学习的梯度下降优化算法

考虑参数为单变量的情况对于每一时刻(当前批次迭代的次数)下述优化算法通常可概括为如下步骤计算代价函数关于参数的梯度即根据历史梯度计算一阶动量即与梯度相关的函数以及二阶动量即与梯度的平方相关的函数若仅使用一阶动量根据式更新参数(或者也可视作的情况)若使用一阶动量和二阶动量引入起平滑作用的以防止0的情况根据下式更新参数 动量(Momentum)使步长受历史梯度的影响动量的引入有时可以防止损失优化陷入局部最小值的情况不同的优化器实质上是定义了不同的一阶动量和二阶动量公式显然随机梯度下降即的情况

带动量随机梯度下降(SGDM; Stochastic Gradient Descent with Momentum)引入作为一阶动量带动量随机梯度下降使得参数更新方向不仅由当前梯度决定也与此前累积的下降方向有关引入动量可有效加速梯度下降手收敛过程

涅斯捷罗夫梯度加速(NAG; Nesterov Accelerated Gradient)是对带动量随机梯度下降的改进使得算法能够在代价函数有增高趋势之前减缓更新速率

Adagrad的基础上使用二阶动量即考虑全部历史梯度可使得算法具有如下效果对于更新不频繁的参数单次步长更大对于更新频繁的参数单次步长较小让学习到的参数更稳定不至于被单个样本影响太多

RMSprop的基础上使用二阶动量可避免二阶动量持续累积的问题

Adam可被认为是RMSprop和带动量随机梯度下降的结合其一阶动量和二阶动量的计算式如下

对一阶动量和二阶动量偏置校正

梯度裁剪(Gradient Clipping)指应用梯度值前先设置上限梯度裁剪有助于确保数值稳定性以防止梯度爆炸

使用梯度下降的例子可见多元线性回归

迭代阈值收缩算法(ISTA; Iterative Shrinkage-Thresholding Algorithm)

近端梯度下降(Proximal Gradient Descent)旨在解决损失函数包含正则化项的优化问题Lipschitz Continuous Gradient的性质损失函数包含正则化项时梯度下降法可表示为如下数学形式 忽略常数项可得下式 当迭代步长函数的利普希茨常数的倒数可以确保算法的稳定性和快速收敛

迭代阈值收缩算法的伪代码

ITERATIVE-SHRINKAGE-THRESHOLDING-ALGORITHM
输入的利普希茨常数
输出更新后的参数
一开始随机初始化参数;
尚未达到局部最小值
式更新参数;

当使用正则化时迭代阈值收缩算法存在如下解析解

其中为软阈值操作函数定义为

快速迭代阈值收缩算法(FISTA; Fast ISTA)结合迭代阈值收缩算法与涅斯捷罗夫梯度加速

快速迭代阈值收缩算法的伪代码

FAST-ITERATIVE-SHRINKAGE-THRESHOLDING-ALGORITHM
输入的利普希茨常数
输出更新后的参数
一开始随机初始化参数;
尚未达到局部最小值
式为更新参数;
;
;

牛顿-拉弗森方法(Newton-Raphson Method)

见数学拾遗的牛顿-拉弗森方法通常机器学习使用梯度下降而非牛顿-拉弗森方法其最大的问题在于在优化过程中需要进行矩阵转换对于多特征情形开销过高

奇异值阈值(SVT; Singular Value Thresholding)

奇异值阈值用于解决核范数优化问题假设有问题进行奇异值分解得到进行软阈值操作则问题的解为

凸优化(Convex Optimization)

凸优化即使用如梯度下降的数学方法寻找凸函数的最小值机器学习方面的大量研究都是专注于如何通过公式将各种问题表示成凸优化问题以及如何更高效地解决这些问题凸优化的数学定义如下

其中均为凸函数为仿射函数(定义见数学拾遗的线性变换)

常见的凸优化问题如下

  • 线性规划(Linear Programming)
  • 二次规划(Quadratic Programming)
  • 半正定规划(Semi-Definite Programming)

仿射集合(Affine Set)

空间中的两个点可以唯一确定直线(Line)则唯一确定线段(Line Segment)若经过集合任意两点的直线仍在则称是仿射集合

则集合是一个子空间即关于向量加法与数乘是封闭的

集合是子空间的证明

则有因为是仿射集合且所以有下式 可知所以是子空间

仿射集合可表述为

线性方程组的解集是仿射集合反之任意仿射集合可以表示为线性方程组的解集

对于线性组合则称该线性组合为仿射组合(Affine Combination)

集合的仿射包(Affine Hull)指包含的最小仿射集合定义如下 若仿射集合满足那么

凸集(Convex Set)

若经过集合任意两点的线段仍在则称是凸集

对于线性组合则称该线性组合为凸组合(Convex Combination)

集合的凸包(Convex Hull)指包含的最小凸集定义如下 若凸集满足那么

凸集有如下的保凸运算(Convexity-Preserving Operations)

  • 为凸集也是凸集
  • 是仿射函数(定义见数学拾遗的线性变换)是凸集也是凸集是凸集也是凸集

若对于任意都有则称是锥(Cone)若该集合为凸集则称之为凸锥(Convex Cone)

两个不相交的凸集可以用一个超平面将二者分开这被称为超平面分离定理(Hyperplane Separation Theorem)

凸函数(Convex Function)

凸函数指向下凸的函数并非字面直观感受国内外教材有相反的定义的定义域是凸集且对于任意和任意满足下式则称是凸函数下式又称琴生不等式(Jensen's Inequality) 从几何角度而言之间的线段在的图像上方

严格凸函数(Strictly Convex Function)只有一个局部最小值即上式严格满足以及因此损失函数是严格凸函数表明其局部最小值就是全局最小值定义凸函数在定义域外的值为可以得到其延伸函数使上式仍然成立有时假设所有的凸函数被隐含地延伸

使得为凸函数则称-强凸函数(-Strongly Convex Function)即该函数的凸性比二次函数还要强强凸性 严格凸性 凸性

是凸函数则称为凹函数(Concave Function)

函数是凸函数当且仅当其在与定义域内的任何直线上是凸的即函数是凸函数当且仅当对任意和任意向量函数是凸函数其定义域

假设在其定义域内二阶连续可微是凸函数的充要条件如下

  • 使得的一阶泰勒近似始终在的下方
  • 使得处处都有非负曲率(若使得是严格凸函数)

函数的-下水平集(-Sublevel Set)定义为对于任意凸函数的下水平集都是凸集

函数的上境图(Epigraph)定义为函数为凸函数当且仅当其上境图是凸集

凸函数有如下的保凸运算

交替方向乘子法(ADMM; Alternating Direction Method of Multipliers)

交替方向乘子法用于求解如下形式的问题

其中均为凸函数

定义对应的增广拉格朗日函数如下 交替方向乘子法的迭代形式如下

评估(Evaluation)

评估关注的数值称为指标(Metrics)可能可以也可能不可以直接在机器学习系统中得到优化

模型对训练集之外的新样本进行预测的能力称为模型的泛化(Generalization)能力如果模型能对新样本做出准确预测就说该模型能从训练集泛化到测试集显然机器学习希望得到泛化误差最小的学习器若模型泛化能力不高可能有如下原因

  • 过拟合(Overfitting)过于紧密或精确匹配训练集即在训练集中表现佳而面对新样本的预测效果不理想是机器学习面临的关键障碍
  • 欠拟合(Underfitting)模型未经期望的优化没能很好地捕捉数据特征在训练集和新样本上的表现都不理想

需要对机器学习模型进行评估以判断学习器的优劣通常将学习器的实际预测输出与样本真实标记之间的差异称为误差(Error)模型对训练数据的预测误差称为经验误差(Empirical Error)模型对测试数据的预测误差称为泛化误差(Generalization Error)或测试误差(Test Error)

误差可分解为如下三个部分

  • 偏差(Bias)又称预测偏差(Prediction Bias)度量了预测结果与真实结果的偏离程度通常是预测结果均值与真实结果均值的相差程度刻画了学习算法本身的拟合能力代表了模型本身的精度即模型的表达能力(Representability)
  • 方差(Variance)度量了预测结果分布的分散程度刻画了数据扰动所造成的影响反映模型的泛化能力
  • 噪声(Noise)数据本身带有的不确定性

为了取得好的泛化性能需要使偏差和方差都尽可能小训练不足时学习器的拟合能力不强此时偏差主导泛化误差随训练程度加深学习器的拟合能力逐渐增强此时方差主导泛化误差

容量(Capacity)或复杂度(Complexity)即模型拟合各种函数的能力容量低的模型可能很难拟合数据集即欠拟合而容量高的模型可能导致过拟合衡量机器学习模型复杂度的手段有瓦普尼克-契尔沃年基斯维拉德马赫复杂度

一些评估指标与正确预测无关但仍有价值如训练和预测的耗时等其他与正确预测无关的其他评估指标如下鲁棒性(Robust)即模型处理缺失值和异常值的能力可扩展性(Scalability)即处理大数据集的能力可解释性(Interpretability)即预测标准的易理解程度

奥卡姆剃刀(Ockham's Razor)

威廉·奥卡姆(William Ockham)

英国经院哲学家奥卡姆剃刀理论的提出者

奥卡姆剃刀理论又称简约法则威廉·奥卡姆的表述为切勿浪费较多东西去做用较少的东西同样可以做好的事情即坚持若无必要勿增实体的原则考虑到模型表达能力和泛化能力的权衡一般情况下在保证模型表达能力的前提下尽量选择简单的模型以保证模型的适用性

没有免费的午餐(NFL; No Free Lunch)

没有免费的午餐定理表明没有一种机器学习算法是适用于所有情况的如果一个模型在某一条件某一数据环境下具有某种优势则在其他条件其他数据环境下必然具有相应劣势NFL定理不仅适用于机器学习算法选择也适用于模型评估方法

有监督学习(Supervised Learning)

又称有导师学习训练集中所有样本的标记已知回归分类是两个最常见的有监督学习任务

回归(Regression)

回归是连续的预测任务探索变量间的函数关系即这一术语由统计学家高尔顿提出

回归任务评估指标

决定系数(Coefficient of Determination)又称拟合优度记为适用于一元线性回归值越大则自变量对因变量的解释程度越高为第个样本的预测值为第个样本的实际值为样本实际值的平均值则决定系数的定义如下

易知此时获得最优拟合情况scikit-learn中调用计算决定系数函数的代码如下

1
2
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_predict)

修正决定系数(Adjusted Coefficient of Determination)的定义如下

式的回归平方和(SSR; Sum of Squares of Regression)定义如下 上式中预测值和实际值之差的平方又称平方损失(Squared Loss)有时又称损失( Loss)

式的残差平方和(SSE; Sum of Squares due to Error)定义如下 式的总离差平方和(SST; Total Sum of Squares)定义如下

均方误差(MSE; Mean Square Error)是回归任务中最常用的性能度量定义如下 scikit-learn中调用计算均方误差函数的代码如下

1
2
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_predict)

根均方误差(RMSE; Root Mean Square Error)是均方误差的变体定义如下 scikit-learn中调用计算根均方误差函数的代码如下

1
2
from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_test, y_predict, squared=False)

平均绝对误差(MAE; Mean Absolute Error)是均方误差的变体定义如下

scikit-learn中调用计算平均绝对误差函数的代码如下

1
2
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_test, y_predict)

平均绝对百分数误差(MAPE; Mean Absolute Percentage Error)的定义如下

赤池信息准则(AIC; Akaike Information Criterion)建立在信息熵概念的基础上是评估模型拟合优劣的指标表示需要最大化的值如模型的似然函数赤池信息准则定义如下

贝叶斯信息准则(BIC; Bayesian Information Criterion)类似于赤池信息准则定义如下

马洛斯(Mallows' )的定义如下其中为模型均方差可通过估计

上述回归评估指标取平方或取绝对值的原因是防止正负误差抵消

的证明

的定义可得下式 可知只需证式右端最后一项为零代入一元线性回归式可将该项可改写为如下形式 最小二乘法要求最小化说明的偏导为零即有下式 同时说明的偏导为零即有下式 可得式右端最后一项为零因此成立

分类(Classification)

分类是离散的预测任务实现分类的算法称分类器(Classifier)在分类问题中输出目标是离散的标记而通常判别函数(Discriminant Function)的值域为实数因此无法直接预测需要引入一个非线性的决策函数(Decision Function)以实现预测记整个分类器为则分类问题即如下数学形式

在二分类(Binary Classification)问题是/否问题通常将其中一个类别称为正类(Positive Class)另一类别称为反类(Negative Class)对于满足的二分类数据集若存在线性模型的权重使得所有的样本都满足那么训练集是线性可分(Linearly Separable)对于上述二分类问题决策函数可以是符号函数而所有满足的数据点组成的分割平面称为决策边界(Decision Boundary)

多分类(Multi-Class Classification)是又称单标记分类(Single-Label Classification)可拆分转换为二分类问题经典的拆分策略如下

  • 一对一(OvO; One vs. One)个类别两两配对产生个二分类任务最终的分类结果通过投票产生
  • 一对其余(OvR; One vs. Rest)将一个类作为正类其余类作为反类产生个分类器若只有一个分类器预测为正类则就是最终分类结果若有多个分类器预测为正类则选择置信度最大的
  • 多对多(MvM; Many vs. Many)每次将若干个类作为正类若干个其他类作为反例显然OvOOvRMvM的特例

在多分类问题中常使用独热编码(One-Hot Encoding)或称哑变量(Dummy Variable)作为数据的标记假设所有类型的名称构成词表词表大小为则可以利用维的独热编码向量表示每一种类别在第种类别对应的独热编码向量中维的值为1其余维度的值为0TensorFlow中将数据转换为独热编码的操作如下

1
y = tf.one_hot(labels, depth=num_classes)

类别不平衡(Class Imbalance)问题指分类任务中不同类别的训练样例数目差别很大的情况假设有二分类预测值则几率反映正类可能性和反类可能性之比值类别不平衡时表示正类数而表示反类数使用下式对预测值进行调整的策略即再缩放(Rescaling)又称再平衡(Rebalance) 然而训练集是真实样本总体的无偏采样的假设往往并不成立即未必能有效地基于训练集观测几率来推断真实几率现解决类别不平衡问题的方法有如下三类

  • 欠采样(Undersampling)又称下采样(Downsampling)去除多数类样本使得正反类样例数目接近
  • 过采样(Oversampling)又称上采样(Upsampling)增加少数类样本使得正反类样例数目接近
  • 阈值移动(Threshold Moving)直接基于原始训练集进行学习预测时将再缩放修正式嵌入决策过程中

其中过采样的策略有如下几类

  • ROS(Random Oversampling)随机复制少数类样本简单易操作但容易导致过拟合
  • SMOTE(Synthetic Minority Oversampling Technique)针对少数类中的每个样本计算欧氏距离查找个近邻沿着与个少数类近邻中的任一相连的线段来生成新样本
  • 生成对抗网络

经典的分类任务评估指标

错误率(Error Rate)分类错误样本占总样本的比例定义如下

精度(Accuracy)分类正确样本占总样本的比例定义如下

计算精度函数的代码如下

1
acc = np.mean(y_test == y_predict)

使用Keras模型的score方法也可以计算测试集的精度代码如下

1
acc = model.score(X_test, y_test)

精度是很好很直观的评估指标但有时精度高并不一定意味着模型好如数据分布严重不均衡地偏向正类时一个只输出正类的模型就能达到高精度

混淆矩阵(Confusion Matrix)又称误差矩阵记录预测类别和实际类别

对于二分类任务可根据学习器预测类别与样本真实类别的组合划分真阳性(TP; True Positive)假阳性(FP; False Positive)真阴性(TN; True Negative)假阴性(FN; False Negative)四种情况显然样本总数错误率精度

二分类任务的混淆矩阵

通常二分类任务的混淆矩阵如下

真实类别 预测结果为正类 预测结果为反类
正类
反类

由混淆矩阵衍生的分类任务评估指标

特异性(Specificity)分类器对反类的识别能力的评估指标定义如下 查全率(Recall)又称召回率记为关注真阳性在实际正类中的占比与命中率(Hit Rate)或称灵敏度(Sensitivity)分类器对正类的识别能力的评估指标含义相同定义如下 查准率(Precision)又称准确率记为关注真阳性在预测正类中的占比定义如下 查准率和查全率是一对矛盾的度量一般而言查准率较高时查全率往往较低反之亦然

即几何平均值(Geometric Mean)综合考虑特异性和灵敏度在数据不平衡的情况下该指标很有参考价值定义如下 将样本依为正类的可能性降序排序按此顺序逐个将样本作为正类预测以查准率为纵轴以查全率为横轴作图得到查准率-查全率曲线(P-R Curve; Precision-Recall Curve)简称P-R曲线曲线的平衡点(BEP; Break-Even Point)时的取值粗略比较的情况下此值越大说明学习器越优

scikit-learn中计算P-R曲线的代码如下其中得到样本为正类的可能性需要调用模型的decision_functionpredict_proba方法

1
2
3
from sklearn.metrics import precision_recall_curve
precision, recall, thresholds = precision_recall_curve(
y_test, model.decision_function(X_test))

P-R曲线下的面积实际上是目标检测中常用的评价指标平均精度(AP; Average Precision)P-R曲线为函数易得平均精度的定义如下 scikit-learn中调用平均精度函数的代码如下

1
2
from sklearn.metrics import average_precision_score
ap = average_precision_score(y_test, model.decision_function(X_test))

值基于查准率和查全率的调和平均(Harmonic Mean)定义如下式

scikit-learn中调用计算值函数的代码如下

1
2
from sklearn.metrics import f1_score
f1 = f1_score(y_test, y_predict)

对于多分类任务值的计算可有如下方式

  • 宏观(Macro)对每个类别单独计算再取算术平均值
  • 微观(Micro)累加各类别的查全率和查准率再计算

度量(-Measure)或称分数(-Score)结果记为值的一般形式基于加权调和平均如下式

上式的度量了查全率对查准率的相对重要性时退化为时查准率有更大影响时查全率有更大影响

受试者工作特征(ROC; Receiver Operating Characteristic)P-R曲线类似而横纵轴不同ROC曲线的纵轴为真阳性率(TPR; True Positive Rate)即召回率定义如下 ROC曲线的横轴为假阳性率(FPR; False Positive Rate)或称误诊率(Misdiagnosis Rate)定义如下

此外有真阴性率(TNR; True Negative Rate)即特异性定义如下 此外还有假阴性率(FNR; False Negative Rate)或称漏诊率(Missed Diagnosis Rate)定义如下

scikit-learn中计算ROC曲线的代码如下

1
2
from sklearn.metrics import roc_curve
fpr, tpr, thresholds = roc_curve(y_test, model.decision_function(X_test))

有限样本的情况下无法产生光滑的ROC曲线通常比较ROC曲线下的面积(AUC; Area Under ROC Curve)以判断学习器的优劣scikit-learn中调用计算AUC函数的代码如下

1
2
from sklearn.metrics import roc_auc_score
auc = roc_auc_score(y_test, model.decision_function(X_test))

AUC越大说明模型的性能越优

多标记学习(MLL; Multi-Label Learning)

多标记学习[14]任务中样本与多个标记同时相关联表示维特征空间为包含个可能标记的标记空间多标记学习任务旨在从训练集中学习映射其中

多标记学习任务评估指标

记样本真实标记为预测的判别结果为决策结果为为与对应的排序函数常见的多标记学习任务评估指标如下其中为异或运算

名称 公式
子集精度(Subset Accuracy)
汉明距离(Hamming Distance)
最高错误率(One Error)
覆盖率(Coverage)

早期的多标记学习算法可依策略分为两类

  • 问题转换(PT; Problem Transformation)将多标记学习问题转换为其他现成学习范式
  • 算法适应(AA; Algorithm Adaptation)对常用的有监督学习算法进行改造使之适用于多标记学习

二元关系(BR; Binary Relevance)

二元关系法将多标记学习问题拆解为个二元分类问题个基分类器逐个训练

分类器链(CC; Classifier Chains)

分类器链类似二元关系法但每次训练将上个分类器的预测结果作为特征以建模二元关系法忽略的标记依赖性

  • 贪婪分类器链(Greedy CC)按某种顺序逐个训练个基分类器
  • 概率分类器链(PCC; Probabilistic CC)贝叶斯最优的分类器链将分类器链的概念视为二叉树中的路径其叶节点与标记相关联贪婪分类器链只关注固定顺序的单个路径而概率分类器链则关注个路径该方法对数据集的标记数量有限制
  • 蒙特卡洛分类器链(MCC; Monte-Carlo CC)使用蒙特卡洛采样的概率分类器链变体次采样概率最大的标记组合性能接近概率分类器链

标记幂集(LP; Label Powerset)

标记幂集将个标记的全部个组合视为不同的类别将多标记学习问题转换为多分类问题复杂度高难以面向长尾数据且难以预测训练时未知的标记组合

校准标记排序(Calibrated Label Ranking)

校准标记排序将多标记学习问题转换为标记排序问题预测时投票排序各个学习器的输出最终结果即排序后较大的标记

随机k标记集(RAkEL; Random k-Labelsets)

随机标记集[11]构建标记空间个随机子集在这些子集上分别使用标记幂集算法并集成各个结果

标记分布学习(LDL; Label Distribution Learning)

标记分布学习[2]是一种通用的学习框架可包含多标记学习作为特例多标记学习关注哪些标记能够描述样本的问题而标记分布学习关注每个标记以何种程度描述样本的问题标记分布(Label Distribution)为标记空间中的每个标记分配一个称为描述度(Description Degree)的实数值样本中标记的描述度记为标记分布应满足如下约束

  • 非负性(Non-Negative)
  • 和为一(Sum-to-One)

标记分布学习任务中样本与标记分布相关联样本的标记分布中某标记的描述度并非表示该样本属于某标记的概率而是某标记能描述该样本的程度简记样本的标记分布为标记分布学习任务旨在从训练集中学习映射

标记分布学习任务评估指标

标记分布学习任务通常以距离和相似性作为评估指标记样本真实标记分布为预测标记分布为常见的评估指标如下其中克拉克距离和堪培拉距离对接近零的描述度细微变化是敏感的

名称 公式
切比雪夫距离(Chebyshev Distance)
克拉克距离(Clark Distance)
堪培拉距离(Canberra Distance)
KL散度
余弦相似度(Cosine Similarity)
交叉相似度(Intersection Similarity)

经典的标记分布学习算法以最大熵模型建模并以KL散度为优化目标使用改进迭代尺度拟牛顿法进行优化

结构化学习(Structured Learning)

结构化数据(Structured Data)指数据集的每个特征都有清晰的定义通常可以通过表格的形式呈现而非结构化数据(Unstructured Data)与之相对如原始音频图像文本等数据

结构化学习的输入和输出都是结构化数据如文本序列语法解析树预测框等语音识别翻译文法解析目标检测等都是结构化学习的应用场景

k近邻(k-NN; k-Nearest Neighbors)

懒惰学习(Lazy Learning)即训练阶段仅存储样本无训练时间开销测试阶段时再处理近邻是最常见的懒惰学习算法邻居(Neighbors)即距离待测样本最近的个训练样本一般情况下以欧氏距离作为距离度量

近邻可用于分类任务预测结果由个邻居投票表决scikit-learn调用近邻分类的代码如下

1
2
3
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X, y)

近邻可用于回归任务预测结果为个邻居的平均值scikit-learn调用近邻回归的代码如下

1
2
3
from sklearn.neighbors import KNeighborsRegressor
model = KNeighborsRegressor(n_neighbors=k)
model.fit(X, y)

的增加分类的决策边界和回归的预测曲线会越来越平滑

近邻模型容易理解通常不需要过多调节就能得到不错的性能通常在考虑使用更高级的技术前尝试构建模型的速度通常很快但数据集大时预测速度慢且不能处理具有很多特征的数据集对稀疏数据集而言效果尤其不好

线性模型(Linear Model)

广义线性模型(Generalized Linear Model)定义如下

其中在统计学领域单调可微函数被称为联系函数(Link Function)

线性模型虽然简单却有丰富的变化可令模型预测值逼近的衍生物如认为对应输出在指数尺度上变化时可建立模型对数线性回归(Log-Linear Regression)可知对数线性回归是广义线性模型在时的特例

非线性模型(Nonlinear Model)定义如下

其中个非线性基函数组成的向量

非线性模型通过逐次逼近的方法拟合数据其特征因子对应的参数不止一个

一元线性回归(Simple Linear Regression)

一元线性回归模型如下式

最小二乘法(LSM; Least Squares Method)试图找到一条直线使所有样本到直线上的欧氏距离之和最小最小二乘法基于均方误差最小化来求解模型考虑只有一个特征的情况即下式

基于均方误差的损失函数的极大似然估计解读

上式可以用于线性回归的一个原因是假设了观测中包含服从正态分布的噪声即有下式 可得似然函数如下 根据最大似然估计的方法使用对数似然将乘积转化为求和将最大化改写为最小化可得下式 只需假设为常数即可忽略上式右端第一项且第二项除常系数外其余部分与均方误差是相同的因此在高斯噪声的假设下最小化均方误差等价于对线性模型的极大似然估计

分别对求偏导可得下式

令上式为零可得普通最小二乘法的参数估计公式如下式

参数的估计公式的证明

的偏导为零可得下式 代入上式整理后可得下式 引入下式

式可改写为如下形式

最小二乘回归(Least Squares Regression)即通过最小化均方误差训练线性回归模型最小二乘法用途很广不仅限于线性回归

多元线性回归(Multivariate Linear Regression)

多元线性回归模型如下式

严格地说上式是输入特征的一个仿射变换(定义见数学拾遗的线性变换)

为方便讨论将数据集的特征表示为一个大小的设计矩阵(Design Matrix)其中每行对应一个样本该行前个元素对应个属性值最后一个元素恒置为即下式同时将数据集的标记改写为列向量

多元线性回归模型的参数估计为如下数学形式 可得多元线性回归的参数估计公式又称正规方程(Normal Equation)即下式类似地使用公式简单表述的解的形式在数学上又称为解析解(Analytical Solution)

多元线性回归参数估计公式的证明

将式求导可得下式 由标量对向量的求导法则(见矩阵微积分的向量求导)可得下式 令上式为零可得下式

多元线性回归的参数估计公式的适用情景如下求逆需要保证其行列式的值不接近0因此自变量间相关性明显时此参数估计公式不适用特征数量大时运算的代价高此时参数估计公式也不适用

scikit-learn内置多元线性回归的实现scikit-learn中使用解析解进行参数估计的代码如下

1
2
3
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y) # 根据约定一般使用大写的X

使用随机梯度下降法进行参数优化的代码如下

1
2
3
from sklearn.linear_model import SGDRegressor
model = SGDRegressor()
model.fit(X, y)

定义向量作为coef_定义作为intercept_输出模型参数和拟合优度的代码如下

1
2
3
print(model.coef_) # 系数
print(model.intercept_) # 截距
print(model.score(X_test, y_test)) # 拟合优度

scikit-learn为了与用户设置的参数区分开总是将从训练数据中得出的参数值保存在以下划线结尾的属性中

岭回归(Ridge Regression)

岭回归使用正则化约束更强因而更不容易过拟合是普通线性回归最常用的代替方法之一岭回归模型的参数估计为如下数学形式 由约束项可见岭回归希望的每个元素都尽可能接近0即意味着每个特征对输出的影响都应尽可能小类似多元线性回归参数估计公式的证明方式可得岭回归参数估计公式如下

其中为预先设置的超参数用于控制系数收缩量取值越大则收缩量越大

使用岭回归模型的代码如下

其中alpha即上式

1
2
3
from sklearn.linear_model import Ridge
model = Ridge(alpha=.5)
model.fit(X, y)

有时岭回归不作预测而是用于筛选变量研究自变量贡献标准化岭回归系数稳定且绝对值很小的自变量随岭参数的增加岭迹图曲线趋近于零的自变量是可剔除的若有若干个回归系数不稳定需根据去掉某变量后重新进行岭回归分析的效果来确定

套索回归(Lasso Regression)

套索即最小绝对值收敛和选择算子(LASSO; Least Absolute Shrinkage and Selection Operator)套索回归使用正则化参数估计为如下数学形式 由约束项可见套索回归希望的某些元素恰好为0即意味着某些特征被模型完全忽略这可以被视作一种自动化的特征选择忽略某些特征可使得模型更容易解释也可以呈现模型最重要的特征套索回归因使用正则化而不存在解析解使用套索回归模型的代码如下

其中alpha控制系数稀疏度max_iter为运行迭代的最大次数

1
2
3
from sklearn.linear_model import Lasso
model = Lasso(alpha=0.01, max_iter=100000)
model.fit(X, y)

欠拟合时即模型在训练集和测试集的表现都差时可尝试减小alpha即控制系数趋向于0的强度同时需要增加max_iter

scikit-learn还提供了结合岭回归和套索回归二者的惩罚项的ElasticNet

局部加权线性回归(LWLR; Locally Weighted Linear Regression)

局部加权线性回归模型的参数估计为如下数学形式

其中是数据点的权重通常是预测点与该数据点的距离

局部加权线性回归的参数估计公式如下

其中是用于给每个数据点赋予权重的矩阵

最大熵模型(Maximum Entropy Model)

最大熵原理(Maximum Entropy Principle)认为在所有可能的概率模型分布中且在满足既定的约束条件的情况下熵最大的模型即最大熵模型就是最优的模型

定义为特征函数(Feature Function)满足某一事实时其值为1否则为0

是特征函数关于经验分布的期望值 > 其中可由数据集中样本出现的频数除以样本总数计算而得

是特征函数关于真实分布的期望值定义如下 > 其中可由样本出现的频数除以样本总数计算而得

是一种常见的约束形式

假设满足所有约束条件的模型集合如下 > 其中表示所有可能的概率模型分布表示约束条件的数目

定义在条件概率分布上的条件熵如下

则模型集合中条件熵最大的模型即最大熵模型

最大熵模型的学习等价于约束最优化问题按最优化的习惯等价于在满足和约束条件集合的情况下求解的最小值引入拉格朗日乘子可得下式则得到最优化问题其等价的对偶问题为

上式对求偏导数可得下式

令上式为零的情况下得到下式

可得下式

上式中称为标准化因子(Normalization Factor)定义如下

是特征函数的权值也是最大熵模型中的参数向量的参数估计公式如下

可知最大熵模型的学习归结为对的极大化

的似然函数为如下数学形式

使用对数似然将乘积转化为求和得到下式

极大化等价于最大熵模型的最大似然估计

改进迭代尺度(IIS; Improved Iterative Scaling)

改进迭代尺度试图寻找新的参数向量使得模型的对数似然函数值增大

对于给定的经验分布模型参数由对数似然函数的改变量如下

引入不等式计算下界以去除对数项

记此下界为改进迭代尺度引入即数据点满足特征函数的数量为特征函数构造分布此时可改写为下式

引入琴生不等式(Jensen's Inequality)计算下界的下界

记此下界为依次令其对的偏导为零求解方程即可得到

拟牛顿法(Quasi-Newton Method)

见数学拾遗的拟牛顿法

对数几率回归(Logistic Regression)

对数几率回归又称逻辑回归虽然名称叫回归但实际上是一种分类学习方法

对数几率回归直接对分类可能性进行建模无需事先假设数据分布可避免假设分布不准确导致的问题对数几率回归不是仅预测出类别而是可得到近似概率预测

将对数几率函数(即Sigmoid函数)代入广义线性模型即令可得如下的对数几率回归模型

其中视为样本作为正类的可能性是其为反类的可能性两者的比值称为几率(Odds)取几率的对数得到对数几率(Logit; Log Odds)

通常使用最大似然估计来计算逻辑回归的参数即令每个样本属于其真实标记的概率越大越好对于逻辑回归有似然函数如下

其中

可得对数几率回归的参数估计公式如下

对数几率回归的似然函数推导

视为后验概率估计对数几率回归模型可重写为如下数学形式 显然似然项可改写为如下数学形式 将上式代入得到似然函数如下 由于的取值只可能是01似然函数可改写为下式 两式综合可得下式

可知是关于的高阶可导连续凸函数可使用梯度下降牛顿迭代法求得最优解

使用对数几率回归模型的代码如下

1
2
3
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X, y)

线性判别分析(LDA; Linear Discriminant Analysis)

又称费雪线性判别(Fisher's Linear Discriminant)设法将样例投影至直线上使得同类样例的投影点尽可能接近而异类样例的投影点尽可能远离在对新样本进行分类时将其投影至该直线上再根据投影点的位置来确定新样本的类别

支持向量机(SVM; Support Vector Machine)

对于支持向量机数据点被视为维向量研究是否可以使用维超平面(Hyperplane)分开数据点即所谓线性分类器样本空间任意数据点到超平面的距离为如下数学形式 假定训练集且标记满足正确分类即如下要求则有则有

支持向量(Support Vector)即位于类别间决策边界的数据点预测新样本需要测量其与每个支持向量之间的距离两个异类支持向量到超平面的距离之和为其被称为间隔(Margin)训练支持向量机即找到最大间隔的超平面即最小化

线性模型在低维空间中可能非常受限添加更多的特征可使线性模型更加灵活支持向量机使用的核技巧(Kernel Trick)可将数据映射至更高维空间高斯核(Gaussian Kernel)又称径向基函数核(RBF Kernel; Radial Basis Function Kernel)是支持向量机常用的核函数考虑所有阶数的所有可能的多项式且阶数越高对应特征的重要性越小其数学形式如下

其中超参数决定点与点之间靠近是多大距离值非常大时往往过拟合呈倒数关系的超参数又称高斯核的带宽(Width)且易知

硬间隔(Hard Margin)要求所有样本必须正确分类而软间隔(Soft Margin)允许支持向量机在一些样本上出错软间隔时支持向量机的参数估计即如下数学形式

其中正则化参数表示对误分类数据点的惩罚程度值过大时将趋于硬间隔标准决策边界间隔将变小且泛化能力变差可以是铰链损失(Hinge Loss)或指数损失(Exponential Loss)或对率损失(Logistic Loss)

常用的软间隔支持向量机使用铰链损失

决策树(Decision Tree)

罗斯·昆兰(Ross Quinlan)

澳大利亚计算机科学家提出最初的决策树算法进一步提出ID3C4.5算法

决策树具有强判断依据可视化后说服力高即可解释性强

决策树的根结点即整个数据集决策树以属性条件作为分支结点决策树生成时每个结点包含的样本集合根据属性条件被划分至子结点中预测时属性条件判断结果作为该样本分类的路径走向最终预测的类别作为决策树的叶结点仅有一层划分的决策树称为决策树桩(Decision Stump)

生成决策树的伪代码

生成决策树的伪代码如下

DECISION-TREE
输入训练集和属性集
输出为根结点的决策树
一开始生成结点;
中样本全属于同一类别
标记为类叶结点;
;

中样本在上取值相同
标记为叶结点其类别标记为中样本数最多的类;
;

中选择最优划分属性;
的每一个值
结点生成分支;
表示中在上取值为的样本子集;

标记为叶结点其类别标记为中样本数最多的类;

为分支结点;

决策树生成的关键是选择最优划分属性即使分支结点所含样本尽可能属同一类别的划分属性如果树中某个叶结点包含数据点的分类情况都相同则称这个叶结点是纯的(Pure)选择最优划分属性的标准有信息增益增益率和基尼指数

决策树的生成是一个递归过程有三种情形会导致递归返回当前结点包含的样本全属于同一类别无需划分当前属性集为空或所有样本在所有属性上取值相同无法划分结点的类别为所含样本最多的类别当前结点包含样本集合为空无法划分结点的类别为其父节点所含样本最多的类别

决策树处理

决策树的剪枝处理可用于回避过拟合决策树剪枝基本策略如下

  • 预剪枝(Pre-pruning)在决策树生成过程中对每个结点在划分前进行估计若不能带来泛化性能的提升则不进行划分即将此结点标记为叶结点以及早停止树的生长
  • 后剪枝(Post-pruning)训练完成后自底向上对非叶结点进行考察若将子树替换为叶结点能带来泛化性能的提升则替换之

一般情况下后剪枝决策树通常比预剪枝决策树保留更多分支因此欠拟合风险较小且泛化性能往往优于预剪枝决策树然而其训练时间开销较预剪枝决策树要大得多

决策树也需要对连续值进行处理通常采用二分法将连续属性离散化这也是C4.5决策树算法中采用的机制步骤如下

  1. 将训练集中连续属性的取值顺序排序记为

  2. 求候选划分点集合

  3. 考察并选取最优划分点例如以最大信息增益为准则即选取作为最优划分点其中是样本集基于划分点二分后的信息增益

决策树也需要对缺失值进行处理定义为无缺失值样本子集为无缺失值样本所占的比例如以最大信息增益为准则可将信息增益计算式如下推广

scikit-learn实现的决策树DecisionTreeClassifier使用CART算法即以基尼指数作为选择最优划分属性的标准且只实现了预剪枝没有实现后剪枝

模型的feature_importances_可查看特征重要性(Feature Importance)即每个特征对树的决策的重要程度特征重要性的求和始终为1如果某个特征的特征重要性很小并不能说明该特征没有提供任何信息只能说明该特征未被树选中而可能是另一特征也包含了同样的信息

信息增益(Information Gain)

信息增益的数学形式如下

其中指属性可能取值的总数若以这些可能取值对样本集进行划分其中划入第个分支结点的子集记为信息熵为度量样本集合纯度最常用的指标为第类样本所占的比例

一般而言信息增益越大即信息熵减少得越多则意味着使用属性来划分所获得的纯度提升越大即减小不确定性越多

ID3算法的ID指迭代二分法(Iterative Dichotomiser)该算法以最大信息增益为准则来选择最优划分属性

增益率(Gain Ratio)

信息增益对可取值数目较多的属性有所偏好增益率的目的是需要减少这种偏好带来的不利影响增益率的数学形式如下 上式中称为属性的固有值(IV; Intrinsic Value)定义如下 C4.5算法的C指分类器(Classifier)该算法使用增益率为准则但并不是直接选择增益率最大的候选划分属性而是先从候选划分属性中找出信息增益水平高于平均水平的属性再从中选择增益率最高的

基尼指数(Gini Index)

基尼指数的数学形式如下

其中即基尼值定义如下基尼值反映了从数据集中随机抽取两个样本其类别标记不一致的概率用于度量数据集的纯度

CART决策树以最小基尼指数为准则来选择最优划分属性

朴素贝叶斯(NB; Naive Bayes)

又称朴素贝叶斯分类器(NBC; Naive Bayes Classifier)其中朴素即假设每个属性取其各个值的可能性是独立的与其他属性的取值不相关根据这一假设重写贝叶斯公式得到下式

其中为可能的类别标记为属性数目

朴素贝叶斯分类器的表达式即类别判定准则如下 表示训练集中标记类别为的样本的集合显然先验概率的计算式如下 对于离散属性表示训练集中第个属性取值为的样本的集合条件概率的计算式如下 拉普拉斯修正(Laplacian Correction)又称拉普拉斯平滑(Laplacian Smoothing)可避免训练集因样本不充分而导致概率值为零的问题经拉普拉斯修正后先验概率和条件概率的计算式如下

其中为训练集中可能的类别数为第个属性可能的取值数

对于连续属性条件概率可考虑概率密度函数假定其中分别是类别为的样本在第个属性上取值的均值和方差即下式

scikit-learn实现了如下三种的朴素贝叶斯分类器平滑化对应可选参数alpha

  • GaussianNB可应用于任意连续数据
  • BernoulliNB假定输入数据为二分类数据
  • MultinomialNB假定输入数据为计数数据即每个特征代表对某个对象的整数计数

GaussianNB主要用于高维数据BernoulliNBMultinomialNB常用于文本数据分类广泛用于稀疏计数数据

神经网络(NN; Neural Network)

神经网络起源于神经科学生物学的神经元(Neuron)由负责输入的树突(Dendrite)负责处理的细胞核(Cell Nucleus)轴突(Axon)负责输出的轴突末梢(Axon Terminal)特异性接头突触(Synapse)等组成神经元之间通过突触互联而传输信息

树突接收到来自其他神经元(或视网膜等环境传感器)的信息通过突触权重加权以确定输入的影响即激活或抑制来自多个源的加权输入以和的形式汇聚于细胞核通常经过一些非线性处理到达目的地或传入下一神经元这种生物神经元的工作方式是早期神经网络的灵感来源而当今大多数神经网络的研究几乎没有直接从神经科学中获得灵感

神经网络又称人工神经网络(ANN; Artificial Neural Network)以与生物学意义的神经网络区分神经网络被定义为由具有适应性的简单单元即神经元组成的广泛并行互连的网络其组织能够模拟生物神经系统对真实世界物体所作出的交互反应

使用Keras构建神经网络模型

Keras是用于构建和训练神经网络模型的高阶API可用于快速设计原型研究和生产

模型(Model)是神经网络的核心架构(Architecture)即神经网络模型的整体结构即单元数目以及单元以何种方式连结(Layer)是神经网络中的一组神经元负责处理一组输入特征或一组神经元的输出而最常见的模型架构是层的堆叠TensorFlow2.0推荐使用tf.keras构建神经网络使用tf.keras.Sequential创建层堆叠模型的代码如下

1
model = tf.keras.Sequential()

此时只需调用模型的add()方法即可新增堆叠层常见的神经网络模型都包含于tf.keras.layerstf.keras.layers中的各个模型层新建时的重要参数如下

  • activation设置层的激活函数默认情况下不应用任何激活函数参数可以是函数名称字符串如'sigmoid'也可以是函数对象如tf.sigmoid大部分参数都类似地支持两种给定方法
  • kernel_regularizer设置核正则化方案
  • bias_regularizer设置偏置正则化方案

神经网络模型通常是层的有向无环图tf.keras.Sequential创建的模型是层的简单堆叠无法表示一些复杂的模型拓扑使用函数式的写法则可以创建如多输入多输出具有共享层或具有非序列数据流的模型使用函数式写法构建一个简单的多层感知机模型如下例

1
2
3
4
input_layer = tf.keras.Input(shape=(72, ))
hidden = layers.Dense(32, activation='relu')(input_layer)
output_layer = layers.Dense(10, activation='softmax')(hidden)
model = tf.keras.Model(inputs=input_layer, outputs=output_layer)

共享层是在同一模型中多次重用的层使用函数式写法实现含共享层的模型只需多次调用同一层的实例即可

模型构建完毕后模型的细节可由如下方式输出

1
model.summary()

安装pydotgraphvizf后可由如下方式输出模型的层图

1
keras.utils.plot_model(model, 'model.png', show_shapes=True)

训练前需要对模型进行编译(Compile)以进行一些设置模型的compile()方法的重要参数如下

  • optimizer设置优化器决定模型如何根据数据和损失函数进行更新
  • metrics设置指标用于监控训练和测试步骤
  • loss设置损失函数

开始训练需要调用模型的fit()方法代码如下fit()方法返回一个历史记录对象该对象包含一个字典其中包含训练阶段所发生的一切事件

1
history = model.fit(X_train, y_train)

模型的fit()方法的重要参数如下

  • epochs迭代次数
  • batch_size批量大小
  • validation_data验证集数据形式为(X_val, y_val)
  • validation_split验证集所占比例
  • callbacks训练期间的回调

训练后的模型可对新数据进行预测需要调用模型的predict()方法代码如下

1
predictions = model.predict(X_test)

模型的评估使用evaluate()方法代码如下

1
result = model.evaluate(X_test)

模型的权重保存和读取对应模型的save_weightsload_weights方法模型的完整保存和读取对应模型的save方法和tf.keras.models.load_model方法保存模型的权重即建立检查点(Checkpoint)通常Keras模型的文件后缀为.h5

基准(Baseline)即比较模型效果时的简单参考模型有助于开发者针对特定问题量化最低预期效果

传统机器学习关注训练预测模型以通过连续或离散的特征得到预测结果不涉及特征学习主要靠人工经验或特征转换方法提取特征这类机器学习可视作浅层学习(Shallow Learning)

为使模型具有更好的表现通常需要将输入信息转换为有效的特征即表示(Representation)自动学习有效的特征的学习过程称为表示学习(Representation Learning)语义鸿沟(Semantic Gap)是表示学习的关键问题即输入数据的底层特征与高层语义信息的不一致性和差异性好的高层语义表示通常要从底层特征开始经过多步非线性转换才能得到而深层结构的优点是能够增加特征的重用性从而指数级地增加表示能力

深度学习(DL; Deep Learning)是机器学习的特定分支主要以深层结构的神经网络为基础对数据进行表示学习深度学习需要解决的关键问题是贡献度分配问题(CAP; Credit Assignment Problem)即特征或其参数对最终输出结果的贡献或影响

端到端学习(End-to-End Learning)即学习的过程中不进行分模块或分阶段训练直接优化任务的总体目标通常不需要明确给出不同模块或阶段的功能中间过程不需要人为干预目前大部分深度学习任务都属于端到端学习

M-P神经元(McCulloch-Pitts Neuron)

沃伦·麦克洛克(Warren McCulloch)

美国神经科学家和控制论学者

沃尔特·皮茨(Walter Pitts)

美国逻辑学家和计算神经科学家

M-P神经元是首个通过模仿神经元而形成的模型由沃伦·麦克洛克和沃尔特·皮茨提出M-P神经元是多输入单输出的数学形式如下

其中为激活函数中的阶跃函数决定结果是否向下游输出的相反数又称阈值(Threshold)若神经元收到的加权输入和大于阈值则神经元激活兴奋状态向下一神经元发送信息

激活函数(Activation Function)又称传递函数(Transfer Function)装载于神经元对计算结果执行最终数学修改

激活函数应当为连续并可导(允许少数点上不可导)的非线性函数且通常单调递增若即使用恒等函数(Identity Function)则神经网络只是将输入进行线性组合后输出使用恒等函数的情况特殊例如回归问题的输出层中可以使用恒等函数

激活函数及其导函数应当尽可能简单这样有利于提高网络计算效率激活函数的导函数值域应当在合适的区间内否则会影响训练的效率和稳定性

常见的激活函数

阶跃函数(Heaviside Function)M-P神经元使用的激活函数不连续不光滑数学形式如下 Sigmoid函数即形似S的函数是神经网络中最常见的激活函数对数几率函数(Logistic Function)又称对率函数Sigmoid函数最重要的代表通常在神经网络的讨论中两者等价具有如下数学形式 对数几率函数可以使用的函数值完成求导函数值的操作即下式这对于梯度下降法而言十分方便

双曲正切(Tanh; Hyperbolic Tangent)函数图像关于原点对称应用时较Sigmoid更快数学形式如下 双曲正切函数的导数即下式 矫正线性单元(ReLU; Rectified Linear Unit)[9]本质上是无限个不同偏差的Sigmoid函数的堆叠有效减轻梯度消失问题且导数计算快数学形式如下其中矫正指引入非线性因素

当权重参数变为负值时输入网络的正值会和权重相乘后会变为负值负值通过ReLU后就会输出零此时ReLU的导数也为零因此会导致权重参数不被更新即导致这个神经元永久性死亡这个问题被称为死亡ReLU问题(Dying ReLU Problem)可以使用ReLU的变体解决死亡ReLU问题

参数化矫正线性单元(pReLU; Parameterized ReLU)[5]ReLU的变体ReLU增加了一个线性项数学形式如下

其中的值为0.01称为带泄露矫正线性单元(Leaky ReLU)[7]的值满足标准正态分布时称为随机带泄露矫正线性单元(Randomized Leaky ReLU)

指数线性单元(ELU; Exponential Linear Unit)同样是ReLU的变体是近似的零中心化的非线性函数数学形式如下

其中超参数决定时的饱和曲线并调整输出均值至0附近

Swish函数是一种自门控(Self-Gated)函数定义如下 > 其中可将函数的形态控制于ReLU和线性函数之间可以是可学习的参数也可以是固定的超参数

高斯误差线性单元(GELU; Gaussian Error Linear Unit)也是一种通过门控机制来调整其输出值的激活函数定义如下 > 其中是高斯分布的累计分布函数

Softplus函数是ReLU的平滑形式即下式 Softplus函数与Sigmoid函数的关系如下

Softplus函数的计算复杂于ReLU一般不使用

Maxout函数引入上一层神经元的全部输出作为输入数学形式如下 Maxout函数可以拟合任意的凸函数拟合能力非常强且因为参数是随学习过程而变化的所以Maxout函数是可学习的激活函数采用Maxout作为激活函数的神经网络又称Maxout网络

当接近零的数被近似为零时发生下溢(Underflow)当大量级的数被近似为正无穷或负无穷时发生上溢(Overflow)Softmax函数用于对上溢和下溢进行数值稳定用于多分类的处理因此常见于神经网络的最后一层Softmax函数的定义如下

可以将线性回归模型视为仅由单个神经元组成的神经网络如对数几率回归模型即激活函数为的单个神经元的神经网络

感知机(Perceptron)由两层神经元组成分别称输入层(Input Layer)和输出层(Output Layer)且只有输出层神经元进行激活函数处理即只拥有一层功能神经元其学习能力非常有限若两类模式线性可分即存在一个线性超平面能将之分开则感知机的学习过程一定会收敛否则感知机学习过程将会发生振荡不能求得合适解感知机只能解决如与非等的线性可分问题而不能解决如异或等的非线性可分问题

神经元层的每个输入都与上一层的每个输出相连则称为全连接层(Fully-connected Layer)或稠密层(Dense Layer)多层感知机(Multilayer Perceptron)又称多层前馈神经网络(Multi-layer Feedforward Neural Network)即三层及以上的全连接的无反馈回路的神经网络能够解决非线性可分问题输出层与输入层间的层被称为隐藏层(Hidden Layer)一般情况下计数神经网络的层数时仅包括隐藏层和输出层而不包括输入层

通用近似定理(Universal Approximation Theorem)指出只要给予足够数量的隐藏单元前馈神经网络可近似任意给定的连续函数神经网络因其强大能力而往往容易在训练集上过拟合

反向传播(BP; Backpropagation)

反向传播指误差从输出神经元反向传播到输入神经元用于计算梯度下降中的偏导数反向传播算法的精要为如下数学形式

其中神经网络共表示第层编号为的神经元连接到第层编号为的神经元的权重表示第层编号为的神经元的输入

反向传播的计算分为前向传递(Forward Pass)和反向传递(Backward Pass)两个阶段反向传播算法先按前向传递计算并缓存每个神经元的输出值然后再按反向传递遍历图的方式计算损失函数值相对于每个参数的偏导数

前向传递的计算

前向传递阶段计算简单将训练输入送入网络可得到结果表示第层的输出前向传递的数学形式如下

特别的当第层为输入层时有下式

反向传递的计算

反向传递阶段即如下数学形式 上式即误差项能够间接反映不同神经元对网络能力的贡献程度从而较好地解决贡献度分配问题记误差项为即如下数学形式 则有下式 进一步计算得到如下结果

反向传播计算的过程可被看作以为输入为权重以乘以作为线性激活函数的新的神经元整个反向传播过程可看作新的神经网络

特别的对于网络的最后一层即第有下式

误差从输出层反向传播时在每一层都要应用该层激活函数的导数如对数几率函数一类的饱和的激活函数在饱和区的导数接近于0则误差经过每一层传递都会不断衰减当层数增加时梯度会不断衰减甚至消失使得整个网络难以训练梯度消失问题(Vanishing Gradient Problem)或称梯度弥散问题相反梯度不断增加的情况称为梯度爆炸问题(Exploding Gradient Problem)隐藏层的层数过多采用不合适的激活函数等都可能产生梯度消失或爆炸问题

使用梯度下降法训练神经网络必须随机初始化参数若将所有参数初始化为0无论训练迭代的次数如何神经元将由于对称性而执行相同计算神经元之所以能提取不同的特征是因为它们的参数不同所有参数初始化为0使得多个神经元将变得没有意义

较深的神经网络的初始化方式

随着神经网络层数的增加标准正态分布的随机初始化并不能解决梯度消失或梯度爆炸问题Xavier初始化[4]Kaiming初始化[5]是较深的神经网络所使用的初始化方式

Xavier初始化适合饱和的激活函数如对数几率函数和双曲正切函数等为神经元的输入数和输出数Xavier正态分布初始化即Xavier均匀分布初始化即

Kaiming初始化适合非饱和的激活函数ReLU函数及其变种为神经元的输入数Kaiming正态分布初始化即Kaiming均匀分布初始化即

自动微分(AD; Automatic Differentiation)是利用链式法则对程序函数进行计算导数的方法计算图(Computational Graph)是自动微分的基础是以数学运算为结点的有向图按编译时构建或运行时构建可分为静态计算图(Static Computational Graph)和动态计算图(Dynamic Computational Graph)静态计算图在构建时可以进行优化并行能力强但灵活性比较差动态计算图则不容易优化当不同输入的网络结构不一致时难以并行计算但是灵活性比较高

反向传播通过使用计算图而得以在深度学习框架中实现

卷积神经网络(CNN; Convolutional Neural Network)

神经系统中神经元只接受其所支配的刺激区域内的信号即感受野(Receptive Field)卷积神经网络受感受野的启发而提出

大卫·休伯尔(David Hubel)

加拿大美籍神经科学家

托斯坦·威泽尔(Torsten Wiesel)

瑞典神经科学家

大卫·休伯尔和托斯坦·威泽尔提出猫的视皮层上存在如下两种细胞对感受野中特定朝向的线段做出反应的简单细胞(Simple Cell)对线段的移动也能做出反应的复杂细胞(Complex Cell)

福島邦彦(Kunihiko Fukushima)

日本科学家

福岛邦彦受视皮层简单细胞和复杂细胞的感受野的启发提出一种视觉信号逐层处理的多层神经网络称为新知机(Neocognitron)又称神经认知模型也是首个模仿感受野的模型神经认知模型由对比度提取层图形特征提取层和抗变形层交替排列组成即包含卷积和下采样的操作

杨立昆(Yann LeCun)

法国计算机科学家首次提出卷积神经网络

卷积神经网络包含如下两种主要操作

  • 卷积(Convolution)以数学方法提取图像特征因与图像处理中的滤波处理一样使用的滑动窗口即卷积核(Convolution Kernel)又称滤波器(Filter)卷积操作所得结果称为特征图(Feature Map)卷积核完成一次卷积操作后将结果矩阵中所有元素求和后经由激活函数处理并存储至特征图滑动特定的步长(Stride)移动至下一位置重复操作
  • 池化(Pooling)又称汇聚即下采样操作以减小特征图的尺寸可使得特征表示对输入数据的位置变化具有稳健性与卷积操作类似池化也需要指定滑动窗口常用池化操作有平均池化(Mean Pooling)和最大池化(Max Pooling)前者对窗口内数据求均值而后者取最大值

卷积神经网络是局部连结参数共享的前馈神经网络一般由多个卷积层(Convolution Layer)和池化层(Pooling Layer)线性堆叠再通过平坦操作展开至全连接层以完成最后的高级推理工作卷积神经网络可用于自动特征提取相比手工特征卷积神经网络提取的特征更加丰富目标浅层特征和深层的语义特征都能提取

以步长为1的一维卷积为例零填充(Zero Padding)即在输入向量两端各填补0记卷积核尺寸为通常使用的零填充即等宽卷积(Equal-Width Convolution)使得卷积前后张量的尺寸保持一致的零填充即窄卷积(Narrow Convolution)的零填充即宽卷积(Wide Convolution)

减少池化层全连接层的作用可使得网络趋向于全卷积网络(FCN; Fully Convolutional Network)

循环神经网络(RNN; Recurrent Neural Network)

循环神经网络可以接受自身的信息因而具有环路和短期记忆能力且更符合生物神经网络结构隐状态(Hidden State)即隐藏层的活性值时刻的隐状态为则艾尔曼循环神经网络(Elman RNN)通过下式更新隐状态

其中为状态-状态权重矩阵为状态-输入权重矩阵为偏置向量

约旦循环神经网络(Jordan RNN)通过下式更新隐状态 霍普菲尔德网络(Hopfield Network)隐状态神经元间相互双向连接每个神经元输出的数据经过其他神经元后最终反馈回自身

隐状态就是记忆(Memory)因为每个时刻都会被重写所以可以看作一种短期记忆(Short-Term Memory)

循环神经网络可以视为在时间维度上权值共享的神经网络一个完全连接的循环神经网络可以近似解决所有的可计算问题由于梯度消失或梯度爆炸问题循环神经网络只能学到短期依赖关系而很难对长距离的依赖关系建模即长程依赖问题(Long-Term Dependencies Problem)

双向循环神经网络(Bi-RNN; Bidirectional RNN)由输入相同但传递方向不同的两层循环神经网络组成记前向层和反向层的隐状态分别为则最终隐状态

长短期记忆(LSTM; Long Short-Term Memory)

长短期记忆的设计解决了普通循环神经网络的长期依赖问题长短期记忆模型通过输入门(Input Gate)遗忘门(Forget Gate)和输出门(Output Gate)三个闸门控制记忆的增添遗忘和流失

长短期记忆模型引入内部状态(Internal State)以专门进行线性的循环信息传递计算式如下

其中是内部状态的候选值

内部状态同时非线性地输出信息给隐藏层的外部状态计算式如下 内部状态有能力在捕获到关键信息时保存一定的时间间隔使得短期记忆的时间延迟长短期记忆因此得名

门控循环单元(GRU; Gated Recurrent Unit)

长短期记忆设计中输入门和遗忘门是互补关系具有一定冗余性而门控循环单元仅使用一个更新门(Update Gate)来控制保留的信息且引入重置门(Reset Gate)隐状态的计算式如下

其中是状态的候选值

可见门控循环单元网络退化为简单的循环神经网络

玻尔兹曼机(Boltzmann Machine)

玻尔兹曼机的输入又称可见层(Visible Layer)玻尔兹曼机类似霍普菲尔德网络可见层和隐藏层的神经元间相互双向连接

受限玻尔兹曼机(RBM; Restricted Boltzmann Machine)又称簧风琴(Harmonium)主要用于无监督的特征学习相较于玻尔兹曼机受限玻尔兹曼机限定模型为二分图即可见层神经元间不连接且隐藏层神经元间不连接为可见层配置偏置为隐藏层配置偏置权重矩阵中每个元素指定了隐藏层单元和可见层单元间的权重受限玻尔兹曼机的能量(Energy)定义如下 可见层的边缘分布可由能量计算如下式 上式中为归一化系数定义如下 受限玻尔兹曼机的训练目标是最大化所有可见层的边缘分布的乘积

自编码器(Autoencoder)

自编码器是神经网络的一种包含编码器和译码器自编码器即二者连结构成的前馈神经网络编码器的输出即编码是自编码器的隐藏层其维度通常远小于编码器输入译码器将编码扩展为与编码器输入具有相同维度的输出记编码器为译码器为可得自编码器的目标函数如下

编码器和译码器的权重可以共享以减少参数称为捆绑权重(Tied Weight)在一定程度上起到正则化的作用但并非必要

一些非传统的自编码器如下

  • 稀疏自编码器
  • 变分自编码器
  • 降噪自编码器(Denoising Autoencoder)为输入随机添加噪声重建无噪声的输入
  • 堆叠自编码器(Stacked Autoencoder)即深层的自编码器

稀疏自编码器(Sparse Autoencoder)

稀疏编码(Sparse Coding)即编码维度高于输入且编码尽量稀疏稀疏自编码器的目标函数如下 > 其中为稀疏性衡量函数控制稀疏性的强度

向量的稀疏性定义为非零元素的比例如果一个向量只有很少的几个非零元素就说这个向量是稀疏的最直接的稀疏性衡量函数是范数范数不满足连续可导难以进行优化因此实际操作中稀疏性衡量函数通常使用范数等

变分自编码器(VAE; Variational Autoencoder)

变分自编码器[6]的编码向量如下式

其中原始编码向量和方差向量由变分自编码器的编码器输出是与编码维度相同的两个向量噪声向量由标准正态分布产生也与编码维度相同保证结果为正

同时变分自编码器在学习时需要最小化下式的值

变分自编码器的数学理解

考虑一维数据的情况编码由其所服从的概率密度函数生成根据从条件概率分布生成即原始数据集的概率分布可由下式得到 假定为标准正态分布为译码器且是的正态分布待估计根据最大似然估计并使用对数似然可得似然函数如下 引入另一分布并视之为编码器可得下式一般情况而言可以是任意分布此处假定是的正态分布 记上述结果的第一项为由于又称的变分下界又因为是固定的若要最小化间的散度则要最大化可进一步改写为下式 可得形似式的损失

相较传统自编码器变分自编码器加入噪声且学习编码的概率分布能使两输入中间的插值得以出现于输出且编码的维度对应潜在的特征因此可以用于完成生成任务

生成对抗网络(GAN; Generative Adversarial Network)

生成对抗网络是无监督学习的一种包括生成器和判别器两个部分生成器(Generator)用于生成样本数据而判别器(Discriminator)用于判断样本是真实的还是生成的

生成对抗网络通过让生成器和判别器以相互博弈的方式进行学习生成器和判别器置身于对抗环境中生成器尽可能造出样本迷惑判别器而判别器则尽可能识别出来自生成器的样本

训练生成对抗网络的伪代码

训练生成对抗网络的伪代码如下

GENERATIVE-ADVERSARIAL-NETWORK
输入生成器的参数和判别器的参数
输出更新后的参数
一开始随机初始化参数;
每一次训练迭代
从数据集中选择个样本;
从一个分布(如高斯分布)中采样个噪声向量;
获得生成的数据其中;
更新参数以最大化式;
;
再从一个分布(如高斯分布)中采样个噪声向量;
更新参数以最大化式;
;

图神经网络(GNN; Graph Neural Network)

图神经网络是以图为输入的新兴神经网络通过学习图结点的关系来提取图中的特征类似卷积神经网络图神经网络包含如下两种主要操作

  • 聚合(Aggregation)根据结点及其近邻结点更新下一隐藏层
  • 读出(Readout)将隐藏层的信息转换为最终输出

计算学习理论(Computational Learning Theory)

计算学习理论即关于机器学习的理论基础其目的是分析学习任务的困难本质为学习算法提供理论保证并根据分析结果指导算法设计

对于二分类问题的映射在数据集上的经验误差的定义如下

在数据集上的经验误差为零则称一致(Consistent)可分(Separable)否则不一致(Non-Consistent)不可分(Non-Separable)

假设中所有的样本服从隐含未知的分布的独立同分布采样的泛化误差定义如下

定义误差参数为泛化误差的上限表示预先设定的学得模型所应满足的误差要求对任意两个映射其间的差异即不合(Disagreement)定义如下

概念(Concept)决定样本的真实标记对任何样本都有的称为目标概念(Target Concept)期望学得的目标概念的集合记为概念类(Concept Class)

假设空间(Hypothesis Space)是对于给定学习算法所考虑的所有可能概念的集合对于由于不能确定其是否为目标概念因此称为假设(Hypothesis)若目标概念则称问题对可分亦称一致则称问题对不可分亦称不一致学习过程可视为中进行搜索的过程期望学得的模型所对应的假设尽可能接近目标概念

概率近似正确(PAC; Probably Approximately Correct)即以较大的概率学得误差满足预设上限的模型

令失败概率学习算法能从假设空间PAC辨识(PAC Identify)概念类的定义如下即学习算法能以较大的概率学得目标概念的最大误差为的近似

若存在学习算法和多项式函数使得下式满足则称概念类对假设空间而言PAC可学习(PAC Learnable)

PAC可学习给出了抽象地刻画机器学习模型能力的框架考虑学习算法的时间复杂度若学习算法的运行时间也满足形如上式的多项式函数则称概念类高效PAC可学习(Efficiently PAC Learnable)称学习算法为概念类PAC学习算法(PAC Learning Algorithm)

满足PAC学习算法所需的最小的称为样本复杂度(Sample Complexity)PAC学习可将对算法时间复杂度的分析可转换为对样本复杂度的分析

称为恰PAC可学习(Properly PAC Learnable)但通常越大其包含任意目标概念的可能性越大但从中找到具体目标概念的难度也越大

有限且目标概念需要如下规模的训练数据使得学习算法以概率学得目标概念近似 可见有限且目标概念时的都是PAC可学习的

目标概念往往不存在于假设空间有限任何都有即任何都会在训练集上出现或多或少的错误时有下式成立 显然有限但目标概念学习算法无法学得目标概念近似样本数增大时泛化误差和经验误差的差距的上界减小样本数足够大时的假设近似是中较好的目标即经验风险最小化原则

目标概念时的PAC可学习称为不可知PAC可学习(Agnostic PAC Learnable)对于任何满足式的假设空间不可知PAC可学习的定义如下

瓦普尼克-契尔沃年基斯维(Vapnik-Chervonenkis Dimension)

又称VC用于衡量假设空间无限时的复杂度为每个样本点分配随机的二分类类别VC维可简单定义为使得模型正确分类的模型对应空间中存在的样本点的最大值

增长函数(Growth Function)表示个示例所能赋予标记的最大可能结果数定义如下增长函数描述了的表示能力

对任意有下式成立以估计经验误差和泛化误差的关系

中的假设对样本集中样本赋予标记的每种可能结果称为对的一种对分(Dichotomy)能实现样本集上的所有对分即对二分类问题而言有则称能被打散(Shattering)

VC维即能被打散的最大样本集的大小定义如下

VC维为则有下式成立

拉德马赫复杂度(Rademacher Complexity)

拉德马赫复杂度在考虑数据分布的情况下刻画的复杂度考虑函数空间其中为任意空间函数空间关于的经验拉德马赫复杂度的定义如下

其中服从取值为-11的均匀分布称为拉德马赫变量(Rademacher Variables)

函数空间关于的拉德马赫复杂度的定义如下

对任意都有的概率使下式成立

集成学习(Ensemble Learning)

集成学习的基本思想是将多个模型组合从而实现一个预测效果更好的集成模型可理解为通过多个高方差模型以降低平均方差对于分类问题以各个子模型投票的方式确定最终结果对于回归问题以计算各个子模型均值的方式确定最终结果

Bagging(Bootstrap Aggregating)

Bagging的基本思想如下每次使用有放回采样(即自助法)取出个样本组成的训练集利用新的数据集训练得到个子模型这种策略又称模型平均(Model Averaging)模型平均策略奏效的原因是不同模型通常不会在测试集上产生完全相同的误差

随机森林(Random Forest)即利用多棵决策树对样本进行训练并预测是基于Bagging的一种集成学习算法可解决决策树容易过拟合的现象但可解释性弱于决策树

随机森林使用自助法进行采样即有放回地抽样选取样本意味着样本在不同树中可能有重复且随机在属性中挑选不大于属性总数的属性因此随机森林中不同的树所含样本和属性大多不一样

利用scikit-learn构建随机森林模型需要确定RandomForestClassifiern_estimators参数即树的棵数以及max_features参数即每棵决策树需要考虑的特征个数

Stacking

Stacking额外训练一个元模型(Meta Model)以子模型在原始训练集上的预测作为训练集可以视作表示学习为避免过拟合训练过程中伴随交叉验证操作

Boosting

Boosting的目标是学习一个加性模型(Additive Model)可以将弱学习器提升为强学习器如下式

假设模型面向分类任务其中称为强分类器(Strong Classifier)称为弱分类器(Week Classifier)或基分类器(Base Classifier)是弱分类器的权重

Boosting的基本思想如下首先利用训练集得到一个基模型基于准确率给予样本不同的权重使得误差大的样本在下一轮训练中可以得到更大的关注重复训练直到获得个子模型

AdaBoost(Adaptive Boosting)Boosting的代表其基本思想如下为每个样本分配一个初始权重并首先训练一个基模型对于每个样本若预测错误则增加若预测正确则降低令权重较大的样本分配较高的优先权以训练新的模型重复上述步骤直至满足条件如一定的迭代次数

AdaBoost需要计算弱分类器在数据集上的加权错误以计算分类器的集成权重集成权重的更新式如下

样本权重的更新式如下

弱监督学习(Weakly Supervised Learning)

弱监督学习面向有缺陷的数据集额外地使用一些技术进行改善弱监督可以分为如下三类

  • 不完全监督(Incomplete Supervision)训练集只有一个很小的子集有标记主动学习和半监督学习是解决不完全监督的手段
  • 不确切监督(Inexact Supervision)训练集只有粗粒度的标记
  • 不准确监督(Inaccurate Supervision)训练集的标记不总是真实的

主动学习(Active Learning)

主动学习中未标记数据通过人工专家等方法来进行标注得到了新的标记信息后继续迭代模型主动学习的关键在于选择出合适的标注候选集给人工进行标注其中选择的方法称为查询策略(Query Strategy)

半监督学习(SSL; Semi-Supervised Learning)

半监督学习的训练集同时包含标记样本和未作标记的样本学习器不需要人工干预和外界交互自动利用未作标记的样本来提升学习性能常见的半监督学习算法如下

  • 自训练(Self-Training)自训练又称自举法(Bootstrapping)是半监督分类的一种简单策略首先使用含标记样本训练出分类器再对未作标记的样本训练所产生的标记称为软标记(Soft Label)或伪标记(Pseudo Label)从得到标记的样本中以置信度等标准挑选认为分类正确的样本来训练分类器
  • 协同训练(Co-Training)协同训练中条件独立的不同特征称为视图(View)协同训练首先为每个视图学习一个分类器然后使用每个分类器对未标记数据以置信度等标准来迭代地构建附加训练数据若考虑视图间是全相关的这种极端情况则协同训练算法将退化为自训练算法
  • 三体训练(Tri-Training)三体训练不需要考虑视图将集成学习机制与半监督学习相结合利用三个分类器以投票的方式产生伪标记
  • 协同森林(Co-Forest)协同森林是三体训练的推广使用更多的分类器

无监督学习(Unsupervised Learning)

又称无导师学习训练集中所有样本的标记未知

聚类(Clustering)

聚类指将数据按相似度划分为不同的分组聚类的分组称为簇(Cluster)

聚类任务评估指标

若聚类结果能够与某个外部评价标准进行比较则该类指标称为外部指标(External Index)不使用任何外部评价标准的则称为内部指标(Internal Index)

为外部评价标准即真实结果是聚类结果并将样本两两配对考虑假设如下统计量为在中为同一类且在中也为同一类的数据点对数为在中为不同类且在中为同一类的数据点对数为在中为同一类且在中为不同类的数据点对数为在中为不同类且在中也为不同类的数据点对数显然有下式成立

杰卡德系数(JC; Jaccard Coefficient)的定义如下

福尔克斯-马洛斯系数(FMI; Fowlkes-Mallows Index)

兰德系数(RI; Rand Index)的定义如下 调整兰德系数(ARI; Adjusted Rand Index)假设聚类模型为广义超几何分布即随机选择的划分簇的数量是稳定的调整兰德系数的定义如下

上述指标均位于区间值越大聚类的效果越佳

为聚类结果计算两个样本之间的距离平均样本间距离定义如下

簇内样本间最远距离定义如下

两簇最近样本之间的距离定义如下

为簇的中心点两簇间中心点距离定义如下

戴维斯-堡丁系数(DBI; Davies-Bouldin Index)定义如下

杜恩系数(DI; Dunn Index)定义如下

戴维斯-堡丁系数的值越小聚类的效果越佳而杜恩系数的值越大聚类效果越佳

k均值(k-Means)

簇中心(Cluster Center)即聚类所得的簇中所有数据点的平均值又称形心(Centroid)一般情况下以欧氏距离作为距离度量而以曼哈顿距离作为距离度量的算法称为中位数(-Median)

均值算法首先随机选取个数据点作为簇中心然后交替执行如下两个步骤直到收敛即簇的分配不再变化将每个数据点分配给最近的簇中心将每个簇中心设置为所分配的所有数据点的平均值

均值算法的目标函数如下该值刻画了簇内样本围绕簇内均值向量的紧密程度

其中是第个簇的均值向量

scikit-learn调用均值聚类的代码如下

1
2
3
from sklearn.cluster import KMeans
model = KMeans(n_clusters=k)
model.fit(X)

簇中心被保存于模型的cluster_centers_属性中

均值算法简单但距离的计算开销大且难以识别具有复杂形状的簇此外均值算法受初始值影响较大优化容易陷入局部最小值因此可以随机多次执行均值算法scikit-learn可以设置n_init参数以指明均值算法执行的次数

层次聚类(Hierarchical Clustering)

层次聚类基于贪婪算法通过计算不同类别数据点的距离来创建有层次的嵌套聚类树分为自底向上的凝聚聚类(Agglomerative Clustering)和自顶向下的分裂聚类(Divisive Clustering)

凝聚聚类首先声明每个数据点是自己的簇然后寻找两个最近的簇进行合并不断重复直到满足需要的簇的数量或其他中止条件为止

分裂聚类首先声明所有数据点都是同一个簇然后寻找两个最远的数据点并归为两个不同簇将其余数据点分配给最相似的簇中心对得到的两个簇递归地执行分裂聚类直到满足需要的簇的数量或其他中止条件为止

scikit-learn中内置凝聚聚类的实现sklearn.cluster.AgglomerativeClustering没有predict方法因此需要调用fit_predict方法代替可使用参数n_clusters指定簇的数量不使用簇的数量的场合则可以使用distance_threshold指定距离阈值距离阈值越大则簇的数量越少每簇的样本数量就越多反之亦然

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

DBSCAN不需要先验地指出簇的数量可以划分具有复杂形状的簇还能够找出不属于任何簇的数据点但相较于均值和凝聚聚类而言稍慢

scikit-learn中内置DBSCAN的实现sklearn.cluster.DBSCAN没有predict方法因此需要调用fit_predict方法代替

聚类集成(Clustering Ensemble)

聚类集成指集成多个聚类结果

共协矩阵(CA Matrix; Co-Association Matrix)是聚类集成中最常见的信息矩阵共协矩阵是的矩阵假设有个聚类结果的集合其计算方式如下

其中的二元矩阵是所有聚类结果的总簇数个簇的聚类结果表示第个样本属于第个簇表示第个样本不属于第个簇

上式中是规范化函数定义如下 共协矩阵反映了个聚类结果中相应样本出现在相同簇的频率因此共协矩阵可被视为相似性矩阵

降维(Dimensionality Reduction)

降维指找到表示高维数据的一种新方法使得用更少的特征就能概括其重要特性降维的一个重要应用是将数据降为二维以便于数据可视化

主成分分析(PCA; Principal Components Analysis)

主成分分析是正交化线性变换将数据变换到新的坐标系统以对数据集进行降维对于数据集的每个数据点使用对应的点进行表示使损失的信息尽可能少主成分(Principal Component)即主成分分析得到的新的特征通常主成分分析的缺点在于不易对各主成分做出解释

视之为编码和解码的过程假设编码和解码函数分别为则有考虑线性解码函数且列向量相互正交

对于给定的计算信息损失最小的即求解下式 可得编码函数如下式

编码函数式的证明

式右端的平方范数展开得到下式 将上式与式代入忽略不依赖利用的正交性质得到下式 求梯度并令其为零由标量对向量的求导法则(见矩阵微积分的向量求导)可得下式

通过编码解码得到的重构如下式 求解最优变换需要最小化所有维数和所有点上的误差矩阵的弗罗贝尼乌斯范数即求解下式

其中排列而成且对进行了中心化

式的证明

由弗罗贝尼乌斯范数的迹运算表示可得下式 删去无关的项由迹运算的性质可合并循环置换后相同的项可得下式 由于可得下式

最大的前个特征值所对应的特征向量构成的投影矩阵就是主成分分析的解通常可由用户预先设置或从重构的角度设置一个重构阈值使下式成立

scikit-learn中内置主成分分析的实现sklearn.decomposition.PCA其中参数n_components指定主成分的数量可选参数whiten控制是否启用白化(Whitening)即缩放主成分至相同的尺寸变换后的结果与使用StandardScaler相同

非负矩阵分解(NMF; Non-Negative Matrix Factorization)

相较主成分分析非负矩阵分解的分量和系数均为非负的

scikit-learn中内置非负矩阵分解的实现sklearn.decomposition.NMF其中参数n_components指定分量的数量

t分布随机近邻嵌入(t-SNE; t-Distribution Stochastic Neighbour Embedding)

t-SNE[12]是最常用的流形学习降维算法流形(Manifold)指一组点且每个点都有其领域流形学习(Manifold Learning)是一类用于可视化的算法允许进行更复杂的映射通常也给出更好的可视化

scikit-learn中内置t-SNE的实现sklearn.manifold.TSNE没有transform方法因此需要调用fit_transform方法代替

迁移学习(TL; Transfer Learning)

迁移学习指将源领域(Source Domain)的知识迁移到目标领域(Target Domain)使得目标领域能够取得更好的学习效果其中领域(Domain)指样本空间及其分布通常当源领域数据量充足而目标领域数据量较少或从头建立模型复杂且耗时的情境下适合应用迁移学习

迁移学习可分为如下两类

  • 归纳迁移学习(Inductive Transfer Learning)在源领域和任务上学习出一般的规律再将规律迁移至目标领域和任务上
  • 转导迁移学习(Transductive Transfer Learning)迁移样本使得可以直接利用源领域和目标领域的样本进行学习通常源领域有大量标注数据而目标领域没有或只有少量标注数据但有大量无标注数据

领域适应(DA; Domain Adaptation)

领域适应(DA; Domain Adaptation)是转导迁移学习的一种情景思路是将不同领域的数据特征映射到同一特征空间

按目标领域样本的标记情况领域适应可分为有监督领域适应(SDA; Supervised DA)半监督领域适应(SSDA; Semi-Supervised DA)和无监督领域适应(UDA; Unsupervised DA)无监督领域适应通常更具吸引力因为它完全不需要标记的目标领域样本但当目标领域样本稀缺时有监督领域适应和半监督领域适应则更有优势

三种领域适应的分布偏移假设

The three types of distribution shift are as follows.

Type What Changes? What is the Same?
先验偏移(Prior Shift)
协方差偏移(Covariate Shift)
概念漂移(Concept Drift)

令源领域特征空间为目标领域特征空间为则称为同构领域适应(Homogeneous DA)则称为异构领域适应(Heterogeneous DA)

领域适应可按实现手段分为如下类别

  • 基于差异(Discrepancy-Based)以某统计学分布偏移度量来对齐源领域和目标领域其中最大均值差异(MMD; Maximum Mean Discrepancy)是领域适应中应用最广泛的损失函数用于衡量源领域和目标领域的差异
  • 基于对抗(Adversarial-Based)混淆领域分类器以完成源领域和目标领域的对齐域对抗神经网络
  • 基于重构(Reconstruction-Based)以重构作为领域适应的辅助任务深度重构分类网络

域对抗神经网络(DANN; Domain-Adversarial Neural Networks)

域对抗神经网络[1]是无监督领域适应的代表模型其结构包括如下三个部分

  • 特征提取器(Feature Extractor)将数据映射到特定的特征空间使标记预测器精度最大化的同时最小化域分类器的精度
  • 标记预测器(Label Predictor)对特征空间的源领域数据分类尽可能得到正确的标记
  • 域分类器(Domain Classifier)对特征空间的数据进行领域分类尽可能分辨出数据的领域

特征提取器和标记预测器构成了一个前馈神经网络域分类器连接至特征提取器之后中间通过一个梯度反转层(GRL; Gradient Reversal Layer)连结梯度反转层将所求得的梯度乘以一个负值

对源领域的数据网络不断最小化标记预测器的损失即下式 对全部数据网络不断最小化域分类器的损失即下式 表示某领域第个样本的损失改写损失函数得到下式 最终代价函数如下式

其中为源领域样本数为目标领域样本数

深度重构分类网络(DRCN; Deep Reconstruction-Classification Networks)

深度重构分类网络[3]利用自编码器结构将重构输入视为领域适应的辅助任务结构除包含特征提取器和标记预测器还包含进行重构任务的解码器损失除源领域数据的预测损失对目标领域的数据进行重构即下式 最终代价函数如下式

分类对比语义对齐(CCSA; Classification and Contrastive Semantic Alignment)

分类对比语义对齐[8]面向有监督领域适应结构包含特征提取器和标记预测器为确保源领域和目标领域数据中类别相同的样本在子空间中的表征有相近的距离损失除源领域数据的预测损失对类别相同但领域不同的样本进行表征的距离最小化即下式

其中为任意的距离度量函数应属同一类别

此外还需要对类别不同且领域不同的样本进行表征的距离最大化即相似度最小化即下式

其中为任意的相似度度量函数应属不同类别

最终代价函数如下式 原始实现中有标记的目标领域数据不在主要训练中计算预测损失而是建议作为对标记预测器进行微调时的训练数据即下式

多任务学习(Multi-Task Learning)

多任务学习即同时学习多个相关任务利用多个任务之间的相关性来改进模型在每个任务上的性能和泛化能力多任务学习可视为归纳迁移学习的一种

少样本学习(FSL; Few-Shot Learning)

少样本学习旨在通过少量训练样本学习模型其中仅通过单个训练样本学习称为单样本学习(OSL; One-Shot Learning)

零样本学习(ZSL; Zero-Shot Learning)

零样本学习指没有带标记样本的迁移学习任务是迁移学习的一种极端形式

元学习(Meta-Learning)

元学习即让模型学会学习其核心思想是学习某种先验知识

强化学习(RL; Reinforcement Learning)

强化学习又称再励学习评价学习或增强学习其灵感来源于心理学的行为主义即有机体如何在环境给予的奖励或惩罚的刺激下逐步形成对刺激的预期产生能获得最大利益的习惯性行为

强化学习的交互对象如下

  • 行动者(Actor)又称智能体(Agent)感知外界环境的状态以作出不同的行动根据外界环境的奖励调整策略
  • 环境(Environment)行动者以外的所有事物受行动者行动的影响而改变状态并反馈给行动者相应的奖励

策略(Policy)指有参数的网络将行动者的观察即环境状态作为输入输出行动者相应的行动

行动者与环境的交互过程可视作马尔可夫决策过程(MDP; Markov Decision Process)即在状态序列中引入行动作为额外的变量下一个时刻的状态不仅和当前时刻的状态相关还和行动相关即下式

当抵达环境的终止状态行动者和环境的交互过程结束一轮交互的过程称为一个回合(Episode)每一个回合的所有状态和行动的序列称作轨迹(Trajectory)记为定义如下

可得轨迹的概率如下

上式中属于环境部分无法控制因此只能采取不同的策略网络参数以改变进而影响

一个回合的轨迹收到的累计奖励称为回报(Return)记为定义如下

若环境中没有终止状态称为持续式任务(Continuing Task)其回报也可能是无穷大可以引入折扣率(Discount Rate)来降低远期回报的权重引入折扣率的回报称为折扣回报(Discounted Return)定义如下

强化学习的目标即调节策略的参数使得最大化

策略通常可以分为确定性策略(Deterministic Policy)和随机性策略(Stochastic Policy)强化学习一般使用随机性策略

若采用确定性策略每次试验得到的轨迹是一样的此时仅仅是对当前策略的利用(Exploitation)而缺乏对环境的探索(Exploration)为平衡利用和探索可以采用-贪心法(-Greedy Method)一种随机性策略的概率随机选择行动的概率执行通常随训练过程衰减

上置信界(UCB; Upper Confidence Bound)-贪心法的改进优先选择从未尝试的行动若所有行动都已尝试则选择下式最大值的行动

其中是行动的平均奖励是采取行动的次数是行动的总次数

Q学习(Q Laerning)

为评估策略的期望回报需要定义状态值函数(State Value Function)和状态-行动值函数(State-Action Value Function)前者描述策略在给定状态下累计期望奖励后者又称Q函数(Q Function)描述策略在给定状态下采取行动的累积期望奖励

蒙特卡罗方法(Monte Carlo Method)通过采样来计算Q函数随机游走地探索环境并计算得到的回报假设进行次试验Q函数的近似为下式

蒙特卡罗方法需要完整的轨迹才能得到回报也不依赖马尔可夫性质时序差分学习(Temporal Difference Learning)只需从状态进行至状态Q函数的估计更改为增量计算的方式

当时序差分学习中每次更新的动作数为最大步数时就等价于蒙特卡罗方法

通过下式寻找策略即更新策略

对所有的状态都有

评估策略和更新策略使用相同的策略称为同策略(On-Policy)方法或同轨策略方法评估策略和更新策略使用不同的策略称为异策略(Off-Policy)方法或离轨策略方法

同策略的时序差分学习称为SARSA(State Action Reward State Action)方法异策略的时序差分学习即Q学习Q学习直接选择Q函数取最大值对应的行动作为下次行动更新后的Q函数并不关于选取动作的策略

大多数任务中状态空间和行动空间是庞大的传统的SARSA方法和Q学习不适合解决问题深度Q网络(DQN; Deep Q Network)Q函数为神经网络并采取如下的改进措施

  • 冻结目标网络(Freezing Target Network)在一个时间段内固定目标网络的参数以稳定学习目标
  • 经验回放(Experience Replay)构建回放缓冲区(Replay Buffer)以去除数据相关性

策略梯度(Policy Gradient)

策略梯度即使用梯度上升的方式更新策略的参数将强化学习的问题转化为有监督学习的问题

总回报不是常量而是随机变量因为采取何种行动是有随机性的而环境给出何种状态也是有随机性的因此需要以的期望作为代价函数

策略梯度的计算

假设有复合函数可得公式无关因此对参数求偏导可得下式

由期望的定义可得下式

采样个数据样本可得下式其中与状态转移概率无关只与策略函数相关

通过采样来计算策略梯度的方法称为REINFORCE算法可以引入减少不同轨迹的方差这称为带基准线的REINFORCE算法即下式

参数的更新公式即下式

近端策略优化(PPO; Proximal Policy Optimization)

近端策略优化是策略梯度的变形

演员-评委算法(Actor-Critic Algorithm)

演员-评委算法是时序差分学习和策略梯度的结合演员(Actor)即策略评委(Critic)即值函数演员-评委算法的代价函数形式如下

演员-评委算法需要估计两个网络而优势演员-评委(A2C; Advantage Actor-Critic)算法只需一个网络代价函数形式如下

大语言模型(LLM; Large Language Model)

大语言模型通常指的是参数数量在数十亿或更多数量级的深度学习模型体现规模扩展带来的重要性能提升是通用的任务求解途径但学习的成本高昂语言模型的发展历程如下

  • 统计语言模型(SLM; Statistical Language Model)具备一定的生成能力元语法(-Gram)模型即通过个词语出现的概率来推断语句的结构
  • 神经语言模型(NLM; Neural Language Model)循环神经网络
  • 预训练语言模型(PLM; Pre-Trained Language Model)可有效捕获上下文语义提升任务迁移性能
  • 大语言模型

扩展法则(Scaling Law)可描述模型的最终能力并解决模型参数量和数据量的分配问题大语言模型的扩展法则以Chinchilla扩展法则为代表即如下数学形式

其中表示模型参数量表示数据量为训练成本即算力开销为测试集的负对数似然损失即性能其余符号表示常数

涌现能力(Emergent Ability)不存在于小型模型中但存在于大型模型中的罕见现象是简单组件经复杂交互而自发产生的功能包括但不限于如下

  • 上下文学习(ICL; In-Context Learning)
  • 指令遵循(Instruction Following)
  • 逐步推理(Step-by-Step Reasoning)

基于人类反馈的强化学习(RLHF; Reinforcement Learning from Human Feedback)聚合问答数据并训练奖励模型并通过强化学习的方式微调大语言模型

登普斯特-谢弗证据推理(Dempster-Shafer Evidential Reasoning)

辨识框架(Frame of Discernment)是由一组相互排斥且构成完备集的命题构成的集合定义为恰好分配给命题的基本概率质量其中又称为基本概率分配(BPA; Basic Probability Assignment)函数满足下式 则称的一个焦元(Focal Set)证据(Evidence)指人们分析命题求其基本可信程度所依据的事物的属性与客观环境对证据的分析可以得到焦元的基本概率分配函数对于一个具体的问题辨识框架依赖于人们的认知水平框架中的元素即由人们的知识决定

定义信任函数(Belief Function)如下表示对焦元的总的信任程度 定义似然函数(Plausibility Function)如下表示不否定焦元的信任程度 总有表示的信任区间

登普斯特-谢弗证据合成(Dempster-Shafer Evidence Combination)将不同的基本概率分配函数合成为新的基本概率分配函数公式定义如下 上式中是归一化系数定义如下 当证据间高度冲突登普斯特-谢弗证据合成将违反直觉

粒计算(GrC; Granular Computing)

粒计算将事物或问题分解成若干个相互关联的子部分以处理模糊性和不确定性

(Granule)可以是一组因相似性或功能性受约束而被聚集的对象而粒化(Granulation)是产生粒的数学操作粒结构(Granular Structure)被定义为粒的集合

参考文献(References)

  • [1] Ganin, Y. et al. 2016. Domain-Adversarial Training of Neural Networks. Journal of Machine Learning Research, 17(1): 2096-2030.
  • [2] Geng, X. 2016. Label Distribution Learning. IEEE Transactions on Knowledge and Data Engineering, 28(7): 1734-1748.
  • [3] Ghifary, M.; Kleijn, W. B.; Zhang, M.; Balduzzi, D.; and Li, W. 2016. Deep Reconstruction-Classification Networks for Unsupervised Domain Adaptation. In Proceedings of the European Conference on Computer Vision, 597-613.
  • [4] Glorot, X.; and Bengio, Y. 2010. Understanding the Difficulty of Training Deep Feedforward Neural Networks. In Proceedings of the International Conference on Artificial Intelligence and Statistics, 249-256.
  • [5] He, K.; Zhang, X.; Ren, S.; and Sun, J. 2015. Delving Deep into Rectifiers: Surpassing Human-Level Performance on Imagenet Classification. In Proceedings of the IEEE International Conference on Computer Vision, 1026-1034.
  • [6] Kingma, D. P.; and Welling, M. 2014. Auto-Encoding Variational Bayes. In Proceedings of the International Conference on Learning Representations.
  • [7] Maas, A. L.; Hannun, A. Y.; and Ng, A. Y. 2013. Rectifier Nonlinearities Improve Neural Network Acoustic Models. In Proceedings of the International Conference on Machine Learning, 3.
  • [8] Motiian, S.; Piccirilli, M.; Adjeroh, D. A.; and Doretto, G. 2017. Unified Deep Supervised Domain Adaptation and Generalization. In Proceedings of the IEEE International Conference on Computer Vision, 5715-5725.
  • [9] Nair, V.; and Hinton, G. E. 2010. Rectified Linear Units Improve Restricted Boltzmann Machines. In Proceedings of the International Conference on Machine Learning, 807-814.
  • [10] Srivastava, N.; Hinton, G.; Krizhevsky, A.; Sutskever, I.; and Salakhutdinov, R. 2014. Dropout: A Simple Way to Prevent Neural Networks from Overfitting. Journal of Machine Learning Research, 15(1): 1929-1958.
  • [11] Tsoumakas, G.; Katakis, I.; and Vlahavas, I. 2010. Random -Labelsets for Multilabel Classification. IEEE Transactions on Knowledge and Data Engineering, 23(7), 1079-1089.
  • [12] Van der Maaten, L.; and Hinton, G. 2008. Visualizing Data using t-SNE. Journal of Machine Learning Research, 9(11): 2579-2605.
  • [13] Yang, Y.; Shen, H. T.; Ma, Z.; Huang, Z.; and Zhou, X. 2011. -Norm Regularized Discriminative Feature Selection for Unsupervised Learning. In Proceedings of the International Joint Conference on Artificial Intelligence, 1589-1594.
  • [14] Zhang, M. L.; and Zhou, Z. H. A review on Multi-Label Learning Algorithms. IEEE Transactions on Knowledge and Data Engineering, 26(8), 1819-1837.