自编码器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

自编码器1背景介绍大数据时代,结合智能计算的大数据分析成为热点,大数据技术结合深度学习算法成为大数据的分析及处理的核心技术之一,深度学习算法的学习能力不断提升必将推动数据科学的不断发展。深度学习目前受到了前所未有的关注,它是机器学习研究的新领域,掀起了机器学习领域的第二次浪潮,受到了学术界和工业界的高度关注。深度学习概念由GeoffreyHinton等人于2006年提出来的,深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。深度学习架构由多层人工神经网路组成,人工神经网络是受到了大脑分层的结构启发,基于大脑神经元激活或抑制进行信号传输的原理设计出来的神经网络模型。深度学习是一种无监督学习算法,它无需人工输入或标注特征,而是通过海量数据自动学习特征。深度学习相对于浅层学习的优势在于深度学习通过深层非线性神经网络结构对复杂函数进行逼近,并且可以从少数样本集合中找到学习到数据集本质特征。深度学习的核心思想:把深度学习分层模型看作一个网络,则①无监督学习用于每一层网络的预训练;②预训练时,每次只训练一层网络,上一层网络的输出作为下一层网络的输入;③用监督学习去调整所有的层。2自动编码器的原理自动编码器是Rumelhart于1986年提出来的,是一个典型的三层神经网络,一个是输入层,一个隐藏层和一个输出层,其中输入层和输出层有相同的维度,都为n维,隐藏层的维度为m维。其网络结构示意图如图1所示。+11x2xnxX1y2ynyY+1输入层隐藏层输出层mpRnqRmnwRnmwR图1自动编码器结构示意图从输入层到隐藏层是编码过程,从隐藏层到输出层是解码过程,设f和g分别表示编码函数和解码函数,则:h(x)s(wxp)ff(2-1)(x)s(wx)gygq(2-2)其中sf为编码器激活函数,通常取Sigmod函数,即1f(x)1xe,sg为解码器激活函数,通常取Sidmod函数或者恒等函数,输入层和隐藏层之间的权值矩阵为w,隐藏层与输出层之间的权值矩阵为w,并且Tww,自动编码器的参数={w,p,q}。输出层的输出数据Y可以看作是对输入层的输入数据X预测,自动编码器可以利用反向传播算法调整神经网络的参数,当输出层的输出数据Y与输入层的输入层数据X的接近程度可以接受的时候,那么该自动编码器就保留了原始输入数据的大部分信息,此时自动编码器神经网络就训练好了。定义重构误差函数(x,y)L来刻画Y与X的接近程度。当sg为恒等函数的时候:2(x,y)Lxy(2-3)当sg为Sidmod函数的时候:0(x,y)=[xlogy(1x)log(1y)]niiiiiL(2-4)当给定的训练样本集为(i)1={X}NiS时,自动编码器整体损失函数为:()(x,g(f(x)))AExsJL(2-5)最后重复使用梯度下降算法迭代计算()AEJ的最小值,即可求解出自动编码器神经网络的参数,完成自动编码器的训练。3自动编码器的衍生算法自动编码器是一种简单的三层神经网络模型,最开始提出自动编码器的主要目的是用做高维数据的降维,但是随着研究的不断发展,自动编码器被赋予了学习稀疏的、分布式的特征表达,并且学习到的特征表达比输入数据维度高还要高,维了避免学习恒等隐射,可以通过添加约束条件来形成具有特定功能的衍生自动编码器。例如,在AE的损失函数(2-5)中加入正则方程,可以得到正则自动编码器,常用的有L1正则项和L2正则项,RAE中的正则项也称为权重衰减项,该算法要求比较小的权重;要求隐藏层神经元大多数时候处于抑制状态的约束称为稀疏性约束,满足稀疏性约束的自动编码器就是稀疏自动编码器(SAE);要求隐藏层神经元的表达对输入数据上的噪声干扰具有移动的鲁棒性称为噪声鲁棒性约束,满足噪声鲁棒性约束条件的自动编码器是降噪自动编码器(DAE);对降噪自动编码器做进一步处理,将添加干扰的数据噪声做边缘化处理,即用DAE的损失函数的泰勒展开式近似表示其期望损失函数,并做出相应的简化处理,就可以得到边缘降噪自动编码器(mDAE)。4自编码器的评分预测算法评分预测是推荐系统的一个组成部分,通过一个实数表达对用户的偏好进行预测,在学术界被广泛研究。神经网络具有很强的特征提取能力,能获取数据深层次的特征。使用神经网络中的一种网络即自编码器,通过扩展使其具有处理像评分矩阵这种有缺失数据的矩阵的能力,并通过实验证明其预测结果与当前主流的评分预测算法SVD的性能接近。4.1引言协同过滤算法是推荐系统中较为常用的算法,因为使用协同过滤算法进行推荐时,只需收集用户对某件物品的一个动作表达用户对物品的偏好程度,如评分、加入购物车、购买等,即可进行推荐,这样的数据对于电子商务网站或者视频网站来说是非常容易收集的。基于领域的算法是协同过滤算法中最基本的算法,主要分为基于用户的协同过滤算法,即给用户B推荐物品,只需寻找与他相似的用户并将该用户喜欢而用户B没有看过的物品推荐给B。基于物品的协同过滤算法与基于用户的思路类似只是主体换成了物品,这两种算法在业界被广泛应用。后来又出现了矩阵分解的方法,其中具有代表性的是SIMONF提出的SVD算法。SVD算法是对用户评分矩阵进行分解,然后再重构,重构的结果就是预测结果,SVD算法在评分预测方面的性能优于传统的基于邻域的算法,在NetflixPrize竞赛中取得了巨大的成功。神经网又称为多层感知器,因其具有强大的函数表达能力,可以表达复杂模型,是机器学习的一个重要研究分支,2006年HINTONGE等人发明训练深度网络的方法以后,具有深度结构的神经网络成为了机器学习领域的一个研究热点。自编码器是神经网络中一种用于无监督学习的网络,本文提出一种关于自编码器在评分预测上的扩展,并与当前热门的评分预测算法SVD进行试验对比。4.2算法目前很多的机器学习工作都会使用自编码器进行无监督学习,得到一组好的特征表示来完成更高级的任务,使用这样的方法获得了显著的效果。基于自编码器有很强的发现潜在特征的能力,在评分预测中对于用户评分矩阵,用已经评分的部分作为输入,使用自编码学习恒等函数(x)xy获得数据更深层次的表达,然后再利用这组表达去重构评分矩阵缺失的部分,即得到预测值。4.3网络结构假设有N个用户,M部电影,用户对某个电影的评分为1~K之间的某个整数,就形成M×N的矩阵V,这个矩阵是一个有缺失数据的矩阵,如果用户i没有对电影j进行评分则元素ijV就是缺失的。矩阵的一列的第i属性表示用户i对电影的评分,用矩阵V的一个列向量作为输入给自编码器。自编码器输入层的每一个节点代表用户对当前电影的评分,对于输入向量中缺失评分的那个用户,网络中对应的输入的单元和输出的单元也是缺失的,这样自编码器会根据不同的电影输出而改变网络结构,但是隐藏层的单元数是固定的,单元之间的参数是共享的,网络结构如图2所示。在图中展示了两个电影输入给自编码器的情况,第一个电影只被用户1、2、3、5评价过,则相应的第4个输入和输出节点是缺失的;第二个电影被用户1、3、4评分过,则第2和第5个节点是缺失的。51231234131345Layer1Layer2Layer3Layer1Layer2Layer3图2训练网络现在来分析特定电影被用户评分的向量作为输入情况下的自编码器。假设电影被n个用户评价,h为隐藏层的单元个数,则有如下符号定义::神经网络的输入,nR。h:隐藏层的单元数。(l)ijw:第l层的单元j到连接到第l+1层的单元i的参数,其中(1)hnwR,(2)hnwR(l)ib:连接到l+1层的单元i的偏置。(l)ia:第l层的单元i的激活,其中(l)iia表示第i个输入。自编码器的向前计算过程为:(1)(1)(1)1(1)(2)(3)(2)(2)(2)1()niijjijiinijiijizWabazzWab(4-1)(3)(3)(z)jia(4-2)(3)(,w,b)ajjy其中,(x)1/(1exp(x))。损失函数为:211(w)(y(,w,b))2njiiE4.4网络训练网络的训练采用反向传播算法,包含向前阶段和向后阶段两个过程。向前阶段使用式(4-1)、(4-2)计算出预测值,在向后阶段利用误差向后传播的思想计算梯度,即先计算l+1梯度,再计算l层的梯度。每个电影的输入用向量v表示,则每个参数的梯度为:(2)(3)(3)(3)(3)(a)a(1a)jjijjjEz(4-3)(2)(2)(2)jijiWa(4-4)(2)(2)jjb(4-5)(1)(2)(2)(2)(2)(2)1a(1a)njjjlljljEWz(4-6)(1)(1)ijjjW(4-7)(1)(1)iib(4-8)采用梯度下降更新策略对参数如下更新:(l)(l)(l)ijijij(4-9)(l)(l)(l)iiibbb(4-10)使用bath-method训练时,不同电影的输入被相同用户评分为输出单元和输入单元,可以把与这些单元相关的参数的梯度进行累加,作为总梯度来进行参数的更新。2006年ChuChengtao提出当算法能够写成一种称为summationform的形式时这种算法就能很容易地进行并行化训练,并给出了神经网络在Map-Reduce框架下的并行化训练思路,本文提出的预测评分算法很容易扩展到处理大数据的环境。4.5预测网络训练完成后进入到预测阶段,如要预测用户u1对电影的评分,网络的输入层到隐藏层不变,只需在输出层增加一个关于用户u1的输出节点,为了能够预测其训练集中所有用户对当前电影的评分,可以把输出层的节点数增加到N,网络结构修改如图3所示。51231235Layer1Layer2Layer34图3预测网络输入层的节点4时缺失的,但是输出层的节点4还在,因此输出层的节点4就是算法对用户4关于当前电影的评分预测。然后使用(4-1)、(4-2)对网络进行一次向前计算,即可得到网络对电影呗某个用户评分的预测。4.6利用隐式反馈在推荐系统领域,会遇到一种叫做冷启动的问题。网站有很多的电影和用户,但是用户对电影的评分却很容易获得一种隐式的反馈,即用户看过或浏览过某部电影,但是因为某种原因没有给出评分,这种隐式的反馈,也可以在一定程度上解释用户的偏好,因此算法就可以利用这组隐式反馈数据,考虑向量0,1Nd是一个长度为N的0~1向量,表示电影是否被某个用户查看过,这样就可以通过这组向量去影响隐蔽层的表示,这样就可以通过这组向量去影响隐藏层的表示,这时对式(4-1)进行修改如下:(2)(2)1(Z)Niiilllad其中,为新增参数hNR,的梯度为(1)ijijd。4.7实验本次实验采用MoiveLens-100k数据集,其中含有943个用户对1682部电影10万次评分,评分取值是从1~5之间的整数,实验前需要对数据进行预处理,即对整个数据除以5,最后算法的输出结果乘以5得到最终的预测结果。在实验中把数据集划分为不相交的两部分,第一部分包含9万个用户评分作为训练集,剩下的作为测试集验证预测效果,上述过程会重复划分10次,进行10次训练和预测。预测结果的评价采用评分预测中常用的均方根误差(RMSE)作为评分标准。假设用户u对电影i的真实评分为uir,算法预测评分为ˆuir,T是一个集合存放测试集中用户u对电影i评分的二元组,则RMSE的计算公式为:2ˆ,(rr)uiuiuiTRMSET每次训练,把训练数据分成10批(batche),每批含有168个电影的训练用例,最后一批含有170个电影训练用例,每一批计算完梯度后进行参数更新,神经网络的隐藏单元个数设置为50。对比实验选择当下预测评分算法中比较流行的SVD,SVD的隐式因子设定为50,数据全部经过算法训练一次记一个周期(epoch),训练50个周期,在1~50个周期的误差中选择

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功