13 Deep Learning
13.1 Deep Neural Network
将神经网络的层数增大,即称为深度学习。深度学习一般在输入数据为row data的时候使用,因为这些数据很难人为构造出合适的特征。深度学习一般面临如下挑战:
(1)神经网络结构的决定:一般只能通过人的主观领域知识来决定神经网络结构,例如图像识别中的convolutional NNet,即认为相邻的像素才有必要连接到下一层的同一神经元。
(2)模型复杂度:由于高层神经网络会有很多变量,因此显然会提高模型复杂度。但是一般情况下row data的数据集都很大,因此这个问题不算太严峻。
(3)优化问题:由于神经网络是一个容易陷入局部最优解的模型,因此应当谨慎选择初始值,目前寻找初始值的方法被称为pre-training。
(4)计算复杂度:由于数据量很大,因此计算复杂度很高。现在采用先进的硬件架构来缓解这一问题,例如GPU计算。
13.2 Autoencoder
本节讲述了一种叫Autoencoder的pre-trainning方式。构建一个三层网络,其中前两层是深度网络中相邻的两层,第三层输出层的神经元数量与第一层相同。训练时使输入和输出相同,最终得到1/2层和2/3层之间的权重,1/2层之间的权重即为预训练的权重。
这么做的理由是,使得特征在经过转换之后有足够的信息可以转换回来,即在转换过程中尽量少地丢失信息。Autoencoder的中间层神经元一般比输入/输出层少,并且可以将其看做是输入数据经过萃取之后的模式特征。
可以看到,这是一个非监督的方法,对于最终转换后输入与输出相似的特征而言,提取的模式能很好地解释它们,反之则不能,这可以看做是密度估计(解释得好的特征聚集在一起形成高密度)或者离群点检测(解释得不好的特征是离群点)。
另外,称#1/2#层的权重是编码权重,另外一层权重为解码权重,有时候让两边的权重差作为惩罚项。
13.3 Denoising Autoencoder
在上一节的基础上,将输入的值加上一些噪音,输出值不变,这样就相当于教算法如何从噪音数据中得到正确结论。由于过拟合可以看做是对噪音做了拟合,因此这样的方法也可以看做是避免过拟合的一种方式。
13.4 Principal Component Analysis
在上两节中讲述了Autoencode的非线性模式,本小结讲述了其线性模式:
hk(x)=∑d?j=0wkj(∑di=1wijxi)
写成矩阵形式:
hk(x)=WWTx
将WWT进行特征值分解,并构造成损失函数:
Ein=|x?VΓVTx|2
这样问题就变成了优化V与Γ的问题。很显然,Γ与单位矩阵越相似越好,但由于其秩为d?,因此令其为前d?个对角线元素为1,其余元素为0的矩阵。改写原损失函数:
argmax|CVTx|2
其中,C矩阵是前d?d?个对角线元素为1,其余元素为0的矩阵,这里原本是后面的元素为1,前面的元素为0,但是将argmin的目标转换为了argmax,因此得到C矩阵。这里有约束条件VVT=E,因此将其作为限制条件,利用拉格朗日乘子带入原目标函数,并对V求导,得到:
XXTv=λv
可以看到,v的求解即矩阵XXT的特征向量,同时将v带入原目标函数中,其求解结果是λ,因此应选择最大特征值对应的特征向量作为V的解。
可以看到,这个方法和PCA有相似之处,不同点在于,PCA中使用了协方差矩阵。
14 Radial Basis Function Network
14.1 RBF Network Hypothesis
在带高斯核函数的SVM中,可以把高斯核看做是所有样本对于支持向量的相似度,那么SVM就可以看做是将样本与支持向量的相似度进行线性组合,再取符号。将这种思想反应成神经网络的样子,就是将中间的隐藏层换成与支持向量的相似度。
由于这种相似度需要基于路径(Racial),即两个样本在高维空间中的距离越近,相似度越高,因此并不是所有的核函数都能替代高斯核。
14.2 RBF Network Learning
回忆一下高斯核作为相似度的RBF网络:
h(x)=output(∑Mm=1βmRBF(x,μm))
还有另一种方法,令zn=[RBF(xn,μ1),…,RBF(xn,μm)],则该问题可以看做是线性回归问题,βm是待求解权重。在线性回归的解析解中,权重如下求解:
βm=(ZTZ)?1Zym
如果x是各不相同的,则Z是可逆的,即:
βm=Z?1ym
由于得到的解是解析解,我们可以发现当输入的样本是训练样本时,得到的结果一定是正确的,因此可能会带来过拟合问题,以下介绍一些避免过拟合方法:
一种方法是加上正则化:
βm=(ZTZ+λI)?1Zym
另一种方法是不要对所有样本求相似度,只是对其中几个求。
14.3 K-means Algorithm
接上节,可以用k-means的方法求出部分代表来使用到RBF中。K-means保证收敛,因为每一次迭代都会导致损失函数降低。
14.4 k-means and RBF Network in Action
本节演示了RBF和k-means在实际上使用的情况。