写点什么

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:04797

评论

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

【字体反爬】猫X眼YingShi,我们又来欺负你了,用到了 OCR 识别技术

梦想橡皮擦

Python 爬虫 7月月更

洞见科技纪凯:隐私计算助力「全链路」金融客户经营

洞见科技

隐私计算

openGauss内核分析:查询重写

华为云开发者联盟

数据库 后端 查询 SQL语言 openGauss内核

大咖说·图书分享 | HaaS 物联网设备云端一体开发框架

大咖说

阿里巴巴 物联网 大咖 HaaS

如何学习好web前端开发技术知识

小谷哥

国产操作系统生态建设,小程序技术来帮忙

Speedoooo

小程序 国产操作系统 小程序容器 桌面应用

7月《中国数据库行业分析报告》发布!居安思危,安全先行

墨天轮

数据库 腾讯云 阿里云 国产数据库 数据库安全

架构实战营模块七作业

Geek_Q

零基础如何学习大数据开发知识

小谷哥

LP流动性质押挖矿系统开发详细程序

开发微hkkf5566

大数据开发技术入门学习方法有哪些

小谷哥

深圳web前端技术学习费用是多少?尚硅谷前端培训

小谷哥

ModuleNotFoundError_No_module_named通俗的解释和方法

和牛

测试

李宏毅《机器学习》丨4. Deep Learning(深度学习)

AXYZdong

机器学习 7月月更

瓜分30万奖金!DeepRec CTR模型性能优化天池挑战赛来啦

阿里云大数据AI技术

深度学习

6W+字记录实验全过程 | 探索Alluxio经济化数据存储策略

Alluxio

数据湖 数据膨胀 降本增效 Alluxio 大数据 开源

CSDN Meetup 回顾 丨从数据湖到指标中台,提升数据分析 ROI

Kyligence

数据分析 指标中台

直播预告 | 7月22日《开源安全治理模型和工具》线上研讨会

安势信息

开源安全 SCA工具 开源软件供应链 SBOM SLSA

尚硅谷SSM新版视频教程发布

小谷哥

业务出海,灵感乍现前要先「把手弄脏」

融云 RongCloud

百度工程师眼中的云原生可观测性追踪技术

百度Geek说

Java 云原生

21条最佳实践,全面保障 GitHub 使用安全

SEAL安全

GitHub 安全

纯css实现:如何做个完美的平行四边形

南极一块修炼千年的大冰块

7月月更

不懂点儿统计学,《星球大战》白看了

图灵教育

统计学 贝叶斯定理

重磅预告!易观分析联合微软、中央财经大学,共话数字经济

易观分析

数据驱动

NFT链游戏系统开发元宇宙GameFi搭建

薇電13242772558

dapp NFT 元宇宙

华为云:一切皆服务,共建全场景智慧金融

Geek_2d6073

TMECH发表优必选运控技术最新进展:实现人形机器人高鲁棒性行走

优必选科技

单元测试,写起来到底有多痛?你会了吗

C++后台开发

网络编程 单元测试 后端开发 Linux服务器开发 C++开发

视频聊天源码——一对一直播系统源码

开源直播系统源码

软件开发 直播系统源码 开源源码

如何用度量数据驱动代码评审的改善

思码逸研发效能

数据分析 研发效能 科技 效能度量

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