阿里云开发者社区,稀疏编码( 三 )


更重要的是,浅层模型有一个特点,就是需要依靠人工来抽取样本的特征 。然而,手工地选取特征是一件非常费力的事情,能不能选取好很大程度上靠经验和运气 。既然手工选取特征不太好,那么能不能自动地学习一些特征呢?提示:实际生活中,人们为了实现对象的分类,首先必须做的事情是如何来表达一个对象,即必须抽取一些特征来表示一个对象 。
例如,区分人和猴子的一个重要特征是是否有尾巴 。特征选取的好坏对最终结果的影响非常大 。此外,我们希望提取到的特征能代表输入数据的最重要部分,就像PCA(Principal Component Analysis,主成分分析,请参见第6章的6.2.2节)那样,找到可以代表原信息的主要成分 。以自动编码器(AutoEncoder)为例,这是一种尽可能复现输入信号的神经网络:即输出y要尽可能与输入x相同,表示为 。
我们可通过训练调整这个神经网络的参数,来得到每一层中的权值系数,这样就可得到输入x的一个层次化的表示 。这个可代表原信息主要成分的表示就是所谓的特征 。进一步地,我们还可用来表示输出y,其中W称为字典 。类似于PCA,W可理解为基,h可理解为系数 。同时,我们不仅希望将信号表示为一组层次化基的线性组合,而且要求只需较少的几个基就可以将信号表示出来,这就是所谓的稀疏编码(Sparse Coding) 。
“稀疏性”定义为:只有很少的几个非零元素或只有很少的几个远大于零的元素 。也即,我们希望求得一组最佳的系数,满足:注意上式右边对系数采用了L1范式/正则化/约束以满足稀疏性,上式实际上是对Lasso(The Least Absolute Shrinkage and Selectionator operator)估计的求解 。
之所以希望“稀疏性”是科学依据的,因为绝大多数的感官数据,比如自然图像,都可以被表示成“少量”基本元素的叠加,比如基本线/面的叠加 。稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量(基向量的个数比输入向量的维数要大)以更高效地表示样本数据,以找出隐含在输入数据内部的结构与模式 。答案是能!深度学习框架将特征和分类器结合到一个框架中,自动地从海量大数据中去学习特征,在使用中减少了手工设计特征的巨大工作量 。
看它的一个别名:无监督特征学习(Unsupervised Feature Learning),就可以顾名思义了 。无监督(Unsupervised)学习的意思就是不需要通过人工方式进行样本类别的标注来完成学习 。因此,深度学习是一种可以自动地学习特征的方法 。提示:准确地说,深度学习首先利用无监督学习对每一层进行逐层预训练(Layerwise Pre-Training)去学习特征;每次单独训练一层,并将训练结果作为更高一层的输入;然后到最上层改用监督学习从上到下进行微调(Fine-Tune)去学习模型 。
深度学习通过学习一种深层非线性网络结构,只需简单的网络结构即可实现复杂函数的逼近,并展现了强大的从大量无标注样本集中学习数据集本质特征的能力 。深度学习能够获得可更好地表示数据的特征,同时由于模型的层次深(通常有5层、6层,甚至10多层的隐层节点,“深”的好处是可以控制隐层节点的数目为输入节点数目的多项式倍而非多达指数倍)、表达能力强,因此有能力表示大规模数据 。
对于图像、语音这种特征不明显(需要手工设计且很多没有直观的物理含义)的问题,深度模型能够在大规模训练数据上取得更好的效果 。尤其是在语音识别方面,深度学习使得错误率下降了大约30%,取得了显著的进步 。相比于传统的神经网络,深度神经网络作出了重大的改进,在训练上的难度(如梯度弥散问题)可以通过“逐层预训练”来有效降低 。

推荐阅读