机器学习技法(林轩田)学习笔记:Lecture 13 & Lecture 14

Lecture 13: Deep Learning

Autoencoder

autoencoder是深度学习中一种常用的初始化权重的方法。

如上图所示,首先,从第0~1层的权重开始,一层层用autoencoder初始化每两层之间的权重,然后再使用训练集对整个网络进行训练

autoencoder是如何初始化每两层之间的权重呢?

我们希望初始化权重后,每一层输入信息并传递给下一层后,能最大程度地保留这些信息

对于一个两层的神经网络(输入\(d+1\)维,输出\(d\)维,隐含层神经元个数(包括偏置)为\(\tilde d+1(\tilde d<d)\))而言,如果这个网络能保证输出非常近似于输入,那么输入到隐含层的过程就最大程度上保留了原始信息。

Basic Autoencoder

假设现在要初始化第\(l-1\)层到第\(l\)层的权重,第l-1层有结点(含偏置)\(d^{(l)}+1\),第l层有结点(含偏置)\(d^{(l+1)}+1\)

最简单的autoencoder就是训练一个输入\(d^{(l)}+1\)维,隐含层有结点(含偏置)\(d^{(l+1)}+1\)个,输出结点数\(d^{(l)}\)个的神经网络,其中,隐含层激励函数为tanh,输出层激励函数为线性函数,如上图所示。

另外,这个神经网络有正则化:\(w_{ij}^{(1)}=w_{ji}^{(2)}\)(不过这个特别的正则化会使梯度下降更加复杂)

训练完这个网络后,第l-1层到l层的参数就初始化为:这个网络输入层到隐含层的参数

Denoising Autoencoder

在机器学习基石中,我们已经了解了,训练样本的噪声\(\sigma^2\)越大,越容易引发过拟合。

为了解决这个问题,在用autoencoder初始化每两层之间的参数时,我们给构造的两层神经网络的输入\(x\)添加随机的噪声,使之变成\(\tilde x\),然后用\(\{(\tilde x,x)\}\)作训练集训练这个网络

Principal Component Analysis

Ng在Coursera的machine learning和CS229都讲过了PCA,但是技法的这节课从新的角度——linear autoencoder解释了PCA

考虑一种linear autoencoder,之前我们构造的两层神经网络,隐含层的激励函数是tanh,现在我们把它替换成线性激励函数,另外这个网络没有偏置。

设该网络输入d维,隐含层结点有\(\tilde d\)\((\tilde d<d)\),输出d维。这样,这个两层网络的第k个输出可以表示为:

\[h_k(x)=\sum_{j=1}^{\tilde d}w^{(2)}_{jk}(\sum_{i=1}^d w^{(1)}_{ij}x_i) \]

因为这个网络有特别的正则化:\(w_{ij}^{(1)}=w_{ji}^{(2)}=w_{ij}\),所以:

\[h_k(x)=\sum_{j=1}^{\tilde d}w_{kj}(\sum_{i=1}^d w_{ij}x_i) \]

我们令\(W\in\mathbb R^{d\times \tilde d},W_{ij}=w_{ij}\),则:

\[h(x)=(h_1(x),\cdots,h_d(x))^T \]

\[=WW^Tx \]

那么这个网络在给定输入为x时,均方误差为:

其中\(WW^T\)是实对称阵,我们通过正交变换的方式将其对角化:

\[WW^T=V \Gamma V^T \]

\(V\)是正交阵,其中每个列向量都是一个特征向量,\(\Gamma\)是对角阵,其第i个主对角元是V的第i个列向量(特征向量)对应的特征值

因为\(r(WW^T)\leq \min(r(W),r(W^T))\leq \tilde d\)\(r(V)=d\),所以

\[r(\Gamma)=r(V \Gamma V^T)=r(WW^T)\leq \tilde d \]

\(\Gamma\)是对角阵,这表明它最多有\(\tilde d\)个非零主对角元

\(WW^Tx_n=V\Gamma V^Tx_n\),相当于是用\(V^T\)\(x_n\)作正交变换后,得到新的向量,保留其中\(r(\Gamma)\)个维度后,再用\(V\)进行逆向的正交变换将它还原回去

当给定输入为x时,这个神经网络的均方误差为:

现在我们希望\(\min_wE_{in}(W)\),这等价于:

首先优化内层的\(\min_\Gamma(\cdots)\)

\[\min_\Gamma\frac 1 N\sum_{n=1}^N\|VIV^Tx_n-V\Gamma V^T x_n\|^2 \]

\[=\min_\Gamma\frac 1 N\sum_{n=1}^N\|V(I-\Gamma) V^T x_n\|^2 \]

\[=\min_\Gamma\frac 1 N\sum_{n=1}^N\|(I-\Gamma) V^T x_n\|^2 \]

(正交变换V保范数)

这相当于\(=\min_\Gamma\frac 1 N\sum_{n=1}^N\|(I-\Gamma) v_n\|^2\),\(v_n\)是固定的向量,显然我们希望\(\Gamma\)主对角线上1的个数越多越好,其他的主对角元都是0,那么最多有\(\tilde d\)个1,不失一般性,\(\Gamma\)可以表示为:

如果有其他形式的\(\Gamma\),把V的对应列交换一下就和上面这个形式一样了

下面,我们要最优化外层的\(\min_V(\cdots)\)

先看最特殊的情况:\(\tilde d=1\),此时只有\(V^T\)的第一行\(v^T\)起作用,优化目标变成了:

这是一个带等式约束条件的最优化问题,我们用拉格朗日乘数法构造拉格朗日函数\(\mathcal L\),令\(\frac{\partial \mathcal L}{\partial v}=0\)可以得到:

可见,v是\(\sum_{n=1}^Nx_nx_n^T=X^TX\)的特征向量,最优的向量v是\(X^TX\)的特征值最大的特征向量

推广到一般情形,可以证明,最优的向量\(v_1,\cdots,v_{\tilde d}\)\(X^TX\)的特征值最大的前\(\tilde d\)个线性无关的特征向量,这和CS229中,用方差最大化推导PCA得到的结果是一样的。

Lecture 14: Radial Basis Function Network

RBF Network Hypothesis

对于一般的两层的神经网络而言,其隐含层每个神经元j接收的\(s\)是所有输入\(x_i\)与参数\(w_{ij}^{(2)}\)加权求和的结果,我们可以视\(s\)为输入向量\(x\)与参数向量\(w_j\)的内积的结果,隐含层每个神经元j的输出是其s经激励函数处理后的值

而Full RBF Network的假设函数为:

\[h(x)=Output(\sum_{n=1}^N y_n \exp(-\gamma\|x-x_n\|^2)) \]

即,输入的特征\(x\)与第n个训练样本的特征\(x_n\)越相似,那么第n个训练样本的真实输出\(y_n\)对结果的影响越大。

而一般来说,在full RBF network中,只有距离\(x\)最近的训练样本的\(x_n\)对应的\(y_n\)会对最终的预测输出起决定性作用。因此在实践中,一般\(h(x)\)被简化为直接选择与\(x\)距离最近的\(x_n\)对应的\(y_n\)作为预测输出

Interpolation by Full RBF Network

我们现在考虑用full RBF Network实现回归,exp(...)前的系数不再是\(y_n\),而是一个参数\(\beta_n\),则假设函数为:

\[h(x)=\sum_{n=1}^N \beta_n \exp(-\gamma\|x-x_n\|^2)=\sum_{n=1}^N \beta_n RBF(x,x_n) \]

我们可以看作是输入特征\(x_n\)经过特征变换得到\(z_n\),其中

\(h(x)\)可以看作是一个关于\(z\)的线性函数,这是\(\mathcal Z\)空间里的线性回归模型:

\[h(x)=\beta^T z \]

我们用训练集\(\mathcal D=\{(z_n,y_n)\}_{n=1}^N\)来训练\(h(x)\)

回顾之前学过的最小二乘法,设\(Z=(z_1,\cdots,z_N)^T\),我们可以得到最优的\(\beta\)的解析解:

\[\beta=(Z^TZ)^{-1}Z^Ty \]

在本问题中,Z是\(N\times N\)方阵,而且显然是实对称阵,\(Z^T=Z\)(这个Z与之前SVM里高斯核的矩阵K是一样的)

如果所有的\(x_n\)都不同的话,Z就是可逆的。此时\(\beta\)可以化简为:

\[\beta=Z^{-1}y \]

可见,

\(g(x_1)=\beta^Tz_1=y^T(Z^{-1})^T\)(\(Z^T\)第一列)\(=y^TZ^{-1}\)(\(Z\)第一列)=\(y^T(1,0,\cdots,0)^T=y_1\)

类似地可以得到\(g(x_n)=y_n\)

所以这个full RBF Network的\(E_{in}=0\),在机器学习中这并非好事,它表明很有可能这个模型发生了过拟合

因此我们要引入正则化项:

\[\beta=(Z^TZ+\lambda I)^{-1}Z^Ty \]

在岭回归中,原始特征x被特征变换映射到无限维的空间上,其\(\beta=(K+\lambda I)^{-1}y\),而这里full RBF Network则是把x被特征变换映射到有限的N维的空间上,所以二者的\(\beta\)的解析解稍有区别

除此以外,还有一种正则化的方法。我们希望像SVM那样,只有少量的训练样本充当support vector决定着最终的假设函数

这里,我们通过K-means聚类将所有训练样本分成M个簇,每个簇的聚类中心为\(\mu_m\),每个簇对应的输出值为\(y_n\),则假设函数可以表示为

\[h(x)=\sum_{m=1}^M \beta_n RBF(x,\mu_m) \]

我们可以看作是将输入特征x经特征变换\(\Phi(x)\)映射到:

\(h(x)=\beta^T \Phi^T(x)\),这是一个线性回归模型,我们用训练集\(\mathcal D=\{(\Phi(x_n),y_n)\}_{n=1}^N\)训练它即可。

使用K-means聚类的RBF Network的算法流程如下:

posted @ 2018-07-30 19:48  YongkangZhang  阅读(285)  评论(0编辑  收藏  举报