写点什么

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

评论

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

jvm(三)类加载机制、javac编译

想要飞的猪

JVM类加载

浅谈中小企业进军新媒体行业为何屡次遭受挫败

石头IT视角

2022年中国电商平台市场洞察

易观分析

电商 报告

前端食堂技术周刊第 60 期:TypeScript 4.9、Ant Design 5.0、用 vanilla-extract 编写高性能的 CSS、Node.js 安全最佳实践

童欧巴

跨平台桌面应用开发都有哪些主流框架

FinFish

小程序 跨端框架 桌面端开发 跨端应用开发

Alluxio 2.9新版发布 | 重塑架构,支持大规模多租户环境

Alluxio

分布式 新闻 Alluxio 大数据 开源 数据编排

WSUS 服务

我叫于豆豆吖.

11月月更

解决数据分析落地难的几点经验

穿过生命散发芬芳

数据分析 11月月更

华为云企业交换机ESW,让数据业务无缝迁移上云

爱科技的水月

MACH架构的质量工程指南

俞凡

架构 微服务 云原生

Java集合与数据类型

kingcall

Java JAVA集合 Java集合框架 java数据类型

【C语言】register 关键字

謓泽

11月月更

第一章三层交换应用

初学者

网络 11月月更

真正的按需计费-函数工作流 FunctionGraph实战,5分钟搭建图片压缩应用

秃头也爱科技

2022-11-21:第N高的薪水。表结构和数据的sql语句如下。请问sql语句如何写? DROP TABLE IF EXISTS employee; CREATE TABLE employee (

福大大架构师每日一题

数据库 sql 福大大

SpringBoot之用拦截器避免重复请求

okokabcd

Spring Boot

【愚公系列】2022年11月 微信小程序-应用生命周期和全局变量

愚公搬代码

11月月更

第二章STP应用配置

初学者

网络 11月月更

redis 集群实现方案与原理

想要飞的猪

redis哨兵集群 redid集群cluster

部署RDS 服务

我叫于豆豆吖.

11月月更

算法题学习---删除有序链表中重复的元素-II

桑榆

算法题 11月月更

华为云Astro的前世今生:用7年时间革新低代码开发观念

科技怪授

DHCP 服务

我叫于豆豆吖.

11月月更

鸿蒙系统ARKUI框架对于分布式计算和请求API的实战研究

恒山其若陋兮

前端 11月月更

Linux 系统启动过程

芯动大师

Linux Linux驱动 11月月更

【Ajax】全面详细了解git的基础操作【万字教学+面试常客】

坚毅的小解同志

git 11月月更

低代码会使初级码农失业吗

秃头也爱科技

分布式监控平台 WGCLOUD v3.4.2 节流 30%,更轻更快

王逅逅

Linux 信创 zabbix Prometheus #运维 性能监测

API安全设计5A原则

阿泽🧸

11月月更 API安全

信用卡评测系列——阳光惠生活APP深化服务客户品牌理念,焕新升级7.0版

易观分析

金融 银行 信用卡

数据仓库实战教程

kingcall

数据仓库 数据湖 数据安全 数仓 数仓建模

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