字段语义分析篇 - imgcook 3.0系列

avatar
阿里巴巴 前端委员会智能化小组 @阿里巴巴

文/ 阿里淘系 F(x) Team - 民超

背景介绍

UI 元素语义化一直是困扰 D2C 以及 AI 界的难题,而语义化是人工智能在代码生成产品(比如 D2C )中的关键环节,对人性化设计起到至关重要效果。目前,国际上常见的语义化技术大多是从纯字段本身从发,如 TxtCNN、 Attention、Bert 等,这些方法固然效果很好,但应用于 D2C 产品还是有一定的局限性,这是因为 D2C 愿景是成为一个端到端的系统,单从纯字段出发很难对其进行语义化,比如 “¥200” 这个字段是很难绑定合适的语义,有可能是原价、活动价等意思,即便使用现有规则算法的穷举法也有一定的局限性。因此 D2C 要想解决界面元素语义化任务至少需要解决两个问题:1. 能够生成符合当前界面的元素语义;2. 降低使用者的约束,不需要使用者额外输入辅助信息。

近些年,基于博弈论思想的强化学习在很多领域表现突出,如 AlphaGo、机器人、自动驾驶、游戏等,优秀的表现吸引着众多学者的研究。在本文中,针对界面元素语义化问题,引入了深度强化学习(DRL,Deep Reinforcement Learning),提出一种基于深度强化学习的语义化解决方案,创新性地构造了一种适用于语义化问题的强化学习训练环境,实验结果证明了本文方法的有效性。

在本文中将界面元素语义化问题视为此情此景的决策问题,直接从界面图片入手,将界面图片作为基于深度强化学习的输入,深度强化学习通过不断地“试错”机制来学到最优策略(即最优语义)。另外,对于那些难于输出的语义名的字段会接一个文本分类模型,从而保证语义化效果。本文组织如下:1. 为了帮助读者定位本文意图,详细介绍了字段语义在 D2C 产品中的背景及问题 2. 为了更好的描述本文技术方案,故对其关键技术强化学习和基于 Attention(注意力)机制的文本分类模型进行详细介绍;3. 详细介绍基于强化学习的语义决策模型、基于注意力机制的文本分类模型;4. 总结与展望。

问题分析

D2C 成长至今,在字段语义化功能上也引入了人工智能模型来解决和降低规则算法带来的局限和错误率。在imgcook语义化篇中详细介绍了 D2C 目前使用的基于规则的语义化技术方案,字段语义在 D2C 大图的能力分级如下图所示,去年我们通过使用图片和文本分类模型增强代码语义,今年结合 UI 上下文引入强化学习来分析语义。

(语义分析能力分层)

D2C 作为前端智能化产品的标杆,前进的路上创新与问题并存,图文界面元素语义化作为智能化出码的一大绊脚石,阻碍着 D2C 成为一个真正的端到端的智能系统,故亟需有效的智能方法助力 D2C 语义化功能落地。智能语义化面临的问题可借助下图来理解:


由上图知,目前AI界已有的技术难于对在图文并存情况下对界面元素进行智能语义化,不论是从图片角度还是从文字角度上都有各自的弊端所在:从图片角度,当前的图像识别检测、多模态技术很难处理 D2C 常遇到的图文共存的情况;从文字角度,单纯的文本分类模型很难解决一些具有多义性的字段,如价格。因此,针对图文界面元素难以语义化问题,本文提出一种利用多个AI模型组合的方案来解决这类问题,同时,该方案是一套框架,不仅适用于界面元素语义化问题,还适用于多类仅靠一个AI模型难以解决的任务。

技术方案

针对界面元素语义化问题本文采用语义决策+文本分类两步走的方案,具体流程是:先基于强化学习对界面元素按样式规律“过滤”一遍,对文本分类模型无法处理的多义性元素决策出语义名;再对文本分类模型能处理的无多义性元素进行文本分类。具体框架如下:


界面元素语义化任务中文本分类模型无法处理的一般是具有多义性的字段,比如上面的“¥85“,但该类字段在样式上是有一定规律的,比如“¥85”后面跟着一个带删除线的价格,就可以认为语义名是活动价,因此本文技术方案思路概括为:先从图片中基于强化学习决策模型决策出具有样式规律的多义性元素语义名,再对无多义性元素利用文本分类模型进行语义名识别。下面详细介绍这两个模型的实践与经验。

多义性元素语义识别

深度强化学习介绍

强化学习主要用来学习一种最大化智能体与环境交互获得的长期奖惩值的策略,其常用来处理状态空间和动作空间小的任务,在如今大数据和深度学习快速发展的时代下,针对传统强化学习无法解决高维数据输入的问题,2013年Mnih V等人首次将深度学习中的卷积神经网络(Convolutional Neural Networks,CNN)[1][2][3]引入强化学习中,提出了DQN(Deep Q Learning Network)[4][5]算法,至此国际上便开始了对深度强化学习(Deep Reinforcement Learning,DRL)的科研工作。除此之外,深度强化学习领域中一个里程牌事件是2016年的AlphaGo 对战李世石的围棋世纪大战[6][7],谷歌旗下的人工智能团队DeepMind 基于深度强化学习开发出的围棋程序 AlphaGo击败了世界顶级围棋大师李世石,震惊了世界,也因此拉开了深度强化学习从学术界走向大众认知的帷幕。

深度强化学习结合了深度学习[8](Deep Learning,DL)的特征提取能力和强化学习(Reinforcement Learning,RL)的决策能力[9],可以直接根据输入的多维数据做出最优决策输出,是一种端对端(end-to-end)的决策控制系统,广泛应用于动态决策、实时预测、仿真模拟、游戏博弈等领域,其通过与环境不断地进行实时交互,将环境信息作为输入来获取失败或成功的经验来更新决策网络的参数,从而学习到最优决策。深度强化学习框架如下:


上图深度强化学习框架中,智能体与环境进行交互,智能体通过深度学习对环境状态进行特征提取,将结果传递给强化学习进行决策并执行动作,执行完动作后得到环境反馈的新状态和奖惩进而更新决策算法。此过程反复迭代,最终使智能体学到获得最大长期奖惩值的策略。

实践效果及经验

强化学习在D2C语义字段绑定上的实践主要分以下三个部分:第一部分是强化学习训练环境的构造;第二部分是算法模型训练,第三部分是模型测试。下面会逐一进行详细介绍。

决策模型训练环境构造

由介绍得知强化学习的重要因素:智能体、环境、反馈的奖惩函数设计、step 设计。本文的思路如下:将语义字段识别任务当作一个玩游戏的过程,在这个过程中算法模型根据环境反馈不断地去更新模型参数,学到一种如何最大化奖惩函数的规律。具体为:直接选用模块图片作为环境,模块内元素的边框作为智能体,算法训练时,智能体(元素边框)会从上到下、从左到右移动,就像走迷宫一样,每走一步就要做一个决策选定行为 Action(这个Action就是我们想要的语义字段),只有当 Action 选对了智能体才能往下“走”,当智能体把所有元素都“走”了一遍代表着算法模型学到了制胜之道。

本方法将语义字段绑定问题建模成对根据此时此景的决策问题。利用强化学习模型来寻找字段的语义性。本方法针对应用在语义字段绑定任务中的强化学习重要因素定义如下:

将整个模块图片视为强化学习的环境,智能体在环境所处的状态为当前环境状态;

将模块内元素边框视为智能体;

两者的定义以下图展示:


是指智能体(元素边框)在环境(模块图片)中依次从上到下、从左到右移动过程中选择的动作(即语义名);

智能体每移一步就要做一步行为选择(语义名),选择正确则加分,选择错误减分。定义如下:式中,如果x为真则,x为假则分别为当前状态下采取的动作和上一个状态下采取的动作(即选择的语义名),c 为该元素真正的语义名。


强化学习是一种无监督学习,但语义字段识别任务为了方便制造出奖惩函数人为给打上标签(假若有这个模块图片的 CSS 代码是不需要打标的),数据集可先用 LabelImg 进行打标,每一个元素都有对应语义字段,打标方式如下图所示(第一张图片是模块图片,第二张是模块内元素打标信息,第三张是语义字段信息):




决策模型训练

训练语义化模型需要导入上面构造的环境,智能体会在构造环境中不断“试错“来学得最优策略。本文用到基于值函数的深度强化学习算法作为语义字段识别的具体实现技术之一,基于值函数的深度强化学习算法利用 CNN 来逼近传统强化学习的动作值函数,代表算法就是 DQN 算法, DQN 算法框架如下:


DQN 中有两个相同结构的神经网络,分别称为目标网络和评估网络。目标网络中的输出值 表示当在状态 S 下选择动作 a 时的衰减得分,评估网络的输出值  表示当在状态S时采取动作a的价值。

DQN训练过程中分为三个阶段:

  • 这时经验池D未满,在每一个时刻t中随机选择行为获取经验元组,然后将每一步的经验元组存储至经验池。这个阶段主要用来积攒经验,此时DQN的两个网络均不进行训练;

  • 这一阶段采用了 -贪心策略(从1至0逐渐减少)获取动作a,在网络产生决策的同时,又能以一定的概率探索其他可能的最优行为,避免了陷入局部最优解的问题。这个阶段中不断更新经验池中的经验元组,并作为评估网络、目标网络的输入,得到。然后两者差值作为损失函数,以梯度下降算法更新评估网络的权重参数。为了使训练收敛,目标网络的权重参数更新方式为:每隔一段固定的迭代次数,将评估网络的权重参数复制给目标网络参数;

  • 这一阶段降为0,即选择的动作全部来自评估网络的输出。评估网络和目标网络的更新方法和探索阶段一样。

基于值函数的深度强化学习算法 DQN 按上述三个阶段进行网络训练,当网络训练收敛,评估网络将逼近最优动作值函数,实现最优策略学习目的。

决策模型评估

强化学习模型的评估方式不同于分类检测问题,没有像准确率这样的衡量指标,它的衡量指标就是得分一直上升不再下降,就是游戏不再重来。本文实验结果确实是得分一直上升,没有重来。总体得分变化如下:


决策模型效果展示

强化学习算法训练结果展示如下:


无多义性元素语义识别

基于Attention机制的文本分类

本文利用自然语言处理中的 Attention 机制进行文本分类任务,注意力(Attention Model,AM)模型是一种加入注意力机制的 Encoder-Decoder 框架,适合处理由一个句子(或篇章)生成另外一个句子(或篇章)的处理任务。Attention 机制能够对目标数据进行加权变化,具有语义翻译输出的功能,而字段绑定任务中出现的字段是有“重心点“的,比如字段+样式这种数据,因此选用注意力模型会比传统文本分类模型好,故而进行实验。

注意力(AM)模型:对目标数据进行加权变化。其是一种资源分配模型,模型对文本某些关键词很敏感,文本理解度高。AM 模型本质上也是一种 Encoder-Decoder 框架,它与传统 Encoder-Decoder 区别在于编码器编码后的中间语义是动态的,目标句子中的每个单词都应该学会其对应的源语句子中单词的注意力分配概率信息。这意味着在生成每个单词Yi的时候,原先都是相同的中间语义表示 C 会替换成根据当前生成单词而不断变化的 Ci。理解 AM 模型的关键就是这里,即由固定的中间语义表示 C 换成了根据当前输出单词来调整成加入注意力模型的变化的Ci。增加AM模型的 Encoder-Decoder 框架理解起来如图所示:


实践效果与经验

基于 Attention 的文本分类模型在界面元素语义化应用中分为三个部分:训练数据集构造;模型训练;模型测试。以下会一一介绍。

文本分类模型训练数据集构造

为了对字段 embedding,制作2个 json 文件。 第1个 json 文件:输入是字段的拼音,输出是绑定的语义字段。


第2个 json 文件,这个 json 文件起到字典的作用,输入的字段会从这个文件找到对应的键值,方便 embedding。


文本分类模型训练

本文使用的AM模型网络结构如下:


第一步,attention 层:


第二步,计算注意力权重和输入之间的加权和(称为上下文):


第三步,RNN 层:


文本分类模型评估及效果展示

模型训练过程 loss 变化如下:


下面是一些测试例子:





总结与展望

该方案是一套样式决策+文本分类的两步走方案,从图片角度利用了强化学习决策能力解决多义性元素语义名识别问题;从文字角度利用文本分类模型解决无多义性元素语义名识别问题,结合两者优势共同完成智能语义化任务。另外,该套方案应用场景广,是一套模型训练框架,可以应用于多个其它任务中。除此之外,基于 attention 机制的文本分类模型有个好处,就是它的 label 是可以无限的,可以直接输出绑定字段的每个字母,而不是固定的几类。

未来这套方案将着重在强化学习的环境构造部分,因为这部分是决策模型的核心,强化学习的训练环境应该被设计得比较通用、智能体比较好学。另外,基于强化学习的方法不只是针对界面元素语义化问题,未来期望加入 D2C 的布局分组识别中,期望实现:界面图片->分组模块->有样式的字段绑定->无样式的字段绑定的方案框架。还有一个展望是在该方案中图文界面可以先利用 OCR 文字检测技术提取出文字,然后判断该段文字应该被送入决策模型还是文本分类模型,从而进行语义化,实现更加理想化的端到端系统。

参考文献

[1] Ketkar N . Convolutional Neural Networks[J]. 2017.
[2] Aghdam H H , Heravi E J . Convolutional Neural Networks[M]// Guide to Convolutional Neural Networks. Springer International Publishing, 2017.
[3] Gu, Jiuxiang, Wang, et al. Recent advances in convolutional neural networks[J]. PATTERN RECOGNITION, 2018.
[4] MINH V, KAVUKCUOGLU K, SILVER D, et al.Playing atari with deep reinforcement learning[J].Computer Science, 2013, 1-9.
[5] MNIH V,KAVUKCUOGLU K,SILVER D,et al.Human-level control through deep reinforcement learning[J].Nature,2015,518(7540):529-533.
[6] 曹誉栊. 从AlphaGO战胜李世石窥探人工智能发展方向[J]. 电脑迷, 2018, 115(12):188.
[7] 刘绍桐. 从AlphaGo完胜李世石看人工智能与人类发展[J]. 科学家, 2016(16).
[8] Lecun Y, Bengio Y, Hinton G. Deep learning.[J]. 2015, 521(7553):436.
[9] 赵冬斌,邵坤,朱圆恒,李栋,陈亚冉,王海涛,刘德荣,周彤,王成红.深度强化学习综述:兼论计算机围棋的发展[J].控制理论与应用,2016,33(06):701-717.9



除文章外还有更多的团队内容等你解锁🔓