文献综述(或调研报告):
近年来,基于会话推荐作为数据挖掘推荐系统领域一个比较活跃的研究问题正在不断发展,许多研究者也对基于会话推荐产生了兴趣并且投身到会话推荐的研究工作中去,各类会话推荐算法模型不断被提出和改进。目前基于会话的推荐的主要算法包括:使用序列模式挖掘技术来预测用户的下一个行为,基于马尔可夫模型的方法,以及基于深度学习中的循环神经网络的方法。
- 循环神经网络(Recurrent Neural Network,RNN)
循环神经网络(Recurrent Neural Network,RNN) 是专门针对序列数据进行建模的一种神经网络,是一类具有短期记忆能力的神经网络。[1]在循环神经网络中,神经元不但可以接受其它神经元的信息,也可以接受自身的信息,形成具有环路的网络结构。和前馈神经网络相比,循环神经网络更加符合生物神经网络的结构。在传统的前馈神经网络模型中,输入层到隐藏层、隐藏层再到输出层,层与层之间的节点都是全连接的,而每一层内部的节点则是相互独立的。RNN和前馈神经网络最大的区别就在于,RNN隐藏层神经元结构中包含有向环,而这些有向环正是处理序列数据的关键结构。通过这些有向环结构,RNN隐藏层的输入不仅包含输入层的结果,而且还有上一时刻隐藏层的结果,因此RNN能够记录历史信息、允许信息的持久化。
如图,左边是RNN的整体模型结构,在时间轴上展开之后得到右边网络结构,其中是时刻的输入,是时刻的隐藏层状态。在基本的RNN神经元中,由上一时刻的隐藏状态和当前输入计算得到:,表示时刻的输出,是循环神经网络上共享的参数。通常,循环神经网络的参数学习可以通过随时间反向传播算法[2]来学习。随时间反向传播算法即按照时间的逆序将错误信息一步步地往前传递。当输入序列比较长时,会存在梯度爆炸和消失问题[3],也称为长期依赖问题。为了解决这个问题,人们对循环神经网络进行了很多的改进,其中最有效的改进方式引入门控机制。循环神经网络已经被广泛应用在语音识别、语言模型以及自然语言生成等任务上。[4]
- 长短期记忆网络(Long Short-Term Memory)
虽然循环神经网络在处理具有时序场景问题时的优势十分明显,但是由于其基本单元结构过于简单,因此也存在不少缺陷,其中的一个缺陷就是由梯度消失引起的长时依赖问题。RNN是一个在时间轴上传递的神经网络,它的时间长度可以看作是祌经网络的深度。对于多层前馈神经网络来说,梯度消失问题是随着网络深度的增加逐渐表现出来的;而对于RNN来说,梯度消失问题则是随着时间的横向推移逐渐出现。在t时刻,每次循环产生的梯度在时间轴上传播几层后就消失了,根本无法再记住相隔超一定距离的输入数据。我们所说的RNN能够允许信息的持久化,也只是在一定的时间范围之内的持久化。
为了弥补传统RNN的不足,Hochreiter和Schmidhuber提出了长短期记忆神经网络(Long Short-Term Memory Neural Network, LSTM)[5]目的是解决RNN在时间上的梯度消失问题。LSTM通过几个门控开关实现时间上的记忆功能,解决了梯度消失的问题。
LSTM同所有类型的RNN—样,都具有重复神经网络单元的链式结构。与基本RNN不同的是,LSTM的这个重复神经网络单元更为复杂,包含三个门限控制结构:输入门、遗忘门和输出门,用来保护和控制LSTM单元的状态。实验证明,LSTM相比于基本的RNN,在语音识别、手写识别、机器翻译、自然语言处理等领域有着更优秀的表现,但是在模型训练过程中,由于LSTM结构较为复杂,因此需要更多运算,训练速度较慢。[6]
现实操作中,由于LSTM训练过程较为复杂,因此在LSTM的基础上,出现了很多简化操作的变体,门限循环单元(Gated Recurrent Unit,GRU)就是其中常用的变体之一。GRU由Cho等人提出[7]。
在GRU单元中,LSTM中的遗忘门和输入门被合并成了一个新的控制门——更新门。虽然GRU的构造比LSTM要简单,但是二者在实际应用中差别并不大,甚至在一些较为简单的任务如基于会话的推荐任务上,GRU的效果要好于LSTM。[8]并且GRU比LSTM少一个控制门,这样在训练时减少了矩阵乘法的运算,在训练数据很大的情况下GRU能比LSTM节省很多训练时间。
- 编码器-解码器架构
编码器-解码器框架是一种深度学习领域的通用研宄模式,常被用来建模不定长度的序列,是一种应用于序列到序列(sequence-to-sequence)问题的模型。[9]序列到序列问题是根据一个输入序列X,如何通过模型生成目标输出序列Y的问题。近几年在机器翻译(Machine Translation)、文本抽取(Text extraction)和问答系统(Qamp;A System)等领域,已经有很多研究学者把这些问题当作序列到序列的问题来加以建模解决,并且取得了显著的成果。[10]在不同的任务中,我们只需要替换相应的输入和输出即可,例如在机器翻译任务中,输入序列是等待翻译的文本,输出序列是翻译后的文本;在问答系统中,输入序列是提出的问题,输出序列是回答问题的答案。编码器-解码器框架中,编码器是一种将输入序列转化成中间表示的网络,而解码器则往往是循环神经网络或者其各种变体,用来根据编码器形成的中间表示生成新的输出序列。
以上是文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。