本文转载自公众号:浙大KG。

作者:汪寒,浙江大学硕士,主要研究方向为知识图谱和自然语言处理。


应用场景

在电商实际应用中,每个商品都会被挂载到若干个场景,以图结构中的节点形式存在。商品由结构化信息表示,以键值对(Property:Value)形式(后称PV)存在。场景(LifeStyle)的价值则在于打通商品实体之间的联通,提供跨域的实体搭配,因此新的商品必须要通过规则库中的规则挂载到特定的场景才能进入电商的运营体系。商品场景的样例如下图所示。

图1 商品场景样例

规则的作用则包括挂载新的商品以及为已有的商品新增挂载场景,目前规则库中的规则主要由人工构造,通过审核之后才能进入规则库,商品场景挂载的规则特点是Body部分只由PV组成,Head部分只包含单个场景。规则的形式如下:

人工构造规则的方法效率低,人工成本高,因此商品场景挂载规则学习任务就是利用算法从现有的商品场景数据中生成规则,提高规则生成的效率,降低人工成本。现有规则库中的规则样例如下表所示。

Motivation

目前业界常用的规则学习baseline是关联规则挖掘,用于发现数据集中项与项之间的关系,通过挖掘数据集中存在的频繁项集来生成规则。这种方法适合数据项之间没有差异的数据集,比如著名的购物篮分析应用中,不同的商品都可以看作是同种item。而在实际应用中常常需要挖掘不同类型数据项之间的规则,数据集中的元素项之间存在差异,不能简单地将所有数据项都看作同种item,分析商品场景挂载数据可以看出,商品的 PV 对与场景之间存在差异,若将其视为同种数据项,用通用的规则挖掘算法学习,就舍弃了商品 PV 对与场景之间的挂载关系信息以及差异。

且关联规则挖掘是通用的规则生成算法,在频繁项挖掘阶段需要耗费大量时间挖掘无关的频繁项,无法针对特定的规则进行优化,所以关联规则挖掘算法无论是效率还是产出结果的指标都偏低。因此,针对商品场景挂载数据生成规则,需要用到task-specific 算法,算法需要考虑到商品 PV 对与场景之间的差异以及挂载关系信息,且生成的规则应满足 Body 部分为 PV 对,Head 部分为单个场景的形式。

算法描述

首先分析数据,商品由20-50个PV对组成,每个商品会挂载到若干个场景,而输出的规则的body部分为1-5个PV对,head部分为单个场景。因此可以认为,对一个商品的PV对赋予不同的权重就可以让这个商品挂载到不同的场景,输出那些权重超过阈值的PV对作为body部分就可以得到一条规则,从而就可以得到一个算法,就是用一个神经网络来对PV对赋予权重,在训练完毕后将高权重的PV输出作为规则的body部分。

因此,首先要解决的问题是如何设计一个神经网络模型来为PV对赋予权重,PV对的权重是离散值0或1,0表示舍弃当前PV对,1表示选择当前PV对作为body部分。把商品包含的PV对看作序列,赋予权重的过程就是一个经典的序列决策过程,而这个序列决策过程是没有标注数据的,所以无法用监督学习训练,但整个序列是有标注的,即权重赋予后的PV对序列能否挂载到当前场景。因此,可以把整个问题建模成一个强化学习问题,训练一个智能体来完成权重赋予的过程。

然后,要解决的第二个问题是如何为这个智能体返回reward,即如何判断智能体输出的PV对子序列可以让商品挂载到特定场景,且这个子序列的长度不超过5。判断挂载是否正确可以看作是一个分类问题,预训练一个FastText网络作为分类器,输入为PV对序列,输出为PV对序列所对应的类(即场景),来判断当前PV子序列能否分类到对应场景。同时,在reward function中加入子序列长度项,让智能体尽可能选择较短的子序列。

模型

模型包括两个部分,一个用于对PV输出action的智能体Agent和一个用于返回reward的FastText模型,结构图如图2所示。Agent由三个模块组成:Input Module,Memory Module,Action Module。Input Module包括Property embedding,Value embedding以及LifeStyle Embedding,Property embedding和Value embedding拼接起来当作当前PV的embedding,作为Memory Module的输入;Memory Module则由一个双向LSTM组成,利用LSTM网络的记忆功能,让每个时间步输出的隐状态都能包含上下文的信息;Action Module则包含一个单向LSTM和一个全连接层,网络输入包含Memory Module在当前时间步的输出,Agent在上一次输出的action以及当前商品所对应的LifeStyle embedding。

在Agent对所有PV做完决策之后,将action输出为1的PV作为FastText的输入,FastText会输出当前输入的分类结果(也就是场景挂载),若分类正确则返回一个reward给Agent更新参数。

图2 模型结构图

模型训练

首先需要预训练一个FastText模型来为Agent返回reward。所以要先把商品挂载场景构造成一个分类任务,而在前面已经提到,一个商品可能会挂载到多个场景,对应到文本分类任务,就是一个样本会有多个标签,所以这里就把挂载数据构造成了一个多标签分类任务,用的目标函数也是文本分类任务里常使用的交叉熵损失函数,具体来说,单个样本的损失函数为:

这里n表示标签的个数,y_i 表示样本是否属于当前类,p_i表示当前label对应的概率值,由sigmoid计算后得到。

而智能体的参数更新方式是policy gradient,在监督学习中,本文通常用交叉熵作为简化版的KL散度来衡量两个分布的差异,单个样本的交叉熵损失函数如下:

这里t表示样本的长度,y_i表示当前label,p_i表示当前label对应的概率值,由softmax计算后得到。

而强化学习则是没有label的,用当前action所得到的reward来代替,单个样本的损失函数如下

这里a_i表示当前时间步Agent输出的action,这个时候损失函数的作用就不是衡量两个分布的差异,而是最大化得到正reward的动作的概率。

实验

实验所用商品挂载数据集来自某电商网站的一个类目,在实验开始前先对实验数据做了一些必要的预处理实验数据的预处理包括:

1. 对标题进行分词,去掉停用词,无关的标点符号以及单个字。

2. 对包含多项的属性值进行切分,切分成k个部分就形成k个PV。

3. 去掉了一些没有信息量的属性项及其对应的属性值。

4. 增加了属性项:拥有属性,对应属性值为该商品拥有的属性项。

预处理结束后的数据集信息如表1所示

表1 数据集统计信息

在规则输出阶段,智能体不再是从动作空间中按概率采样一个动作,而是直接选择概率最大的动作,得到所有预测正确的PV序列后,计算每条raw规则的HC和Conf,将满足要求的作为备选规则。最后生成的备选规则的body平均长度仅为2.12,这十分符合规则的要求,模型输出的规则样例如表2所示

表2 输出规则样例

从样例中可以看出,智能体确实可以找到一到两个与某场景关联度极高的PV,这证明了reward function中对输出PV序列长度的惩罚的有效性,且规则从直观上看就很具有可行性,说明本模型确实找到了商品PV与场景之间存在的模式,并以规则的形式输出。最终模型生成了845条备选规则。


OpenKG

开放知识图谱(简称 OpenKG)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

点击阅读原文,进入 OpenKG 博客。

应用实践 | 电商应用——一种基于强化学习的特定规则学习模型相关推荐

  1. 基于强化学习的自动化剪枝模型

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨AI科技评论 编辑丨极市平台 导读 GitHub上最新开源的一 ...

  2. 人工智能AI实战100讲(五)-基于强化学习的自动化剪枝模型

    1介绍 文中涉及代码请参见: 人工智能AI-图像处理cv-基于强化学习的自动化裁剪 目前的强化学习工作很多集中在利用外部环境的反馈训练agent,忽略了模型本身就是一种能够获得反馈的环境.本项目的核心 ...

  3. 【实践】基于强化学习的 Contextual Bandits 算法在推荐场景中的应用

    文章作者:杨梦月.张露露 内容来源:滴滴科技合作 出品平台:DataFunTalk 导读:本文是对滴滴 AI Labs 和中科院大学联合提出的 WWW 2020 Research Track 的 Or ...

  4. [阿里]基于多任务学习的CVR预估模型ESM2

    今天介绍的文章名称是<Conversion Rate Prediction via Post-Click Behaviour Modeling> 论文下载地址为:https://arxiv ...

  5. GitHub|基于强化学习自动化剪枝

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:来源丨AI科技评论 编辑丨极市平台 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打 ...

  6. dncnn图像去噪_基于强化学习的图像去噪方法与流程

    本发明属于图像处理技术领域,涉及一种基于机器学习技术,采用强化学习去除图像噪声的方法. 背景技术: 随着计算机技术的发展,人们对于图像质量的要求越来越高.但是,由于环境或拍摄设备等因素,能够获得图像通 ...

  7. 【论文笔记】基于强化学习的机器人手臂仿人运动规划方法

    文章目录 摘要 关键词 0 引言 学者研究 阶段一:采集运动数据,分析运动过程特征 阶段二:设计仿人变量.建立仿人标准和约束 阶段三:用智能算法提升仿人运动机器人性能 本文工作 1 问题描述及方法架构 ...

  8. 基于强化学习的服务链映射算法

    2018年1月   <通信学报>    魏亮,黄韬,张娇,王泽南,刘江,刘韵洁 摘要 提出基于人工智能技术的多智能体服务链资源调度架构,设计一种基于强化学习的服务链映射算法.通过Q-lea ...

  9. 【论文笔记】基于强化学习的连续型机械臂自适应跟踪控制

    文章目录 摘要 关键词 0 引言 1 空间连续型机器人动力学模型 1.1 场景假设 (1) 环境假设 (2) 模型假设 1.2 公式分析 2 空间连续型机器人滑模控制器 3 基于强化学习的滑模控制器 ...

最新文章

  1. 吊打Magic Leap,微软HoloLens 2不只为炫技
  2. 无法加载具有重复项目项的项目: pathstroke.cpp 作为 ClCompile 且作为 None 项类型包括在其中。
  3. XML Schema ---complexType-----复合元素
  4. python中的集合set
  5. Android指纹识别
  6. 经验之谈—让你看明确block
  7. LINUX 版本信息查看(全)
  8. ansys电力变压器模型_最佳变压器模型的超参数优化
  9. Networkx参考手册
  10. CCS+JS绘制星型拓扑图(关系图)
  11. java使用jacob给word添加水印
  12. 社区信息综合管理平台
  13. 苹果手机2019年什么时候出新款_[创立24周年]焕新,不换我初心 因强大而简单.智者,驭时而进 - 手机数码电玩维修...
  14. Linux下rar解压工具的安装使用
  15. 一名普通22届本科毕业生|前端程序员|22年年终总结
  16. 微型计算机系统的发展历史,计算机的系统发展历史
  17. JS中的深拷贝与浅拷贝
  18. [TOG2021](DECA)Learning an Animatable Detailed 3D Face Model from In-The-Wild Images
  19. 安卓禁用硬件加速_Android硬件加速详解
  20. swapidc不能连接到主机_SWAPIDC系统搭建IDC销售平台教程

热门文章

  1. 深入理解Presto
  2. C语言 程序代码编写规范
  3. linux 信号_[入门]谈一谈Linux中的信号
  4. 手机调试python的软件_Appium+Python(ios真机移动端App H5混合自动化实战测试)
  5. 苹果忘记开机密码_苹果电脑忘记开机密码快速恢复的方法!
  6. 数据结构链表之双向链表:Python3 实现双向链表——2
  7. 总谐波失真计算公式_新能源汽车技术|车用轮毂电机转矩谐波协同控制策略
  8. python 16bit转8bit的工具_利用python读取YUV文件 转RGB 8bit/10bit通用
  9. LeetCode 2109. 向字符串添加空格
  10. LeetCode 1552. 两球之间的磁力(极小极大化 二分查找)