上一篇文章介绍了基本的基于注意力机制方法对序列特征的处理,这篇主要介绍一下基本的基于卷积神经网络方法对序列特征的处理,也就是TextCNN方法。序列特征的介绍,背景以及应用可以参考上一篇的详细介绍,这里简单回顾一下定义,用户在使用APP或网站的时候,用户会产生一些针对物品的行为,比如点击感兴趣的物品,收藏或购买物品等,而这些行为往往代表着用户对这些物品是感兴趣的,而将这些交互过的物品放在时间轴来看,就形成了用户感兴趣的物品序列,我们要处理的数据对象类似如图 1 所示具有时序关系的序列特征,这里拿用户感兴趣的物品序列为例作为处理对象。
我们都知道用户的历史行为中可能存在着一些局部的连续行为,比如最近新型冠状病毒疫情严重,可能用户在过去几天内连续买了口罩和酒精这种消毒和防护用品,那么在推荐中可以根据这种局部信息来推荐一些跟防护和消毒相关的商品。而浅层的卷积神经网络由于其卷积感受野比较小,善于捕获局部信息,因此可以利用浅层卷积神经网络来对序列特征中的局部行为模式进行建模。鉴于针对句子序列建模的卷积神经网络TextCNN也是针对embedding matrix做处理,因此选用TextCNN来对用户感兴趣的物品序列进行处理。
如图 2 所示为TextCNN对句子序列建模并进行分类的示意图:
我们主要借鉴的是上面介绍的TextCNN提取特征的方法,也就是上面介绍的如何把embedding matrix变为最终的6维特征向量的方法。如图 3 所示:
一般在把TextCNN应用在序列特征的处理上时一维卷积的kernel_sizes设置为2或3,或者同时都用,每个kernel_sizes的卷积核个数一般都为1。一维卷积核大小分别设置为2和3时可以提取不同范围大小的局部信息,保证了特征的多样性。
除此之外,为了弥补有关全局信息提取的不足之处,还可以结合max/mean/sum pooling提取全局特征的方法,使得提取的特征既有全局信息又有局部信息[2],如图 4 所示,其中全局pooling和textCNN共享序列特征的embedding matrix。
卷积神经网络因其滑动卷积的计算方式对局部特征的提取有天然的优势,因此成为提取局部信息的首选建模方法。除此之外,还可以结合全局pooling的方法提取全局特征,弥补对全局特征提取的不足,提高特征的多样性。与此同时,之前介绍过多值类别特征的处理方法,同样可以采用textCNN进行局部特征的提取。
[1] Convolutional Neural Networks for Sentence Classification
[2] Convolutional Sequence Embedding Recommendation Model
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。