第1章 深度学习时代
无论在互联网业务还是在人工智能相关的研究中,深度学习都是一门炙手可热的技术。尤其是在互联网核心的内容分发(搜索、推荐、广告)业务中,基于深度学习的算法渗透了用户理解、内容理解、召回、排序、出价等环节,为用户体验和商业化等相关指标的提升起到了不可替代的关键性作用。本章将主要介绍深度学习在互联网业务中的应用场景以及相关的工程框架。
1.1 深度学习的飞速发展
自从2012年基于CNN(Convolutional Neural Network,卷积神经网络)的AlexNet模型(见图1-1)在ImageNet比赛中一举夺魁以来,深度学习逐渐获得工业界和学术界的重视,基于深度学习的人工智能已经在机器翻译、图像识别、游戏对弈和自动驾驶等多个领域取得了突破性成果。
●图1-1 AlexNet模型结构
1)在机器翻译领域,2020年百度提出了语义单元驱动的AI同传模型,翻译准确率为80%,时间延迟约为3秒,与人类水平相当。
2)在图像识别领域,2015年谷歌(Google)在ImageNet大规模图像视觉识别挑战赛中将图像分类Top5错误率降低到3.5%,超过了人类的识别水平。
3)在游戏对弈领域,2016年DeepMind的AlphaGo战胜了人类围棋世界冠军李世石,2017年战胜了围棋世界排名第一的柯洁。
4)在自动驾驶领域,伴随着新能源汽车市场份额的逐步扩大,辅助驾驶功能已经成为汽车的标配,包括谷歌、特斯拉、百度、华为在内,各大公司、厂商纷纷加码自动驾驶的研发。
除了以上领域,深度学习在医疗、机器人等行业也得到了深入应用,呈现全面开花之势。
1.2 深度学习在互联网的应用
对于大型的互联网业务来说,如百度的搜索、抖音的短视频推荐、阿里的商品服务等,其服务的用户可以达到数亿乃至数十亿的规模。每个用户都有自己独特的喜好和需求,所以这些业务需要为海量的用户提供个性化的服务,天然具有使用机器学习的迫切需求,同时海量的用户也带来了海量的用户数据,为机器学习发挥作用提供了必要条件。因此,深度学习在图像识别领域获得了成功后,便被大规模应用在了互联网业务中。
某种角度上说,消费互联网的主要功能是连接,如连接人和人(社交)、连接人和信息(文字、图片、短视频、长视频)、连接人和商品(电商)、连接人和服务(外卖)、连接人和广告(互联广告)等。这种连接按照用户的主观能动性可以分为两种,一种是主动连接。用户有明确的需求或者是目标,主动发起连接,典型的主动连接行为是搜索,如在搜索引擎中查询深度学习相关的论文;另一种是被动连接。用户没有明确的目标,由互联网平台根据用户的固有属性(年龄、性别、兴趣、爱好等)或者历史行为信息推送用户感兴趣的内容,典型的被动连接是推荐,如当下比较流行的短视频推荐、商品推荐。连接的一端是海量的用户,另一端是海量的内容,而负责进行连接的就是检索匹配系统。
从内容属性上来说,搜索引擎检索的文档、短视频App推荐的视频等都属于用户内容,算法的设计主要关注用户指标,如相关性、留存、用户时长等。广告是商业内容,每个广告上都有一个出价(bid),广告算法关注的主要指标为点击率、转化率、收费金额等商业指标。广告既可以是主动连接的——搜索广告,也可以是被动连接的——推荐广告。
深度学习在搜索、推荐、广告业务中的用户画像建设、内容理解、召回排序等阶段都发挥着关键性作用。下面先来看一下搜索、推荐、广告业务的检索匹配流程,以及算法在其中扮演的角色。
1.2.1 搜索
搜索业务是一项古老的互联网产品形式。百度、谷歌起家的业务就是通用信息搜索。除了通用搜索,各个垂直类网站也都有自己的垂直搜索引擎,如电商平台的商品搜索、旅游平台的景点搜索等。
常见的搜索流程如图1-2所示,用户打开搜索引擎网页或者App,在搜索框中输入想要检索的内容(可以是文本,也可以是图片),然后搜索引擎会返回一系列的相关搜索结果,通常这些结果会包括文字、图片和视频等。
●图1-2 搜索系统示例
搜索引擎的使用是非常简单轻便的,然而搜索引擎为用户提供服务的后台系统却是非常复杂而庞大的。图1-3展示了搜索引擎的基本工作流程。
●图1-3 网页搜索的算法流程
首先离线从互联网上爬取海量的网页内容,整个互联网的网页相互之间通过内置的跳转链接成了一个巨大的网络,爬虫会像蜘蛛一样从一个或者若干个节点出发,遍历整个网络,解析网页结构,抓取网页内容。
对爬取的网页库进行内容理解,一般来说内容理解可以分为两个方向:
1)结构化理解。给内容打上各种人类可理解的标签,如为某个宠物图片标记tag-“宠物”,互联网上的内容主要包括文本、图片和视频,需要使用NLP(自然语言处理)和CV(机器视觉)的相关技术进行主题识别、关键词抽取、图片实体抽取和视频标签解析等。
2)分布式表示。将网页内容表示成一个稠密向量(如<0.125,-2.183,……>),类似于模型使用稀疏特征进行表示时首先将稀疏特征表示成为一个embedding,这种方法是将网页内容整体表示成为一个embedding,通常会基于大规模的无监督或者有监督数据训练一个模型(如常见的双塔模型或Bert),然后将内容送入模型中,生成一个embedding。在线上检索时,query也会用同样的模型生成一个embedding,用query embedding去检索临近的内容embedding。
根据内容理解的结果建立倒排索引,推送至线上。在倒排索引中,索引的key为内容理解出的结构化标签或者embedding,value为内容的id。在使用embedding建立索引时,为了在性能和准召之间进行平衡,有一套独特的检索方法,称作ANN(Approximate Nearest Neighbor)检索。
当用户输入检索query后,检索系统会对query使用和内容理解同样的方法进行结构化理解或提取分布式表示。
根据query识别的结果从索引中检索文档,这一步又称之为召回。如果采用结构化表示,一般采用布尔检索;如果采用分布式表示,一般采用ANN检索。
将检索出的文档进行排序,返回最终得分Top的文档列表。搜索排序一般考虑的因素为网页的相关性、网页的权威性等,其中基础的搜索网页相关性算法为BM25,网站的权威性主要依赖PageRank算法。
搜索在内容理解、query解析、排序等环节都使用了大量基于机器学习(尤其是深度学习)的模型。基于深度学习的各种模型,后续会进行详细介绍,这里简单介绍一下网页搜索领域经典的PageRank算法。
互联网上存在着海量的网页,对于用户的检索词,搜索引擎基本都上都能检索出大量的网页,如用户在检索“华为手机售卖价格”时,往往会检索出多个电商平台或者是商家网页的出价信息,因此对这些网页如何排序就成了一个关键性的问题。从用户体验的角度来讲,用户进行检索需要得到的是明确、权威的信息。对于query-“华为手机售卖价格”来说,如果检索的结果中有华为商城官网或者电商平台上的华为旗舰店,那么用户的检索需求就得到了充分的满足,检索的体验是非常棒的。所以网页权威性是搜索引擎排序的一个重要指标,在相关性等指标相似的情况下,权威性越高的网页越要排在前面。
如何衡量一个网页的权威性呢?PageRank算法的诞生正好解决了这个问题。该算法基于一个很朴素的思想:如果一个网页被很多其他的网页链接,那么这个网页是具有权威性的。如图1-4所示,每个笑脸代表一个网页,笑脸的大小与指向该笑脸的其他笑脸的数目成正比。这类似于在科研领域,一篇论文的引用数越多,则这篇论文在领域内的重要性就越高。下面就让我们来看看PageRank算法的工作流程。
●图1-4 PageRank笑脸图
假设存在4个网页A、B、C、D。其中B链接到A和C,C链接到A,并且D链接到A,B,C。
1)初始化4个网页的PR(PageRank)值为1/4。
2)根据每个页面连出总数L(x)平分该页面的PR值,并将其加到其所指向的页面。
3)重复上一步,直到每个网页PR值进入稳定收敛状态。
1.2.2 推荐
在互联网发展的早期,推荐主要用于在新闻、电子商务网站等场景,为用户推荐可能感兴趣的新闻和商品。典型的应用场景为电商网站中的“看了还看”和“买了还买”。顾名思义,“看了还看”主要针对用户正在浏览的商品进行推荐,如用户正在浏览华为的手机,可能他对苹果手机也有兴趣;“买了还买”针对用户已经购买了的商品进行推荐,如用户买了手机,可能他还想买一个手机壳。推荐系统对于提升用户对网站的访问体验非常重要,根据测算,亚马逊网站上30%的商品浏览来自于推荐系统。
最近几年,信息流在互联网异军突起,深受广大用户的喜爱。信息流是一种流式的内容流,图文或者视频像瀑布流一样,不断地推送给用户。在推送过程中,推荐系统不断地收集用户对已推荐内容的行为反馈,实时计算用户兴趣的变化,从而推荐更加符合用户兴趣的内容给用户。信息流这种永不枯竭的内容提供方式,再加上推荐算法实时的用户兴趣捕捉,共同促成了信息流高质量的用户体验,迅速风靡全世界。截至2021年9月,发布仅仅6年的抖音在中国市场的DAU(日均活跃用户数量)已经超过了6.4亿。
图1-5展示了一个商品推荐系统。当用户打开一个电商平台网站时,该平台网站就会根据用户的浏览或者购买记录推荐他可能感兴趣的商品。
●图1-5 商品推荐系统示例
在搜索行为中,用户的需求是明确的,通过Query进行表达,连接是用户主动发起的;而在推荐系统中,用户的需求是不明确的,只能通过用户画像和用户的实时行为进行推测,连接是被动的。
如图1-6所示,推荐系统的流程和搜索的流程基本类似,都需要先通过对内容进行理解建立倒排索引,然后线上进行召回和排序。不同之处在于:
●图1-6 视频推荐系统流程
首先,搜索主要依赖于对Query进行分析从而检索相关的内容,整体目标是相关性等,而视频推荐系统主要依赖于对用户画像和用户历史行为的分析来推荐给用户感兴趣的内容,整体目标是用户的时长、点赞率等。如果用户经常喜欢看美食类的短视频,那么推荐系统将会认为用户对美食类短视频感兴趣,从而给用户推荐更多的该类型视频。
其次,推荐系统排序所用到的浏览时长预估、点赞率预估往往采用大规模的深度学习模型,而搜索还会倚重BM25、PageRank等传统方法。
除此了以上两点,搜索作为一个信息检索工具,其目标是让用户迅速得到想要的信息,因此用户的单次检索使用时间越短、满意度越高越好;而推荐很多时候被作为一个娱乐工具,其目标是让用户尽可能沉浸其中,因此使用时长越长越好。相比于搜索,在推荐系统中,用户的行为序列更长、也更加连续,所以推荐系统模型特别强调对用户行为序列的应用。
1.2.3 广告
自从互联网诞生以来,广告就与电商、游戏并称为互联网的三大商业化方式。大家耳熟能详的互联网公司其实也是知名的广告公司,如国外的谷歌(Google)、脸书(Facebook),国内的腾讯、字节跳动、阿里巴巴等。
互联网广告往往嵌入在搜索引擎搜索出的网页或推荐系统推荐的用户内容之中。图1-7 展示了一个信息流推荐系统的广告示例。
●图1-7 推荐广告示例
2021年上半年,中国互联网广告市场的投放金额达到了3000亿元,而全球数字广告市场2021年预计总支出会达到3110亿美元。互联网广告庞大的市场催生出了层出不穷的产品和技术创新。
在产品方面,一方面,为了保障广告主的ROI并权衡广告主和平台的利益,诞生了oCPX广告,广告按照展现/点击计费,但是平台必须保证广告主的转化成本不超过广告主的要求;另一方面,为了大广告主投放的快捷高效并综合使用广告主和平台的数据/技术能力,诞生了DPA(Dynamic Product Ads)和RTA(RealTime API)。DPA也就是动态商品广告,可以让拥有大量商品的广告主高效地投放数千万的商品,而RTA则给了广告主干预平台PV级别决策的权力,广告主可以在一个广告请求上选择要不要触发广告、平台还是广告主预估CTR/CVR、出价多少、触发什么商品等。
在技术方面,不管是在召回还是排序,有大量的创新技术成果都是首先应用在广告领域,然后再推广到用户内容的搜索和推荐领域,如DNN在互联网中的大规模线上应用便是从广告开始的,阿里巴巴提出的一系列用户行为序列模型(DIN、DIEN、MIMN、SIM等)也是基于广告业务提出的。
图1-8展示了广告推荐系统的整体流程,与内容推荐系统类似,广告推荐系统首先也是对广告和用户进行理解,然后根据用户分析的结果进行广告的召回和排序。与用户内容的搜索/推荐不同,广告的搜索/推荐涉及第三方,系统的推荐目标较为复杂。
●图1-8 推荐广告流程
图1-9 展示了互联网广告系统的三个参与方及其诉求,广告主关心广告的ROI,媒体关心广告平台的整体收入,用户追求质量体验。广告系统的产品技术设计对这三方的目标进行权衡。为了兼顾三方目标,广告的排序一般会综合考虑出价、点击率、转化率等因子,并对低质/低相关性广告进行硬门槛过滤或者加入惩罚项。
●图1-9 广告系统目标
除了在排序目标上存在不同,在数据应用上,广告系统和用户内容也存在明显的差异。在用户内容的搜索或推荐中,一般只会使用平台自己积累的用户行为数据,而在广告系统中,还可以使用用户在广告主中的行为数据。如图1-10所示,可以根据用户在媒体侧、广告主侧行为数据的丰富程度,将用户分成四类。对于广告主拥有用户丰富行为的用户(如第一和第四象限所示),广告主对于用户的理解更加深刻,可以由广告主进行出价和转化率预测,媒体进行点击率预估;对于广告主侧行为数据稀少、媒体侧行为数据丰富的用户(如第二象限所示),可以由媒体进行点击率、转化率预估和出价;对于广告主侧行为数据稀少、媒体侧行为数据也稀少的用户(如第三象限所示),则需要媒体侧进行高效的冷启动。
●图1-10 广告系统数据视角下的用户分类
1.2.4 通用检索流程
细心的读者可以发现,搜索、广告、推荐系统这三个业务的检索流程是非常相似的。图1-11 展示了一个检索系统的通用流程。
●图1-11 通用检索流程
一个有海量内容需要分发的系统,通常需要做到以下几点。
首先需要做的就是内容理解。内容的来源一般是通过抓取或者是用户主动上传而来。内容的形式有很多种,包括搜索结果的网页、推荐系统里的短视频、广告系统中的广告等,但是以内容的载体上来说,核心载体主要有文字、图片和视频三种。文字内容可以通过自然语言处理工具进行解析,图片和视频可以通过计算机视觉工具等进行理解。
其次是对用户进行理解。用户的理解主要包括基础的用户画像(如年龄、性别、地域、学历、婚姻状态、子女个数、收入水平等)和基于用户行为解析出的兴趣偏好(如是否是游戏爱好者、是否喜欢看美食视频等)。
最后是检索。因为线上性能的原因,检索被分成了召回和排序两个阶段,对于一些复杂业务排序,还要被分成粗排和精排两个子环节。召回往往用一些较简单的算法,从数百万乃至数亿的内容中挑选出上万个,然后排序系统用复杂的算法精挑细选出若干个,最终下发给用户。图1-12 展示了一个通用的内容分发系统检索流程的各个环节和漏斗情况。
●图1-12 通用检索流程各个环节的漏斗
1.3 深度学习模型分类
从上一节可以看出,基于深度学习的模型已经在互联网的各大业务中全面开花,种类丰富多样。可以按照很多种维度对这些模型进行区分,按照处理的对象来分,可以分为处理文本的、处理图像的、处理用户行为数据的;按照模型使用的阶段来分,可以分成离线和在线的,如召回排序模型是在线实时作用的、内容理解的相关模型是离线作用的。
算法模型需要部署在业务的整体架构中才能发挥作用,因此也可以从工程架构的角度来对模型区分,以更好地理解算法如何与工程架构进行结合。这个划分的标准就是需不需要大规模的特征体系。
不需要大规模的特征体系模型主要是指自然语言处理和计算机视觉等对内容进行理解的模型(以下简称稠密模型),此类模型的输入是一串文本或者是一幅图像,特征是稠密的,以自然语言处理领域大名鼎鼎的BERT(Bidirectional Encoder Representation from Transformer)模型为例,其输入为文本的每一个字,如图1-13所示。在图像处理模型中,输入是一个个的像素。
●图1-13 基于BERT的命名实体识别模型
需要大规模的特征体系的模型主要是指检索系统召回和排序阶段所用到的模型(以下简称高维稀疏模型),此类模型的输入是数十个乃至数百个特征组,特征是高维稀疏的。高维稀疏模型的效果和特征体系非常密切相关,因此往往需要一个大规模的特征体系才能发挥作用,业界的核心模型所用的特征规模可达千亿级别。图1-14展示了一个高维稀疏模型的示例。
稠密模型和高维稀疏模型都在实际的业务中发挥着重要作用。本书侧重为读者介绍高维稀疏模型,也就是业界常用的点击率和转化率预估等模型。
●图1-14 点击率预估模型示例
1.4 模型服务中台
不论是搜索、推荐系统还是广告,任何一个大规模的内容分发系统,其检索系统都用到了大量的基于深度学习的算法模型,并且这些模型往往需要在线实时发挥作用。因此,为了支持线上日益繁多、用途不一的模型并提高迭代效率,大型业务的算法服务日趋中台化。中台将数据、特征、模型训练、模型预测等模块进行封装,行成一个一体化的模型服务框架。算法工程师在中台的支持下,往往只需做少量的配置或者代码修改,就可以完成一个新模型的调研或者上线任务,极大地提高了算法迭代的效率。一个典型的在业务中使用的模型服务框架如图1-15 所示。
当用户在前端(App或者浏览器)中发起了一个请求后,该请求经过流量分发平台,发送至某个业务后台的线程/进程中进行处理。以广告业务为例,业务后台从数十万乃至数百万的候选广告中,利用各种各样的算法策略检索出最优的数条广告发送给前端进行展示。用户看到广告后,可能会触发一系列的后续动作,如点击、转化(激活/购买)等,日志系统会记录下用户的行为,以作为业务分析/模型训练之用。
●图1-15 一个典型的使用深度学习的系统
其中算法相关的子系统主要有4个:
1)数据中台:实时收集用户的行为(曝光、点击、转化),并进行拼接,形成样本。用户的行为数据一方面传入实时特征处理模块进行实时特征抽取,另外一方面进行离线存储,作为模型训练的样本。
2)特征中台:特征中台提供了特征的抽取服务。点击率预估、转化率预估等高维稀疏模型都需要一个强大完备的特征体系,为了提高特征提取的效率和便于在多个模型之间共享特征,诞生了特征中台。从特征的实时性来分,特征中台主要包括实时特征和离线特征。实时特征主要指用户当前所处的地理位置、用户过去30min内的点击率等,这些特征往往附带在用户的请求中或者从实时的数据流中进行生成;离线特征主要包括用户性别、内容类别等,这些特征变化较为缓慢,往往每天才更新一次。
3)模型训练平台:模型训练平台主要功能是进行模型的训练。模型训练平台通常是分布式CPU集群,重要的业务会采用较为昂贵的GPU机器。数据中台拼接好的样本在进行特征抽取后,会送入模型训练平台进行训练。
4)模型预估服务平台:模型预估服务平台主要负责加载离线训练模型,并提供在线预测服务。模型训练平台将模型训练好之后,会推送到模型预估服务平台。当业务后台发起模型请求(如预估CTR或者浏览时长)时,模型预估服务根据模型配置加载相关特征进行模型预测,然后将预估值返回给业务后台。
1.5 分布式机器学习
对于一些大型的业务而言,每天需要处理海量的用户需求,积累的用户数据也是海量的,而单机远远不能处理如此海量的请求和数据,因此实际业务中使用的模型训练平台一般都是分布式的。
如图1-16所示,在一个分布式机器学习系统中,多个CPU/GPU机器会组织成一个集群进行模型训练。在训练时,每台机器会获取样本的一部分进行前向传播和反向传播,计算出梯度,集群中的一部分机器会收集各个机器传过来的梯度,并使用梯度对模型参数进行更新。在互联网核心业务中使用的模型,特征体系较为庞大、模型结构较为复杂,模型文件特别巨大(往往会达到几百GB甚至TB这个量级),所以模型的存储往往也是分布式的,存放在由若干台机器组成的分布式文件系统或者数据库中。
●图1-16 分布式机器学习训练系统示例
模型训练完成后,新版模型会被推送到线上的某个内存数据库中。大型的业务中,用户的访问量是海量的,对模型服务的调用也是非常频繁且时延要求很高的,因此在线上往往使用多台机器组成一个微服务集群,提供模型的预测服务,如图1-17所示。
在深度学习模型中,Embedding词表往往规模较大,而且每次预估只会使用到其中的部分词表项,因此通常放在一个单独的缓存服务中。模型的网络结构参数规模较小,并且每次预估服务基本都需要全量使用,因此往往放置在每一台预估机器的内存中。
●图1-17 在线模型预估服务
1.6 深度学习软件框架
伴随着深度学习的大规模应用,一些深度学习软件框架也逐渐成熟起来,并获得了大规模应用,如TensorFlow、PyTorch等。互联网业务中的模型训练平台往往直接支持这些开源框架,算法工程师比较容易上手。在线预测模型服务这一侧,主流互联网公司的核心业务呈现出大容量、高并发的特点,对模型服务的性能(包括时延、存储、QPS)等指标要求较高,主流厂家往往倾向于使用C++定制一套模型在线预估服务框架,预估速度快,并且可以支持TB级别的模型。
上面所述的模型离线训练平台+在线模型预估平台功能强大,在各大互联网公司的主流业务中都得到了成功的运用。但是另外一方面,这套方案在带来强大性能的同时也带来了较高的复杂性,对于中小型业务并不友好,具体原因如下。
1)开发部署如上所述的一套完善的模型系统需要投入大量的人力物力,对于处于起步期的业务而言,并没有如此多的精力关注在这个方向。
2)对于中小型业务而言,复杂模型结构(如Transformer)或者大容量模型(TB级)的需求并不迫切。复杂的模型结构和大容量模型都需要海量的样本作为基础才能发挥出威力。对于中小业务,样本量较为稀疏,一个常见的深度神经网络即可满足现阶段需要,将资源投入在特征体系的完善上效果会更好。伴随着业务的进一步发展,模型框架可以再考虑支持复杂模型结构和大容量模型。
3)在线的模型预估服务单独部署在一个集群中,业务后台发送请求过去,模型预估服务接受请求、组织特征、进行预测、最后返回结果,整个流程存在一定的时延。对于一些时延要求特别高的业务,采用这种方式调用模型服务并不可取。另外,大型的业务往往包含若干个模型,如果在其中的某个模块中,串行增加一个模型预估模型,同样会增加整个链路的耗时,不可取。
4)高度的封装和复杂的系统设计不利于从业者理解学习其中的基本实现,影响对大型机器学习系统演进方向的把握。
基于上述因素,本文在介绍深度学习在互联网业务中的应用时,还介绍了如何开发一个简单的深度学习框架——PS-DNN,该框架的特点如下。
·框架包括标签拼接、特征抽取、模型训练、模型预测等整套流程,详细展示了如何在实际的业务中落地一个模型。
·介绍了通用的标签拼接和特征选择方法,支持Bucket/Combine/Group/Hit等常用特征抽取算子。
·支持DNN/DSSM等业务中的主流模型,可以用于分类和回归任务。
·支持分布式训练,可以用在具有海量样本的场景中。
通过对该框架的学习和使用,读者可以逐步深入理解深度学习的底层技术以及如何将深度学习在业务中落地。本书所展示的框架也可以直接用于搜索、广告、推荐业务的召回和排序等阶段。
PS-DNN深度学习框架的地址为https://github.com/kangshantong/ps-dnn,代码目录结构如下。
·conf:特征抽取和模型训练参数。
·sample:样本处理和原始特征拼接。
·feature_extract:特征抽取。
·model:模型训练。
为了方便读者理解和使用PS-DNN,代码库中以淘宝的广告点击率预估任务为例进行了示范。执行run_taobao_ctr.sh即可启动淘宝点击率预估模型的训练任务。
1.7 小结
本章主要介绍了深度学习在互联网业务中的应用,以及实际业务的检索系统中模型的工程框架。
读万卷书,也要行万里路。理论要联系实践,从实践中来,并反馈到实践,才能完成理论的升华。本书在具体介绍深度学习及其相关理论的同时,还会介绍如何开发一个可在互联网业务中直接应用的深度学习框架,将深度学习白盒化,以便读者更加深刻地理解深度学习的本质,更好地在实践中使用深度学习技术。