NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

CNN&LSTM 如何实现专属定制

  • 2020-03-22
  • 本文字数:3543 字

    阅读完需:约 12 分钟

CNN&LSTM如何实现专属定制

研究背景

深度学习模型凭借其强大的表达能力和灵活的网络结构在诸多领域取得了重大突破,如何将深度学习应用到业务场景中,实现用户专属定制,达到精准营销的目的,量化团队进行了一系列学习和探索。


基于两方面业务动机尝试构建某一品类购买用户预测模型:一方面,了解该类用品购买人群特征,挖掘潜在用户可能购买的商品,定向营销,实现用户专属定制,提高用户点击率和购买量,同时挖掘用户潜在喜好商品,增强用户体验。另一方面,预测将购买该类用品人群,精准选取营销目标。


模型将通过 CNN (Convolutional Neural Networks) 提取特征,并利用 LSTM(Long Short-term Memory )构建模型,将 CNN 与 LSTM 相结合,从而达到预期目的。本文将主要对这两种深度学习模型展开详细介绍。

CNN(Convolutional Neural Networks)提取特征

卷积神经网络(ConvolutionalNeural Networks, CNN)的概念最早出自 19 世纪 60 年代科学家通过猫的视觉皮层细胞中每一个视觉神经元只会处理一小块区域的视觉图像,即感受野(Receptive Field),20 世纪 80 年代,日本科学家提出神经认知机(Neocognitron)的概念,算是卷积网络的原型。


下面我们通过一个图和简单的例子,来理解 CNN 的结构:


如图所示:假设输入尺寸为 1000 像素*1000 像素的图片,即 100 万个像素点,输入数据的维度为 100 万,如果连接一个相同大小(包含 100 万个隐含节点)的隐含层,那么连接将是 100 万*100 万=一万亿个连接,即仅一个 Fully Connected Layer 就有一万亿连接权重需要训练,为了降低计算复杂度,以及避免过多连接带来的过拟合,我们采用局部连接(Locally Connect)的方式,如图中上半部分所示,设局部感受野(ReceptiveField)大小为 10*10,每个隐含节点只与 10*10 个像素点,那么连接则为 10*10*100 万=1 亿个,缩小 10000 倍。



但是还不够,这时卷积层便开始发挥作用。局部连接每一个隐含节点都拥有 100 个参数,而通过卷积操作,每个隐含层的参数都完全一样,那么参数则从 1 亿降为 100,极大的缩小参数量,其中,每一个卷积核滤波得到的图像就是一类特征的映射,即如图中的一个 Feature Map。不用担心有多少隐含节点或图片太大,参数量只与卷积核大小有关,即权值共享。CNN 由于卷积的权值共享结构,大幅减少神经网络的参数量,防止过拟合的同时又降低了神经网络模型的复杂度。


如图中所示:一个卷积神经网络有若干卷积层、Pooling 层、全连接层组成,可由 L 个卷积层叠加,然后(可选)叠加一个 Pooling 层,重复这个结构 M 次,最后叠加 N 个全连接层,我们详细看一下 CNN 的每一层结构:


  • 卷积层(Convolutional layer),每层卷积层由若干卷积单元组成,每个卷积单元的参数通过反向传播(Backpropagation)算法优化得到。卷积运算的目的是提取输入的不同特征,多层的网络能从低级特征中迭代提取复杂的特征。

  • 线性整流层(Rectified Linear Units layer, ReLU layer),这一层神经的活性化函数(Activationfunction)使用线性整流(Rectified Linear Units, ReLU)。

  • 池化层(Pooling layer),通常在卷积层之后会得到维度很大的特征,池化层进行特征选择和信息过滤。

  • 全连接层(Fully-Connected layer), 降采样(Down-Sampling)把所有局部特征结合变成全局特征,用来计算最后每一类的得分。


总之,CNN 的要点就是局部连接(Local Connection)、权值共享(Weight Sharing)和池化层(Pooling)中的降采样(Down-Sampling)。

LSTM(Long Short-termMemory )简介

长短期记忆网络 (Long Short-term Memory, LSTM)由 Hochreiter&Schmidhuber (1997)提出,论文见《Long Short-term memory》,并被 AlexGraves 等进行了改良和推广。基于传统 RNN(RecurrentNeural Networks)网络改进的变种网络,能很好地解决梯度爆炸(exploding gradient)和梯度消失(vanishing gradient)问题,让循环网络具备更强更好的记忆性能。


➤ 整体结构(Structure)


如图所示:Z 为输入向量,为控制输入门、输出门和遗忘门的值,f 为激活函数。当我们输入 z 时,通过激活函数得到 g(z),与输入门信息相乘得到,即输入数据中我们想要保留的信息。对于以前的记忆信息我们想要遗忘多少,由遗忘门所决定,通过遗忘门后得到的信息我们由表示,因此,信息通过遗忘门和输入门后得到的更新信息即。最后,经过输出门,输出我们最终想要输出的信息



注:来源于李弘毅机器学习讲义


➤ 核心过程(Core Process)


LSTM 的核心思想是细胞状态,由 z 至 a 间有一条贯穿的箭头直线,代表了 LSTM 的状态 state,它会贯穿所有串联在一起的 LSTM 单元,从第一个 LSTM 单元一直流向最后一个 LSTM 单元,其中只有少量的线性干预和改变。上面了解了 LSTM 的整体结构后,我们分别来理解 LSTM 的核心过程:


  • 遗忘门(forget gate)


LSTM 的第一步就是决定什么信息应该被神经元遗忘。这是一个被称为“遗忘门层”的 Sigmod 层组成的。它输入,然后在,然后在的每个神经元状态输出 0~1 之间的数字。“1”表示让信息全部通过,“0”表示不允许信息传递。



其中表示上一个单元状态,表示上一个单元输出,表示单元输入,为激活函数。


  • 输入门(input gate)


下一步就是决定我们要在神经元细胞中保存什么信息,这包括两个部分。首先,一个被称为“遗忘门层”的 Sigmod 层决定我们要更新的数值。然后,一个 tanh 层生成一个新的候选数值,它会被增加到神经元状态中。



然后,我们给旧的状态乘以一个 ft,遗忘掉我们之前决定要遗忘的信息,然后我们增加。这是新的候选值,是由我们想多大程度上更新每个状态的值来度量的。



  • 输出门(outputgate)


最后,我们要决定要输出什么。这个输出是建立在神经元状态的基础上的,但是有一个滤波器。首先,我们使用 Sigmod 层决定哪一部分的神经元状态需要被输出;然后让神经元状态经过 tanh(让输出值变为-1~1 之间)层并且乘上 Sigmod 门限的输出,只输出想要输出的。



以上即 LSTM 的基本思想,接下来将具体介绍模型实现,以及如何将 CNN (Convolutional Neural Networks)与 LSTM (Long Short-term Memory)相结合运用到实际业务场景中。

模型实现

LSTM (LongShort-term Memory)适合于处理和预测时间序列(Time Series)中间隔和延迟相对较长的重要事件。使用 LSTM 实现购买用户预测模型。由于没有客户真实状态标签,我们利用客户的购买数据来推断她是该品类需求用户的可能性。通过与该品类强相关的三级商品分类信息,将用户第一次购买这些商品假设为特征日。


➤ 正负样本 (Sample)


随机选取一年时间的观察窗口:


  • 正样本(Positive samples):选取观察期内有过购买该产品的人群

  • 负样本(Negative samples):选取观察期内没有任何需求迹象的用户


训练集、验证集与测试集正负样本比例均设为 1:1


➤ 特征提取 (Feature)


模型利用 CNN 提取特征,CNN 不需要将特征提取和分类训练两个过程分开,在训练时就自动提取了最有效的特征,解决了 SIFT 之类的算法特征时的局限性。尝试单独使用 LSTM 网络和利用 CNN 提取特征,将 CNN 与 LSTM 相结合的算法,由于 CNN 权值共享的特性,能降低模型复杂度,降低计算量,并通过实验证明 LSTM+CNN 比单独使用 LSTM 学习速率更快。



➤ 数据扩充 (Data Augmentation)


位移(Shifting): 删除最近 n 次用户的购买行为



位移效果:选取 20K 用户集进行验证,模型表现为:



(同时利用 XGBoost 得到 F1 score: 0.87)


➤ 模型效果(Model effect)


测试集数据表现(与验证集结果相似): 准确率(Precision)和召回率(Recall)均在 0.8 以上,达到理想的模型效果,预测之后的半个月内约 24%的用户完成了大于 10 次超过 3 类的某类产品的购买。将该模型落地到业务场景后,对业务指标(如:PV、UV、转化率等)有了明显的提升。

总结

上述预测模型利用 CNN 提取特征并结合 LSTM 处理和预测时间序列中间隔和延迟相对较长的重要事件的模型等,已渗透应用在各个业务场景,单上述案例模型可实现的业务场景就有:达人标签定义,商品精准营销,推荐达人信用卡等。


深度学习(Deep Learning)是近年来机器学习和人工智能领域中关注度最高的技术,笔者所在量化团队在深度学习方面一直在不断尝试和努力探索,并不断深化对业务场景的理解,落地到各个业务场景中。


本次主要介绍了 CNN(Convolutional Neural Networks)和 LSTM(Long Short-term Memory)模型的结构和应用。未来量化团队还将不断探索和创新,将深度学习模型深入应用到更多业务场景中,实现更加精准的“专属定制”。


2020-03-22 21:04610

评论

发布
暂无评论
发现更多内容

Week 8 作业01

Croesus

浅谈软件研发管理体系建设

大黄蜂

面试重灾区——Synchronized深度解析

执墨

并发编程 synchronized 内存布局 CAS 锁升级

架构师训练营 2 期 Week04 总结

漫画:一分钟快速了解VPN

OpenVPN

架构师训练营第四周作业

邢永春

第四周总结

jizhi7

架构师 01 期,第八周课后作业

子文

架构师训练营 - 第 8 周课后作业(1 期)

Pudding

week4-一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。

未来已来

第8周作业

paul

极客大学 - 架构师训练营 第九周

9527

第四周作业总结

hunk

极客大学架构师训练营

第八周

等燕归

架构师训练营第一期 - 第八周课后作业

卖猪肉的大叔

极客大学架构师训练营

架构师训练营第一期 - 第八周学习总结

卖猪肉的大叔

极客大学架构师训练营

互联网应用架构目标及技术方案

性能优化(文件、数据结构、算法、网络IO)

ABS

架构师训练营第八周课程笔记及心得

Airs

【架构师训练营 1 期】第八周作业

诺乐

Week4 系统架构

贺志鹏

极客大学架构师训练营

架构训练营 - 第8周课后作业 - 学习总结

Pudding

【架构师训练营 1 期】第八周学习总结

诺乐

不可思议,竟然还有人不会查看GC垃圾回收日志?

田维常

垃圾回收 GC

第八周总结

架构师训练营第四周总结

邢永春

第四周作业

jizhi7

极客大学架构师训练营

week4-作业二:根据当周学习情况,完成一篇学习总结

未来已来

找出两个链表中合并的元素

虽然世界给我们变化,但让我们的人生更向幸福靠近一点点,而入门票就是自学这回事

叶小鍵

第八周作业

CNN&LSTM如何实现专属定制_文化 & 方法_京东数字科技产业AI中心_InfoQ精选文章