美文网首页
《神经网络与机器学习》笔记(七)

《神经网络与机器学习》笔记(七)

作者: 糖醋排骨盐酥鸡 | 来源:发表于2019-12-23 21:08 被阅读0次

    第九章 无监督学习

    典型的无监督学习问题可以分为以下几类:

    • 无监督特征学习是从无标签的训练数据中挖掘有效的特征或表示。无监督特征学习一般用来进行降维、数据可视化或监督学习前期的数据预处理。特征学习也包含很多的监督学习算法,比如线性判别分析等。
    • 概率密度估计简称密度估计,是根据一组训练样本来估计样本空间的概率密度。密度估计可以分为参数密度估计和非参数密度估计。参数密度估计是假设数据服从某个已知概率密度函数形式的分布(比如高斯分布),然后根据训练样本去估计概率密度函数的参数。非参数密度估计是不假设数据服从某个已知分布,只利用训练样本对密度进行估计,可以进行任意形状密度的估计。非参数密度估计的方法有直方图、核密度估计等。
    • 聚类是将一组样本根据一定的准则划分到不同的组(也称为集群(Cluster))。一个比较通用的准则是组内样本的相似性要高于组间样本的相似性。常见的聚类算法包括K-Means 算法、谱聚类等。

    和监督学习一样,无监督学习方法也包含三个基本要素:模型、学习准则和优化算法。无监督学习的准则非常多,比如最大似然估计、最小重构错误等。在无监督特征学习中,经常使用的准则为最小化重构错误,同时也经常对特征进行一些约束,比如独立性、非负性或稀释性等。而在密度估计中,经常采用最大似然估计来进行学习。

    无监督特征学习

    主成分分析

    是一种最常用的数据降维方法,使得在转换后的空间中数据的方差最大,才能最大化数据的差异性,保留更多的原始数据信息。

    主成分分析

    假设有一组d 维的样本x^{(n)} \in \mathbb{R}^d, 1 ≤ n ≤ N,我们希望将其投影到一维空间中,投影向量为w\in \mathbb{R}^d。不失一般性,我们限制w的模为1,即w^Tw = 1。每个样本点x^{(n)} 投影之后的表示为:z^{(n)}=w^Tx^{(n)}

    我们用矩阵X = [x^{(1)}, x^{(2)}, \cdots , x^{(N)}]表示输入样本,\bar{x}=\frac{1}{N}\sum^N_{n=1}x^{(n)}为原始样本的中心点,所有样本投影后的方差为:
    \begin{aligned} \sigma(X ; \boldsymbol{w}) &=\frac{1}{N} \sum_{n=1}^{N}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}^{(n)}-\boldsymbol{w}^{\mathrm{T}} \overline{\boldsymbol{x}}\right)^{2} \\ &=\frac{1}{N}\left(\boldsymbol{w}^{\mathrm{T}} X-\boldsymbol{w}^{\mathrm{T}} \bar{X}\right)\left(\boldsymbol{w}^{\mathrm{T}} X-\boldsymbol{w}^{\mathrm{T}} \bar{X}\right)^{\mathrm{T}} \\ &=\boldsymbol{w}^{\mathrm{T}} S \boldsymbol{w} \end{aligned}
    其中\bar{X}=\bar{x}\boldsymbol{1}^T_d为d 列\bar {x}组成的矩阵,S为原样本的协方差矩阵。

    最大化投影方差并满足约束,利用拉格朗日方法转换为无约束优化问题得:\underset{w}{max}w^TSw+\lambda(1-w^Tw)。对其求导并令导数等于0,可得:Sw=\lambda w

    由此可知:\sigma(X ; \boldsymbol{w})=\boldsymbol{w}^TS\boldsymbol{w}=\boldsymbol{w}^T\lambda \boldsymbol{w}=\lambda

    λ 也是投影后样本的方差。因此,主成分分析可以转换成一个矩阵特征值分解问题,投影向量w为矩阵S 的最大特征值对应的特征向量。

    如果要通过投影矩阵W \in R^{d×d′}将样本投到d′ 维空间, 投影矩阵满足W^TW = I,只需要将S 的特征值从大到小排列,保留前d′ 个特征向量,其对应的特征向量即是最优的投影矩阵。

    S W=W \operatorname{diag}(\Lambda)

    ​ 其中\Lambda = [λ^1,\cdots, λ^{d′} ]为S 的前d′ 个最大的特征值。

    稀疏编码

    稀疏编码(Sparse Coding)也是一种受哺乳动物视觉系统中简单细胞感受野而启发的模型。局部感受野可以被描述为具有空间局部性、方向性和带通性(即不同尺度下空间结构的敏感性)。也就是说,外界信息经过编码后仅有一小部分神经元激活,即外界刺激在视觉神经系统的表示具有很高的稀疏性。编码的稀疏性在一定程度上符合生物学的低功耗特性。

    在数学上,(线性)编码是指给定一组基向量A = [a_1,\cdots , a_p],将输入样本x \in \mathbb{R}^d 表示为这些基向量的线性组合:\boldsymbol{x}= \sum^p_{i=1}z_i\mathbf{a}_i=Az,其中基向量的系数z = [z_1, \cdots, z_p] 称为输入样本x的编码,基向量A也称为字典。

    编码的关键是找到一组“完备”的基向量A,比如主成分分析等。但是主成分分析得到的编码通常是稠密向量,没有稀疏性。

    如果p 个基向量刚好可以支撑p 维的欧氏空间,则这p 个基向量是完备的。如果p 个基向量可以支撑d 维的欧氏空间,并且p > d,则这p 个基向量是过完备的、冗余的。“过完备”基向量是指基向量个数远远大于其支撑空间维度。因此这些基向量一般不具备独立、正交等性质。

    为了得到稀疏的编码,我们需要找到一组“过完备”的基向量(即p > d)来进行编码。在过完备基向量之间往往会存在一些冗余性,因此对于一个输入样本,会存在很多有效的编码。如果加上稀疏性限制,就可以减少解空间的大小,得到“唯一”的稀疏编码。

    给定一组N 个输入向量x^{(1)}, \cdots , x^{(N)},其稀疏编码的目标函数定义为:

    \mathcal{L}(A,Z)={\sum}^N_{n=1}\Big(||x^{(n)-Az^{(n)}}||^2+\eta \rho(z^{(n)})\Big)

    其中Z = [z^{(1)}, \cdots , z^{(N)}],ρ(·) 是一个稀疏性衡量函数,η 是一个超参数,用来控制稀疏性的强度。

    对于一个向量z\in \mathbb{R}^p,其稀疏性定义为非零元素(或远大于零的元素)的比例。如果一个向量只有很少的几个非零元素,就说这个向量是稀疏的。稀疏性衡量函数ρ(z) 是给向量z一个标量分数。z 越稀疏,ρ(z) 越小。

    稀疏性衡量函数有多种选择,最直接的衡量向量z 稀疏性的函数是ℓ0 范数:\rho(z)=\sum^p_{i=1}\mathbf{I}(|z_i|>0

    但ℓ0 范数不满足连续可导,因此很难进行优化。在实际中,稀通常使用ℓ1 范数:\rho(z)=\sum^p_{i=1}|z_i|或对数函数\rho(z)=\sum^p_{i=1}log(1+z^2_i)或指数函数:\rho(z)=\sum^p_{i=1}-exp(-z^2_i)

    训练方法

    给定一组N 个输入向量x^{(1)}, \cdots , x^{(N)},需要同时学习基向量A以及每个输入样本对应的稀疏编码z^{(1)}, \cdots , z^{(N)}。稀疏编码的训练过程一般用交替优化的方法进行。

    1. 固定基向量A,对每个输入x(n),计算其对应的最优编码:\underset{z^{(n)}}{min}||x^{(n)}-Az^{(n)}||^2+\eta\rho(z^{(n)}),\forall n\in [1,N].
    2. 固定上一步得到的编码z^{(1)}, \cdots , z^{(N)},计算其最优的基向量:\underset{A}{min}\sum^N_{n=1}\Big(||x^{(n)}-Az^{(n)}||^2\Big)+\lambda\frac{1}{2}||A||^2,其中第二项为正则化项,λ 为正则化项系数。
    稀疏编码的优点

    稀疏编码的每一维都可以看作是一种特征。和基于稠密向量的分布式表示相比,稀疏编码具有更小的计算量和更好的可解释性等优点。

    计算量 稀疏性带来的最大好处就是可以极大地降低计算量。

    可解释性 因为稀疏编码只有少数的非零元素,相当于将一个输入样本表示为少数几个相关的特征。这样我们可以更好地描述其特征,并易于理解。

    特征选择 稀疏性带来的另外一个好处是可以实现特征的自动选择,只选择和输入样本最相关的少数特征,从而更高效地表示输入样本,降低噪声并减轻过拟合。

    自编码器

    自编码器(Auto-Encoder,AE)是通过无监督的方式来学习一组数据的有效编码(或表示)。

    通过自编码器将一组d维样本x^{(n)} \in \mathbb{R}^d,1 \le n\le N映射到特征空间中,得到每个样本的编码z^{(p)}\in \mathbb{R}^p,1 \le n\le N,并可以由编码重构出样本。

    自编码器的结构可分为编码器(f:\mathbb{R}^d\rightarrow\mathbb{R}^p)和解码器(g:\mathbb{R}^p\rightarrow\mathbb{R}^d)两部分。

    自编码器的学习目标是最小化重构错误:

    \mathcal{L}={\sum}^N_{n=1}||x^{(n)}-g(f(x^{(n)}))||^2=\sum_{n=1}^{N}\left\|x^{(n)}-f \circ g\left(x^{(n)}\right)\right\|^{2}

    如果特征空间的维度p 小于原始空间的维度d,自编码器相当于是一种降维或特征抽取方法。如果p ≥ d,一定可以找到一组或多组解使得f ◦ g 为单位函数(Identity Function),并使得重构错误为0。然而,这样的解并没有太多的意义。但是,如果再加上一些附加的约束,就可以得到一些有意义的解,比如编码的稀疏性、取值范围,f 和g 的具体形式等。如果我们让编码只能取k 个不同的值(k < N),那么自编码器就可以转换为一个k 类的聚类(Clustering)问题。

    两层网络结构的自编码器

    对于样本x,自编码器的中间隐藏层的活性值为x的编码,即:z=s(W^{(1)}x+b^{(1)}),自编码器的输出为重构的数据:x'=s(W^{(2)}z+b^{(2)})。。如果令W(2) 等于W(1) 的转置,即W^{(2)}=W^{(1)^T},称为捆绑权重。捆绑权重自编码器的参数更少,因此更容易学习。此外,捆绑权重还在一定程度上起到正则化的作用。

    给定一组样本x^{(n)} \in [0,1]^d,1 \le n\le N,其重构错误为:\mathcal{L}={\sum}^N_{n=1}||x^{(n)}-x'^{(n)}||^2+\lambda ||W||^2_F

    我们使用自编码器是为了得到有效的数据表示,因此在训练结束后,我们一般会去掉解码器,只保留编码器。编码器的输出可以直接作为后续机器学习模型的输入。

    稀疏自编码器

    自编码器除了可以学习低维编码之外,也能够学习高维的稀疏编码。假设中间隐藏层z 的维度p 大于输入样本x的维度d,并让z 尽量稀疏,这就是稀疏自编码器。和稀疏编码一样,稀疏自编码器的优点是有很高的可解释性,并同时进行了隐式的特征选择。

    通过给自编码器中隐藏层单元z 加上稀疏性限制,自编码器可以学习到数据中一些有用的结构。给定N 个训练样本\{x^{(n)}\}^N_{n=1},稀疏自编码器的目标函数为:\mathcal{L}={\sum}^N_{n=1}||x^{(n)}-x'^{(n)}||^2+\eta \rho(Z)+\lambda ||W||^2

    给定N 个训练样本,隐藏层第j 个神经元平均活性值为:\hat{\rho}_j=\frac{1}{N}\sum^N_{n=1}z^{(n)}_j\hat{\rho}_j可以近似的看作是第 j 个神经元激活的概率。可以事先给定一个值,如:\rho ^*=0.05,然后用KL距离来衡量两者的差异:

    \mathrm{KL}\left(\rho^{*} \| \hat{\rho}_{j}\right)=\rho^{*} \log \frac{\rho^{*}}{\hat{\rho}_{j}}+\left(1-\rho^{*}\right) \log \frac{1-\rho^{*}}{1-\hat{\rho}_{j}},如果\hat{\rho}_{j}=\rho^{*},则\mathrm{KL}\left(\rho^{*} \| \hat{\rho}_{j}\right)=0

    稀疏性度量函数定义为:\rho(Z)=\sum^p_{j=1}\mathrm{KL}\left(\rho^{*} \| \hat{\rho}_{j}\right)

    堆叠自编码器

    使用逐层堆叠的方式来训练一个深层的自编码器,称为堆叠自编码器。一般可以采用逐层训练来学习网络参数。

    降噪自编码器

    是一种通过引入噪声来增加编码鲁棒性和模型泛化能力的自编码器。

    对于一个向量x,我们首先根据一个比例μ 随机将x 的一些维度的值设置为0,得到一个被损坏的向量\tilde{x}。然后将被损坏的向量\tilde{x}输入给自编码器得到编码z,并重构出原始的无损输入x。

    自编码器和降噪自编码器

    概率密度估计

    参数密度估计

    是根据先验知识假设随机变量服从某种分布,然后通过训练样本来估计分布的参数。

    \mathcal{D}=\{x^{(n)}\}^N_{n=1}为从某个未知分布中独立抽取的N 个训练样本,假设这些样本服从一个概率分布函数p(x; \theta),其对数似然函数为:\log p(\mathcal{D},\theta)=\sum^N_{n=1}\log p(x^{(n)};\theta)

    我们要估计一个参数\theta^{ML}来使得:\theta^{ML}=\underset{\theta}{\arg max}\sum^N_{n=1}\log p(x^{(n)};\theta),这样参数估计问题就转化为最优化问题。

    正态分布
    多项分布
    非参数密度估计

    不假设数据服从某种分布,通过将样本空间划分为不同的区域并估计每个区域的概率来近似数据的概率密度函数。

    对于高维空间中的一个随机向量x,假设其服从一个未知分布p(x),则x落入空间中的小区域\mathcal{R}的概率为:P=\int_{\mathcal{R}}p(x)dx。给定N 个训练样本\mathcal{D}=\{x^{(n)}\}^N_{n=1},落入区域\mathcal{R}的样本数量K 服从二项分布:P_{K}=\left(\begin{array}{c}{N} \\ {K}\end{array}\right) P^{K}(1-P)^{1-K},其中K/N 的期望为\mathbb{E}[K/N] = P,方差为var(K/N) = P(1 − P)/N。当N 非常大时,我们可以近似认为:P\approx\frac{K}{N}。假设区域\mathcal{R}足够小,其内部的概率密度是相同的,则有P\approx p(x)V,其中V 为区域\mathcal{R}的体积。结合上述两个公式,得到:p(x)\approx \frac{K}{NV}

    根据上述公式,要准确地估计p(x),需要尽量使得样本数量N 足够大,区域体积V 尽可能地小。但在具体应用中,样本数量一般是有限的,过小的区域会导致落入该区域的样本比较少,这样估计的概率密度就不太准确。因此,实践中非参数密度估计通常使用两种方式:(1)固定区域大小V ,统计落入不同区域的数量,这种方式包括直方图方法和核方法两种;(2)改变区域大小以使得落入每个区域的样本数量为K,这种方式称为K近邻方法。

    直方图方法
    直方图密度估计

    直方图通常用来处理低维变量,可以非常快速地对数据的分布进行可视化,但其缺点是很难扩展到高维变量。假设一个d 维的随机向量,如果每一维都划分为M 个区间,那么整个空间的区间数量为Md 个。直方图方法需要的样本数量会随着维度d 的增加而指数增长,从而导致维度灾难(Curse of Dimensionality)问题。

    核方法

    核密度估计(Kernel Density Estimation),也叫Parzen 窗方法,是一种直方图方法的改进。

    假设\mathcal{R}为d维空间中的一个以点x为中心的“超立方体”,并定义核函数:

    \phi\Big(\frac{z-x}{h}\Big)=\left\{\begin{array}{ll}{1} & {\text { if }\left|z_{i}-x_{i}\right|<\frac{h}{2}, 1 \leq i \leq d} \\ {0} & {\text { else }}\end{array}\right.

    来表示一个样本z 是否落入该超立方体中,其中h 为超立方体的边长,也称为核函数的宽度。

    给定N 个训练样本\mathcal{D}=\{x^{(n)}\}^N_{n=1},落入区域\mathcal {R}的样本数量K 为:K=\sum^N_{n=1}\phi(\frac{x^{(n)}-x}{h}),则点x的密度估计为:p(x)=\frac{K}{Nh^d}=\frac{1}{Nh^d}\sum^N_{n=1}\phi(\frac{x^{(n)}-x}{h}),其中h^d 表示区域\mathcal {R}的体积。

    K近邻方法

    核密度估计方法中的核宽度是固定的,所以不够灵活,一种更灵活的方式是设置一种可变宽度的区
    域,并使得落入每个区域中样本数量为固定的K。

    相关文章

      网友评论

          本文标题:《神经网络与机器学习》笔记(七)

          本文链接:https://www.haomeiwen.com/subject/hautoctx.html