去噪自动编码器(DAE)是在传统自动编码器的基础上,通过向输入中注入噪声,然后利用含噪声的“腐坏”的样本去重构不含噪声的“干净”输入,这是与传统编码器的主要区别[47]。同时这种训练策略也使得DAE能够学习到更能反映输入数据的本质特征。传统自动编码器单纯依靠最小化输入与重构信号之间的误差来得到输入的隐含层特征表示,但这种训练策略并不能保证提取到数据的本质特征,因为单纯依靠最小化重构误差可能导致编码器学习到的特征仅仅是原始输入的复制。为避免上述问题,引入噪声注入策略,这就是DAE产生的动机。
助于形成输入的更高层特征表达。DAE模型结构如图4-4所示。可以看出,DAE仍然是通过最小化输入与重构信号之间的误差来对网络参数进行调整,这一点传统的自动编码器相同;不同的是,DAE的隐含层表示并不是由原始输入直接映射得到,而是由原始输入的“腐坏”版本得到。DAE按照一定比例将原始输入中的元素随机置零,对剩余元素不作处理,便得到了原始输入的“腐坏”版本。相当于向原始输入中引入一定比例的“空白”元素,减少了原始输入包含的信息;而DAE就是通过对和进行学习,尝试着去填补丢失的信息,进而学习到的数据结构,使得提取到的特征更能反映原始输入的特点。
多个DAE堆叠能够形成具有一定深度的SDAE。这时的SDAE并不能进行模式识别,因为它只是一个特征提取器,并不具有分类功能。为了使SDAE具有分类功能,需在其顶层添加分类器,如SVM、softmax等,并使用带标签的数据对SDAE进行有监督训练,最后使用利用BP算法对整个网络参数进行微调,便得到具有分类功能的SDAE,如图4-5所示。具体步骤如下:
Step1 初始化SDAE网络参数;
Step2 训练第一层DAE,将其隐含层作为第2个DAE的输入,并进行同样的训练,直到第n层DAE训练完成;
Step3 将训练好的n层DAE进行堆叠形成SDAE,向SDAE网络顶层添加输出层;
Step4 利用样本数据和标签对整个网络进行有监督的微调。