二、attention 机制的用户序列建模

二、attention 机制的用户序列建模

2. Deep Interest Evolution Network
2.1 简介

在这篇文章发布之前的CTR预估或者推荐排序算法中,都将做用户的行为序列表征进行池化或者attention机制加权平均作为用户兴趣的表征,直接使用用户的行为序列信息作为用户兴趣,没有考虑用户的潜在兴趣的特征。此外,这种办法的用户特征表征,也没有考虑用户的兴趣是处于一个u 段发展的状态,而不是固定一成不变的。
这篇文章的作者,与其他的工作直接采用用户的行为序列作为兴趣表征不同,作者建立了interest extract layer来抽取每个时间步的用户兴趣表征。然后,作者通过明确建立interest envolving layer的方式来建模用户兴趣随时间/行为发展这一趋势。

2.2 模型架构

注意图中比如特殊的几个关键部分:

  • 用户兴趣提取层:Interest Extractor layer
  • 用户兴趣发展建模层: Interest Evolving Layer
  • 在兴趣提取层生效的辅助任务目标(Auxiliary Loss)
  • 以及Interest Evolving Layer的核心部件AuGru,即融合了注意力机制的Gru。
    在这里插入图片描述
2.2.1 用户兴趣提取层:Interest Extractor layer

   作者认为,确实也是,用户的行为序列(其实用书点击过item,搜过的词,或者其他的行为的embedding向量)包含了用户的兴趣,可以从中提取出用户的兴趣表征,以前的研究都是直接用这个行为序列来表征用户的兴趣,未免过于粗糙,简单来说就是表征能力不够。
因此,作者提出了Interest Extractor layer来提取用户的特征。
   本质上来讲,Interest Extractor layer就是一个GRU网络,作者认为自己选它的原因是它克服了rnn的梯度弥散,且比lstm快。
另外,如果仅仅使用这么一个GRU来提取兴趣,且反馈信号只来自于最后回传的梯度,显然不够:因为GRU学到的不过是用户行为序列的先后依赖,并不能非常有效的表达兴趣(我个人的理解,用GRU进行提取特征和attention并无甚区别,不对,还是有一点儿,不然transformer就不需要在搞个position embedding 了)。
   所以作者又搞了辅助loss来直接帮助用户兴趣提取层来更好建模用户兴趣。具体的方式是,用下一时间步的用户行为 B t + 1 B_{t+1} Bt+1来指导Gru中 h t h_t ht(有木有很像一个AR自回归的语言模型?),然后这个 B t + 1 B_{t+1} Bt+1有可能是用户真实的点击行为(正样本),也有可能是从 t + 1 t+1 t+1时刻给用户曝光而没有点击的负样本中选择。作者,认为这样可以更好让Interest Extractor layer学习到如何建模用户兴趣,我的理解是,该辅助任务的目标就是预测用户的可能点击(兴趣),那么它所依据的 h t h_t ht自然应当更应当是贴近用户兴趣。据此,该层便具备了从用户前面数个行为提取用户的能力。
L a u x = − 1 N ( ∑ i = 1 N ∑ t I ( t = 1 ) σ ( h t , e b i [ t + 1 ] ) + I ( t = 1 ) ( 1 − σ ( h t , e b i [ t + 1 ] ) ) ) L_aux = - \frac{1}{N}(\sum_{i=1}^{N}\sum_t I(t=1)\sigma(h_t,e_b^i[t+1])+I(t=1)(1 - \sigma(h_t,e_b^i[t+1]) )) Laux=N1(i=1NtI(t=1)σ(ht,ebi[t+1])+I(t=1)(1σ(ht,ebi[t+1])))
瞅瞅,其实就是看看下一个item会不会被预测对而已。

2.2.2 用户兴趣演进层:Interest Evolving Layer

  在上一层(Interest Extractor layer)里作者利用Gru和辅助loss在考虑用户序列行为的前提下提取用户每个时间步的兴趣表征,但是,作者认为直接用这个兴趣表征是不够,原因有2:

  • 第一,作者认为用户兴趣这种东西是随着时间变化(drift)的。举个例子,在我们滑购物app的时候,一会儿我们想看书籍,一会儿我们想看菜谱,一会儿我们想看衣服。因此有必要对这个用户兴趣的发展进行建模来获取具备更多历史相关信息的精确的用户当前时刻兴趣。
  • 第二, 在进行ctr预估或者item评分的时候,我们希望仅仅看相目标条目的兴趣信息。因此,虽然不同类型(衣物、食材)的兴趣有其自己发展trend,我们仍然需要某种机制来提取其中与目标item相关的机制。

  之后呢,作者就结合了注意力机制(可以看看DIN来看为什么)和GRU来建模用户兴趣的发展过程,为什么要用attetion而不是只用GRU(额,因为作者DIN中尝试了lstm建模,但没啥用么),我认为是因为希望仅仅发现与target条目相关的兴趣,并对它进行序列建模。
  为此,作者提出了attention与GRU结合的三种模式:

  • AIGRU(GRU with attention input)
    i t ‘ = h t I n t e r e s t E v o l v i n g L a y e r ∗ a t i_t^`=h_t^{Interest Evolving Layer} * a_t it=htInterestEvolvingLayerat
    a t a_t at是注意力权重。作者通过对进入gru(interest evolving network的)的输入执行注意力机制来使得模型不要关注不相关的东西。但效果不是很好,这里很关键的问题在于,对于一个不相关的interest的表征,作者希望它不要改变兴趣的演进建模,但是AIGRU的方式,最多只能作到给不相关的兴趣0输入,这仍然会改变gru的内部状态,0输入也是输入么。
  • AGRU (attention-based GRU)
    QA领域在2016年就提出了AGRU,具体是这样子的:
    在GRU里有更新门一说,它控制了GRU当前时间步输出的信息里,前面的信息和当前信息的比例。具体GRU公式如下:
    更新门计算: u t = σ ( W u i t + U u h t + b u ) u_t = \sigma(W^ui_t +U^uh_t+b^u) ut=σ(Wuit+Uuht+bu)
    重置门计算: r t = σ ( W r i t + U r h t + b r ) r_t = \sigma(W^ri_t +U^rh_t+b^r) rt=σ(Writ+Urht+br)
    历史信息计算: h ~ = t a n h ( W h i t + r t ⋅ h t + b r ) \widetilde{h} = tanh(W^hi_t +r_t · h_t+b^r) h =tanh(Whit+rtht+br)
    输出计算: h t = ( 1 − u t ) h t − 1 + u t h ~ h_t = (1-u_t)h_{t-1} + u_t\widetilde{h} ht=(1ut)ht1+uth
    在AGRU 中,直接使用 a t a_t at代替更新门的计算 u t u_t ut
    h t = ( 1 − a t ) h t − 1 + a t h ~ h_t = (1-a_t)h_{t-1} + a_t\widetilde{h} ht=(1at)ht1+ath
    显然,在其他地方work的套路就是比刚想出来的奇技淫巧(AIGRU)要好一些。
  • AUGRU(GRU with attentional update gate),这个玩意儿就是在AGRU 改过来的,就是说AGRU虽然克服AIGRU的问题,同时也完成了注意不同兴趣的目标,但是直接抛弃了原始更新门使得网络出现了一点点问题,因为 a t a_t at这个东西是表征不同兴趣(说人话就是序列不同元素)的权重,那用这么个标量就放弃了同一个元素的不同的特征的区别这有问题,所以,应该把原先的更新门融合进来,至于方法门,标量和向量还有啥好说的,直接乘啊:
    a t ‘ = u t ∗ a t a_t^` = u_t * a_t at=utat
    h t = ( 1 − a t ‘ ) h t − 1 + a t ‘ h ~ h_t = (1-a_t^`)h_{t-1} + a_t^`\widetilde{h} ht=(1at)ht1+ath

好了,就这些了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LSTM时间序列预测是一种广泛应用于时间序列预测的深度学习模型。与传统的传统的 ARIMA 等模型相比,LSTM 模型具有较强的非线性建模能力和适用于不同级别的时间序列的特性。因此,实现一个好的 LSTM 时间序列预测模型非常重要,它不仅可以提高预测准确度,而且能够在许多应用领域得到广泛应用。 添加 attention 机制的 LSTM 时间序列预测模型可以有效地提高模型预测能力。该模型不仅可以识别和加强时间序列数据的重点特征,还可以对所有特征进行加权处理以提高预测性能。在 matlab 中,可以通过增加输入层和中间层的注意力层来实现这种基于 attention 的 LSTM 模型。其结构如下图所示: ![image](https://img-blog.csdn.net/20180607181422466?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpdGh1bWt5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 其中,绿色表示输入数据,黄色表示 LSTM 层,蓝色表示全连接层,橙红色表示注意力机制。 对于这种 attention LSTM 模型,实现时需要注重以下几个点: 1. 输入数据的预处理:时间序列预测模型一般需要进行归一化处理,而 attention LSTM 模型还需要对重要特征进行筛选,这些可通过分析数据独立性和模型准确性来衡量。 2. 注意力机制的设计:注意力权重的计算方式可以采用标量乘积方式或内积方式,其具体计算方式应根据实际情况进行调整,以最大限度地提高模型效率。 3. 中间层的设计:attention LSTM 模型中的注意力机制需要在中间层中嵌入,这意味着需要在模型构建时注重控制模型的复杂性和参数数量,以避免过拟合和过多计算造成的效率下降。 总之,添加 attention 机制的 LSTM 时间序列预测模型可以有效地提高模型的准确性和预测效率。在 matlab 中实现这种模型,需要注重对输入数据的预处理和注意力机制的设计,以及中间层的优化控制。通过这些措施的结合,可以构建出高效、精确的深度学习模型,应用于时间序列预测的众多领域中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值