无监督学习 Unsupervised Learning,UL,指从无标签的数据中学习出一些有用的模式
- 一般直接从原始数据中学习,不借助任何人工给出标签或反馈等指导信息 | 学习模式 | 含义 | | —- | —- | | 监督学习 | 建立输入-输出之间的映射关系 | | 无监督学习 | 发现隐藏的数据中的有价值信息,包括有效的特征、类别、结构以及概率分布等 |
典型的无监督学习问题:
9.1 无监督特征学习
9.1.1 主成分分析 PCA
参考文章:
主成分分析 Principal Component Analysis,PCA,是一种最常用的数据降维方法,用于提取数据的主要特征分量
- 选择一组新的基来表示数据,且使得在转换后的空间中数据的方差最大(即选择数据方差最大的方向进行投影,才能最大化数据的差异性,保留更多的原始数据)
- 根据原始数据 X,找到一组新的基 W,得到降维后的数据
降维问题(将一组 N 维向量降为 K 维)的优化目标:
- 选择 K 个单位正交基,使得原始数据变换到这组基上后,各变量两两间协方差为 0,而变量方差则尽可能大(在正交的约束下,取最大的 K 个方差)
- PCA 可以转换为一个矩阵特征值分解问题:
- 寻找一个矩阵 P,满足
(
是原始数据 X 对应的协方差矩阵)是一个对角矩阵,并且对角元素按从大到小的顺序依次排列,那么 P 的前 K 行就是要寻找的基,用 P 的前 K 行组成的矩阵乘以 X 就使得 X 从 N 维降到了 K 维并满足上述优化条件
- 寻找一个矩阵 P,满足
PCA 的求解步骤:(设有 m 条 n 维数据)
- 将原始数据按列组成 n 行 m 列矩阵 X
- 按 X 的每一行进行零均值化,即减去这一行的均值
- 求出协方差矩阵
- 求出协方差矩阵的特征值及其对应的特征向量
- 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前 k 行组成矩阵 P
即为降维到 k 维后的数据
PCA 的优点:
- 缓解维度灾难:PCA 算法通过舍弃一部分信息后,能使的样本的采样密度增大(因为维数降低了),这是缓解维度灾难的重要手段
- PCA 是一种无监督学习方法,可以作为监督学习的数据预处理方法,用来去除噪声并减少特征之间的相关性
- 降噪:当数据受到噪声影响时,最小特征值对应的特征向量往往与噪声有关,而 PCA 舍弃了最小的几个特征值对应的特征向量,在一定程度上起到了降噪的效果
- 特征独立:PCA 不仅将数据压缩到低维,也能使得将为之后的数据各特征相互独立
PCA 的缺点:
- PCA 并不能保证投影后数据的类别可分性更好,提高两类可分性的方法一般为监督学习方法,eg. 线性判别方法(LDA)
- 过拟合:PCA 保留了主要信息,但这个主要信息只是针对训练集的,而且这个主要信息未必是重要信息,有可能舍弃了一些看似无用但恰好重要的信息,只是在训练集上没有很大的表现,所以 PCA 也可能加剧了过拟合
- 只能处理线性的,处理不了非线性的
参考视频:
9.1.2 稀疏编码
稀疏编码 Sparse Coding,受哺乳动物视觉启发,外部信息经过编码后仅有一小部分神经元激活,即外界刺激在视觉神经系统的表示具有很高的稀疏性
(线性)编码:给定一组基向量 ,将输入样本
表示为这些基向量的线性组合
- 即,
- 编码 Encoding:基向量 A 的系数
称为输入样本 x 的编码
- 字典 Dictionary:基向量 A 也称为字典
编码是对 D 维空间中的样本 x 找到其在 P 维空间中的表示(投影),编码的关键是找到一组“完备”的基向量 A
- eg. 主成分分析 PCA,但是 PCA 得到的编码通常是稠密向量,没有稀疏性
完备性:
- M 个基向量刚好可以支撑 M 维的欧氏空间,则这 M 个基向量是完备的
- M 个基向量可以支撑 D 维的欧氏空间,且 M>D,则这 M 个基向量是过完备的、冗余的
稀疏编码:为了得到稀疏编码,需要找到一组过完备的基向量来进行编码
稀疏性:
- 严格的定义:如果一个向量只有很少的几个非零元素,则说这个向量是稀疏的
- 宽泛的定义:如果一个向量只有少数几个远大于零的元素,其他元素都接近于 0,也称这个向量为稀疏向量
给定一组 N 个输入向量 ,其稀疏编码
- 稀疏编码的目标函数
是稀疏性衡量函数 | 稀疏性衡量函数 | 公式 | | —- | —- | | 范数(不满足连续可导,很难优化,实际不用) | | | 范数 | | | 对数函数 |
| | 指数函数 | |是一个超参数,用于控制稀疏性的强度
稀疏编码的训练方法:一般用交替优化的方法进行
给定一组 N 个输入向量 ,需要同时学习基向量 A 以及每个输入样本对应的稀疏编码
- 固定基向量 A,对每个输入
,计算其对应的最优编码
- 固定上一步得到的最优编码
,计算其最优的基向量
,
为正则化项
稀疏编码的优点:
- 计算量:稀疏性带来的最大好处就是可以极大地降低计算量
- 可解释性:稀疏编码只有少数的非零元素,相当于将一个输入样本表示为少数几个相关的特征,可以更好地描述其特征(稀疏编码的每一维都可以看作一种特征),并易于理解
- 特征选择:稀疏性带来的另外一个好处就是可以实现特征的自动选择,只选择和输入样本最相关的少数特征,从而更高效地表示输入样本,降低噪声并减轻过拟合
9.1.3 自编码器 AE
自编码器 Auto-Encoder,AE,通过无监督的方式学习一组数据地有效编码(或表示)
- 对于一组 D 维样本
,自编码器将这组数据映射到 M 维 的特征空间得到每个样本的 M 维编码
,并且希望这组编码可以重构出原来的样本
自编码器的结构:
- 解码器 Encoder:
- 解码器 Decoder:
但是使用自编码器一般是为了得到有效的数据表示,因此在训练结束后,一般会去掉解码器,只保留编码器,将编码器的输出直接作为后续机器学习模型的输入
自编码器的学习目标:最小化重构错误 Reconstruction Error
当然还可以再加上正则化项
如果特征空间的维度 M 小于原始空间的维度 D,自编码器相当于一种降维或特征抽取方法
- 如果让编码只能取 K 个不同的值,自编码器就相当于一个 K 类的聚类问题
9.1.4 稀疏自编码器
稀疏自编码器 Sparse Auto-Encoder,即让自编码器学习高维的稀疏编码,中间隐藏层 z 的维度大于输入样本 x 的维度 D,并让 z 尽量稀疏(参考图 9.2)
- 通过给自编码器中隐藏层单元 z 加上稀疏性限制,自编码器可以学习到数据中一些有用的结构
稀疏自编码器的目标函数:
稀疏编码器的优点:具有很高的可解释性,并同时进行了隐式的特征选择
9.1.5 堆叠自编码器 SAE
堆叠自编码器 Stacked Auto-Encoder,SAE,即使用逐层堆叠的方式来训练一个深层的自编码器
- 一般采用逐层训练来学习网络参数
堆叠自编码器的优点:深层神经网络作为自编码器提取的数据表示一般会更加抽象,能够更好地捕捉到数据的语义信息
9.1.6 降噪自编码器
降噪自编码器 Denosing Auto-Encoder,是一种通过引入噪声来增加编码鲁棒性的自编码器
引入噪声的不同方法:
- 对一个向量 x,首先根据一个比例
随即将一些维度的值设为 0,得到一个被损坏的向量
,然后将被损坏的向量
输入给自编码器得到编码 z,并重构出无损的原始输入 x
- 引入高斯噪声
降噪编码器的优点:
- 可以学习到更鲁棒性的数据编码,并提高模型的泛化能力
- 能够从部分损坏的数据中得到有效的数据表示
9.2 概率密度估计
概率密度估计 Probabilistic Density Estimation,简称密度估计,是基于一些观测样本来估计一个随机变量的概率密度函数
9.2.1 参数密度估计
参数密度估计 Parametric Density Estimation,是根据先验知识假设随机变量服从某种分布,然后通过训练样本来估计分布的参数
- 服从某种分布的训练样本集合
- 设服从的概率分布函数为
- 使用最大似然估计,参数估计问题转化为最优化问题:
在实际应用中,参数密度估计一般存在以下问题:
- 模型选择问题:即如何选择数据分布的密度函数,,实际数据的分布往往是非常复杂的,而不是简单的正态分布或多项分布
- 不可观测变量问题:即我们用来训练的样本只包含部分的可观测变量,还有一些非常关键的变量是无法观测的,这导致我们很难准确估计数据的真实分布(解决办法:11.2.2.1节 EM 算法)
- 维度灾难问题:即高维数据的参数估计十分困难。随着维度的增加,估计参数所需要的样本数量指数增加。在样本不足时会出现过拟合
9.2.2 非参数密度估计
非参数密度估计 Nonparametric Density Estimation,不假设数据服从某种分布,通过将样本空间划分为不同的区域并估计每个区域的概率来近似数据的概率密度函数
9.2.2.1 直方图方法
直方图方法:是一种非常直观的估计连续变量密度函数的方法,可以表示为一种柱状图
以一维随机变量为例:(N 个训练样本)
- 首先将其取值划分为 M 个连续的、不重叠的区间,每个区间的宽度为
- 统计落入每个区间的数量
- 归一化为密度函数
- 关键问题:如何选取一个合适的区间宽度
- 如果
太小,落入每个区间的样本数量较少,其估计的区间密度也具有很大的随机性
- 如果
太大,其估计的密度函数变得十分平滑,很难反映出真实的数据分布
- 如果
- 直方图的优点:直方图通常用来处理低维变量,可以非常快速地对数据分布进行可视化
- 直方图的缺点:很难扩展到高维变量,直方图需要的样本数量随着维度 D 的增加而指数增长(
),从而导致维度灾难
9.2.2.2 核方法
核密度估计/Parazen 窗方法:直方图方法的改进
- 核函数
:(H 为核函数的宽度)
- 超立方体核函数:表示样本 z 是否落入该立方体中(边长 H)
- 高斯核函数(更平滑)
超立方体核密度估计:
- 给定 N 个训练样本,落入区域 R 的样本数量
- 点 x 的密度估计
,
为超立方体 R 的体积
9.2.2.3 K 近邻估计
K 近邻方法:设置一个可变宽度的区域,并使得每个区域中样本数量为固定的 K
- 区别:直方图方法的区间宽度
是固定的,核密度估计方法的和宽度 H 也是固定的,同一个宽度可能对高密度的区域过大,而对低密度的区域过小
K 的选择:
- K 如果太小,无法有效地估计密度函数
- K 如果太大,会使得局部的密度不准确,并且增加计算开销
K 近邻分类器:K 近邻方法用于分类问题
- K=1 时,称为最近邻分类器
9.3 总结和深入阅读
无监督学习主要分为几种类型:
- 聚类:参考《机器学习》周志华 第 9 章
- 特征学习:是一种重要的表示学习方法
- 当一个监督学习任务的数据比较少时,可以通过大规模的无标签数据,学习到一种有效的数据表示,并有效提高监督学习的性能
- 参考《机器学习》周志华 第 10 章
- 密度估计:
But,无监督学习缺少有效的客观评价方法,因此很难衡量一个无监督学习的好坏,无监督学习的好坏通常需要代入到下游任务中进行验证,因此并未取得广泛成功
习题
参考:
习题 9-1 分析主成分分析为什么具有数据降噪能力?
当数据受到噪声影响时,最小特征值对应的特征向量往往与噪声有关,而 PCA 舍弃了最小的几个特征值对应的特征向量,在一定程度上起到了降噪的效果
习题 9-2 证明对于𝑁 个样本( 样本维数𝐷 > 𝑁)组成的数据集,主成分分析的有效投影子空间不超过 𝑁 − 1 维
习题 9-3 对于一个二分类问题,试举例分析什么样的数据分布会使得主成分分析得到的特征反而会使得分类性能下降
习题 9-4 若数据矩阵
,则对
奇异值分解 𝑿′ = 𝑼𝚺𝑽,则 𝑼 为主成分分析的投影矩阵
习题 9-5 举例说明,K 近邻方法估计的密度函数不是严格的概率密度函数,其在整个空间上的积分不等于 1
习题 9-6 分析公式 (9.14) 和 (9.15) 来衡量稀疏性的效果
习题 9-7 对于一个 𝐶 类的分类问题,使用 K 近邻方法估计每个类 𝑐 (1 ≤ 𝑐 ≤ 𝐶) 的密度函数 𝑝(𝒙|𝑐),并使用贝叶斯公式计算每个类的后验概率 𝑝(𝑐|𝒙)