关于自然语言处理:初级人工智能训练师考试升级考试体系更完整

前言想晓得如何利用人工智能晋升服务性对话的效率?想要理解智能客服基本概念?不会对话机器人平台的操作? 人工智能训练师高级认证及其教学资料已由来也科技Chatbot学院全新降级上线! 考试简述高级考试定位根底人工智能利用,后续连接中级考试实操,课程更加易学、易用、体系化。 当初就开始迈出解脱低效对话工作的第一步吧! 拜访 https://laiye.com/academy/cha... 获取培训资料并进行认证 手机能不能考试?高级考试能够在手机上考,中级考试因为题目蕴含图片表格且要下载材料,倡议电脑考试~ 倒退历程从2017年起,来也科技即着手于人工智能训练师(简称训练师)的培训和认证工作,并通过培训内外部训练师进行长期教学验证(没错,产品起步的时候咱们就开始“授人以渔”了~),至今迭代了四次训练师培训体系。 职业:人工智能训练师别称:AI训练师、AI Trainer公布工夫:2020年2月25日新畛域新行业新职业人工智能训练师是近年随着AI技术广泛应用产生的新兴职业,他们的工作内容有解决方案设计、算法调优、数据标注等。经过培训考核和业务实际之后,来也科技造就的训练师曾经在中国电信、美团、中化团体、奇安信、惠氏、伊利、龙湖、北森、飞鹤、耐克、51talk、菲仕兰、中原生产金融、思必驰等各行各业的大中小企业以及守业型公司胜利待业,并在其公司内的AI体系建设中施展重要的骨干作用。 8月起,来也科技Chatbot学院降级上线了新版人工智能训练师高级认证,这是继6月上线训练师中级实操认证后的重磅动作。 考试特点本次改革整体依照分级而治的准则,上面给大家走漏一下出题理念哦~~ 简略题和根底题对话机器人产品的简略开启和应用,理解对话机器人畛域解决的重点数据起源和统计指标,把握根本的训练素材数据处理常识——对应L5级人工智能训练师要求(即《T/CCPITCSC 043-2020 人工智能训练师职业能力要求》,下同)。 中档题和提拔题能正确利用对话机器人联合业务实际,对信息进行根底剖析和分类,对简略的谬误案例给到正确的优化解决倡议——对应L4级人工智能训练师要求。 考试指标单选30道,每题2分,共60分;多选10道,每题4分,共40分;总分共计100分,考试工夫1小时,超时主动提交。 通过8月份的内测和公测,确认了考试具备良好的区分度,高级考试及格线为60分,80分以上为良好(证书上不体现~)。 考试费用与工夫培训手册、教学视频、考试认证、证书发放全免费! 全年7×24小时凋谢考试,每24小时能够加入3次,通过考试后不能从新进入。 证书发放通过考试后,在“认证考试→我的证书”页面下的入口进行证书申请~ https://academy.laiye.com/cha... 答题策略与技巧答题策略单选题每道题2分,抉择最合乎题意的一项,剩下的烦扰项不要看错啦~多选题每道题4分,至多有两个答案要选,漏选、错选均不得分。答题技巧查看Chatbot学院提供的教学视频、培训手册和吾来产品手册多相熟吾来的各项操作;多用用语文常识;既然考了,就要坚持下去;提交前查看,留神不要手抖错选;没通过能够再相熟下产品操作、产品手册,能够再考的~想来检测本人的训练师能力程度吗?来也科技Chatbot高级训练师重装上线,测测你能考多少分?https://laiye.com/academy/cha...

September 13, 2021 · 1 min · jiezi

关于自然语言处理:解读知识蒸馏模型TinyBert

摘要:本篇文章的重点在于改良信息瓶颈的优化机制,并且围绕着高纬空间中互信息难以估计,以及信息瓶颈优化机制中的衡量难题这两个点进行解说。本文分享自华为云社区《【云驻共创】美文赏析:大佬对变分蒸馏的跨模态行人重辨认的工作》,作者:启明。 论文解说:《Farewell to Mutual Information: Variational Distillation for CrossModal Person Re-identification》 论文概述本篇文章的重点在于改良信息瓶颈的优化机制,并且围绕着高纬空间中互信息难以估计,以及信息瓶颈优化机制中的衡量难题这两个点进行解说。 信息瓶颈钻研背景此报告一共分为3个局部,为了便于了解,咱们先介绍一下信息瓶颈的钻研背景。 就“信息瓶颈”这个概念而言,在2000年左右的时候才正式被学者提出,其现实状态下的指标,是取得一个最小充沛规范。意思就是,把所有那些对工作有帮忙的判断性信息全提取进去,同时又过滤掉冗余性的信息。从实际的角度来说,信息瓶颈的部署就是间接优化下图红色框出局部即可: 迄今为止,信息瓶颈作为一种信息论领导下的表征学习办法,曾经被广泛应用于多个畛域,包含计算机视觉、自然语言解决、神经科学等等,当然还有一些学者曾经把信息瓶颈用于揭开神经网络黑箱的问题上。 然而,互信息有3个不足之处: 1. 其有效性重大依赖互信息估算精度尽管信息瓶颈有着先进的构思和理念,然而它的有效性重大依赖于互信息的估算精度。依据当初大量的实践剖析,以及目前很多的工作在实践中的尝试,咱们能够晓得在高维空间中,算互信息其实是十分无力的。 从上图表达式上来看, v代表着察看量,大家能够把它间接了解成一个高维度的特色图; z代表是代表它的一个表征,能够把它了解成是一个通过信息瓶颈压缩失去的一个低纬度的表征。 当初咱们须要算它们两个之间的互信息。 实践上来说咱们须要晓得这三个散布才能够实现互信息的计算(如上图)。然而很惋惜的是,对于察看量其自身的潜在散布,咱们只能无限个数据点,而并不能通过这些无限个数据点去观测到其具体的潜在散布,更不用说空间变量z的相干信息了。 那么,如果咱们用一个代参的预计器在解空间去猜呢?也不是很可行。因为其可信度不是很高,而且去年ICLR(国内表征学习大会)上有很多篇工作曾经证实了,互信息预计器很大可能只是一个噱头。 2. 预测性能与简洁性之间难以衡量 另外一个比较严重的问题是,信息平台优化实质上是一种衡量。这意味着,这种机制会把表征的判断性和简洁性放到天平的两侧(如上图)。 想打消冗余信息,那么也会附带的造成局部断定性信息的损失;但如果你想保留更多的判断性信息,那么也会有相当局部的冗余信息跟着被保留下来。这样一来,就会使得信息瓶颈最开始定的指标成为不可能实现的指标。 或是咱们从优化指标上来看。假如咱们给一个十分大的,这意味着模型此时更偏向于做删减。不言而喻,压缩力度是提上来了,然而此时模型就没怎么保留断定性。 同样的,如果说当初给一个十分小的(假如是10^(-5)),那么相对来说模型就更偏向于实现第一项互信息给的指标。但此时模型就不论“去冗余”的事了。 所以咱们在选取的过程中,其实就是衡量两个指标在不同工作下的重要性,也就印证了文章结尾讲的问题,信息瓶颈的优化的实质是一种衡量。 3. 对多视图问题乏力除上述2个问题之外,咱们还能够发现,信息瓶颈尽管能够通过工作给定的标签,对工作所蕴含的信息进行二元化定义,也就是说咱们能够依据是否对工作有帮忙来定义判断性信息(红色局部)和冗余信息(蓝色局部)。 然而工作波及到多视图的数据的时候,信息瓶颈没有确切的根据从多视图的角度把信息再次写进去,结果就是使得它对视图变动比拟敏感,或者说,就是不足应答多视图问题的能力。 变分信息瓶颈工作介绍说完传统的信息瓶颈,咱们再引入一篇里程碑式的工作:《变分信息瓶颈》。此工作发表在2017年的ICLR下面,其一个突出贡献,是引入了“变分推断”(如下图):把互信息转化成了熵的模式。尽管这篇工作没有很好的解决咱们后面提到的问题,但这个思路简直启发了后续的所有相干工作。 把互信息转化到熵,是一个十分大的提高。然而还是有几点不足之处: 1. 表征判断性能与简洁性之间的trade-off没失去解决遗憾的是变分信息瓶颈,也没能解决优化机制中判断性与简洁性之间的衡量难题。被优化的天平仍然随着摆动。 2. 无奈保障变分上界的有效性第二个问题就是变分信息瓶颈优化的时候,其实是优化其找的一个上界,但上界的有效性是值得商讨的。因为它须要空间变量z的一个娇艳散布Q(z)去迫近一个潜在散布P(z)。然而,这在理论中这其实是很难保障的。 3. 波及重参数、重采样等简单操作第三点就是优化这一项变分推断的后果,会波及到很多简单的操作(重参数、重采样等这些不确定性很高的操作),会给训练过程减少肯定的稳定,使得训练可能不是很稳固,而且复杂度较高。 钻研办法下面说的几个问题,是变分信息瓶颈针对办法的通病,肯定水平上妨碍了信息瓶颈的工夫利用。那么,接下来解说一下相应的解决思路,从实质上解决后面提到的所有问题。 充分性首先须要引入“充分性”概念:z蕴含所有对于y的判断性信息。 它要求信息瓶颈的编码过程不容许有判断性信息的损失,也就是说v通过信息瓶颈达到z之后,只容许打消冗余信息,当然这是一个比拟理想化的要求(如上图)。 有了“充分性”概念之后,咱们把察看量和其表征之间的互信息进行拆分,能够失去蓝色的冗余信息和红色的判断性信息,再依据信息处理不等式能够失去上面这行的后果。此后果意义比拟大,它阐明咱们想要取得最小充沛规范,也就是最优规范,须要经验三个子过程。 第一个子过程,其实是在进步表征z所蕴含的判断性信息总量的下限。为什么这样说?因为z所蕴含的所有内容都来源于它的察看量。所以进步察看量,它本人的判断性信息总量的下限,也就是拉高了z的它本人的下限。 而第二个子过程就是让表征z去迫近本人的判断性下限。这两项其实对应了充分性的要求。 第三个子过程的条件互信息,如后面所说,它代表指标所蕴含的冗余信息,因而最小化这一项就对应了最简性的指标。此处,简略阐明一下“条件互信息”,它代表的是z中所蕴含的仅和v相干且与y无关的信息,简略来说,就是和工作没有关系的冗余信息。其实从后面的变分信息瓶颈能够看到第一个子过程,其实优化一个条件熵,也就是用察看量v初始的特色图和标签算一个穿插熵,而后进行优化。所以这一项它实质上和给定的工作是统一的,因而暂且不须要非凡解决。 至于另外两项的优化指标,他们实质上是等价的。而且值得注意的一点是这种等价关系,意味着晋升表征的判断性的过程中,也在打消冗余。把原来已经对抗的两个指标拉到了天平同一侧,间接就解脱了信息瓶颈原有的一个衡量难题,使得信息瓶颈随着最小充沛规范实践上是可行的。 定理一和引理一定理一:最小化I(v;y) − I(z;y) 等价于最小化 v,z 对于工作指标y条件熵的差值,即: minI(v;y)−I(z;y) ⇔ min H(y|z) − H(y|v), 其中条件熵定义为H(y|z):=−∫p(z)dz∫p(y|z)log p(y|z)dy . 引理一:当表征z对工作指标y做出的预测与其察看量 v的雷同时,表征 z对于工作指标 y具备充分性,即: 为了达到后面制订的指标,还须要防止高维空间中互信息的估算,因而文章中提出了十分具体的重点的定理和引理这两项内容。 ...

September 2, 2021 · 1 min · jiezi

关于自然语言处理:ChaosBlade从混沌工程实验工具到混沌工程平台

简介:ChaosBlade 是阿里巴巴 2019 年开源的混沌工程项目,已退出到 CNCF Sandbox 中。起初蕴含面向多环境、多语言的混沌工程试验工具 chaosblade,到当初倒退到面向多集群、多环境、多语言的混沌工程平台 chaosblade-box,平台反对试验工具托管和工具自动化部署,通过对立用户试验界面,将用户的精力聚焦在通过混沌工程解决云原生过程中高可用问题上。本文从混沌试验模型形象、混沌试验工具开源和混沌工程平台降级我的项目三阶段登程,具体介绍 ChaosBlade。作者 | 肖长军(穹谷) 桑杰 ChaosBlade 是阿里巴巴 2019 年开源的混沌工程项目,已退出到 CNCF Sandbox 中。起初蕴含面向多环境、多语言的混沌工程试验工具 chaosblade,到当初倒退到面向多集群、多环境、多语言的混沌工程平台 chaosblade-box,平台反对试验工具托管和工具自动化部署,通过对立用户试验界面,将用户的精力聚焦在通过混沌工程解决云原生过程中高可用问题上。本文从混沌试验模型形象、混沌试验工具开源和混沌工程平台降级我的项目三阶段登程,具体介绍 ChaosBlade。 在往年可信云测评中,阿里云故障演练平台以最高分首批通过可信云混沌工程平台能力要求最高等级-先进级认证。 混沌试验模型ChaosBlade 我的项目笼罩根底资源、应用服务、容器服务等混沌试验场景。在试验工具设计之初就思考了场景模型对立,便于场景扩大和积淀,也为平台托管试验工具实现对立场景调用提供模型根据。ChaosBlade 我的项目中所有的试验场景均遵循此试验模型设计,上面通过试验模型的推导、介绍、意义和具体的利用来具体介绍此模型。 1、试验模型的推导混沌试验次要蕴含故障模拟,咱们个别对故障的形容如下: 10.0.0.1 机器上挂载的 A 磁盘满造成了服务不可用;所有节点上的 B dubbo 服务因为执行迟缓造成上游 A dubbo 服务调用提早,从而造成用户拜访迟缓;Kubernetes A 集群中 B 节点上 CPU 所有核使用率满载,造成 A 集群中的 Pod 调度异样;Kubernetes C 集群中 D Pod 网络异样,造成 D 相干的 Service 拜访异样。通过上述,咱们能够应用以下句式来形容故障:因为某某机器(或集群中的资源,如 Node,Pod)上的哪个组件产生了什么故障,从而造成了相干影响。咱们也能够通过下图来看故障形容拆分: 能够通过这四局部来形容现有的故障场景,所有咱们形象出了一个故障场景模型,也称为混沌试验模型。 2、试验模型的介绍此试验模型详细描述如下: Scope: 试验施行范畴,指具体实施试验的机器、集群及其资源等。Target: 试验靶点,指试验产生的组件。如根底资源场景中的 CPU、网络、磁盘等,Java 场景中的利用组件如 Dubbo、Redis、RocketMQ、JVM 等,容器场景中的 Node、Pod、Container本身等。Matcher: 试验规定匹配器,依据所配置的 Target,定义相干的试验匹配规定,能够配置多个。因为每个 Target 可能有各自非凡的匹配条件,比方 RPC 畛域的 Dubbo、gRPC 能够依据服务提供者提供的服务和服务消费者调用的服务进行匹配,缓存畛域的 Redis,能够依据 set、get 操作进行匹配。还能够对 matcher 进行扩大,比方扩大试验场景执行策略,管制试验触发工夫。Action: 指试验模仿的具体场景,Target 不同,施行的场景也不一样,比方磁盘,能够演练磁盘满,磁盘 IO 读写高,磁盘硬件故障等。如果是利用,能够形象出提早、异样、返回指定值(错误码、大对象等)、参数篡改、反复调用等试验场景。如果是容器服务,能够模仿 Node、Pod、Container 资源异样或者其上的根底资源异样等。应用此模型能够很清晰表白出以下施行混沌试验须要明确的问题: ...

August 17, 2021 · 2 min · jiezi

关于自然语言处理:你需要知道的智能搜索应用于产业场景的七大问题

近日,虎博科技技术副总裁谭悦做客雷锋网AI金融评论公开课,解说了企业该当如何拥抱以NLP为代表的人工智能新基建,并介绍了NLP(Nature Language Processing,自然语言解决)技术的利用场景及代表性技术利用智能搜寻对企业晋升客户服务品质的价值后劲。以下是想借力AI、NLP(自然语言解决)晋升业务智能属性的从业者们不可不知的七大问题,看看是否正是你所困惑的。 问题1:对于企业级用户来说,智能搜寻可能解决什么痛点? 总结一句话:数据密集型企业和政务机构都须要智能搜寻。首先要晓得是什么企业,所处在什么行业,不同的公司痛点必定是不一样的。对自然语言解决来说,什么样的公司会有比拟大的痛点呢?首先它应该有比拟多的文字类的信息(这些信息最好是线上化的,如果非线上化的话,咱们也能够逐步地把它变成线上化,但这就须要一个预处理过程),并且须要有大量的一些人工来解决这些信息,原先解决这些信息或者获取这些信息的效率是比拟低的,当效率晋升当前能发明出极大的收益。比方金融机构中投资、投研就是十分典型的。 问题2:智能搜寻里如何使用常识图谱? 智能搜寻里咱们其实次要用了两类不同的技术,一个语义模型,一个常识图谱,两者相互配合。常识图谱其实呈现得十分早,很早的时候包含从谷歌大脑、百度知心,心愿把世界上次要的常识都通过一个图谱演绎,这个现实实现也是有很多艰难。这个世界下面的常识其实是十分庞杂的,热门的大家都晓得的有很多,然而有很多其实都暗藏的很深或者须要一些特地精通相熟某个畛域的人士才会晓得理解。所以要把凋谢域全副常识放在图谱外面是很难的。然而一些特定畛域的常识图谱是能够去构建的,比如说基于公司行业概念,基于供应链上下游,基于一些人物和实体关系的这些图谱,当初咱们无时无刻都在用到。咱们通过一些语义模型,从海量数据的统计意义上来构建对这个世界的认知。当常识图谱可能明确关联的时候最好,如果没有,那么通过语义模型来进入一个概率下面的关联,甚至能够用这些概率上的关联来帮忙逐步地构建和拓展常识图谱,所以这二者之间就能够相互配合。具体来讲,个别会在什么畛域用到呢?比方,底层的信息开掘、用户的了解、召回、排序,甚至做一些推演和比拟的时候,都能够用到这样的技术。 问题3:虎博搜寻的智能搜寻计划目前曾经输入了吗,在哪些机构用了,成果怎么样? 咱们第一个切入的场景是金融,曾经向很多出名机构输入了咱们的智能搜寻计划并达成单干。例如,咱们曾经与50%的国内头部券商达成单干,目前也开始笼罩到了大宗商品、交易商、保险、基金、代销、银行等客户。除此之外,咱们正在向更多的畛域扩大,比方政务、大数据中心、媒体、医药等。整体来看,我的项目在施行的时候并不是一次性地全副做完的,会依据不同的场景需要,分阶段进行。公司从去年初开始商业化,目前咱们很多客户都曾经进入到二期、三期的阶段了。 问题4:智能搜寻的思路和做智能营销的思路是不是差不多? 用户产品和商业产品是两条十分不一样的思路,对于用户产品也就是咱们说的智能搜寻来讲,最要害的优化指标,是能不能够比拟精确、疾速、全面的找到用户感兴趣的信息,所以它的评估指标是准确率、召回率、用户点击率、停留时间等等,当然如果有一些显式反馈的机制,如打叉敞开的这种机制的话当然也能够。对于智能营销来讲,它其实跟广告就很像了,它最终思考的是商业收益,也就是转化率,你点得再多,最初没人买单那是不行的。或者说买了单,然而你的投入产出比不行,那么营销策略就是有问题的。所以在这个过程当中,底层算法是有一些相似,但最终要优化的指标不一样,就决定了在这个产品当中使用算法的形式和优化算法的指标有所不同。 问题5:训练算法要怎么解决和客户单干的数据安全问题,尤其是金融行业? 第一,咱们提供私有化部署和定制化开发的空间。第二,为了能让上述过程更高效,咱们把很多性能变成工具化的,把很多算法变成有预训练的,这样能够用于金融机构的外部,对接到机构本人的数据中,在机构本人的零碎里进行更新,疾速地适配到那个环境外面去。 问题6:自然语言解决我的项目落地是私有云还是私有化多,如果是私有化的话应该怎么去迭代模型? 如果是从全行业来讲,其实私有云和私有化都有,具体到金融行业,私有化比拟多。私有云当初处在一个被逐步了解和承受的过程当中。一方面因为数据安全性,另外一方面某些外围业务从法律法规的要求上来讲也须要私有化。但如果是私有化,怎么去迭代模型?咱们的模型的迭代,曾经不肯定非要通过私有云的形式才可能提供,咱们有自动化的迭代模型工具,能够了解为只有有源源不断地把数据,咱们通过工具化的调参、优化就能够有一个模型更新进去。如果原来曾经有的一些技术,咱们能够先做齐全的重构当前,再到金融机构外部来进行测试和重新部署。 问题7:自然语言解决在风控畛域的落地场景有哪些? 传统的银行业务里有本人的风控模型的定义,次要是基于资金、交易、用户或者企业账户的信息。自然语言解决是新涌现出的,用于辅助风控的技术。当初很多危险的起源并不是来自于一欠款没还,或者生产陡增,亦或是有诉讼官司,更多的是来自于全网的另类数据,比如说企业的涉诉信息、自媒体评论等,甚至很多数据可能呈现在微博、知乎、公众号、贴吧甚至是天猫商品评论外面。利用自然语言解决技术能够对这些数据进行全面、零碎的剖析,以提前预判潜在危险,降级风控等级,这就是一个典型的利用场景。

August 16, 2021 · 1 min · jiezi

关于自然语言处理:NLP随笔二

当 AI 在某一个单点工作上的体现靠近或者超过人类的时候,就会给行业带来微小的商机。在视觉分类、检索、匹配、指标检测等各项任务上,随着相干算法越来越精确,业界也开始在大量商业场景中尝试这些技术 深度学习在计算机视觉、语音辨认等感知智能技术上率先取得成功并不是偶尔。深度学习秉承连贯主义学派的范式,相较传统统计机器学习技术的最大进化在于其利用了高于统计办法数个数量级的参数和极其简单的函数组合,通过引入各种非线性和多层级感知能力,形成了远强于统计机器学习模型的拟合能力。ResNet-152 的参数量曾经达到六千万的级别,GPT-2.0 的参数量达到了惊人的 15 亿。而其余上亿甚至数亿级别的网络更是不可胜数。如此简单的模型对数据的拟合能力达到了前所未有的程度,然而同时也极大进步了过拟合的危险。这对数据提出了极高的要求。训练数据的数量、维度、采样平衡度、单条数据自身的浓密度(非0、不稠密的水平),都须要达到极高的程度,能力将过拟合景象升高到可控范畴。 视觉信息(图像、视频)恰好是这样一类天然间断信号:一张图片通常就有数百万甚至上千万像素,而且每个像素上通常都有色彩,数据量大、数据的示意浓密、冗余度也高。往往在失落大量间接视觉信号的状况下,人还能迅速了解图片的语义信息,就是因为天然间断信号,如图像中的场景和物体往往具备视觉、构造和语义上的共性。一个 30MB 的位图图片能被压缩到 2MB 而让人眼根本无奈感知区别;一个 30MB 的 wave 音频文件被压缩到 3MB 的 MP3 还能根本放弃次要旋律和听感,都是因为这类天然间断信号中存在大量不易被人的感官所感知的冗余。 视觉信息这种的丰盛和冗余度,让深度神经网络得以从监督信号中一层层提炼、一层层感知,最终学会局部判断逻辑。深度神经网络在感知智能阶段中在视觉工作和语音工作上的胜利,离不开视觉、语音信号本身的这种数据特点 明天,属于感知智能的视觉和语音利用曾经全面开花,但属于认知智能的自然语言解决却倒退滞后。这种倒退状态与自然语言解决技术中的数据特色也有密不可分的关系。 绝对于图片、语音给出的间接信号,文字是一种高阶形象离散信号。较之图片中的一个像素,文本中一个单元信息密度更大、冗余度更低,往往组成句子的每一个单词、加上单词呈现的程序,能力正确表白出残缺的意思。如何利用单个文本元素(字/词)的意思,以及如何利用语句中的程序信息,是近年来自然语言解决和文本剖析技术的次要摸索脉络 2013 年,词的分布式向量示意(Distributed Representation)呈现之前,如何在计算机中高效示意单个字/词是难以逾越的第一个坎。在只能用One-hot向量来示意字/词的年代,两个近义词的示意之间的关系却齐全独立,语义类似度无奈计算;上示意一个字/词所需的上万维向量中只有一个维度为1,其余维度都为0,稠密度极高。面对这类信号,深度神经网络这类简单的模型所善于的化繁为简的形象、提炼、总结能力便大刀阔斧,因为输出信号曾经极简到了连最根底的自我示意都难以做到。 而分布式词向量将语言的特色示意向前推动了一大步。分布式词向量提出了一个正当的假如:两个词的类似度,能够由他们在多个句子中各自的上下文的类似度去度量,而上下文类似的两个词会在向量空间中由两个靠近的向量来示意。这种做法局部赋予了词向量“语义”,因而咱们不用再让机器去查百科全书通知咱们“苹果”的近义词是“梨子”,而是间接从大量的互联网语料中去学习,原来“苹果”的近义词也能够是“三星”、“华为”。因为人们经常会说“我购买了一个苹果手机”,也常说“我购买了一个三星手机”,模型会敏锐的学习到“苹果”和“三星”在大量语料中呈现时其上下文高度类似,因此认为两个词类似。分布式词向量让无语义、极稠密的 One-hot 向量死于非命,而为大家提供了嵌入语义信息、浓密的特色示意,这才使得深度神经网络在自然语言解决和文本剖析上的利用真正变得可能。 捕获语句中在独立的词汇合根底之上、词序列形成的句子构造信息也是自然语言解决和文本剖析中的一个次要方向。传统条件随机场(CRF)思考了前后相邻元素和以后元素之间的依赖;长短时记忆网络模型(LSTM)以一种衰减模式思考了以后元素之前的元素序列;seq2seq 通过注意力和编解码的机制使得解码时的以后元素不光能用上曾经解码结束的元素序列,还能用上编码前的序列的残缺信息;近期各类基于 Transformer 构造,如 ELMo 、BERT、GPT-2.0、XLNet,则利用两阶段(基于自编码的预训练加基于工作的调优)模式,可能以自监督的形式更好地利用大规模的无标注语料训练不同句子构造中词语之间的关系,并且冲破传统线性序列构造中存在的难以建设长距离、双向依赖关系的问题,学习到品质更高的两头语言模型,再通过调优就能在文本生成、浏览了解、文本分类、信息检索、序列标注等多个工作上获得以后最为当先的准确率。 为自然语言工作退出“常识”,也是另一个新兴重要摸索方向,这个方向则与常识图谱技术紧密结合 就像 BERT、GPT-2.0、XLNet 在两阶段范式上的必由之路,咱们也认为根底语言模型在不同工作上能够存在一些不变性,但在不同场景中肯定要做非凡语料与工作下的调优与适配 但认知智能在金融、公安、媒体等场景中的变动局部给 AI 厂商带来的挑战非常明显。一个算法往往在不同场景下要利用不同的标注语料去造成不同的模型,一个媒体场景的 10 类新闻分类模型,无奈给另一个媒体的 12 类分类体系应用

August 3, 2021 · 1 min · jiezi

关于自然语言处理:Dapr-在阿里云原生的实践

简介:Faas 场景下,比拟吸引用户的是老本和研发效率,老本次要通过按需分配和极致的弹性效率来达成。而利用开发者冀望通过 FaaS 提供多语言的编程环境,晋升研发效率,包含启动工夫、公布工夫、开发的效率。 作者|曹胜利 什么是Service Mesh?从 2010 年的时候,SOA 架构就曾经在中大型互联网公司中开始风行,阿里也在2012 年开源了 Dubbo 。而之后微服务架构开始风行,大量互联网和传统企业都投身到微服务的建设中。在国内逐步造成了Dubbo 和 Spring Cloud 两大微服务营垒。在2016 年的时候,微服务畛域一个更具备前沿性,更加合乎容器和 Kubernetes 的微服务计划正在孕育,这个技术被称为 Service Mesh。时至今日,Service Mesh 理念曾经失去了大范畴遍及,很多公司都在 Service Mesh 畛域有了落地。 Service Mesh 定义Service Mesh 是一个基础设施层,次要围绕服务间通信来进行。当初的云原生利用的服务拓扑构造非常复杂,Service Mesh 能够在这种简单拓扑构造中实现牢靠的申请传送。Service Mesh 是以 Sidecar 的形式运行,利用旁边会运行一个独立的 Service Mesh 过程,Service Mesh 负责近程服务的通信。军用三轮摩托车和 Service Mesh 十分相像,军用三轮摩托车上一个士兵负责开车,一个士兵负责对人发动射击。 Service Mesh 解决的痛点 传统的微服务架构大都以 RPC 通信框架为根底,在 RPC SDK 中提供了服务注册/发现,服务路由,负载平衡,全链路跟踪等能力。利用业务逻辑和 RPC SDK 在同一个过程中,这种形式给传统微服务架构带了很多挑战:中间件能力相干代码侵入到了业务代码中,耦合性很高;推动 RPC SDK 的降级老本十分高,进而也导致了 SDK 版本分化十分重大。同时这种形式对利用开发者的要求比拟高,须要有丰盛的服务治理的运维能力,有中间件的背景常识,应用中间件的门槛偏高。 通过 Service Mesh 形式将一些 RPC 的能力进行下沉,这样能够很好的实现关注点拆散、职责边界的明确。随着容器和 Kubernetes 技术的倒退,Service Mesh 曾经成为云原生的基础设施。 ...

August 3, 2021 · 4 min · jiezi

关于自然语言处理:NLP随笔一

20 世纪50 年代中期到80 年代初期的感知器,20世纪80 年代初期至21世纪初期的专家系统,以及最近十年的深度学习技术,别离是三次热潮的代表性产物 Gartner2018技术成熟度曲线,Gartner每年公布的技术趋势曲线,聚焦将来5到10年间,可能产生微小竞争力的新兴技术 人工智能技术远未达到媒体所宣传的神通广大,无所不能。从图1中的技术倒退现状也可一窥端倪。AlphaGo能够战败最好的人类棋手,但却不可能为你端一杯水。驰名机器人学者Hans Moravec早前说过:机器人感觉容易的,对于人类来讲将是十分难的;反之亦然。 人能够轻松做到听说读写,但对于简单计算很吃力;而机器人很难轻松做到用手抓取物体、以及走上坡路,但能够轻而易举地算出空间火箭的运行轨道。人类能够通过与日俱增的学习,轻松实现各种动作,但对于机器人来讲实现这些简略的动作难如登天。专家们称此实践为“莫拉维克悖论”(Moravec's Paradox)。机器学习专家、驰名的计算机科学和统计学家 Michael I. Jordan近日在《哈佛数据迷信评论》上发表文章,也认为当初被称为AI的许多畛域,实际上是机器学习,而真正的 AI 反动尚未到来。 业界统一认为,AI的三要素是算法,算力和数据 从计算,到感知,再到认知,是大多数人都认同的人工智能技术倒退门路。那么认知智能的倒退现状如何? 首先,让咱们看一下什么是认知智能。复旦大学肖仰华传授已经提到,所谓让机器具备认知智能是指让机器可能像人一样思考,而这种思考能力具体体现在机器可能了解数据、了解语言进而了解事实世界的能力,体现在机器可能解释数据、解释过程进而解释景象的能力,体现在推理、布局等等一系列人类所独有的认知能力上 对于看、听、说、动作而言,感知智能曾经能够达到十分好的成果。而对于推理、情感、联想等能力,还须要更强的认知能力的体现 虚构生命根本能力领域 虚构生命倒退阶段 虚构生命1.0,能够看做是聊天机器人的降级版本。本阶段最重要的特点是单点技术的整合,并能作为整体和人类进行交互。从性能上来看,依然是被动交互为主,但能够联合对用户的认知,进行用户画像和被动举荐。 咱们目前正在处于虚构生命的1.0阶段。在这个阶段,多轮对话、凋谢域对话、上下文了解、个性化问答、一致性和平安回复等依然是亟待解决的技术难题。同时,虚构生命也须要找到可落地的场景,做好特定畛域的技术冲破。 虚构生命2.0,是目前正在致力前行的方向,在这个阶段,多模态技术整合已齐全成熟,虚构生命状态更为多样性,具备基于海量数据的联结推理及联想,对自我和用户都有了全面的认知,并可疾速进行人格定制。实现这个阶段可能须要3-5年。 虚构生命3.0, 初步达到强人工智能,具备超过人类的综合感知能力,并领有全面的推理、联想和认知,具备自我意识,并能达到人类程度的天然交互。随着技术的提高,咱们期待在将来十年至三十年实现虚构生命的3.0。 语言是次要以发声为根底来传递信息的符号零碎,是人类重要的交际工具和存在形式之一。作用于人与人的关系时,是表白互相反馈的中介;作用于人和主观世界的关系时,是意识事物的工具;作用于文化时,是文化信息的载体(起源:维基百科)。语言与逻辑相干,而人类的思维逻辑最为欠缺 自底向上,自然语言解决须要通过对字、词、短语、句子、段落、篇章的剖析,使得计算机可能了解文本的意义 比方和机器人对话的过程中,对于音乐话题的了解,就须要用到命名实体辨认、实体链接等技术。举一个简略的例子,“我真的十分喜爱杰伦的双截棍”,就须要判断杰伦是一个人名,链接到知识库中“周杰伦”这样一个歌手实体,并且“双截棍”是一个歌名而不是一种器械。同时,还能够进行情感判断,是一个侧面的“喜爱”的情感。 传统的自然语言解决技术,还是以统计学和机器学习为主,同时须要用到大量的规定。近十年来,深度学习技术的衰亡,也带来了自然语言解决技术的冲破。这所有还须要从语言的示意开始说起。 家喻户晓,计算机善于解决符号,因而,自然语言须要被转化为一个机器敌对的模式,使得计算机可能疾速解决。一个很典型的示意办法是词汇的独热(one-hot)示意,也就是相当于每个词在词汇表里都有一个特定的地位。比如说有一个10000个词的词汇表,而“国王”是词汇表里的第500个词,那么“国王”就能够示意为一个一维向量,只有第500个地位是1,其余9999个地位都是0。但这种示意办法的问题很多,对语义相近但组成不同的词或句子如“国王”和“女王”,利用独热示意的向量内积,无奈精确的判断两者之间的类似度。 2013年,Tomas Mikolov等人在谷歌开发了一个基于神经网络的词嵌入(word embedding)学习办法Word2Vec,岂但大大缩短了词汇的示意向量的长度,而且可能更好的体现语义信息。通过这种嵌入办法能够很好的解决“国王”-“男人”=“女王”-“女人”这类问题。感兴趣的读者能够参考互联网上大量的对于词嵌入的材料。 计算机可能疾速解决自然语言之后,传统的机器学习办法也进一步被深度学习所颠覆。相干算法在近年来的迭代速度十分快。以语言模型(Language Model)预训练方法为例,代表性办法有Transformer,ELMo,Open AI GPT,BERT,GPT2以及最新的XLNet。其中,Transformer于2017年6月被提出。ELMo的发表工夫是2018年2月,刷新了过后所有的SOTA(State Of The Art)后果。 不到4个月,Open AI在6月,基于Transformer公布了GPT办法,刷新了9个SOTA后果。又过了4个月,横空出世的BERT又刷新了11个SOTA后果。2019年2月,Open AI公布的GPT2,蕴含15亿参数,刷新了11项工作的SOTA后果。而2019年6月,CMU 与谷歌大脑提出了全新 XLNet,在 20 个工作上超过了 BERT 的体现,并在 18 个工作上获得了以后最佳成果。 除了算法和算力的提高,还有一个重要的起因在于,以前的自然语言解决钻研,更多的是监督学习,须要大量的标注数据,老本高且品质难以管制,而以BERT为代表的深度学习办法,间接在无标注的文本上做出预训练模型。在人类历史上,无监督数据是海量的,也就代表着这些模型的晋升空间还有很大。2019年7月11日,Google AI发表论文,就利用了惊人的250亿平行句对的训练样本。其利用成果咱们也刮目相待。 尝试用技术模仿人类的实在对话,在凋谢畛域就是个伪命题。因为在人类的对话过程中,一句话中所表白出的信息,不只是文字自身,还包含世界观、情绪、环境、上下文、语音、表情、对话者之间的关系等。 比如说“今天天气不错”,在晚上拥挤的电梯中和共事说,在秋游的过程中和驴友说,走在大巷上的男女朋友之间说,在滂沱大雨中对伙伴说,很可能代表齐全不同的意思。在人类对话中须要思考到的因素包含:谈话者和听者的动态世界观、动静情绪、两者的关系,以及上下文和所处环境等 而且,以上这些都不是独立因素,整合起来,能力真正反映一句话或者一个词所蕴含的意思。这就是人类语言的微妙之处。同时,人类在交互过程中,并不是等对方说完一句话才进行信息处理,而是随着说出的每一个字,一直的进行脑补,在对方说完之前就很可能理解到其所有的信息。再进一步,人类有很强的纠错性能,在进行多轮交互的时候,可能依据对方的反馈,修改本人的了解,达到单方的信息同步。 在上一节中,咱们也提到,自然语言解决技术很难解决推理问题。而推理是认知智能的重要组成部分。比如说对于问题“姚明的老婆的女儿的国籍是什么?”,一个可行的解决方案,就是通过大规模百科知识图谱来进行推理查问。 常识图谱被认为是从感知智能通往认知智能的重要基石。一个很简略的起因就是,没有常识的机器人不可能实现认知智能。图灵奖获得者,常识工程创始人Edward Feigenbaum已经提到:“Knowledge is the power in AI system”。张钹院士也提到,“没有常识的AI不是真正的AI”。 ...

August 3, 2021 · 1 min · jiezi

关于自然语言处理:阿里集团业务驱动的升级Dubbo-30-的演进思路

简介:阿里云在 2020年底提出了“三位一体”理念,指标是心愿将“自研技术”、“开源我的项目”、“商业产品”造成对立的技术体系,令技术的价值能够达到最大化。Dubbo 3.0 作为三位一体架构的首推计划,在团体内被寄托了厚望。它完满交融了外部 HSF 的个性,人造领有高性能、高可用的外围能力,咱们冀望用它来解决外部落地问题,做到技术栈对立。本文将分享Dubbo 3.0的演进思路以及如何帮忙用户享受云原生带来的技术红利。作者 | 远云 三位一体2020年底,阿里云提出了“三位一体”的理念,指标是心愿将“自研技术”、“开源我的项目”、“商业产品”造成对立的技术体系,令技术的价值能够达到最大化。 阿里团体外部的 HSF 框架在经验了多年双十一流量洪峰的考验后,锤炼出了高性能和高可用的外围竞争力。而对于 Dubbo,作为国内外最受欢迎的服务治理框架之一,它的开源亲和性就不必再多说了。 Dubbo 3.0 作为三位一体架构的首推计划,在团体内被寄予厚望。它完满交融了外部 HSF 的个性,人造领有高性能、高可用的外围能力,咱们冀望用它来解决外部落地问题,做到技术栈对立。目前在考拉曾经大规模落地,将来也会在泛滥外围场景进行落地,并承载 618、双十一等简单的业务场景。 Dubbo 3.0 带来的益处 在具体阐明 Dubbo 3.0 的变动细节之前,先从两个方面说一说降级到了 Dubbo 3.0  能带来什么益处。 首先是,Dubbo 3.0 会着力晋升大规模集群实际中的性能与稳定性,通过优化数据存储形式来升高单机资源损耗,并基于此保障超大规模集群的程度扩容的状况下集群的稳定性。同时,Dubbo 3.0 提出了柔性集群的概念,可能在异构体系下无效保障和进步全链路总体的可靠性和资源的利用率。 第二点是 Dubbo 3.0 代表着 Dubbo 全面拥抱云原生的里程碑。以后 Dubbo 在国内外有着基数微小的用户群体,而随着云原生时代的到来,这些用户上云的需要越来越强烈。Dubbo 3.0 将提供一整套的解决方案、迁徙门路与最佳实际,来帮忙企业实现云原生转型,从而享受云原生带来的红利。 1、业务收益 那么站在业务应⽤的视角来看,如果降级到 Dubbo 3.0,能取得哪些具体的收益呢? 首先,在性能与资源利用率⽅面,Dubbo 3.0 能无效升高框架带来的额定资源耗费,从而⼤幅晋升资源利用率。 从单机视⻆,Dubbo 3.0 能节俭约 50% 的内存占⽤;从集群视角,Dubbo 3.0 能⽀持的集群实例规模以百万计,为将来更大规模的业务扩容打下基础;而 Dubbo 3.0 对 Reactive Stream 通信模型的反对,在⼀些业务场景下能带来整体吞吐量的⼤幅晋升。 其次,Dubbo 3.0 给业务架构降级带来了更多的可能性。最直观的就是通信协议的降级,给业务架构带来了更多抉择。 Dubbo 原来的协定其实在⼀定水平上解放了微服务接⼊⽅式。举个例子,挪动端、前端业务要接入 Dubbo 的后端服务,须要通过网关层的协定转换;再比方,Dubbo 只⽀持 request-response 模式的通信,这使得⼀些须要流式传输或反向通信的场景⽆法失去很好的反对。 最初,Dubbo 3.0 给业务侧的云原生降级带来了整体的解决方案。不论是底层基础设施降级带来的被动变动,还是业务为解决痛点问题进行的被动降级,当业务降级到云原生,Dubbo 3.0 通过给出云原生解决方案,能够帮忙业务产品疾速接入云原生。 Dubbo 3.0 概览 ...

July 29, 2021 · 3 min · jiezi

关于自然语言处理:更丰富的云原生应用治理能力让业务快速生长

简介:据 Gartner 的报告显示,到 2022 年将有 50% 的应用软件将容器化,2023 年高可控利用 PaaS 的市场规模将达到 332 亿元,年复合增长率约为 18.7%。企业数字化转型的路线上,踊跃拥抱云原生,减速业务零碎容器化与微服务化革新成为必然选择。为了更全面的为云化各阶段政企服务,阿里云混合云重磅推出:麻利版云原生PaaS场景。 据 Gartner 的报告显示,到 2022 年将有 50% 的应用软件将容器化,2023 年高可控利用 PaaS 的市场规模将达到 332 亿元,年复合增长率约为 18.7%。早在2019年,RightScale数据显示,在大型企业中 k8s 的使用率已达到了 60%,像 OpenShift、Cloud Foundry 和 Rancher 这类容器利用平台的使用率也别离达到了34%、21% 和11%。 企业数字化转型的路线上,踊跃拥抱云原生,减速业务零碎容器化与微服务化革新成为必然选择。 为了更全面的为云化各阶段政企服务,阿里云混合云重磅推出:麻利版云原生PaaS场景。 产品介绍 麻利版云原生PaaS场景,是一款基于Kubernetes的高效能企业级容器云平台,在异构的混合云基础设施上,提供资源优化调度和跨平台适配能力。用以打造满足规模、性能、可靠性、可观测性和业务连续性等要求的微服务和音讯利用零碎。旨在帮忙企业在建好云的根底上进一步实现管好云和用好云。 麻利版云原生PaaS场景 产品矩阵 产品性能 麻利版云原生PaaS场景的性能分为面向下层利用的开发运维治理和面向底层 IaaS 的平台运维治理两大部分。 【开发运维治理】 麻利版云原生PaaS场景,次要提供了像音讯和事务等中间件能力,服务治理和链路追踪等能力能够拓展到多语言畛域,Java 微服务方面,原生的 Spring Cloud 和 Dubbo 利用在不经批改的状况下即可取得诸如流量管控、离群摘除、服务契约、无损下线和服务鉴权等性能。利用在公布、启动和进行的过程中,能够进行分批和灰度等操作,且具备可视化的公布单和智能诊断能力。最初内置的流水线性能能够实现继续集成和继续交付的 DevOps 能力。 【平台运维治理】 麻利版云原生PaaS场景,将底层 IaaS 通过容器进行封装,反对创立客用集群和纳管已有集群,且能够反对集群级别的监控、弹性伸缩和故障隔离及灾备等。在整个零碎平台层面,麻利版云原生PaaS场景通过严格的性能、稳定性、安全性和可靠性测试,并具备高可用能力。同时为了满足企业级须要,还提供有诸如组织治理、租户治理、权限隔离和资源隔离等能力。 产品劣势 【轻量化】 在 EDAS、AECP 和 ARMS 的典型输入场景下,管控资源比麻利版v3.5 缩小了约 50%。 【高可用】 除了强壮的基础设施保障之外,外围组件具备严格的高可用能力,主动巡检、故障隔离和容灾备份等性能能够及时发现问题,并及时隔离相干故障设施及服务,在最极其的场景下,提供了从备份复原的能力。 【优体验】 作为一个残缺的生态场景,麻利版云原生PaaS场景中的许多产品都进行了深度集成,容器、利用、可观测、高可用和多语言等相干产品更是具备无缝的产品应用体验。 【完整性】 从芯片到硬件、从物理机到虚拟机、从操作系统到容器集群、从单体利用到微服务利用、从同步调用到异步音讯,麻利版云原生PaaS场景都能提供残缺的产品解决方案。 ...

July 28, 2021 · 1 min · jiezi

关于自然语言处理:Dubbo-跨语言调用神兽dubbogopixiu

简介:Pixiu 是基于 Dubbogo 的云原生、高性能、可扩大的微服务 API 网关。作为一款网关产品,Pixiu 帮忙用户轻松创立、公布、保护、监控和爱护任意规模的 API ,承受和解决成千上万个并发 API 调用,包含流量治理、 CORS 反对、受权和访问控制、限度、监控,以及 API 版本治理。Pixiu 是什么 在答复 Pixiu 是什么之前,咱们简略解释一下 Dubbo 是什么。Dubbo 是一个开源的高性能 RPC 框架,有着丰盛的服务治理能力以及优良的扩大能力。Dubbo 更扩大出 Dubbo-go,为用户提供了 Golang 的 Dubbo 解决方案,买通了两种语言之间的隔膜,使 Dubbo 更加贴近云原生。 Dubbo-go 作为 Golang 服务,实现与 Dubbo 服务之间的互相调用。然而,在日常应用场景中,用户往往有把 Dubbo 服务以 RESTful 格调向外裸露的需要同时也要兼顾外部 Dubbo 调用。为了解决这种场景,作为 Dubbo API 网关的 Pixiu (中文: 貔貅, 曾用名 dubbo-go-proxy) 便应运而生。之所以采纳 Pixiu 这个名称,是因为 Java 同类产品 Zuul 的意象是一个东方怪兽,Pixiu 作为一个国产产品,就用了咱们中国的一个相似的神兽貔貅作为项目名称。也同时表白了 Dubbo 社区心愿扩大出一整套云原生生态链的信心。 目前 Dubbo 多语言生态,倒退最好的天然是 Java,其次是 Golang,其余语言都差强人意。dubbo-go-pixiu 我的项目是一个基于 dubbo-go 倒退起来的我的项目,目前接口协议层反对的是七层的 HTTP 申请调用,打算在将来的 0.5 版本中反对 gRPC 申请调用,其另外一个使命是作为一种新的 dubbo 多语言解决方案。 ...

July 21, 2021 · 4 min · jiezi

关于自然语言处理:可用于飞书上的机器人上线啦

01 吾来机器人新增飞书渠道“吾来-渠道设置-飞书机器人”中增加相干参数即可,机器人的操作没有变动。 在飞书上要操作这些中央: 1.创立机器人利用 2.在飞书渠道配置相应配置 截止发文,尽管机器人能被增加到飞书群,可是还不能在群中回复,期待技术小哥的降级吧~~ 留神:如果想要获取员工部门、地点等信息作为属性须要在飞书上多选一些权限(目前曾经反对抉择的权限,如下图): 02 类似说法学习新增操作记录类似说法学习新增操作记录和导出。 03 工作机器人优化1.工作对话画布上所有单元跳转反对搜寻; 2.工作机器人新增老手疏导等其余若干体验优化 04 会话日志新增满意度评估导出的会话日志中,新增满意度详情,自主统计更不便。 PS:小编还是感觉问答满意度统计页面就很难看。 05 吾来反对UiBot账号登录吾来反对UiBot登录,以反对AI训练师中级考试上线。 本文由 来也科技 吾来对话机器人平台 公布

July 14, 2021 · 1 min · jiezi

关于自然语言处理:搜索运营有哪些玩法你知道吗

简介:大部分产品的搜寻都是技术同学在一直的优化迭代,很容易漠视能够直接触达业务侧的经营同学的作用和价值。那明天就和大家分享下经营同学在搜寻上有哪些玩法?阿里云凋谢搜寻作为一站式可视化搜寻开发平台,产品/经营同学能够在控制台参加哪些优化动作呢?浏览时长:5分钟 适读人群:搜寻经营岗位、产品岗位、及对搜寻技术感兴趣的人; 搜寻是每个产品必备的性能,也是业务增长最重要的一项,信息越丰盛的产品越会器重搜寻能力,并且搜寻场景下是用户“被动”产生内容,这就须要搜寻技术能够精准剖析召回,命中搜寻用意,从而能力达到业务转化的目标。 市面上大部分产品的搜寻都是技术同学在一直的优化迭代,很容易漠视能够直接触达业务侧的经营同学的作用和价值。那明天就和大家分享下经营同学在搜寻上有哪些玩法?阿里云凋谢搜寻作为一站式可视化搜寻开发平台,产品/经营同学能够在控制台参加哪些优化动作呢? 在搜寻上能够做哪些经营工作那?与产品技术协同,对搜寻指标负责,继续跟进搜寻能力迭代;通过剖析业务指标输入搜寻评测报告,制订优化解决方案,晋升产品能力和用户体验;从产品和经营层面做用户体验突破性摸索,联合搜寻疏导性能配合经营计划,晋升业务转化;依据法律法规,把控内容安全性,及时处理平台内不良信息内容;经营同学难点不足搜寻相干技术常识储备,技术理念、逻辑不清晰,不利于经营工作的发展和我的项目的推动;改写、分词、召回、排序在搜寻中如何运作,经营能够参加哪些优化?个性化搜寻能够有哪些玩法?如何优化搜寻进步用户商业变现?需要解决周期长,难以做到及时疾速响应,业务倒退缓慢;企业不具备欠缺的数据管理能力,经营不能实时查看搜寻业务指标数据做出相应经营剖析和经营决策;外围搜寻经营数据:搜寻,流量,行为,成交,用户剖析,Query剖析等;个性化搜寻疏导:下拉提醒、热词、底纹等数据分析;搜寻外围逻辑解读搜寻业务流程: 1.解读用户输出的信息查问语义了解性能形容:将用户输出的query“翻译”成零碎能够了解的意思,实现人与计算机之间的无效通信,并去剖析用户的搜寻用意,召回最相干的内容/商品,解决用户搜寻诉求。 查问语义了解中的每一个性能都将间接影响用户搜寻用意的剖析和召回成果,从而间接影响点击率,跳出率,转化率等业务指标。同时也须要经营,产品,技术各方联合本身产品状况一直优化摸索。 示例:搜寻“aj1北卡兰新款球鞋”计算机做了以下这些查问剖析解决 2.筛选用户用意相关性内容对用户的query进行解读之后,会失去一些标准化的词,这些词会对应相干的内容,对内容的筛选会波及到两个概念:召回率和准确率。 准确率指的是搜到内容中相干内容的比例;召回率指的是搜寻到内容中,真正被搜寻进去的比例。什么是召回? 通过用户查问的关键词进行分词,将分词后的词组通过查找倒排链表疾速定位到文档,这个过程称为召回; 当这两个指标的比例越靠近1,成果越好,然而有些状况下,准确率和召回率是一组互相矛盾的指标,比方只搜寻出一个搜寻后果,且是用户真正的用意,那准确率就达到了100%,然而召回率却很低。这两个概念在搜寻优化中是关键性指标,波及到更高级的搜寻机制。 留神:不是所有蕴含用户query关键词的后果都应该被召回。 3.对搜寻后果进行排序query查问剖析被召回后,把最合乎用户用意的内容/商品进行正当的排序,晋升点击率避免用户跳出。接下来介绍搜寻的排序规定。 粗排:对搜寻后果进行第一轮的海选,因为要遍历所有的文档,所以粗排要尽量简略(选取对文档最重要的几项内容,如新闻类能够选用文本色及时效性),依照表达式对文档进行算分,并依照算分后果进行排序。精排:对第一轮的粗排后果选取TOPN个依照精排进行第二轮更细节的分值计算,依照分值进行最终的排序,并返回给用户。排序表达式:用于管制搜寻后果文档排序的数学表达式,反对根本运算(算术运算、关系运算、逻辑运算、位运算、条件运算)、数学函数和排序特色等。使用排序表达式能够进行排序成果的深度调优。4.个性化搜寻周边性能:(经营划重点!!)4.1热搜底纹热搜底纹是一个残缺搜索引擎必备的基本功能,通常占据着搜寻框入口的重要地位,提供不可或缺的业务价值。处于搜索引擎整个工作流程的最上游,为搜寻优化起铺垫作用,能够大大降低query了解、排序、经营干涉等环节的调优难度,并且联合经营策略能够有比拟大的施展空间。 从用户的角度来看,热搜底纹个别能够满足如下的需要: 我想轻易逛逛,不晓得搜什么好,能不能给我举荐一些优质的查问词?我想晓得大家都搜了些什么,随大流不会错最好能联合我的趣味举荐query,也要有多样性,我既想看感兴趣的内容,又想摸索一些趣味之外的内容从运营者的角度,热搜和底纹能够提供这样的价值: 我想晓得哪些query被搜得最多,热门query是用户趣味的风向标,通过剖析热门query能够把握用户的趣味走向,对制订经营策略提供决策依据我想给用户举荐一些优质query,在用户有输出的状况下,下拉提醒疏导用户用意,然而在没有任何输出的时候,如何举荐优质query呢?如果给用户举荐热门query,不能总是固定给出最热的那几个query,须要思考到多样性,一方面兼顾用户体验,另一方面须要给局部次热门query曝光机会通过剖析用户的行为,联合用户的趣味来举荐query,既兼顾用户体验,又能够对症下药的晋升业务指标✅经营能够重点关注的业务指标: 热搜: 热搜PV:当日申请热搜(且返回胜利)的次数;热搜UV:当日申请过热搜的用户数;热搜UV-CTR:用户对热搜后果的点击状况;热搜PV-CTR:热搜的点击状况疏导搜寻PV-CTR:掂量热搜疏导搜寻的召回、排序成果;疏导搜寻GMV:掂量热搜疏导购买成果;疏导搜寻珍藏/评论/点赞转化率:掂量热搜疏导珍藏/评论/点赞成果;底纹: 底纹PV:当日申请底纹(且返回胜利)的次数;底纹UV:当日申请过底纹的用户数;底纹UV-CTR:用户对底纹后果的点击状况;底纹PV-CTR:底纹的点击状况;疏导搜寻PV-CTR:掂量底纹疏导搜寻的召回、排序成果;疏导搜寻GMV:掂量底纹疏导购买成果;疏导搜寻珍藏/评论/点赞转化率:掂量底纹疏导珍藏/评论/点赞成果;4.2下拉提醒下拉提醒是搜寻服务的根底性能,在用户输出查问词的过程中,智能举荐候选query,进步用户输出效率,帮忙用户尽快找到想要的内容。能够通过中文前缀,拼音全拼,拼音首字母简拼查问以及汉字加拼音,分词后前缀,中文同音别字等查问下拉提醒的候选query. ✅经营能够重点关注的下拉提醒业务指标: 下拉提醒PV:当日申请下拉提醒(且返回胜利)的次数;下拉提醒UV:当日申请过下拉提醒的用户数;下拉提醒PV-CTR:下拉提醒的点击状况,掂量下拉提醒召回、排序的成果;下拉提醒UV-CTR:用户对下拉提醒后果的点击状况,掂量下拉提醒召回、排序的成果;疏导搜寻GMV:下拉提醒疏导搜寻的成交金额;疏导搜寻珍藏/评论/点赞转化率:掂量下拉提醒疏导珍藏/评论/点赞成果;凋谢搜寻平台介绍凋谢搜寻(OpenSearch)阿里云是自主研发的大规模分布式搜索引擎搭建的一站式智能搜寻业务开发平台,无需开发,一键接入即可取得高质量搜寻服务,内置阿里系技术多年积淀的外围搜索引擎,行业前沿的搜寻能力和算法能力,并充沛凋谢反对外部调用客户本人的算法模型,满足各行业各场景的业务需要,与客户彼此成就、独特成长; 经营亮点及劣势:可视化控制台,模块清晰,对老手人员敌对,操作简略易上手,无需期待开发周期,不便技术以外的经营产品人员依据业务状况随时成果调优;业界当先技术打造独有的行业搜寻模板,一键配置,内置行业搜寻能力,无需开发训练即可具备行业属性的高质量搜寻能力;反对开发者的算法模型即时回流至线上,依据本身业务状况进行模型开发叠加在现有平台能力上;反对A/B Test,不便业务在全量应用前能够调配肯定比例的流量进行先验,防止盲用带来对线上业务的负面影响。反对云监控报警,通过云监控对利用的存储容量、计算资源、查问QPS等指标进行监控。帮忙监测利用的应用状况,并反对对监控项设置报警规定,时刻掌握业务动向。反对定制化搜寻服务无需组建技术团队解决业务难点,顶尖阿里技术、算法工程团队同学为您排忧解难;经营/产品可操作的菜单及性能利用治理相干1. 查看:利用列表,利用详情,利用规格,利用云监控; 2. 操作:秒级扩缩容,变规格,轻松应答大促等流动; 搜索算法核心1.查看:所有菜单均可查看 2.召回配置: a. 分词治理: i.测试分词成果 ii.增加、删除、批改自定义分词的分词词条; b.查问剖析: i. 搜寻测试 ii.配置查问剖析规定:改写策略、性能抉择 配置改写策略:可管制参加召回的term是以AND或OR关系蕴含在查问后果中。改写间接影响召回后果,可依据业务状况进行调整。 示例:如Query为:“耐克运动鞋”,分词后term为:“耐克/静止/鞋” 连接符为AND时:Query改写后果为(default:'耐克' AND default:'静止' AND default:'鞋')连接符为OR时:Query改写后果为(default:'耐克' OR default:'静止' OR default:'鞋')查问剖析性能抉择:抉择行业模板默认为全选状态。 c.词典治理: 增加、删除、批改各性能词典的干涉词条:拼写纠错、停用词、同义词、实体辨认、词权重、类目预测干涉 3.排序配置: a. 排序策略管理:依据业务需要配置排序表达式,优化排序成果 b. 搜寻测试:能够查看各函数算分后果 4.搜寻疏导性能: a. 下拉提醒: 依据不同行业数据特点,下拉提醒性能提供了相应优化模板。目前已反对通用、电商和内容行业模板; i.查看下拉提醒相干报表、成果预览 ii.抉择配置黑白名单 iii.个性化配置:高频搜索词,用户搜寻频率作为候选词排序根据,优先将满足举荐条件的用户搜寻频率较高的词作为下拉提醒候选query。历史搜索词,优先展现用户之前搜寻过的query。智能排序,依据点击、购买等用户行为信息智能排序候选query。 b. 热搜与底纹: i.查看热搜底纹相干报表、成果预览 ii.抉择配置黑白名单 iii.成果优化-行为数据:基于统计搜寻日志的热搜/底纹后果能够满足冷启动阶段的需要,在这个性能开始发挥作用后,倡议关联热搜/底纹的用户点击事件,零碎外部通过采集行为数据来进一步优化成果,采集了行为数据有如下几个收益: 能够统计失去各项指标,诸如疏导搜寻的pv、uv、无后果率等,用来掂量这个性能的应用成果,为后续的改良提供根据。能够剖析用户群的趣味走向,为制订经营策略提供根据。能够采纳智能化的伎俩来举荐query,通过用户的点击行为对数据进行标注,可能依据不同的优化指标来训练模型(默认按点击率优化),通过模型来举荐query,具备较强的泛化能力。能够做个性化的热搜词举荐,晓得了用户点过哪些query,就能够联合用户的偏好做出有针对性的举荐。 ...

July 12, 2021 · 1 min · jiezi

关于自然语言处理:做人工智能时代的先行者来也科技上线AI训练师中级考试

前言十四五期间,国家大力支持人工智能等前沿畛域倒退,开局之年,快来考一个人工智能训练师证书吧。 自来也科技成立起,公司就一直的应用人工智能技术帮忙公司业务的倒退,在外部进行数据标注工作,施行我的项目的过程中也在一直的造就客户侧AI训练师,并小范畴推出了吾来教学小程序进行教学和考试认证工作。 近日,Chatbot人工智能训练师认证(中级)已正式上线来也官网(https://academy.laiye.com/cha...)。 考试介绍Chatbot是重要的人机交互窗口,让机器人了解人类语言是新时代的思维挑战。除了认证之外,来也Chatbot学院还提供系统化的对话机器人教学视频和培训手册供大家学习。 不同于以往,本次考试侧重于考查考生的实际操作能力,在拟真环境中进行测验,实现后零碎主动测评。 考核采纳游戏化的模式,是关卡闯关模式,每关依据完成度和用例通过状况分为三个等级,一星即可通关,但也心愿大家能敢于谋求更高分数。 本次考试共分六关,别离重点考查了用户问题对应知识点的准确分辨,在实在语料环境下的疾速利用多模块多功能进行开掘和标注,简略工作多轮会话的搭建,能应答不按程序说出要害信息的工作对话,能够在工作过程中应答问答的工作会话以及在工作多轮对话中应用接口向其余零碎服务传递信息。 每关的评分标准如下: 关卡考试用例数⭐️⭐️⭐️⭐️⭐️⭐️第一关132110125130第二关100809095第三关100809095第四关100809095第五关100809095第六关50404548注意事项所有机器人回复的话术不能更改,须要应用题目文件中的话术,零碎主动评分。 只有自己来也学院账号进入能力参加考试!并取得价值数万元的30天专业版机器人搭建平台的性能体验权限! 大家能够在“来也学院”利用视频、文档进行学习,加入并通过考试。 价格参考来也私有云SaaS专业版版本历史成交价格。本文由 来也科技 吾来对话机器人平台 公布

July 9, 2021 · 1 min · jiezi

关于自然语言处理:2021第一季度云智能生态技术服务能力盘点

简介:为更好的让大家理解阿里云技术服务人才的能力,阿里云从技术服务培训认证的视角,继续就阿里云生态技术服务能力进行总结和盘点,便于各生态搭档、云计算技术服务者、开发者理解。2021年第一季度,咱们推出特别篇——浩鲸智能能力盘点。以下为报告全文供大家查阅。 将来,咱们将继续关注生态技术服务能力,增多视角和细化维度,定期提供各类报告供大家理解。 欢送各位提出宝贵意见倡议,一起共创精彩。2021年,云计算作为整个数字经济的基础设施,失去了前所未有的倒退契机,仍旧放弃着高速增长的态势。2021年第一季度阿里云生态技术服务赋能认证学员数量增速达53.62%,搭档增速达23.8%。 认证整体单方向深耕、多方向协调、高阶层升级趋势逐渐浮现,其中L4增长率高达57.14%。 第一季度持证排行榜浩鲸新智能稳居榜首,中软国内、国网信通亿力、信雅达新登排行榜。新增阿里云智能客服系列岗位热度攀升。单人最多持证数已由2020年的8个增长到10个,且实现多方向笼罩。 “态斗打算”公布三个月,已产生7名学分过万的同学,其中最高学分翁同学的学习历程,咱们来具体为大家进行解读。 一季度L3考试通过率显著晋升,通过率100%的搭档数量达27家,满分学员数量亦是可观。 作为阿里云生态内重要搭档,浩鲸智能的认证数量常居榜首,实现全方向能力笼罩,以训促建、以战促强,逐渐打造了一支来之即战的技术交付劲旅,本期盘点特别篇咱们来具体解构它的标杆化能力。     全文完,感激浏览!     更多对于阿里云技术服务认证信息请拜访:       https://www.aliyun.com/gts/partner/training 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

June 28, 2021 · 1 min · jiezi

关于自然语言处理:电商搜索能力解读实体识别NER

简介:搜寻是电商行业业务转化中最重要的性能,那你理解其中的技术实现原理吗?一起来理解基于多年淘系全量数据和知识库深刻优化的电商行业实体辨认的能力吧,在查问剖析和类目预测中能带来哪些优化成果那~实体辨认性能介绍实体辨认,全称命名实体辨认(Named Entity Recognition,简称NER),指对电商查问词中的具备特定意义的语义实体进行实体词打标识别其中的品牌、品类、品类润饰、型号、样式等40品种别 。查问剖析依据辨认的后果,根据实体类型的权重对查问词进行改写,使得召回的文档合乎查问的用意。 <span class="lake-fontsize-11">类别</span><span class="lake-fontsize-11">一般词</span><span class="lake-fontsize-11">材质</span><span class="lake-fontsize-11">格调</span><span class="lake-fontsize-11">样式元素</span><span class="lake-fontsize-11">色彩</span><span class="lake-fontsize-11">品牌</span><span class="lake-fontsize-11">性能效用</span><span class="lake-fontsize-11">尺寸规格</span><span class="lake-fontsize-11">品质成色</span><span class="lake-fontsize-11">场景</span><span class="lake-fontsize-11">人群</span><span class="lake-fontsize-11">套装</span><span class="lake-fontsize-11">工夫节令</span><span class="lake-fontsize-11">型号</span><span class="lake-fontsize-11">新品</span><span class="lake-fontsize-11">系列</span><span class="lake-fontsize-11">营销服务</span><span class="lake-fontsize-11">地点地区</span><span class="lake-fontsize-11">人名</span><span class="lake-fontsize-11">娱乐书文曲</span><span class="lake-fontsize-11">机构实体</span><span class="lake-fontsize-11">影视名称</span><span class="lake-fontsize-11">游戏名称</span><span class="lake-fontsize-11">数字</span><span class="lake-fontsize-11">单位</span><span class="lake-fontsize-11">品类</span><span class="lake-fontsize-11">新词</span><span class="lake-fontsize-11">润饰</span><span class="lake-fontsize-11">专有名词</span><span class="lake-fontsize-11">品类修饰词</span><span class="lake-fontsize-11">符号</span><span class="lake-fontsize-11">前缀</span><span class="lake-fontsize-11">后缀</span><span class="lake-fontsize-11">赠送</span><span class="lake-fontsize-11">否定</span><span class="lake-fontsize-11">代理</span>## 凋谢搜寻实体辨认劣势基于多年淘系全量数据和知识库深刻优化电商行业实体辨认能力,解决品牌更新快歧义大,品类存在润饰关系,品牌品类搭配关系等问题。解决尤其在中文上因为不足人造分隔符,面临边界歧义、语义歧义、嵌套歧义等艰难。## 实体辨认在查问剖析中作用1.作用于query改写: 凋谢搜寻查问剖析能够改写两个query,第一个query更精准,第二个query缩小了参加召回的term,旨在当更准确的召回后果数有余时,用第二个query进行扩充召回。query改写次要依据实体的重要性,召回时保留重要性高的实体词,对重要性低的局部不影响召回,只影响算法排序。实现形式:   实体重要性目前分为高、中、低三档。其中“品牌、品类”是在低档,也就是最重要的;其次“格调、样式、色彩、节令、人群、地点…”处于中档;最初“尺寸、修饰词、影响服务、系列、单位…”处于低档,能够抛弃不参加召回。2.与类目预测一起应用 query中不同的实体对类目标影响是不一样的,因而,当原query没有类目预测的后果时,会依据肯定的规定,去掉和类目用意无关或者相关度低的词后,进行类目预测,这对长尾query的类目预测会有很大的帮忙.示例:“杨幂(人名)同款(后缀)秋季(工夫节令)修身(样式元素)连衣裙(品类)”丢词后的query依照优先级排序别离为:秋季修身连衣裙秋季连衣裙 修身连衣裙 连衣裙零碎会依照上述程序顺次查问类目预测的后果更多类目预测性能详介绍:https://help.aliyun.com/document\_detail/69036.html## 电商行业增强版实体辨认能力再降级凋谢搜寻打造独有的行业智能搜寻解决方案,推出电商行业增强版,其中在实体辨认能力上进行了再降级,使得实体打标成果更好,能够更精准的定位用户搜寻用意满足商品搜寻需要。* 现有框架知识库更新基于老模型链路从新构建全量知识库,F1 69 -> 74* 标注训练数据,应用神经网络模型标注10万条数据,耗时4个月,BiLSTM-CRF模型,F1 74 -> 78* 神经网络模型联合知识库技术创新GraphNER框架联合监督模型与知识库,F1 78 -> 82## 实体辨认干涉词典业务场景不同,实体辨认语义也是不同的,为了不便用户应用,凋谢搜寻提供实体辨认干涉词典,供用户自定义词的语义,目前实体辨认的干涉次要包含两个:一是对实体辨认后果自身的干涉,二是实体类型重要性的干涉。当实体辨认的后果不准时,应该通过实体辨认的干涉词典的配置来进行干涉。通过创立实体辨认干涉词典,并在查问剖析中实体辨认配置相应的干涉词典,就能够干涉实体辨认性能。 例如:业务非凡专有名词,须要进行实体辨认干涉。用户搜寻“小熊 (Bear)婴儿指甲刀护理套装",其中“小熊”“bear”实体辨认后果为:一般词,但理论业务上“小熊(bear)”是一家母婴品牌,这时能够应用干涉词典,设置为“品牌”,从而影响召回排序的成果。 ## 实际后的搜寻性能比照1. 搜寻“荷兰美素佳儿婴幼儿奶粉“分词成果 • Before:“荷兰 美 素 佳 儿 婴幼儿 婴 幼 儿 奶粉 奶 粉” • After: “荷兰(地点地区) 美素佳儿(品牌) 婴幼儿(人群) 奶粉(品类)”2. 搜寻“冬季新款凉鞋男童” • Before:3个召回后果, • After:22个召回后果 **利用实体辨认性能:定位搜寻关键词 实体辨认:“冬季”工夫节令,“男童”人群;“新款"新品;;“凉鞋”品类;**Query1: “凉鞋”“冬季”“男童”;Query2:“凉鞋” *## 阿里云搜寻相干产品举荐凋谢搜寻(OpenSearch):基于阿里巴巴自主研发的大规模分布式搜索引擎搭建的一站式智能搜寻业务开发平台,目前为包含淘宝、天猫在内的阿里团体外围业务提供搜寻服务反对。通过内置各行业的查问语义了解、机器学习排序算法等能力,提供充沛凋谢的引擎能力,助力开发者疾速搭建更高性能、更高搜寻基线成果的智能搜寻服务理解产品详情:https://www.aliyun.com/product/opensearch理解更多电商行业搜寻解决方案:https://www.aliyun.com/page-source//data-intelligence/activity/opensearch> 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

June 25, 2021 · 1 min · jiezi

关于自然语言处理:最实用NLP开源中文课百度NLP天团直播授课带你横扫主流技术及应用

没错,百度出NLP开源中文课了!顶配师资、模型全开源、配V100算力那种! 最实用NLP中文课来袭自然语言解决(下文简称NLP)是人工智能的要害钻研畛域之一,旨在教会计算机了解和生成语言。 为了进一步推动NLP技术的遍及和继续提高,推动产业降级,秉承开源凋谢的准则,百度⻜桨(PaddlePaddle)&⾃然语⾔解决部携⼿打造了这套面向NLP入门开发者的《基于深度学习的⾃然语⾔解决》打卡营课程。 本课程以实⽤为准则,笼罩了预训练、词法剖析、信息抽取等基础知识,以及情感剖析、问答、翻译、对话等NLP应⽤技术和零碎,并解说产业实际中的模型部署等。 此外,本次课程配套有残缺动⼿实际内容,实际局部提供了飞桨PaddleNLP文本畛域开发库、文心ERNIE开发套件和千⾔数据集,以期更好地帮忙各位同学学以致用。 “实际出真知”,课程配有丰盛的实际环节,每日公布实战作业,讲师现场coding+trick教训分享,公布多主题NLP比赛并提供赛前领导,更有开放性我的项目,比方:本人入手搭建一个NLP对话、翻译小零碎等,任你挑战! 要深信:"输入即是输出"。 另外,为了不便国内不同地区、不同硬件条件的同学上课,本课程全程收费、直播授课并配套在线实际环境(提供V100 GPU算力反对)。 内容详实、学以致用本次打卡营将围绕⽂本数据开展解说,从预训练模型、词法剖析等重要根底技术常识⼊⼿,逐渐开展对核⼼应⽤技术的解说,并对相干前沿⼯作加以疏导。 导论6月7日|走进自然语言解决 根底6月8日 | 前预训练时代的自监督学习6月9日 | 预训练语言模型及利用6月10日 | 词法剖析技术及其利用 了解6月11日|信息抽取技术及利用6月15日|情感剖析技术及利用 问答6月16日|检索式文本问答6月17日|结构化数据问答 翻译6月18日|文本翻译技术及利用6月21日|机器同传技术及利用 对话6月22日|工作式对话零碎6月23日|凋谢域对话零碎 产业实际6月24日|预训练模型产业实际课 结营6月25日|结业颁奖与凋谢题领导7月26日|凋谢题揭榜与学员分享 顶配师资,带你进击!本课程讲师团队由百度NLP、飞桨的资深工程师组成,他们有着丰盛的钻研和实践经验。本次课程他们将从各自的业余角度疏导学员学习和把握自然语言解决的基本概念、办法、原理和利用。 百度NLP团队是世界一流的NLP团队,以“了解语言、领有智能、扭转世界”为使命,研发自然语言解决和机器学习核心技术,打造当先的技术平台和产品,服务寰球用户和客户。百度NLP曾取得国家科技进步奖在内的20余个奖项、30多项国内比赛冠军,申请千余件发明专利、发表百余篇顶会论文,失去宽泛认可。 百度飞桨是中国首个开源凋谢、技术当先、性能齐备的产业级深度学习平台。本次课程就能够基于飞桨开源平台进行实际,所有实际的开源代码均可在PaddleNLP开源模型库和ERNIE开发套件开源版中找到。 总之,有这样一群人倾力讲授这场NLP开源课,冲了! 多重处分,等你来拿!证书+算力:顺利结业,即可取得百度官网颁发的结业证书+100小时Tesla V100 GPU算力卡; 奖学金:作业总成绩Top10取得500元奖学金、Top20取得200元奖学金、Top50取得100元奖学金; 丰富礼品:实现任意凋谢题或实现指定NLP较量并进入总榜前50,即可取得百度网盘超级会员月卡+100小时Tesla V100 GPU算力卡; 诚意+实力,一起致敬开源:优良原创代码按格局开源至Github,即可取得Cherry机械键盘。 【开课时间】6月7日-25日 早晨20:30-21:30!直播间等你! 【报名形式】扫码关注百度NLP公众号,回复【百度NLP】,报名课程。 【写在最初】 “种一棵树,最好的工夫是十年前,其次是当初。” ——Dambisa Moyo 在最好的工夫,百度全情投入,在NLP畛域种下的颗颗树苗未然枝繁叶茂;当初,咱们心愿通过教育帮忙有志NLP的你种下本人的技术树苗,携手共建Made in China的、生机盎然的技术生态。 百度自然语言解决(Natural Language Processing,NLP)以『了解语言,领有智能,扭转世界』为使命,研发自然语言解决核心技术,打造当先的技术平台和翻新产品,服务寰球用户,让简单的世界更简略。

June 3, 2021 · 1 min · jiezi

关于自然语言处理:业界率先支持-MCPOVERXDS-协议Nacos-201-142-Release-正式发布

简介:Nacos 致力于帮忙您发现、配置和治理微服务。Nacos 提供了一组简略易用的个性集,帮忙您疾速实现动静服务发现、服务配置、服务元数据及流量治理。起源 | 阿里巴巴云原生公众号 Nacos 是阿里巴巴开源的服务发现与配置管理我的项目,本次同时公布两个版本: 公布 2.0.1 版本,次要致力于反对 MCP-OVER-XDS 协定,解决 Nacos 与 Istio 数据服务同步问题。公布 1.4.2 版本,极大加强 K8s 环境中 JRaft 集群 Leader 选举的稳定性。Nacos 2.0.12.0.1 次要变更为: 在 nacos-istio 插件及模块中,反对 MCP-OVER-XDS 协定,解决 Nacos 与 Istio 数据服务同步问题。加强了 Jraft 协定在 K8s 环境中的 Leader 选举的稳定性。修复了频繁抛出 Server is Down 谬误的问题。具体变更为: [#3484] Support ldap login.[#4856] Support mcp over xds.[#5137] Support service list add view subscriber.[#5367] Support client encryption plugin for nacos 2.0.[#5307] Push support config some parameters[#5334] Fix Server is Down problem in k8s environment.[#5361] Check isUseGrpcFeatures() when register instance using GRPC protocol.[#5486] Refactor Distro Config as singleton and replace GlobalConfig.[#5169] Fix instance beat run only by responsible server.[#5175] Fix publishConfig lost type.[#5178] Fix NPE when init server list failed.[#5182] Fix throw NoSuchFieldException in ConfigController when service connect to nacos.[#5204] Fix query error when pageNo is larger than service number.[#5268] Fix subscriber app unknown[#5327] Fix ThreadPool usage problem and add some monitor for distro.[#5384] Fix the problem of unable to shutdown NacosConfigService.[#5404] Fix frequently udp push for client 1.X.[#5419] Fix Nacos 2.0 client auth may invalid for non public namespace.[#5442] change state to UP when received status form old version server.[#5096] Add unit tests in nacos 2.0.[#5171][#5421][#5436][#5450][#5464] Fix IT for nacos 2.0.Nacos 1.4.2该版本优化了 JRaft 模块,与最新的 nacos-k8s 我的项目配合应用,极大加强集群选主的稳定性。另外,该版本了修复无关“Server is Down”问题的提醒及泛滥 1.4.1 版本中的 Bug。具体变更为: ...

May 21, 2021 · 3 min · jiezi

关于自然语言处理:知识库的分类梳理原则与实践经验

前言机器人知识库必须有良好的分类能力便于了解、学习与前期的保护。 如若工作面对的是一个分类蹩脚的知识库,这将是一个可怕的场景。拿到一个用户发问后,假如是人类来依据知识库里的知识点来答复问题。他会发现这么几件事,同一个问题可能会有多个知识点同时含有相似的问题,而且每个知识点的答案还都不太一样,在比拟的时候易发现知识点都在不同的分类上面,整体的分类逻辑也令人摸不着头脑。 勾销分类也是不可行的,知识库有20个知识点以上的时候,就必须要通过分类进行治理,能力无效梳理,否则,面对体量大的知识库,每一次整顿都是漫漫征途。不能设想每次工作都要分辨1个知识点与其余成千上万个知识点的关系。 所以,当知识点逐步变多后,咱们须要一些正当的形式来对知识点的分类进行组织和治理。知识点组织的构造梳理有助于在知识库搭建过程中,给知识库里的知识点一个不便演绎的方法论。 1.分类准则和零碎操作知识库分类是依照知识点的特点和依据业务零碎求解问题的须要将常识分为若干类,而每一类又分为若干子分类。个别子分类是母分类的根底,母分类是子分类的概括,子分类之间互不相容,知识库分类的划分遵循MECE的准则。 MECE分析法,全称 Mutually Exclusive Collectively Exhaustive,中文意思是“互相独立,齐全穷尽”。也就是对于一个重大的议题,可能做到不重叠、不脱漏的分类,而且可能借此无效把握问题的外围,并成为无效解决问题的办法。 在知识库界面左侧是机器人知识点分类页面,点击分类名称旁边的“+”符号,能够新建此分类的下一级分类,鼠标悬停在对应分类上时还会有“编辑”、“删除”按钮浮出。当鼠标变成小手“ ”形态,能够拖动以后分类,扭转其附属关系,留神不能拖动为其自身的下一级。 点击向右的小三角“ ▶ ”能够开展下一级分类,点击向下的小三角“ ▼ ”能够收起属于该分类下的所有分类。 PS:为保障分类随知识库导出和导入失常,请不要在知识点分类中应用“/”、“\”等符号。 2.分类办法简述1.分类纵向划分办法在知识库构建过程中次要依照最终用户参加工夫程序构建分类的办法叫知识库的纵向划分办法。 纵向划分目前看来是咱们搭建知识库的次要办法,在终端类公司,当曾经调配了繁多的业务线之后,在繁多知识库中,往往是依据最终用户的参加工夫进行划分。 生产产品类公司个别会依照售前,售起初辨别知识库,售前还可能细分用意为优惠、产品信息、物流抉择、领取方法等,售后分为物流状态、品质问题、包装问题等状况。当然,不同公司对物流等布局不完全一致,也有些公司是依据产品是否达到用户手中确定的售前售后,能够依据具体情况和理论进行微调。 服务类我的项目也可参照对应逻辑进行辨别,比方餐饮我的项目依照就餐前和就餐后,人事服务类能够依照员工入职、试用期、转岗、到职的流程进行辨别。 2.分类横向划分办法知识库的横向划分构造次要用在产品业务线较多的状况下,并且往往是针对次一级分类进行划分,比方公司售卖的不同产品,可能就属于孕期-产品分类-不同产品进行划分。 通常在具体的分类过程中,也会联合具体业务状况将纵向划分与横向划分联合起来进行梳理。不同公司的业务模式不同,须要依据本人的理论状况进行知识库构造的确定。 3.分类教训概述在实践中,咱们总结了如下的分类口诀,帮忙大家记忆: 一条主线,其余靠边;呈现反复,早做功夫。“一条主线”是说首先确认知识点是否以用户生命周期的场景开展,针对这类知识点,个别以最终用户参加的工夫程序作为惟一主线进行。 “其余靠边”指如果分类下知识点不是随着用户的生命周期变更的,如小区地点,小区周边这样的信息不会随着工夫变动而变动,此时这类知识点能够独自拿进去作为我的项目的根底信息。 “呈现反复,早做功夫”如果在不同阶段会呈现反复,有没有显著应归类的地位,咱们个别将知识点放在场景中最早发问的中央。 如果有并行的状况,比方信用卡办理的我的项目,线下办理为主线,同时有APP、微信、小程序、支付宝等渠道作为副线,须要明确副线的占比。如果副线中APP停办差别占比拟大,微信、小程序等渠道差别不大,有以下解决方案: 能够将APP渠道独自分类,在对应知识点下设计第二组答案,依据提问者带过去的标签,设计同一知识点依据属性实体等划分为不同答案组来进行个性化回复。 这个计划长处是能够间接依据用户发问的渠道做出最优的答复,然而须要APP渠道带属性接入或须要客户提供实体信息。具体操作能够查看《什么样的答复才足够共性?吾来个性化回复举手参评》。 4.知识库分类实际在实践中,依据知识库搭建是否有语料进行划分,咱们有“从小到大”和“从大到小”的梳理办法。 何为从大到小呢?何为从小到大呢?其实二者的外围问题在于是否有语料,前者应该为无历史语料的场景下应用,后者则为有历史语料的状况下应用的。 1 从大到小没有条件也要创造条件:业务框架没有历史的语料状况下,咱们广泛要依赖业务框架,那在没有业务框架状况下,首先要做的事件就是梳理业务框架,梳理好业务框架,往业务框架中一直地填充知识点及其类似问,用结构化的思维一直地界定知识库的边界,故为从大(业务框架)到小(知识点、类似问): 第一步:用户群体剖析 首先必不可少的是先确认机器人面对的用户群体有哪几类,别离是谁?先以外卖场景为例: 外卖行业智能客服的用户群体 第二步:用户行为剖析 把用户行为作为落脚点去剖析,如外卖行业的消费者,他的用户行为能够分为三大类:售前、售中、售后;那商家的用户行为能够分为3大类:未入驻商家、已入驻商家、商家账号登记;而骑手应该是:取餐、配送中、配送后;而后能够持续依据该逻辑裁减框架。 外卖行业智能客服的业务梳理大框架 可是当遇到业务场景之间无显著逻辑的时候应该怎么办呢? 第三步:产品功能分析 能够把现有产品的性能作为落脚点去剖析,以支付宝的市民核心页面的办事大厅为例,能够将页面上的一个个业务当作框架的枝干: 支付宝-市民核心-办事大厅页面 依据以上产品性能梳理进去以下业务框架: 市民核心办事大厅业务框架 当咱们梳理好业务框架,有了这么一棵树,接着就是要一直地往里面裁减知识点及其对应类似问,纳入对应的业务场景下;好比在树干(业务框架)上长出树枝(知识点),树枝上再一直地长出叶子(类似问)。 2 从小到大充分利用尚方宝剑:历史语料当有历史语料的状况下,咱们能够通过一个个的用户query去提取核心内容,依据核心内容反推业务框架,故为从小(一个个用户query)到大(业务框架)。 如以下用户query: 1.你们的蜂蜜产品有什么劣势? 2.蜂蜜枇杷露都有什么效用? 3.低血压能够吃哪款产品? 4.服用了蜂蜜枇杷露呈现头晕症状? 5.蜂蜜枇杷露为什么会有红色沉淀物? 通过用户query提取核心内容: 1.你们的蜂蜜产品有什么劣势? ->售前问题-品牌优势 2.蜂蜜枇杷露都有什么效用? ->售前问题-产品效用 3.低血压能够吃哪款产品? ->售前问题-症状保健 4.服用了蜂蜜枇杷露呈现头晕症状? ->售后问题-服用症状 ...

May 18, 2021 · 1 min · jiezi

关于自然语言处理:官宣恭喜-ChaosBlade-项目进入-CNCF-Sandbox

简介:阿里巴巴开源的混沌工程项目 ChaosBlade 通过 CNCF TOC 投票,顺利推动 CNCF Sandbox。CNCF 全称 Cloud Native Computing Foundation (云原生计算基金会) ,旨在为云原生软件构建可继续倒退的生态系统,服务于厂商中立的快速增长的开源我的项目,如 Kubernetes、Prometheus、Envoy 等。 起源 | 阿里巴巴云原生公众号 阿里巴巴开源的混沌工程项目 ChaosBlade 通过 CNCF TOC 投票,顺利推动 CNCF Sandbox。CNCF 全称 Cloud Native Computing Foundation (云原生计算基金会) ,旨在为云原生软件构建可继续倒退的生态系统,服务于厂商中立的快速增长的开源我的项目,如 Kubernetes、Prometheus、Envoy 等。 ChaosBlade github 地址: https://github.com/chaosblade-io/chaosblade 我的项目介绍 ChaosBlade 是阿里巴巴 2019 年开源的混沌工程项目,蕴含混沌工程试验工具 chaosblade 和混沌工程平台 chaosblade-box,旨在通过混沌工程帮忙企业解决云原生过程中高可用问题。试验工具 chaosblade 反对 3 大零碎平台,4 种编程语言利用,共波及 200 多个试验场景,3000 多个试验参数,能够精细化地管制试验范畴。混沌工程平台 chaosblade-box 反对试验工具托管,除已托管 chaosblade 外,还反对 Litmuschaos 试验工具。已登记应用企业 40 多家,其中已在工商银行、中国移动、小米、京东等企业中落地应用。 外围能力ChaosBlade 具备以下性能特点: 丰盛的试验场景:蕴含根底资源(CPU、内存、网络、磁盘、过程、内核、文件等)、多语言应用服务(Java、C++、NodeJS、Golang 等)、Kubernetes 平台(笼罩 Container、Pod、Node 资源场景,蕴含上述试验场景)。多样化的执行形式:除了应用平台白屏化操作,还能够通过工具自带的 blade 工具或者 kubectl、编码的形式执行。便捷的场景扩大能力:所有的试验场景遵循混沌试验模型实现,并且不同档次场景对应不同的执行器,实现简略,易于扩大。试验工具自动化部署:无需手动部署试验工具,实现试验工具在主机或集群上自动化部署。反对开源试验工具托管:平台可托管业界支流的试验工具,如本身的 chaosblade 和内部的 litmuschaos 等。对立混沌试验用户界面:用户无需关怀不同工具的应用形式,在对立用户界面进行混沌试验。多维度试验形式:反对从主机到 Kubernetes 资源,再到利用维度进行试验编排。集成云原生生态:采纳 Helm 部署治理,集成 Prometheus 监控,反对云原生试验工具托管等。架构设计Chaosblade-box 架构如下: ...

May 17, 2021 · 1 min · jiezi

关于自然语言处理:搜索-电商行业模版驱动业务增长实践

简介:阿里巴巴技术专家介绍如何通过凋谢搜寻电商行业增强版,疾速构建更高水准的搜寻服务,带动业务指数级增长。讲师:徐希杰--阿里巴巴技术专家 视频地址:https://developer.aliyun.com/live/246673 电商行业模板介绍:https://www.aliyun.com/page-source//data-intelligence/activity/opensearch 凋谢搜寻简介    凋谢搜寻是阿里团体搜寻业务中台AIOS体系打造的智能搜寻云平台。 目前阿里团体内500+业务接入,次要包含钉钉、盒马、菜鸟口碑等,整个集群在索引的文档数量曾经超过了600亿 ,日均的PV曾经超过了百亿。在双十一当天查问的QPS分值超过了百万,文档实时更新TPS峰值15万+ ,并且整个服务十分安稳,没有任何降级。在2014年凋谢搜寻正式通过阿里云进行商业化输入。 一站式智能搜寻业务开发平台 凋谢搜寻产品劣势: 相比于开源和自建的搜寻,在外围引擎下面更稳固,更高性能;达摩院多年在NLP畛域相干积攒,通过查问剖析和排序搜寻等模式凋谢,使用户在初始阶段就具备了一个高质量搜寻成果;搜寻疏导性能反对千人千面;强开放性,反对多种定制的伎俩,能够有内置的模型,也能够回流用户本人的模型。免运维,无需做运维操;AI.OS引擎零碎 阿里巴巴搜寻举荐事业部自研的AI.OS技术体系服务于阿里团体外部90%以上的搜寻业务,AI.OS零碎天生具备弹性扩缩容,故障疾速复原的能力,比自建或开源的零碎更加稳固、更加高效,可能反对海量的数据处理。 电商/O2O场景搜寻常见问题电商行业智能搜寻零碎query解决流程    用户在搜寻框中输出查问词,而后后端的零碎依据对它进行剖析,剖析的后果发送给搜索引擎,找到用户想要的商品做排序返回用户最想要的商品,最初将这些商品做一些人工干预,或者是间接最终返回的搜寻后果页给用户展现进去。 如何构建电商行业智能搜寻零碎如果咱们从零开始去构建一个电商行业的智能搜寻零碎,咱们须要解决哪些问题那? 商品如何建库? 如何精确的了解用户的查问用意?如何为用户提供个性化的搜寻体验?如何依据用户的查问返回最匹配的后果?常见的外围性能怎么构建?比方下拉提醒、热词、底纹等;相干技术人员问题;凋谢搜寻电商行业模板搜寻架构 商品建库电商行业模板在利用构造和索引构造下面为用户提供了一个默认的模板。 比如说将商品罕用的字段形象成了它的利用构造,并且依据搜寻积攒,为这些为电商搜寻利用创立的对应的,默认的索引构造,用户可能不须要有相干的畛域常识就能够创立出搜寻零碎利用,查问剖析和用用意了解方面,并且联合行业的特色做针对性的分词的优化,行业实体辨认的优化,同义词纠错的优化和类目预测的优化。 查问剖析链路 电商行业分词分词是影响搜寻成果的最根底的模块。凋谢搜寻集成了淘宝搜寻同款的电商分词器,训练语料来自淘宝搜寻多年积攒的百万级有标注的电商行业数据。 分词成果比照: 电商语义了解 命名实体辨认电商NER问题定义 对电商Query和题目进行实体词打标识别其中的品牌、品类、品类润饰、型号、样式等40品种别 ; 难点 品牌更新快歧义大;例:播(女装品牌)、老爸(食品品牌 品类存在润饰关系 ;例:华为手机(品类润饰)通明手机壳(品类) 解决思路 现有框架知识库更新基于老模型链路从新构建全量知识库,F1 69 -> 74 标注训练数据,应用神经网络模型标注10万条数据,耗时4个月,BiLSTM-CRF模型,F1 74 -> 78 神经网络模型联合知识库技术创新GraphNER框架联合监督模型与知识库,F1 78 -> 82 查问剖析行业增强版成果 query改写文本query针对查问词解决之后改写的query 个性化query在查问词改写根底之上引入个性化信息,比方u2i,i2i,u2s2等 向量query在查问词改写根底之上引入向量信息,须要对查问词进行向量化 多路召回技术 电商排序反对两轮排序机制,粗排和精排 粗排参加的文档数量比拟多,可能是几万到几十万量级,所以对排序的耗时要求比拟严格,从而导致它能应用的特色就比拟少。 精排参加的排序的数量比拟少,所以打分应用特色能够多一些。 定制排序-Cava脚本    Cava与排序表达式相比有更高的灵活性和开放性,不便用户自在的定制本人的排序规定,它是凋谢搜寻本人研发的一个类java 的语言,性能和C++相当,反对面向对象的程和即时编译;不同的数据类型反对类的定义,多种运算符和一些简略的控流程管制语句。    另外一个很重要的局部是在开发语言的根底之上,凋谢搜寻封装了通用的排序特色和为了不便用户开发排序新的排序特色,也封了一些框架类的相干特色。 通过这些特色,用户能够间接在脚本中援用,从而开发出本人新的排序脚本,大大简化了开发成本。 搜寻疏导性能   内置热搜、底纹、下拉提醒多样搜寻疏导算法模型,无需开发零碎每天主动训练模型,对用户搜寻用意起到重要的疏导作用,大大降低后续查问用意了解、相关性、排序、经营干涉等环节的调优难度,对晋升整体业务指标能够起到十分好的铺垫作用。 搜寻前疏导: 搜寻中疏导: ...

April 30, 2021 · 1 min · jiezi

关于自然语言处理:Service-Mesh-为什么从趋势走向无聊

简介:过来一年,阿里巴巴在 Service Mesh 的摸索路线上仍旧扎实前行,这种动摇并非只因深信 Service Mesh 将来肯定是云计算根底技术的要害组成部分,还因须要借这一技术趋势去偿还过来所积攒下来的技术债(“技术债”并非贬义词,是技术倒退的固有产物),基于当下的技术思潮和最佳实际面向未来做出技术的新价值和新体验。 作者 | 李云(至简) 起源 | 阿里巴巴云原生公众号 过来一年,阿里巴巴在 Service Mesh 的摸索路线上仍旧扎实前行,这种动摇并非只因深信 Service Mesh 将来肯定是云计算根底技术的要害组成部分,还因须要借这一技术趋势去偿还过来所积攒下来的技术债(“技术债”并非贬义词,是技术倒退的固有产物),基于当下的技术思潮和最佳实际面向未来做出技术的新价值和新体验。 每当咱们深刻摸索和实际一项新技术时,大多情景下会步入一段“无聊”期间,期间每天面对的并非技术之新如何诠释,而是如何先解决好技术债所带来的羁绊,以及求实地给业务发明新价值和新体验,通过携手业务共赢的形式推动新技术落地。本文总结了过来一年 Service Mesh 在阿里巴巴的建设成绩和播种的洞察。 兑现增量业务价值是倒退之本Serivce Mesh 作为一种平台型的新根底技术,倒退过程中肯定回避不了兑现(增量)价值这个关键问题。从技术的角度,很容易了解将框架思维下 SDK 中的易变内容下沉到 Service Mesh 中的 Sidecar 后,将促成中间件技术以业务无感的模式疾速演进和降级,以平台化和体系化的思维代替过来“山头林立”的框架思维去进一步摸索分布式应用构架问题的更优解,背地的价值并不容易被挑战。 从业务的角度,驳回新技术的要害是能解决当下的什么痛点、是否带来机器老本的显著升高、是否让稳定性有显著的晋升、运维和研发效率有否变得更高,这些收益被总称为业务价值——业务视角下所看到的收益。倒退 Service Mesh 很重要的一点是必须回归兑现(增量)业务价值,围绕一直兑现业务价值去欠缺新技术,否则很难继续拿到阶段性的成绩。对于从事 Service Mesh 这类新技术建设的团队来说,继续播种阶段性成绩对于维持团队士气致关重要,建设者会因为业务价值足够而能领会到“被须要”的感觉,进一步强化对本人工作价值的认可。 过来一年,咱们经验了从“先做大规模落再兑现业务价值”到“先兑现业务价值再做大规模”的倒退策略调整。在做大规模为先的阶段,落地 Service Mesh 被挑战的次要问题有三个:其一,增量业务价值有余,只是将 Java SDK 中已有的能力挪进了 Service Mesh;其二,资源开销不可漠视;其三,技术成熟度不够,没能让人看到工具化落地的问题定位与排错伎俩。当的确不能答复好这三个问题时,推动 Service Mesh 在外围利用上的大规模落地就变得十分艰难,即使有公司层面由上至下的助推也收效甚微。最终,不得不将倒退策略调整为兑现价值为先。 在兑现价值的路线上,恰好某些业务团队也从一开始挑战下面三个问题变成了积极思考如何借 Service Mesh 化这次机会让所在事业部的业务流量治理能力做一次重大降级。思路的转变很快让业务团队锚定了业务痛点,与 Service Mesh 共创出了新的解决方案,最终两个团队的单干关系从甲乙方变成了你中有我、我中有你的战友关系,大家一起抱团共赢。 回顾过去一年的经验,能失去的启发是: 无论什么新技术,先做出增量业务价值能力更好地落地推广。再先进的技术在没有兑现增量价值之前都只是个愿景,但愿景并不那么容易让人买单,技术落地仍然要尊重市场规律。此外,新技术的成熟须要工夫这是自然规律,技术成熟的过程中如果没有兑现增量业务价值,则没有业务甘心只成为纯正的小白鼠。根底技术的倒退不能只依附根底技术团队的力量,业务团队以踊跃的心态参加寻求解决业务痛点将成为强劲的新技术“催熟剂”。根底技术团队并没有业务体感,而业务团队的全情投入就能很好地补救这一短板,两者联结所造成的化学反应就能带来共赢的场面,单干关系也将升华至“战友级”。根底技术团队须要特地器重与业务团队单干,防止步入闭门造车的境况。无侵入计划是要害伎俩但并非终态在技术进化的过程中,咱们心愿尽可能做到兑现价值之时业务没有任何的革新老本,这一点能很好地了解为何 Istio 推出至今采纳了 iptables 做流量劫持。阿里巴巴在摸索的过程中深知无侵入计划的价值,早在外部落地时采纳的也是无侵入计划,过来一年更进了一步让无侵入计划反对流量透传性能。 去年初,阿里巴巴外部落地 Service Mesh 的技术计划并没有思考百分百做兼容。因为历史起因,Dubbo 的序列化协定存在 Hessian2、Java 和其余小众的抉择。思考到 Hessian2 是支流协定,所以 Service Mesh 只对这一协定进行了反对。在落地的过程中,只有被 mesh 化的利用须要调用应用了不反对序列化协定的利用,就会间接导致该利用无奈 Service Mesh 化。进一步,Service Mesh 的整体能力建设依赖这一技术点的冲破,通过上量取得更为宽泛的场景去兑现价值或为大规模落地打好根底。比方,运维面反对大规模就属于后者。另外,当所有利用都能 mesh 化时,最不济也能在应用了 Hessian2 序列化的链路上兑现价值,而不致于因为利用无奈 mesh 化而使得能兑现价值的链路变得更短(价值被弱化)。 ...

April 27, 2021 · 2 min · jiezi

关于自然语言处理:MATH-2109-–-Mathematical-Computing-Week-6

School of SciencesMATH 2109 – Mathematical Computing Week 6 – Hand in Lab Class –Due 5 : 00pm Friday 23rd April 2021. Write a function in an m-file for y = cos5(x) sin3(x) + 2 that will accept a row vector of xvalues as input and output a row vector of y values. Now generate a row vector of x values inthe interval [0, 7] (use 100 points) and input this into your function to find the correspondingy values. Plot the function using the plot() command. Also by looking up the xlabel()and ylabel() functions label the x and y axes.A sequence is given by a5 = 2, a6 = −4, and a7 = 1, and the recurrence relationan = 5 an−1 − 3 an−2 + 6 an−3an−2when n ≥ 8.Write a function in an m-file that has n as its only input, where n > 5, and returns the valuean. Put in a check that n ≥ 5 and exit with a printed error if this is not the case, assigningan the value NaN.Call your function in a main program, so that it prints, using fprintf, a table of values forn and f(n), for n = 5, 6, . . . 13. Your table should have headers.The symbolic toolbox allows us to integrate symbolic expressions using the following commands(as an example):f = @(x) cos(x). 5.*sin(x). 3syms x ;int(f(x),x)ans =(cos(x) 5(5cos(x) 2 - 7))/35Write a function call IntFunct in an m-file that takes as input a function of one variableand values of a and b for x. As outputs it returns the value of the definite integral over theinterval [a, b] and (only if asked for) additionally a symbolic expression for its derivative. Alsoinclude a check that not more than 2 outputs are requested and if they are, return a printederror message (of your making) and cease execution before Matlab complains. Test this bycalculating the integral of y = cos5(x) sin3(x) over [0, 2]. You need to pass the function fand the values a = 0 and b = 2 as parameters when you call the function from the commandwindow.[Hint: Use double(subs(Sym_expression, x, a)) to get a number after substituting. ]The intersection of a circular cylinder of unit radius, oriented around the xn axis, and thesphere centred at the point e1 = (1, 0, . . . , 0) correspond to the points (x1, x2, . . . , xn) (inn-dimensions) that satisfy the equations:Write a function area_approx = Monte_Carlo_Test(n,N) that inputs the dimension nand the number of random samples N in the following Monte-Carlo estimation of the volume1of the intersection. Generate N uniformly distributed random samples in the following ndimensional box that contains the region defined in (1):and count the number k, of the N, events that land inside the region defined in (1). Include this function as a sub-functions (place it atthe end of your work) and call it to print a table of the areas associated with the dimensionsn = 3, 4, 5, 6 using N = 106.[Hint: Watch the week 5 Wednesday Lectorial Collaborate Ultra recording.]NOTE : Note that M-File functions MUST NOT contain any fprintf() or disp() commands,or echo print any values inside the function (other than for error messages). The Function MUSTreturn a value or values, NOT just print them with a disp() command.You MUST include listings of your functions in your published output as follows. If your functionis contained in the M-file with name myfunction.m, just include the linetype myfunction.mat the point in your code where you want the listing of the function to appear.请加QQ:99515681 或邮箱:99515681@qq.com WX:codehelp

April 25, 2021 · 3 min · jiezi

关于自然语言处理:有道技术沙龙-AI-语音交互技术在语言学习场景的实践

通过数月的精心筹备有道技术沙龙行将正式启动!首先感激:思否、将门-TechBeat、掘金技术社区合作伙伴的鼎力帮忙 首期咱们将和大家聊聊语音交互技术的那些事儿明星爱豆的声音是如何生成的? 一根笔如何教会小朋友读绘本?选择题也能够用语音来答复吗?答案尽在 有道技术沙龙 第一期! 除了干货满满的技术分享当然不能少了福利吃好喝好必不可少还有精美伴手礼到场即送抽奖环节拼欧气抽严选好物前30位到场的早鸟同学还可兑换网易易间咖啡馆饮品一杯! 流动场地:网易易间咖啡厅 更重要的是:作为首期有道技术沙龙的听众有道将奉送 面试直通车 专属福利!跳过重重难关间接和终极 Boss 面对面! 流动信息:工夫:2021年3月27日 14:00-17:00 地点:网易北京研发核心-B1F 易间 【舒适提醒】疫情防控不能松散!到场需出示北京市衰弱码,以及报名手机号码接管的访客信息。 欢送扫描上方长图二维码或点击有道技术沙龙第一期-报名表报名! 有道技术沙龙等你来!如有疑难欢送增加有道小助手微信:ydtech01 相干岗位热招中!欢送投递简历! 语音合成算法专家语音辨认&书面语评测算法专家声学前端信号处理算法专家对话&语义了解算法专家语音引擎技术专家语音服务后盾技术专家详情点击:网易招聘

March 17, 2021 · 1 min · jiezi

关于自然语言处理:详解NLP和时序预测的相似性附赠AAAI21最佳论文INFORMER的详细解析

摘要:本文次要剖析自然语言解决和时序预测的相似性,并介绍Informer的翻新点。前言时序预测模型无外乎RNN(LSTM, GRU)以及当初十分火的Transformer。这些时序神经网络模型的次要利用都集中在自然语言解决下面(transformer就是为了NLP设计的)。在近些年来,RNN和Transformer逐步被利用于时序预测下面,并获得了很好的成果。2021年发表的Informer网络取得了AAAI best paper。本文次要剖析自然语言解决和时序预测的相似性,并介绍Informer的翻新点。 具体的本文介绍了 • 晚期机器翻译模型RNN-AutoEncoder的原理 • RNN-AutoEncoder升级版Transformer的原理 • 时序预测与机器翻译的异同以及时序预测算法的分类 • AAAI21最佳论文,时序预测模型INFORMER的翻新点剖析 RNN AutoEncoder晚期自然语言解决:RNN autoencoder Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. “Sequence to sequence learning with neural networks.” arXiv preprint arXiv:1409.3215 (2014). (google citation 14048) 这里以机器翻译为例子,介绍RNN autoencoder的原理。 输出句子通过分词,编码成数字,而后embedding成神经网络能够承受的向量。 在训练过程中,能够应用teacher forcing,即decoder的输出应用实在值,迫使在训练过程中,误差不会累加 在在线翻译过程中,encoder局部流程雷同,decoder局部,指标句子是一个单词一个单词生成的 晚期RNN auto encoder构造尽管相比于传统模型获得了巨大成功,但encoder,decoder之间的信息流传仅仅时由繁多的一个隐层链接实现的,这样势必会造成信息失落,因而,Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. “Neural machine translation by jointly learning to align and translate.” arXiv preprint arXiv:1409.0473 (2014).(citation 16788)提出在输出和输入之间减少额定的attention链接,减少信息传递的鲁棒性以及体现输入句子中不同单词受输出句子单词影响的差异性。 ...

March 5, 2021 · 1 min · jiezi

关于自然语言处理:效度理论及分析方法

试卷剖析的定量指标,信度和效度是其中两个,它们是对试卷的整体做出评估。对试卷效度做出剖析,能够查看考试内容是否与教学大纲保持一致,有利于老师发现和改良教学中的薄弱环节。 效度定义指一个测验可能测量它所要测的属性的水平,及测验是否测到了它想要测到的货色。 分类1.内容效度指考试内容对于应测内容的代表性水平。 试卷的内容效度是一个主观性很强的内容,次要依附主管测评为主。 个别采纳逻辑分析法(专家评定)、统计分析法、相干法。 2.效标关联效度指试卷的测量后果和效度规范之间的统一水平,是以某一种测试分数与其校标分数之间的相关性来示意效度。 效标效度又能够分为预测效度和同时效度。 预测效度是试卷测量分数与未来的效标分数之间的关联水平。同时效度即同时在钻研对象中进行试卷和效度规范测量失去的后果之间的相干水平。 3.构造效度指考试分数可能阐明心理学实践的某种构造或特质的水平 构造效度次要分为测验外部寻找证据法、测验间寻找证据法、考查测验的实证效度法。其中,测验外部寻找证据法次要应用因子分析法。 影响试卷效度的因素试卷的组成: 试卷的选材与构思、试卷的长度、我的项目的难度、区分度以及试卷的编排形式等;测试的程序: 次要包含测试程序设计、测试手册的装备、试验程序的标准化、领导语、环境条件、时限等;效标的特色: 适当的效标是测验效度的前提条件,效标的信度、效标与测量效标之间的相干水平会影响测验效度;样本与被试的特点: 样本的代表性会影响效度,样本的异质性会进步效度系数,被试的趣味、动机、情绪和态度间接影响效度。 总结从下面能够晓得,内容效度、效标关联效度和构造效度是从不同的方面反映试卷的效度水平。因而,从评估试卷效度的整体上看,应从不同角度加以评估剖析。首先评估有哪些项目可作为试卷内容的实践根底(内容效度);其次定义反映内容总体的我的项目,再从中抽取具备代表性样本(构造效度);最初评估试卷测量后果与效度规范的相关性(效标关联效度)。 参考:基于效度实践的试卷品质分析方法试卷剖析算法的利用钻研

December 10, 2020 · 1 min · jiezi

关于自然语言处理:自适应学习

试题主动匹配知识点,并依据使用者的应用状况,为其推送相应的试题。 常识图谱什么是常识图谱常识图谱是一种结构化的语义网络,是用来示意实体与实体之间关联的结构化语义网络。在应用常识图谱的时候,会用图的模式来形容常识工程中常识实体的关系。其中节点示意实体,边用来示意实体之间的关系。在这里引入三元组“实体-关系-实体”或“实体-属性-属性值”进行常识示意, 每个实体可用一个全局惟一确定的ID标识, 属性-属性值形容常识实体的外在个性, 常识实体之间通过关系形成网状的知识结构。 所以在这里,笔者忽然对常识图谱产生一种相熟的感觉,没错,ER图!不难发现,这根咱们构建ER图所用到的元素基本一致。 下图为常识图谱的网络结构,其中Ei为常识实体,Ri,j示意实体之间的关系,ET示意实体的属性: 咱们也能够将实体的属性用外连一个圆的形式示意,比方: 常识图谱从逻辑上分为数据层和模式层,数据层上一常识以事实为单位贮存在数据库中,每条常识用一个SPO(Subject-Predicate-Object)三元组示意。模式层用于存储通过提炼的常识。 常识图谱的构建常识图谱的构建从原始数据登程,通过一些技术,将常识事实从原始数据中提取进去,再把常识元素放到知识库的数据层和模式层中。常识图谱的构建是一个迭代更新的过程 常识图谱包含自顶向下和自下而上两种构建形式 关联规定的开掘以搜索引擎为例,咱们在输出要搜寻的内容时,都会为咱们补全要搜寻的内容。它会找出互联网上经常一起呈现的词语对,而后为咱们进行推送补全。 利用到咱们的内容上,当有某个词语经常与某个知识点进行匹配,那么咱们就能够找出高频的进行举荐,那么在进行匹配的时候,就不须要扫描整个知识库,这将节俭很大一部分匹配工夫。 FP-Growth算法,将数据集存储在一个特定的称做FP树的构造之后发现频繁项集或者频繁项对,即常在一块呈现的元素项的汇合FP树。而后再对FP树进行开掘,找到咱们须要的关联信息。 文本分类机器学习中有监督(须要对数据进行已知分类的标记)的分类办法,基于提前定义好的文本类别,通过把文本数据作为分类的对象,将须要分类的文本划分至提前定义好的文本类别中。 该技术将会用于试题的知识点匹配。 聚类分析相较于文本分类,聚类分析是一种无监督(不须要对数据进行标记)的学习办法。它的原理是基于特定的数据集寻找该数据集中具备类似特色的数据,并把领有类似特色的数据划分为一组。 该技术会在剖析使用者的行为时应用。 试题主动匹配知识点思路剖析文本数据预处理——>文本特色的提取——>分类模型成果比对——>抉择分类模型: 文本预处理解决分词和停用词过滤。 分词,将长句或段落转换为多个简略词和标点示意。能够将中文间断字节流用离散单词流模式代替。即采纳特定词典的分词办法依照特定的分词算法进行分词。 停用词过滤解决。分词后的文本蕴含许多没有意义的单词,停用词过滤解决就是将一些齐全没有用或是没有意义然而呈现频率很高的单词去除。 文本特征提取TF-IDF:常用语数据挖掘的加权技术。在进行之前,须要将解决过的文本用计算机能辨认和解决的结构化模式示意,用向量空间模型VSM来示意。同时,将加权的文本特色忘性模式转换解决,记为:Ci=(Ci1,Ci2,Ci3...Cij...Cin),Cij示意第i个试题文本,第j个特征值的权重。 Cij = TFij x IDFj其中TFij示意第i个试题文本中,文本特色项j呈现的词频,IDFj示意整个文本特色集中特色项j呈现的次数,即逆向文档频率。 分类器分类生成矩阵示意试题和知识点之间的从属关系: 其中qkij示意试题Qi和知识点Kj之间是否具备从属关系,即是否属于知识点Kj。 总结初步对性能实现的根本过程,以及对实现过程中可能会用到的办法、算法做了整顿总结,还有很多细节的中央没有思考分明。整体上,实现将题目和知识点进行匹配,最要害的还是常识图谱的构建。 相干参考:https://blog.csdn.net/javastart/article/details/50521453基于常识图谱的自适应学习零碎的设计与实现基于常识图谱的自适应学习零碎的钻研与实现

November 25, 2020 · 1 min · jiezi

关于自然语言处理:知识图谱描边11从NER上手

本文概述:复现知乎-KG开源我的项目集中的BERT-NER-pytorch我的项目之后,进行的一些学习记录,对同样刚入行的小白来说有参考意义。 材料:对于BERT模型中的transformer介绍,必须分享的是Jay Alammar的动画图,看完后我捶胸顿首的为什么没有早早看到这样的国外佳作? 一、筹备工作:1、数据集数据集的组织形式、解决形式都是深度畛域的重头戏,能够说一个算法工程师80%的工夫都在和数据打交道。当初咱们来介绍一下数据集: 获取形式:间接用google扩大gitzip从git间接下载的,生数据只有3项,是其中train集里有45000个句子,test集是3442,咱们须要人为划分出val集。 生数据模式-相似上面这个样子,咱们来看一下msra_train_bio的前17行(一共176042行):中 B-ORG共 I-ORG中 I-ORG央 I-ORG致 O中 B-ORG国 I-ORG致 I-ORG公 I-ORG党 I-ORG十 I-ORG一 I-ORG大 I-ORG的 O贺 O词 O各 Otags(只有三种实体:机构,人,地位):OB-ORGI-PERB-PERI-LOCI-ORGB-LOCps:能够看到,采纳的是BIO标注法,咱们当然能够批改! 待会儿要划分数据集为(3个目录):DatasetNumbertraining set42000validation set3000test set3442失去三个目录????。 数据处理后的模式(各取前两条):sentences.txt文件: 如 何 解 决 足 球 界 长 期 存 在 的 诸 多 矛 盾 , 重 振 昔 日 津 门 足 球 的 雄 风 , 成 为 天 津 足 坛 上 下 内 外 到 处 议 论 的 话 题 。该 县 一 手 抓 农 业 技 术 推 广 , 一 手 抓 农 民 科 技 教 育 和 农 技 水 平 的 提 高 。而 创 新 的 关 键 就 是 知 识 和 信 息 的 生 产 、 传 播 、 使 用 。相应的,tags.txt文件: ...

November 9, 2020 · 3 min · jiezi

关于自然语言处理:JNPF零代码开发平台之快速开发web表单页面

JNPF是一款优良的软件平台产品,可视化开发环境,新增的零代码开发,操作相当简略,流程化的表单开发让业务人员也能参加其中,做到所见即所得,大大提高开发效率,能帮忙公司大幅节俭人力老本和工夫老本,同时又不失灵活性。实用于搭建 OA、ERP、CRM、HR、HIS等所有的企业信息管理系统(且实用于集团公司部署)。 创立web表单 表单设计是配置大量可复用控件,通过拖拽的控件主动生成可视化利用 列表设计是配置页面显示列、查问条件、列表分页、 按钮配置等设置 对WEB设计进行删除、编辑、查问、复制、刷新和状态管制等性能操作 在菜单治理外面增加这个web表单性能菜单,而后就能够间接看到本人设计的表单页面

November 5, 2020 · 1 min · jiezi

关于自然语言处理:来自复旦大学自然语言处理团队这个NLP工具包有何亮点

自然语言解决(NLP)是人工智能畛域中的一个重要方向。它钻研能实现人与计算机之间用自然语言进行无效通信的各种实践和办法。 在进行 NLP 开发的时候,NLP 工具包是不可短少的一部分,其中蕴含的数据集和预训练模型能够较大的晋升开发效率。 明天举荐的这个开源我的项目就是来自复旦大学的 NLP 团队,看看他们的 NLP 工具包有什么好玩的中央吧。 项目名称: fastNLP 我的项目作者: 复旦大学自然语言解决(NLP)团队 我的项目地址:https://gitee.com/fastnlp/fastNLP 我的项目简介fastNLP 是一款轻量级的自然语言解决(NLP)工具包,指标是疾速实现 NLP 工作以及构建简单模型。 我的项目个性对立的 Tabular 式数据容器,简化数据预处理过程;内置多种数据集的 Loader 和 Pipe,省去预处理代码;各种不便的 NLP 工具,例如 Embedding 加载(包含 ELMo和BERT)、两头数据 cache 等;局部数据集与预训练模型的主动下载;提供多种神经网络组件以及复现模型(涵盖中文分词、命名实体辨认、句法分析、文本分类、文本匹配、指代消解、摘要等工作);Trainer 提供多种内置 Callback 函数,不便试验记录、异样捕捉等。环境依赖numpy>=1.14.2torch>=1.0.0tqdm>=4.28.1nltk>=3.4.1requestsspacyprettytable>=0.7.2内置组件大部分用于的 NLP 工作神经网络都能够看做由词嵌入(embeddings)和两种模块:编码器(encoder)、解码器(decoder)组成。 以文本分类工作为例,下图展现了一个 BiLSTM+Attention 实现文本分类器的模型流程图: fastNLP 在 embeddings 模块中内置了几种不同的 embedding:动态 embedding(GloVe、word2vec)、上下文相干 embedding (ELMo、BERT)、字符 embedding(基于CNN或者LSTM的CharEmbedding) 与此同时,fastNLP 在 modules 模块中内置了两种模块的诸多组件,能够帮忙用户疾速搭建本人所需的网络。 两种模块的性能和常见组件如下: 我的项目构造 fastNLP 的大抵工作流程如上图所示,而我的项目构造如下: 如果你想要理解我的项目的更多信息,那么就点击前面的链接返回我的项目主页看看吧:https://gitee.com/fastnlp/fastNLP

November 5, 2020 · 1 min · jiezi

关于自然语言处理:NLP实操笔记基于机器学习的文本分类1文本表示

基于机器学习的文本分类知识点1.文本示意办法One-hot:这种示意办法无奈表白单词与单词之间的类似水平`measurements = [ {'city': 'Dubai', 'temperature': 33.}, {'city': 'London', 'temperature': 12.},{'city': 'San Francisco', 'temperature': 18.},]from sklearn.feature_extraction import DictVectorizervec = DictVectorizer()vec.fit_transform(measurements).toarray()` Bag of Words:词袋示意,也称为计数向量示意(Count Vectors)。文档的向量示意能够间接用单词的向量进行求和失去。scikit-learn提供了从文本内容中提取数字特色的常见办法,即: tokenizing: 标记字符串并为每个可能的token提供整数id,例如应用空白和标点作为token分隔符;(分词标记)counting: 统计每个文档中呈现的token次数;(统计词频)normalizing: 通过缩小大多数样本/文档中都会呈现的一般性标记来进行标准化和加权。(标准化/归一化)在此计划中,特色和样本定义如下: 每个独立token呈现的频率(已标准化或未标准化)作为特色。给定文档的所有token频率的向量作为多元样本。 因而,文本语料库能够由矩阵示意,每一行代表一个文本,每一列代表一个token(例如一个单词)。 向量化:将文本汇合转换为数字特征向量的个别过程。这种办法(tokenizing,counting和normalizing)称为“词袋”或“n-gram”模型。 即只通过单词频率来形容文档,而齐全疏忽文档中单词的绝对地位信息。 John likes to watch movies. Mary likes too. -->> [1, 2, 1, 1, 1, 0, 0, 0, 1, 1]John also likes to watch football games. -->> [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]具体实现:sklearn 1.CountVectorizer 2.TfidfVectorizer 3.HashingVectorizer ...

October 15, 2020 · 1 min · jiezi

关于自然语言处理:开源百度中文依存句法分析工具DDParser重磅开源欢迎大家体验测评

_欢送关注【百度NLP】官网公众号,及时获取自然语言解决畛域核心技术干货!! 浏览原文:https://mp.weixin.qq.com/s/HdI16Yr4Y1YnEamzsJ3WrQ_ 继百度词法剖析工具LAC 2.0开源之后,8月4日,百度NLP又重磅公布了中文依存句法分析工具—DDParser! 相较于目前的其余句法分析工具,DDParser基于大规模标注数据进行模型的训练,采取了更加简略易了解的标注关系,并且反对一键装置及调用,更加适宜开发者疾速学习及应用。 开源地址: https://github.com/baidu/DDParser DDParser是什么DDParser(Baidu Dependency Parser)是百度NLP基于大规模标注数据和深度学习平台飞桨研发的中文依存句法分析工具,可帮忙用户间接获取输出文本中的关联词对、长距离依赖词对等。 如图1所示,输出文本通过DDParser输入其对应的句法分析树,其中,两词之间的弧示意两个词具备依赖关系,由外围词指向依存词,弧上的标签示意依存词对外围词的关系。 图1 DDParser能做什么通过依存句法分析可间接获取输出文本中的关联词对、长距离依赖词对等,其对事件抽取、情感剖析、问答等工作均有帮忙。 如图1所示实例,在事件抽取工作中,咱们通过依存剖析后果可提取句子中所蕴含的各种粒度的事件,如“纳达尔击败梅德韦杰夫”、“纳达尔夺得冠军”、“纳达尔夺得2019年美网男单冠军”。 相应的,在问答工作中,咱们依据问题的句法树与答案所在文本的句法树进行基于树的构造匹配,可获取对应的答案。例如,问题“谁夺得了2019年美网男单冠军”,句法树见图2,其答案所在文本的句法树见图1,咱们通过两棵树的对应局部匹配,可得出答案为“纳达尔”。 图2 在情感剖析工作中,依存剖析可用于评估对象的情感极性判断。如图3所示,咱们依据依存剖析后果提取评估对象“羊肉串”的观点:“羊肉串咸”和“羊肉串不陈腐”,基于此来判断该评估对象的情感极性。 图3 利用依存剖析后果可获取词之间的依赖关系和关联门路,如图4所示实例。前半句中存在两条门路“打疫苗”和“在哪儿打”,后半句中存在两条门路“打疫苗”和“打在哪儿”,这些门路信息能够给类似度计算等其余工作提供更多特色。 图4 总而言之,依存剖析将句子示意为一棵树,提供了词之间的依赖关系和关联门路,其在句子序列根底上提供了更多的句子构造信息,可帮忙其余工作从句子构造角度获取所需信息。 DDParser的劣势基于大规模优质标注数据 DDParser训练数据近百万,蕴含搜寻query、网页文本、语音输入数据等,笼罩了新闻、论坛等多种场景。从利用的角度登程,为了不便用户疾速上手,DDParser共设计了14种依存关系,并着重凸显虚词间的关系,在随机数据上LAS可达到86.9%。 基于深度学习框架,不依赖简约的特色工程 首先,DDParser采纳bilinear attention mechanism对句子语义进行示意,代替简单的特色工程模式。其次,其输出层退出了词的char级别示意,缓解粒度不同带来的成果降落,网络结构如图5所示。 图5 调用便捷 DDParser反对Python一键装置,不便用户疾速应用。 DDParser与其余开源工具的成果比照DDParser在与训练数据同源散布的规范测试汇合上,LAS达到92.9%。同时,为了验证DDParser在中文句法分析的劣势,咱们抉择市面上关注度高的2款句法分析开源工具进行成果比照,评估形式为专家依据各工具依存关系定义人工标注。 经测试,在从搜寻、聊天、网页文本、语音输入等数据汇合中随机抽取形成的随机测试汇合上,DDParser成果达到了86.9%,成果优于同类工具,具体成果比照状况如表1所示。 表1 DDParser如何装置应用DDParser反对pip一键装置,兼容Windows、Linux和MacOS,调用办法如下所示: pip install ddparser from ddparser import DDParser ddp = DDParser() ddp.parse("百度是一家高科技公司") 具体装置办法参见GitHub的README文档中的疾速开始。 目前,DDParser曾经开源,点击链接即可跳转GitHub开源地址理解更多技术详情,欢送大家体验,并奉献你的star和Fork!!!如果您有任何意见或问题都能够提issue到Github,工具开发者将及时为您解答。 DDParser我的项目地址:https://github.com/baidu/DDParser 百度自然语言解决(Natural Language Processing,NLP)以『了解语言,领有智能,扭转世界』为使命,研发自然语言解决核心技术,打造当先的技术平台和翻新产品,服务寰球用户,让简单的世界更简略。

August 7, 2020 · 1 min · jiezi

关于自然语言处理:transformerxl

地位编码相对地位vanilla Transformer中的相对地位编码,$$\begin{equation}PE(pos,2i)=\sin(pos/10000^{\frac{2i}{d_{model}}})\tag{1}\end{equation}$$$$\begin{equation}PE(pos,2i+1)=\cos(pos/10000^{\frac{2i}{d_{model}}})\tag{2}\end{equation}$$ def positional_embedding(pos_seq, inv_freq, bsz=None): sinusoid_inp = tf.einsum('i,j->ij', pos_seq, inv_freq) pos_emb = tf.concat([tf.sin(sinusoid_inp), tf.cos(sinusoid_inp)], -1) if bsz is not None: return tf.tile(pos_emb[:, None, :], [1, bsz, 1]) else: return pos_emb[:, None, :]pos_seq和inv_freq别离为 pos_seq = tf.range(klen - 1, -1, -1.0) inv_freq = 1 / (10000 ** (tf.range(0, d_model, 2.0) / d_model)) position embeding的实现略有些不同,sinusoid_inp的shape为[len_pos, d_model//2],len_pos为序列长度,d_model为embedding的维度。因而,理论失去的postition embedding,前d_model//2维采纳的是式(1),后d_model//2维采纳的是式(2)。 绝对地位$$\begin{equation}h_{t+1}=f(h_t,E_{s_{t+1}}+U_{1:L})\tag{3}\end{equation}$$$t+1$时刻的segment的hidden state,依赖于前一时刻segment的hidden state $h_t$,以及以后时刻输出序列$s_{t+1}$的word embedding $E_{s_{t+1}}$和相对地位编码$U_{1:L}$。显然,这样存在一个问题,即地位编码$U_{1:L}$对所有的segment都是一样的,对于输出$x_{t,j}$和$x_{t+1,j}$($j=1,\cdots,L$),模型无奈区别两者的地位embedding。为了解决这一问题,transformer-xl采纳绝对地位编码。在vanilla Transformer中,scaled dot-product attention的计算形式为$$\begin{equation}Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V\tag{4}\end{equation}$$应用绝度地位编码,计算query $q_i$和key $k_j$之间的attention score,$$\begin{equation}\begin{aligned}A_{i,j}^{abs}&=(E^T_{x_i}+U^T_i)W^T_q((E^T_{x_j}+U^T_j)W_k^T)^T\\&=(E^T_{x_i}+U^T_i)W^T_qW_k(E_{x_j}+U_j)\\&=\underbrace{E^T_{x_i}W^T_qW_kE_{x_j}}_{(a)}+\underbrace{E^T_{x_i}W^T_qW_kU_j}_{(b)}\\&+\underbrace{U^T_iW^T_qW_kE_{x_j}}_{(c)}+\underbrace{U^T_iW^T_qW_kU_j}_{(d)}\end{aligned}\tag{5}\end{equation}$$其中,$U_i$和$U_j$为相对地位编码。对式(xx)进行改良,引入绝对地位编码,$$\begin{equation}\begin{aligned}A_{i,j}^{rel}&=\underbrace{E^T_{x_i}W^T_qW_{k,E}E_{x_j}}_{(a)}+\underbrace{E^T_{x_i}W^T_qW_{k,R}R_{i-j}}_{(b)}\\&+\underbrace{u^TW_{k,E}E_{x_j}}_{(c)}+\underbrace{v^TW_{k,R}R_{i-j}}_{(d)}\end{aligned}\tag{6}\end{equation}$$次要有3点改良 ...

July 30, 2020 · 6 min · jiezi

关于自然语言处理:文心ERNIE3项能力助力快速定制企业级NLP模型EasyDL全新升级

欢送关注官网微信公众号【百度NLP】,及时获取更多自然语言解决畛域的技术干货! 浏览原文:https://mp.weixin.qq.com/s/hI... 近日,百度文心重磅公布三项性能,新增定制多标签文本分类、情感偏向剖析模型等性能,同时数据管理能力也进一步加强,更好地满足自然语言解决(NLP)畛域开发者需要,开发者可通过百度AI开发平台EasyDL进行应用。 文心(ERNIE)是依靠百度深度学习平台飞桨打造的语义了解技术与平台,集先进的预训练模型、全面的NLP算法集、端到端开发套件和平台化服务于一体,为企业和开发者提供一整套NLP定制与利用能力。在2020世界人工智能大会,百度文心(ERNIE)荣获最高奖项SAIL奖(Super AI Leader,卓越人工智能引领者)。 文心(ERNIE)官网地址:wenxin.baidu.com EasyDL是百度大脑面向企业开发者推出的零门槛AI开发平台,基于百度自主研发的深度学习平台飞桨,联合业界先进的工程服务技术打造,笼罩视觉与自然语言解决两大技术方向,反对一站式智能标注、模型训练、服务部署等全流程性能。应用EasyDL简略三步即可实现NLP工作配置与训练,性能优异。 面向零算法根底的开发者和业余算法工程师,EasyDL提供了经典版、专业版两种产品状态,凋谢不同档次的开发灵便度。在经典版与专业版中,NLP性能与应用场景存在区别,用户可依据需要灵便抉择。 经典版:适宜算法零根底或谋求高效率开发的用户,毋庸理解算法细节,最快5分钟上手。可疾速定制多种NLP模型,笼罩NLP根底工作和场景化工作。专业版:适宜NLP初学者和业余算法开发者,内置丰盛的NLP经典网络和预训练模型,可灵便脚本调参,只需大量数据可达到较优模型成果。文心三项能力在EasyDL中全新公布 文心私有云服务本次新增了多标签文本分类、情感偏向剖析等模型定制性能,并且丰盛了数据标注、数据管理能力,以更好地满足开发者需要。 新增定制化多标签文本分类性能 “多标签文本分类”指对一段文本同时标记多个标签,如:“将来的学和教正在产生颠覆,学生将会在家里学习,机器人将走上讲台。”可对应标签为“教育”、“科技”。该性能利用场景宽泛,如媒体场景中对新闻内容进行主动归类,在内容举荐场景中利用内容标签晋升召回,通过主动标签性能对常识文档进行多层级分类等。 目前,平台经典版和专业版均新增了这项性能,在“专业版”的工作配置过程中,开发者还可抉择ERNIE Tiny、ERNIE Large、ERNIE Base三种各有千秋的预训练模型。 新增定制化情感偏向剖析性能 “情感偏向剖析”指对一段文本进行“踊跃情感”或“消极情感”的判断,如“酒店地位很好,服务周到激情,下次肯定会再来”的用户评估,部署模型后可间接失去“Positive(踊跃情感)”的标签和99%的置信度。 该性能最常利用于用户评论剖析和舆情剖析,比方商品、店铺的口碑剖析,对事实性的新闻事件或互联网话题进行舆情剖析等,在汽车、餐饮、酒店等多个垂类上,剖析准确率可达到95%以上。 目前,该性能曾经上线平台经典版,后续平台将逐渐减少基于实体级和句子级的情感分类,力求笼罩更多的利用需要。 文本数据管理和数据标注性能全面降级 针对开发者数据管理和数据标注过程中的痛点,平台反对了更加灵便的数据格式,以后可反对zip、Excel、TXT三种文件格式进行上传。平台除了提供在线标注能力外,还提供了智能标注性能,大幅升高了开发者的标注老本,开发者可间接上传未标注数据体验该性能。 文本智能标注示意图 以上是本次降级带来的新增能力,点击“浏览原文”即可跳转EasyDL零门槛AI开发平台,体验文心的当先技术能力。 EasyDL零门槛AI开发平台: https://ai.baidu.com/easydl/ 文心(ERNIE)目前已宽泛服务于传媒、金融、医疗等多个行业,助力多家企业实现业务的智能化转型,向智能经济时代迈进。将来,文心(ERNIE)将持续推动技术创新、产品功能丰富与体验优化,让更多的企业级开发者方便快捷地利用前沿NLP技术,以弱小的文本智能助力各行各业。 业务单干: https://wenxin.baidu.com/apply 文心(ERNIE)QQ交换群: 1097307223 百度自然语言解决(Natural Language Processing,NLP)以『了解语言,领有智能,扭转世界』为使命,研发自然语言解决核心技术,打造当先的技术平台和翻新产品,服务寰球用户,让简单的世界更简略。

July 28, 2020 · 1 min · jiezi

关于自然语言处理:如何才能更懂中文

6月初,百度NLP公布了升级版的中文词法剖析工具——LAC 2.0!LAC可实现中文分词、词性标注、专名辨认等性能,帮忙你更懂中文! 详情:https://mp.weixin.qq.com/s/ePYwprZd4NbvGkdtOgrI7w LAC 2.0通过精简模型参数,联合飞桨预测库的性能优化,效率和性能都失去极大晋升。同时,LAC 2.0反对Java、android、C++和Python语言,反对一键装置,开发者能够实现疾速调用和集成。 想理解LAC 2.0详情,立即上手可能是最好用的中文词法剖析工具?点击链接可跳转开源地址,您的 star 是对咱们最好的激励!开源地址:https://github.com/baidu/lac

July 20, 2020 · 1 min · jiezi

智能搜索模型预估框架Augur的建设与实践

在过来十年,机器学习在学术界获得了泛滥的冲破,在工业界也有很多利用落地。美团很早就开始摸索不同的机器学习模型在搜寻场景下的利用,从最开始的线性模型、树模型,再到近两年的深度神经网络、BERT、DQN等,并在实践中也获得了良好的成果与产出。 在美团搜寻AI化的过程中,比拟外围的两个组件是模型训练平台Poker和在线预估框架Augur。本文次要与大家探讨Augur的设计思路、成果,以及它的劣势与有余,最初也简略介绍了一下Poker平台的价值。心愿这些内容对大家有所帮忙或者启发。 1. 背景搜寻优化问题,是个典型的AI利用问题,而AI利用问题首先是个零碎问题。经验近10年的技术积攒和积淀,美团搜寻零碎架构从传统检索引擎降级转变为AI搜索引擎。以后,美团搜寻整体架构次要由搜寻数据平台、在线检索框架及云搜平台、在线AI服务及试验平台三大体系形成。在AI服务及试验平台中,模型训练平台Poker和在线预估框架Augur是搜寻AI化的外围组件,解决了模型从离线训练到在线服务的一系列零碎问题,极大地晋升了整个搜寻策略迭代效率、在线模型预估的性能以及排序稳定性,并助力商户、外卖、内容等外围搜寻场景业务指标的飞速晋升。 首先,让咱们看看在美团App内的一次残缺的搜寻行为次要波及哪些技术模块。如下图所示,从点击输入框到最终的后果展现,从热门举荐,到动静补全、最终的商户列表展现、举荐理由的展现等,每一个模块都要通过若干层的模型解决或者规定干涉,才会将最适宜用户(指标)的后果展现在大家的眼前。 为了保障良好的用户体验,技术团队对模型预估能力的要求变得越来越高,同时模型与特色的类型、数量及复杂度也在一劳永逸。算法团队如何尽量少地开发和部署上线,如何疾速进行模型特色的迭代?如何确保良好的预估性能?在线预估框架Augur应运而生。通过一段时间的实际,Augur也无效地满足了算法侧的需要,并成为美团搜寻与NLP部通用的解决方案。上面,咱们将从解读概念开始,而后再分享一下在施行过程中咱们团队的一些教训和思考。 2.形象过程:什么是模型预估其实,模型预估的逻辑绝对简略、清晰。然而如果要整个平台做得好用且高效,这就须要框架零碎和工具建设(个别是治理平台)两个层面的配合,须要兼顾需要、效率与性能。 那么,什么是模型预估呢?如果疏忽掉各种算法的细节,咱们能够认为模型是一个函数,有一批输出和输入,咱们提供将要预估文档的相干信息输出模型,并依据输入的值(即模型预估的值)对原有的文档进行排序或者其余解决。 纯正从一个工程人员视角来看: 模型能够简化为一个公式( 举例:f(x1,x2)= ax1 + bx2 +c ),训练模型是找出最合适的参数abc。所谓特色,是其中的自变量x1与x2,而模型预估,就是将给定的自变量x1与x2代入公式,求得一个解而已。(当然理论模型输入的后果可能会更加简单,包含输入矩阵、向量等等,这里只是简略的举例说明。) 所以在理论业务场景中,一个模型预估的过程能够分为两个简略的步骤:第一步,特色抽取(找出x1与x2);第二步,模型预估(执行公式 ƒ,取得最终的后果)。 模型预估很简略,从业务工程的视角来看,无论多简单,它只是一个计算分数的过程。对于整个运算的优化,无论是矩阵运算,还是底层的GPU卡的减速,业界和美团外部都有比拟好的实际。美团也提供了高性能的TF-Serving服务(参见《基于TensorFlow Serving的深度学习在线预估》一文)以及自研的MLX模型打分服务,都能够进行高性能的Batch打分。基于此,咱们针对不同的模型,采取不同的策略: 深度学习模型:特色多,计算简单,性能要求高;咱们将计算过程放到公司对立提供的TF-Serving/MLX预估服务上;线性模型、树模型:搜寻场景下应用的特色绝对较少,计算逻辑也绝对简略,咱们将在构建的预估框架外部再构建起高性能的本机求解逻辑,从而缩小RPC。 这一套逻辑很简略,构建起来也不简单,所以在建设初期,咱们疾速在主搜的外围业务逻辑中疾速实现了这一架构,如下图所示。这样的一个架构使得咱们能够在主搜的外围排序逻辑中,可能应用各类线性模型的预估,同时也能够借助公司的技术能力,进行深度模型的预估。对于特色抽取的局部,咱们也简略实现了一套规定,不便算法同学能够自行实现一些简略的逻辑。 3. 预估框架思路的扭转3.1 老框架的局限旧架构中模型预估与业务逻辑耦合的形式,在预估文档数和特色数量不大的时候能够提供较好的反对。然而,从2018年开始,搜寻业务瓶颈开始到来,点评事业部开始对整个搜寻零碎进行降级革新,并打造基于常识图谱的分层排序架构(详情能够参见点评搜寻智能核心在2019年初推出的实际文章《公众点评搜寻基于常识图谱的深度学习排序实际》)。这意味着:更多须要模型预估的文档,更多的特色,更深层次的模型,更多的模型解决层级,以及更多的业务。在这样的需要背景下,老框架开始呈现了一些局限性,次要包含以下三个层面: 性能瓶颈:核心层的模型预估的Size扩大到数千级别文档的时候,单机曾经难以承载;近百万个特征值的传输开销曾经难以承受。复用艰难:模型预估能力曾经成为一个通用的需要,单搜寻就有几十个场景都须要该能力;而老逻辑的业务耦合性让复用变得更加艰难。平台缺失:疾速的业务迭代下,须要有一个平台能够帮忙业务疾速地进行模型和特色的治理,包含但不限于配置、上线、灰度、验证等等。 3.2 新框架的边界跟所有新零碎的诞生故事一样,老零碎肯定会呈现问题。原有架构在少特色以及小模型下虽有劣势,但业务耦合,无奈横向扩大,也难以复用。针对需要和老框架的种种问题,咱们开始构建了新的高性能分布式模型预估框架Augur,该框架领导思路是: 业务解耦,设定框架边界:只做特色抽取和模型预估,对预估后果的解决等业务逻辑交给下层解决。无状态,且能够做到分布式模型预估,无压力反对数千级别文档数的深度模型预估。 架构上的扭转,让Augur具备了复用的根底能力,同时也领有了分布式预估的能力。惋惜,零碎架构设计中没有“银弹”:尽管零碎具备了良好的弹性,但为此咱们也付出了一些代价,咱们会在文末进行解释。 4.预估平台的构建过程框架思路只能解决“能用”的问题,平台则是为了“通用”与“好用”。一个优良的预估平台须要保障高性能,具备较为通用且接口丰盛的外围预估框架,以及产品级别的业务管理系统。为了可能真正地晋升预估能力和业务迭代的效率,平台须要答复以下几个问题: 如何解决特色和模型的高效迭代?如何解决批量预估的性能和资源问题?如何实现能力的疾速复用并可能保障业务的平安?上面,咱们将逐个给出答案。 4.1 构建预估内核:高效的特色和模型迭代4.1.1 Operator和Transformer 在搜寻场景下,特色抽取较为难做的起因次要包含以下几点: 起源多:商户、商品、交易、用户等数十个维度的数据,还有穿插维度。因为美团业务泛滥,难以通过对立的特色存储去构建,交易相干数据只能通过服务来获取。业务逻辑多:大多数据在不同的业务层会有复用,然而它们对特色的解决逻辑又有所不同。模型差别:同一个特色,在不同的模型下,会有不同的解决逻辑。比方,一个连续型特色的分桶计算逻辑一样,但“桶”却因模型而各不相同;对于离散特色的低频过滤也是如此。迭代快:特色的疾速迭代,要求特色有疾速在线上失效的能力,如果想要改变一个判断还须要写代码上线部署,无疑会拖慢了迭代的速度。模型如此,特色也是如此。针对特色的解决逻辑,咱们形象出两个概念: Operator:通用特色解决逻辑,依据性能的不同又能够分为两类: IO OP:用解决原始特色的获取,如从KV里获取数据,或者从对应的第三方服务中获取数据。内置批量接口,能够实现批量召回,缩小RPC。Calc OP:用于解决对获取到的原始特色做与模型无关的逻辑解决,如拆分、判空、组合。业务能够联合需要实现特色解决逻辑。通过IO、计算拆散,特色抽取执行阶段就能够进行IO异步、主动聚合RPC、并行计算的编排优化,从而达到晋升性能的目标。 Transformer:用于解决与模型相干的特色逻辑,如分桶、低频过滤等等。一个特色能够配置一个或者多个Transformer。Transformer也提供接口,业务方能够依据本人的需要定制逻辑。 离在线对立逻辑:Transformer是特色解决的模型相干逻辑,因而咱们将Transformer逻辑独自抽包,在咱们样本生产的过程中应用,保障离线样本生产与线上特色解决逻辑的一致性。 基于这两个概念,Augur中特色的解决流程如下所示: 首先,咱们会进行特色抽取 ,抽取完后,会对特色做一些通用的解决逻辑;而后,咱们会依据模型的需要进行二次变换,并将最终值输出到模型预估服务中。如下图所示: 4.1.2 特色计算DSL 有了Operator的概念,为了不便业务方进行高效的特色迭代,Augur设计了一套弱类型、易读的特色表达式语言,将特色看成一系列OP与其余特色的组合,并基于Bison&JFlex构建了高性能语法和词法解析引擎。咱们在解释执行阶段还做了一系列优化,包含并行计算、两头特色共享、异步IO,以及主动RPC聚合等等。 举个例子: // IO Feature: binaryBusinessTime; ReadKV 是一个 IO 类型的 OPReadKV('mtptpoionlinefeatureexp','_id',_id,'ba_search.platform_poi_business_hour_new.binarybusinesstime','STRING')// FeatureA : CtxDateInfo; ParseJSON 是一个 Calc 类型的 OPParseJSON(_ctx['dateInfo']);// FeatureB : isTodayWeekend 须要看 Json 这种的日期是否是周末, 便能够复用 CtxDateInfo 这个特色; IsWeekend 也是是一个 Calc 类型的 OPIsWeekend(CtxDateInfo['date'])在下面的例子中,ParseJSON与IsWeekend都是OP, CtxDateInfo与isTodayWeekend都是由其余特色以及OP组合而成的特色。通过这种形式,业务方依据本人的需要编写OP , 能够疾速复用已有的OP和特色,发明本人须要的新特色。而在实在的场景中,IO OP的数量绝对固定。所以通过一段时间的累计,OP的数量会趋于稳定,新特色只需基于已有的OP和特色组合即可实现,十分的高效。 ...

July 17, 2020 · 2 min · jiezi

十年育林百度NLP已枝繁叶茂

种一棵树,最好的工夫是十年前,其次是当初。 ——Dambisa Moyo 7 月 10 日,自然语言解决顶会 ACL 2020 落下帷幕。本次大会共收到 3429 篇论文投稿,其中 779 篇被接管,接管率为 22.7%,与去年持平,低于近年来大部分年份的接管率。 在这 779 篇论文中,有 185 篇来自中国大陆,占被接管论文总数的 23.7%,仅次于美国。此外,往年的最佳论文二作和最佳 demo 论文一作均为华人学生。 然而,很多人可能不晓得,2000 年 ACL 年会在中国香港举办时,只有微软中国研究院的论文来自中国大陆;到了 2005 年,来自大陆的论文也只有三篇。 很多变动是过来十几年产生的,尤其是过来的十年。在这十年里,中国的 NLP 学界在 ACL 年会中的投稿数、被接管论文数逐年回升,同时,中国的 NLP 学者也实现了多个 “第一次” 的冲破: 2013 年,王海峰出任 ACL 五十年来首位华人主席;2014 年,吴华出任 ACL 程序委员会主席,成为中国企业首位 ACL 程序委员会主席;2015 年,ACL 年会首次在中国举办;大会上,哈工大教育部语言语音重点实验室主任李生传授取得 ACL 一生成就奖,成为首个取得该奖项的华人;2016 年,赵世奇入选 ACL 秘书长,成为首位入选该职位的亚洲人;2018 年,ACL 发表创立亚太区域分会(AACL)并打算在 2020 年举办首次会议,由王海峰负责开创主席;2020 年,百度领衔组织了 ACL 大会上首场同声传译研讨会(The 1st Workshop on Automatic Simultaneous Translation);…… ...

July 17, 2020 · 2 min · jiezi

百度AI闪耀ACL2020展现多项前沿技术举办首届机器同传研讨会

欢送关注【百度NLP】官网公众号,及时获取更多业界前沿技术! 近日,第58届国内计算语言学协会年会ACL 2020(The Association for Computational Linguistics)于线上开启。这次会议,百度共有11篇论文被录用,笼罩自然语言解决泛滥前沿钻研方向;百度联结谷歌、Facebook、清华大学等寰球顶尖机构,独特举办首届同声传译研讨会;在线上展台主题技术TALK环节,百度还就凋谢域人机对话技术、ERNIE核心技术等业内关注的话题开展分享,展示了中国企业在自然语言解决及人工智能畛域的技术创新与落地实际能力。 ACL成立于1962年,是自然语言解决畛域影响力最大、最具生机的国内学术组织之一。自成立之日起,致力于推动计算语言学及自然语言解决相干钻研的倒退和国内学术交流。百度的自然语言解决技术,在技术创新及利用上始终保持当先,始终被视为自然语言解决钻研界的“第一梯队”,此次在ACL 2020大会中的亮眼体现,正是源于百度在技术畛域的长期积攒。 百度11篇论文被收录,扎实AI技术彰显国内影响力 ACL2020共收录百度11篇论文 除了在国内AI学界的影响力外,ACL无论是审稿标准还是审稿品质,都是当今AI畛域国内顶级会议中公认的翘楚。 本届大会百度共有11篇论文被收录,笼罩了人机对话零碎、情感剖析/预训练示意学习、NLP文本生成与摘要、机器翻译/同声翻译、常识推理、AI辅助临床诊断等诸多自然语言解决界的前沿钻研方向,提出了包含端到端凋谢域生成模型PLATO、面向凋谢域对话的基于图谱的对话管理机制、情感常识加强的语言模型预训练方法、基于图示意的多文档生成式摘要办法GraphSum等诸多新框架、新算法、新数据,不仅极大晋升了相干畛域的钻研程度,也将推动人机交互、机器翻译、智慧医疗等场景的技术落地利用。 此次ACL 2020的审稿周期,从去年12月始终继续到往年4月,相比今年简直减少了一倍。会议投稿数量为3088篇,共有77篇论文被接管,包含571篇长论文和208篇短论文,接管率仅为25.2%。百度11篇论文被收录的问题,不仅意味着研究成果失去了国内学术界的认可,也证实了其钻研自身在试验严谨性、思路创新性等方面的实力。 领衔举办ACL 2020首届机器同传研讨会,百度技术当先性失去公认 同声传译以其高效的信息传递形式,广泛应用于国内会议、商务谈判、新闻公布、法律诉讼等多种跨语言交换场景。机器同传联合了机器翻译(Machine Translation)、语音辨认(Automatic Speech Recognition)和语音合成(Text-To-Speech)等人工智能技术,曾经成为重要的前沿钻研畛域。目前,机器同传还须要攻克高鲁棒性、高翻译品质、低延时的相干问题。 本次会议中,百度联结国内外顶尖企业和高校独特举办寰球首届同声传译研讨会,会集包含机器翻译、语音解决和人类口译畛域的钻研和从业人员,独特就机器同传架构、翻译模型、数据资源等问题开展研究。 百度技术委员会主席、百度自然语言解决首席科学家吴华受邀做线上报告 研讨会有多场高质量主题演讲,百度技术委员会主席、百度自然语言解决首席科学家吴华等国内外多名专家就机器同传钻研现状、面临挑战以及将来倒退进行探讨,加深了机器同传与口译两个畛域之间的交换,极大地推动了机器同传技术倒退以及机器和人工同传的协同单干。 在本次研讨会同期举办的国内首届同传评测较量中,百度行业首发业内最大规模面向实在场景的中英同传数据,涵盖信息技术、经济、文化、生物、艺术等多个畛域。同时,基于百度深度学习平台飞桨的一站式AI开发实训平台百度大脑AI Studio,百度为参赛选手提供在线编程环境、收费GPU算力、海量开源算法和凋谢数据,帮忙开发者疾速创立和部署模型。 展示多个技术亮点,百度线上展台主题技术TALK引关注 在本次大会的线上展台主题技术TALK环节,百度也展现出多个亮点,体现出百度当先的技术创新与落地实际能力,围绕ERNIE核心技术、凋谢域人机对话技术、智慧医疗、生物医药等业内关注的话题,百度献上了精彩的演讲。 在展台主题技术TALK环节,百度钻研人员做出主题为《ERNIE的技术原理、平台与利用》的分享。百度提出了常识加强的语义示意模型ERNIE及继续学习语义了解框架ERNIE 2.0,在16个中英文工作上超过国内最好成果,获得了SOTA的成果。去年12月,ERNIE在国内权威的通用语言了解评估基准GLUE上首次冲破90大关,超过人类三个点,获得寰球第一。往年3月,在寰球最大规模的国内语义评测SemEval上取得5项世界冠军。 近期,百度又相继公布了面向生成的预训练技术ERNIE-Gen和常识加强的视觉-语言预训练模型ERNIE-ViL。ERNIE-Gen首次提出基于多流机制生成残缺语义片段,在5个生成类工作上获得了SOTA成果。ERNIE-ViL首次将场景图常识融入多模态预训练, 刷新了5项多模态工作纪录,并登顶权威榜单VCR。在刚刚举办的世界人工智能大会上,百度文心(ERNIE)常识加强语义了解技术与平台取得了大会最高荣誉奖项“卓越人工智能引领者”(SAIL)奖。 在《基于用意图谱的凋谢域对话生成框架》分享中,百度钻研人员介绍到,为了晋升多轮对话下的整体对话品质,提出基于用意图谱的对话生成框架,在该框架中引入显式的对话管理机制,以加强对多轮对话流的控制能力。在公开数据集上的试验结果表明,以上模型或零碎在主题连贯性、对话指标疏导成功率等要害多轮成果指标上显著超过基线模型。 同时,百度借助这次展台技术Talk公布了业界首个基于隐变量的大规模对话模型PLATO以及基于PLATO相干工作扩大降级的PLATO-2。该模型应用了最多16亿参数,公布了中英文版本。其中,英文成果超过了Google的Meena和Facebook AI Research的Blender,中文模型也远超过现有基线。 在主题为《基于计算语言学的新冠病毒剖析和疫苗设计算法》的分享中,针对新冠疫情,百度钻研人员把自然语言解决畛域的经典句法分析算法移植到核酸序列构造剖析,介绍了寰球首个线性工夫的RNA构造预测算法LinearFold,能够将新冠病毒基因组全序列构造剖析的工夫从55分钟升高到27秒。在此基础上,百度还研发出了寰球首个mRNA疫苗序列设计算法LinearDesign,能够设计出构造最稳固的疫苗序列。对于新冠S蛋白,该算法16分钟内就可设计出优化疫苗序列,解决了mRNA疫苗研发中的一个重大难题。目前,百度正在踊跃推动和中国疾控中心、各大疫苗公司和科研机构的单干。 在主题为《自然语言解决和常识图谱技术在临床辅助决策中的利用钻研》的演讲中,百度钻研人员分享了灵医智惠在临床辅助决策中利用。以百度世界领先的中文自然语言解决和常识图谱等技术为根底,灵医智惠打造了弱小的医疗认知计算能力,造成了医疗场景下的语言、常识和认知计算三位一体的临床辅助决策引擎。 近年来,中国AI企业、开发者及高校在国内AI顶会上的体现也愈发亮眼。ACL2020大会中,无论是论文入选量、领衔举办研讨会、同传较量,百度都展现出中国AI行业头雁的实力。百度NLP是百度AI技术和利用的萌芽终点和带动力量,始终聚焦外围前沿,继续引领技术创新,继续引领中国NLP技术倒退方向,不仅为此次大会交上了一份称心的答卷,也为中国AI崛起、走向世界倒退奉献了重要的力量。 举荐浏览 百度11篇论文被国内自然语言解决顶级会议ACL 2020录用 对话智能新高度:百度公布超大规模凋谢域对话生成网络PLATO-2 百度文心(ERNIE)荣获2020世界人工智能大会最高荣誉SAIL奖 百度自然语言解决(Natural Language Processing,NLP)以『了解语言,领有智能,扭转世界』为使命,研发自然语言解决核心技术,打造当先的技术平台和翻新产品,服务寰球用户,让简单的世界更简略。

July 11, 2020 · 1 min · jiezi

百度文心ERNIE荣获2020世界人工智能大会最高荣誉SAIL奖

关注官网微信公众号【百度NLP】,及时获取更多自然语言解决畛域技术干货!7月9日,2020世界人工智能大会(WAIC)正式揭幕,大会颁布最高奖项SAIL奖(Super AI Leader,卓越人工智能引领者),百度文心(ERNIE)常识加强语义了解技术与平台获奖,百度技术委员会主席吴华下台领奖。 百度文心(ERNIE)取得SAIL奖 百度技术委员会主席吴华(左四)领奖 SAIL奖是世界人工智能大会最高荣誉奖项,次要激励寰球范畴外在人工智能畛域做出的方向性技术冲破和利用翻新,正在或将要扭转将来生存的人工智能我的项目。本届SAIL奖共吸引来自中国、德国、美国、以色列、新加坡等多国的800个我的项目参加角逐,包含亚马逊、IBM、百度、腾讯、华为等头部企业我的项目,以及前沿的国内外科研翻新、场景利用类我的项目。 本次获奖,也是百度ERNIE首次以中文名“文心”亮相。“文心”出自中国南朝文学家刘勰的《文心雕龙·序志》,原指用雕镂龙纹那样精密的功夫钻研文字的外延和魅力,百度借此示意用心做语义了解的信心。 自然语言解决(NLP)被称为人工智能皇冠上的一颗明珠,自然语言了解是其重要钻研方向之一,在该畛域的技术冲破对于机器认知智能倒退至关重要。文心(ERNIE)则是一个获得世界级冲破的语义了解技术与平台,它依靠于百度的深度学习平台飞桨打造,将机器了解语言的程度晋升到一个新的高度,为计算机带来了认知智能畛域的微小跨域。 文心(ERNIE)的核心技术劣势在于,它开创性地将大数据预训练与多源丰盛常识相结合,通过继续学习技术,一直排汇海量文本数据中词汇、构造、语义等方面的新常识,实现模型成果一直进化,如同人类继续学习一样。这让它在16个中英文典型NLP工作上显著超过过后世界最好成果。 文心(ERNIE)在语言生成畛域也带来了冲破,提出了业界首个基于多流机制生成残缺语义片段的预训练语言生成技术ERNIE-GEN,该技术在各类语言生成工作上也显著超过国内最好成果。 更值得关注的是,文心(ERNIE)还在多模态语义了解畛域获得了冲破。家喻户晓,让机器像人一样通过语言、听觉、视觉等取得对真实世界的对立认知,是人工智能的外围挑战之一。近年来,基于视觉、语言等单模态的语义了解获得重大倒退,但更多的人工智能实在场景本质上同时波及多个模态的信息,这就须要在跨模态的语义了解技术上有更多冲破。2020年7月,文心(ERNIE)提出了业界首个基于场景图常识加强的多模态预训练模型ERNIE-ViL,在多项典型多模态工作上刷新世界最好成果,并登顶视觉常识推理权威榜单VCR。 自2019年3月诞生至今,文心(ERNIE)曾经实现了3次重要迭代,并在多个公开权威语义评测中取得了近十项世界冠军。早在2019年12月,文心(ERNIE)就在国内权威的通用语言了解评估基准GLUE上,首次冲破90分,超过人类程度3个百分点,刷新榜单得分并取得寰球第一。2020年3月,又在寰球最大规模之一的语义评测SemEval 2020上获得了5项世界冠军。2020年7月,文心(ERNIE)登顶视觉常识推理权威榜单VCR。文心(ERNIE)相干翻新成绩也被人工智能顶级学术会议AAAI 2020和IJCAI 2020收录,并被寰球顶级科技商业杂志《麻省理工科技评论》、德国光谱杂志,以及韩国AITimes、日本AI-SCHOLAR等多国权威科技媒体官网报道。此次取得SAIL奖,是对文心(ERNIE)技术创新和利用摸索的再一次必定。 文心(ERNIE)提出的语义了解钻研新思路,不仅在推动人工智能技术的倒退,也正在面向用户的理论产品中进行利用。目前,文心(ERNIE)曾经广泛应用于百度搜索引擎、信息流、智能音箱等几十个产品中,全面、大幅晋升产品的智能化体验。同时,文心(ERNIE)也通过百度大脑AI开放平台面向开发者和企业进行凋谢赋能,目前已广泛应用于金融、通信、教育、互联网等各行各业,推动产业智能化倒退。 文心ERNIE官网:https://wenxin.baidu.com/ 单干征询:ernie-business@baidu.com QQ交换群:1097307223 百度自然语言解决(Natural Language Processing,NLP)以『了解语言,领有智能,扭转世界』为使命,研发自然语言解决核心技术,打造当先的技术平台和翻新产品,服务寰球用户,让简单的世界更简略。

July 10, 2020 · 1 min · jiezi

对话智能新高度百度发布超大规模开放域对话生成网络PLATO2

关注官网微信公众号【百度NLP】,及时获取更多自然语言解决畛域技术干货!近日,百度公布对话生成网络 PLATO-2,发表在凋谢域对话生成模型上迎来重要停顿。PLATO-2 承继 PLATO 隐变量进行回复多样化生成个性,模型参数高达 16 亿,涵盖中英文版本,可就凋谢域话题深度畅聊。试验结果显示,PLATO-2 中英文对话成果已超过谷歌 Meena、微软小冰和 Facebook Blender 等先进模型。 百度 NLP 于去年 10 月预颁布了通用畛域的对话生成预训练模型 PLATO,近期在 ACL 2020 上展现。最近,百度又新公布了超大规模模型 PLATO-2。 PLATO-2 承继了 PLATO 隐变量进行回复多样化生成的个性,模型参数规模回升到了 16 亿。PLATO-2 包含中英文版本,可能就凋谢域话题进行晦涩深刻的聊天。据公开数据,其成果超过了 Google 于往年 2 月份公布的 Meena (26 亿参数)和 Facebook AI Research 于往年 4 月份公布的 Blender (27 亿,最高 94 亿参数)的成果。在中文上更是达到了全新高度。 论文名称: PLATO-2:Towards Building an Open-Domain Chatbot via Curriculum Learning 论文地址: https://arxiv.org/abs/2006.16779 GitHub地址: https://github.com/PaddlePadd... 点击链接,查看PLATO-2中文对话成果演示_ https://mp.weixin.qq.com/s/X6... 引言传统对话零碎需要大量的人工编码,通常只能解决畛域内的问题。随着深度学习的遍及和一直倒退,端到端的凋谢域对话零碎成果也在稳步晋升。基于大量语料和超大规模模型的预训练凋谢域对话生成技术近些年获得了十分多的停顿。如微软公布的 DialoGPT, Google 公布的 Meena, Facebook 公布的 Blender 等,依靠数亿到数十亿级级别参数的 Transformer 模型,以及数亿到数十亿的语料训练模型,模型能模仿人产生和人类十分相近的对话。 ...

July 10, 2020 · 2 min · jiezi

吴恩达-最新自然语言处理

deeplearning.ai简介吴恩达以及deeplearning.ai系列的课后作业 自己借鉴了优良的博客并且简直全副手写代码 有问题的能够在github/tsuiraku@126.com分割我 Machine Learning机器学习 编程作业 Deep Learning深度学习 编程作业 TensorFlow in Practicetensorlow实际 编程作业 TensorFlow: Data and Deploymenttensorlow数据/部署 编程作业 Natural Language Processing自然语言解决 编程作业 代码点击这里心愿小伙伴们多多star

July 10, 2020 · 1 min · jiezi

ACL-2020论文分享-新任务融合多个对话类型的对话式推荐

欢迎关注【百度NLP】官方微信公众号,及时获取更多自然语言处理领域的技术干货! 点击链接阅读原文:https://mp.weixin.qq.com/s/f3dCOc4Mog9eZTl0k5YQew 本文对百度入选ACL 2020的论文《Towards Conversational Recommendation over Multi-Type Dialogs》进行解读,该论文提出了一个新对话任务:融合多个对话类型的对话式推荐。 本论文地址:https://arxiv.org/pdf/2005.03... 建议大家点击阅读以下文章,以更加了解人机对话技术: 《一文看懂人机对话》链接:https://mp.weixin.qq.com/s/fk...《直播回顾 | “听大咖讲论文” ACL 2020 百度论文分享会A场》链接 :https://mp.weixin.qq.com/s/w1... 《直播回顾 | “听大咖讲论文”ACL 2020百度论文分享会 B场》链接:https://mp.weixin.qq.com/s/9m... 动机人机对话是人工智能的一项基本挑战,涉及语言理解、对话控制和语言生成等关键技术,受到了学术界和工业界的广泛关注。 随着智能音箱的普及,对话式推荐变得越来越重要。对话式推荐指通过基于对话的人机交互形式实现高质量的自动推荐。前人工作大致可以分为两大类: 基于任务类对话的建模方式;基于更自由的开放域对话的建模方式。 前人工作通常集中于单一对话类型,没有考虑如何同时处理多个对话类型(闲聊/问答/任务/推荐)。但是在实际应用中,人机对话通常包含多个对话类型。 基于以上考虑,研究人员提出一个新对话任务:融合多个对话类型的对话式推荐。研究人员期望系统主动且自然地从任意类型对话(闲聊/问答等)引导到推荐目标上。如图1所示,给定一个起始对话(例如问答),系统可为推荐规划一个对话目标序列,然后基于该目标序列驱动自然的对话,最后完成目标实体的推荐。本论文中的任务设定与前人工作的区别在于: 论文中的对话包含多个对话类型;论文强调系统的主动对话能力,例如系统可主动规划一个对话目标序列,而该序列通常对用户是不可见的。 为辅助该任务的研究,研究人员构建了一个支持多对话类型的人-人对话推荐数据集(DuRecDial)。该数据集的特点包括: 每个对话session包含多个对话类型;包括丰富的交互逻辑;对话领域的多样性;为每个用户建立个性化的profile,支持个性化的推荐。【表1 】论文中数据集与相关数据集在如下维度的比较:session数量/utterance数量/对话类型/对话领域/是否支持用户个性化 在这个任务和数据集,研究人员尝试解决目前人机对话存在的一些问题: 自然的融合多种类型对话;机器根据用户长期偏好规划对话目标序列,并主动引领对话;包含丰富的对话逻辑,如用户转移话题,也可产生合理回复;充分利用之前对话,对话结束会根据用户反馈,实时更新用户Profile,更新的Profile会影响后续对话。 任务设置研究人员要求两人进行对话,其中一人扮演recommendation seeker(用户),另一个人扮演recommender(bot),要求recommender主动引导对话,然后基于用户profile推荐,而不是用户引导对话或寻求推荐。例如在用户关于『生死劫』的问答后,机器根据其长期偏好和知识图谱信息,规划对话目标序列(关于『周迅』的闲聊>>推荐电影『风声』),并自然地引导对话,当用户转移话题(更喜欢『刘若英』的电影),机器根据其profile,精准推荐『南京1937』,最终完成所有对话目标。对话结束后,用户profile会根据其反馈而更新,以便于提高后续对话的用户体验。 【图1】 融合多对话类型的对话式推荐样例 用户profile如图1左上部分所示,给机器提供的知识图谱信息是目标序列相关的子图信息。图1右侧为多类型对话中的对话式推荐示例,用户问答后,机器主动引导对话,自然流畅地实现对话目标的转移。 这个任务跟之前任务的不同主要包括:对话包含多个goal(目标),每个goal都包含goal type和goal topic;type决定对话类型,topic对type进一步细化,决定对话的具体内容。机器通过规划对话目标序列来主动引导对话,而用户不知道对话目标。 数据集建设现存对话数据集不适用于论文中的任务,因此研究人员通过人工标注的方式在明星、电影、音乐、新闻、美食、天气、POI等领域构建一个新的对话数据集(DuRecDial),用于融合多类型对话的对话式推荐的研究。数据集构建包括:构建领域级对话目标序列、构建用户Profile、知识挖掘、构建知识图谱、构建任务模板和语料众包标注。主要流程如下图所示: 【图2】 数据集建设的主要流程 1、构建领域级对话目标序列首先根据百度知识图谱,选取20个对聊天有价值的领域,然后分别组合成对话目标序列,再经过多人多次校验,过滤不容易组成目标序、加入目标序列会导致目标转移不自然、跟其他领域关联性较小的领域,剩下7个领域。然后枚举7个领域的目标序列,再经过多次人工校验和试标注,最终产生领域级对话目标序列候选集。 【图3】 领域级目标序列 2、构建用户Profile每个用户均有独一无二的profile,否则推荐就乱了。用户Profile包括两部分:姓名、性别、年龄、居住地、职业等基本信息;领域级偏好、实体级偏好等偏好信息。 基本信息的构建相对简单,但也比较细致。随机从『男、女』指定性别,从5个年龄段随机选择年龄,从55个热门城市随机分配一个居住地(居住地会影响接下来的天气、美食、POI数据的构建),然后根据性别随机生成姓名(姓名为2或3个字,不同性别候选字不同),根据年龄为用户分配职业状态,再根据职业状态分配几种聊天话题,聊天话题会影响对话的标注。 偏好包括:领域偏好(比如喜欢音乐,不喜欢新闻等)、实体偏好(比如喜欢歌曲A,而不喜欢歌曲B)。领域偏好根据目标序列包含的领域随机生成,再人工校验,并根据试标注不断完善;只有领域偏好,无法标注对话,因此需加入实体偏好,实体偏好根据知识图谱和领域偏好确定,然后人工校验。偏好的设定很关键,也是论文中任务和数据集主打的一个点。 需要强调的是,为更符合真实应用,用户知道自己的profile,机器只能通过和用户聊天获取profile。 3、知识挖掘研究人员首先根据用户居住的55个热门城市,从『2345天气』抓取2017年7月到2019年8月的历史天气。再根据天气和美食的关系,从『美团网』和『美食天下』抓取美食相关知识。再根据美食和居住城市,从『美团网』抓取POI(餐厅)相关知识。 然后,从『时光网』挖掘电影和电影明细相关的结构化和非结构化知识信息,如电影票房、导演、评论等。根据挖掘的这些静态知识进一步计算出动态知识以丰富知识内容,比如根据票房信息计算出电影之间的票房排行,根据评分信息离散化得到电影或人物的口碑信息等。 接着,从『网易云音乐』抓取2000个热门歌手及其热门歌曲。把歌手和电影明星取交集,再根据电影、音乐数量人工过滤(因为任务中,每个用户都跟机器有多个对话,需要推荐很多实体),最终确定明星候选集。然后多个新闻来源抓取明星新闻,再根据新闻数过滤,产生最终对话使用的明星集合。需要说明的是,研究人员使用电影和音乐评论当推荐理由,而网易云音乐评论质量较差,故从『百度百科』抓取音乐鉴赏补充评论。 最终所有数据都会清洗和过滤,经抽样评估,研究人员挖掘的知识准确率在98%以上。 4、构建知识图谱类似传统图谱构建,研究人员以挖据的三元组知识中的实体和值为节点,属性为边建立一阶图谱关系,除此之外,研究人员对有相同属性和值的两个实体建立二阶关系,如“红海行动”和“湄公河行动”的导演都是林超贤,这两个实体存在二阶关联关系。 5、构建任务模板任务模板用来明确双方聊什么、怎么聊,它包括:实体级的goal序列,以及每个goal的描述(实现该目标的一些具体要求)。首先,用户领域偏好和领域级目标序列取交集,产生特定用户的领域目标序列,再根据用户实体偏好,产生实体级goal序列。然后基于多种规则和人工标注,产生每个goal的描述。任务模板如下图所示: 【图4】 任务模板 至此,标注前的数据准备就结束了,研究人员的经验是这些准备很关键,甚至能决定数据集能不能标注。随标注的进行,这些数据准备还会不断完善。 6、语料众包标注不同于self-play一人扮演对话双方的标注方式,研究人员在众包平台(test.baidu.com)随机挑选两个标注人员模拟真实对话的双方标注每组对话数据。为保证至少有两个标注人员同时进入标注任务,研究人员安排多个外包团队进入标注平台。标注时,每组对话随机挑选两个标注人员标注,其中之一扮演机器角色主动引领对话进程完成设定的对话目标,另一标注人员扮演真实用户角色响应机器角色的对话。 需要说明的是,对任何数据集来说,质量都是很重要的,因此论文中有严格的数据质量控制流程。具体如下图:【图5】 数据质量控制流程 标注结束后,通过采样评估DuRecDial质量,完全符合要求的达90%左右,且不存在有严重问题的数据。DuRecDial跟现存数据集的对比,以及数据集统计,如下图所示:【图6】 跟现存数据集的对比及数据集统计 ...

June 30, 2020 · 1 min · jiezi

2019年十大高薪技能您的专业在里头吗

作者 | GreyCampus 来源 | 网络大数据随着科技的不断进步,工业世界的“饥饿游戏”越演越烈,如何始终在市场保有竞争力? 是的,快速获得新兴行业知识技能的人在一定时间内将会更容易成功。但是,新兴行业适中的改变,在前进。 所以要养成提高技能和保持竞争力的习惯,随着新的行业知识的出现,不断提高自己的技能。 据领英介绍,以下是2019年最受欢迎的新兴行业技能: 1.云计算云计算是一种在internet上可用的数据中心。如今,人们的生活和工作有离不开互联网,互联网服务依赖于云计算。全球可获得的云计算职位空缺数量为101,913个。2018年的工资中位数为146,350美元。云产业的收入预计在两年内达到3000亿美元。 最受欢迎的云计算技能是: Amazon Web Services (AWS)LinuxSoftware developmentJavaDevOpsDockerInfrastructure as a Service (IaaS)2.人工智能人工智能正在兴起并得到越来越多的应用。它主要吸引了需要高度开发技术的应用程序的使用。人工智能赋予机器像人类一样工作的能力。 我们可以把人工智能描述成具有思考、推理和自我修正能力的机器智能。人工智能目前在语音识别和聊天机器人中应用最多。 到2019年底,人工智能预计将创造约200万个职位。虽然人工智能领域将涵盖各个领域,但卫生、教育和公共事业等行业是人工智能的领头羊。 3.数据科学数据科学同样也是应用于各种行业领域,这些领域使用科学的方法、算法和系统来获取数据,从而解读出行业领域的隐藏规律和预测未知的结果等。 事实上,招聘网站称,去年对数据科学家的需求增加了29%。在真实的就业数字中,全国范围内的就业需求增加了4000多个。 4. 数字营销互联网的蓬勃发展促使各行各业开始进行数字营销。数字营销是通过各种网络媒体平台将产品推广到消费者手中。一个典型的渠道是展示或横幅广告。最终,你想要在有大量网络流量的平台上吸引人们对你的产品的注意,然后创造好奇心,从而带动销售。 今天的经济使得数字营销成为一个主要的经济驱动力。这对数字营销人员的薪酬产生了连锁反应。数字广告专业人士的实得工资超过12.8万美元。 数字营销应用程序的激增正推动该领域的职位空缺数量。到目前为止,专家预计2024年将有2万个工作机会。 5.UI or UX Design设计用户界面和用户体验都是软件产品和网站设计的重要组成部分。 此外,在不同的求职网站上,有超过15万个UI/UX职位空缺。 同样,UI或UX设计师职位也在25个高薪职位之列,平均年薪为96,885美元。 6. 移动应用程序开发移动应用正在蓬勃发展。现在几乎所有的东西都有一个应用程序APP。在Android、iOS和web平台上每天都有无数个各个领域的应用程序上线。 由于移动应用的快速增长,对移动应用开发者的需求也随之增加。目前,移动应用程序开发人员的收入超过10万美元,而招聘网站显示,有30万个工作机会在招聘! 7.软件测试每个软件都需要定期测试,使其在质量和功能方面保持更新。 软件测试人员的收入大约在45000美元到81000美元之间。然而,他们的工资因公司而异。同样薪资水平取决于测试人员的工作职位、描述和经验水平。 8. 业务分析业务分析是了解业务的需求、问题和找到相关的解决方案。 根据调查,到2024年,对业务分析师的需求将增长14%。业务分析师的薪资中值约为81,500美元,甚至可能随着对该职业需求的增长而上升。 9. 自然语言处理自然语言处理(NLP)集成了计算机科学、信息工程和人工智能。它的目标是让电脑机器理解人类的语言。 在实践中,NLP涉及到计算机和自然语言之间的交互。机器携带的代码使它们能够理解人类的表情。这些机器还能解读用户的意图。 目前,NLP程序员的年薪中位数是66,500美元,专家预测每年将增长5%。仅英国就有超过5.5万个自然语言处理方面的职位空缺。 10. 工业设计针对大众的产品设计被称为工业设计,大多数产品都要经过多次设计迭代,才能最终成型。此外,这些产品迭代通常涉及关于产品功能和设计的许多决策。所以工业设计师的知识和技能是必要的。 工业设计领域有超过39,700个职位空缺。尽管这些就业机会大多来自制造业。工业设计师的年薪中位数为64,910美元-但是,赚钱最多的建筑师为年薪70,000美元。 总结:本文重点介绍的技能展示了数字世界的影响和进步,无论你如何选择,在未来几年都会保有一定的优势。

October 17, 2019 · 1 min · jiezi

自然语言处理手撕-FastText-源码02基于字母的-Ngram-实现FastTexts-subwords

作者:LogM 本文原载于 https://segmentfault.com/u/logm/articles ,不允许转载~ 1. 源码来源FastText 源码:https://github.com/facebookresearch/fastText 本文对应的源码版本:Commits on Jun 27 2019, 979d8a9ac99c731d653843890c2364ade0f7d9d3 FastText 论文: [1] P. Bojanowski, E. Grave, A. Joulin, T. Mikolov, Enriching Word Vectors with Subword Information [2] A. Joulin, E. Grave, P. Bojanowski, T. Mikolov, Bag of Tricks for Efficient Text Classification 2. 概述之前的博客介绍了"分类器的预测"的源码,里面有一个重点没有详细展开,就是"基于字母的 Ngram 是怎么实现的"。这块论文里面关于"字母Ngram的生成"讲的比较清楚,但是对于"字母Ngram"如何加入到模型中,讲的不太清楚,所以就求助于源码,源码里面把这块叫做 Subwords。 看懂了源码其实会发现 Subwords 加入到模型很简单,就是把它和"词语"一样对待,一起求和取平均。 另外,我自己再看源码的过程中还有个收获,就是关于"中文词怎么算subwords",之前我一直觉得 Subwords 对中文无效,看了源码才知道是有影响的。 最后是词向量中怎么把 Subwords 加到模型。这部分我估计大家也不怎么关心,所以我就相当于写给我自己看的,解答自己看论文的疑惑。以skipgram为例,输入的 vector 和所要预测的 vector 都是单个词语与subwords相加求和的结果。 3. 怎么计算 Subwords之前的博客有提到,Dictionary::getLine 这个函数的作用是从输入文件中读取一行,并将所有的Id(包括词语的Id,SubWords的Id,WordNgram的Id)存入到数组 words 中。 ...

June 30, 2019 · 5 min · jiezi

自然语言处理手撕-FastText-源码01分类器的预测过程

作者:LogM 本文原载于 https://segmentfault.com/u/logm/articles ,不允许转载~ 1. 源码来源FastText 源码:https://github.com/facebookre... 本文对应的源码版本:Commits on Jun 27 2019, 979d8a9ac99c731d653843890c2364ade0f7d9d3 FastText 论文: [1] P. Bojanowski, E. Grave, A. Joulin, T. Mikolov, Enriching Word Vectors with Subword Information [2] A. Joulin, E. Grave, P. Bojanowski, T. Mikolov, Bag of Tricks for Efficient Text Classification 2. 概述FastText 的论文写的比较简单,有些细节不明白,网上也查不到,所幸直接撕源码。 FastText 的"分类器"功能是用的最多的,所以先从"分类器的predict"开始挖。 3. 开撕先看程序入口的 main 函数,ok,是调用了 predict 函数。 // 文件:src/main.cc// 行数:403int main(int argc, char** argv) { std::vector<std::string> args(argv, argv + argc); if (args.size() < 2) { printUsage(); exit(EXIT_FAILURE); } std::string command(args[1]); if (command == "skipgram" || command == "cbow" || command == "supervised") { train(args); } else if (command == "test" || command == "test-label") { test(args); } else if (command == "quantize") { quantize(args); } else if (command == "print-word-vectors") { printWordVectors(args); } else if (command == "print-sentence-vectors") { printSentenceVectors(args); } else if (command == "print-ngrams") { printNgrams(args); } else if (command == "nn") { nn(args); } else if (command == "analogies") { analogies(args); } else if (command == "predict" || command == "predict-prob") { predict(args); // 这句是我们想要的 } else if (command == "dump") { dump(args); } else { printUsage(); exit(EXIT_FAILURE); } return 0;}再看 predict 函数,预处理的代码不用管,直接看 predict 的那行,调用了 FastText::predictLine。这里注意下,这是个 while 循环,所以FastText::predictLine 这个函数每次只处理一行。 ...

June 30, 2019 · 3 min · jiezi

自然语言处理-L01

基本概念自然语言理解, NLU, Understanding形式化(标准化)的数学符号、模型, 模拟人的语言能力 计算语言学, Computational Linguistics数学模型 自然语言处理, NLP更宽泛的概念。 利用计算机, 对人类的书面和口头形式的自然语言的信息进行处理和加工 语言一个符号系统, 意义(知识) + 规则(语法) 第一系统 --- 语音系统 Sound System第二系统 --- 文字系统(书写系统) Writing System 口头语和书面语 语言和言语 语言单位单个字符, 词(word), 短语(Phrase), 句子(Sentence), 语段, 篇章(Utterence) 自然语言的作用思维的载体, 交流的工具 人类历史以语言文字形式记载和流传的只是占总量的 80% 以上, 图表占的比例很小 基本问题如何让计算机具有语言处理的能力,如何让计算机实现自动的或人机互助的语言处理功能 如何利用计算机处理海量的语言信息,自动处理,知识挖掘,有效利用 学科特点 --- 交叉性学科语言学:形式语言文法,词典、语料库(标注、分词等)、知识库 数学:概率论、统计学、信息论,自动机、Markov模型、HMM模型 计算机科学:自动机器学习,自动人工智能,状态空间的图搜索算法 心理语言学:研究人类理解自然语言的机制 语言学基本知识:语言研究的基本范畴 例子英汉翻译Miss Smith put two books on this table 形态分析 ...

May 12, 2019 · 1 min · jiezi

手把手教程:用Python开发一个自然语言处理模型,并用Flask进行部署

摘要: 实用性教程!教你如何快速创建一个可用的机器学习程序!截住到目前为止,我们已经开发了许多机器学习模型,对测试数据进行了数值预测,并测试了结果。实际上,生成预测只是机器学习项目的一部分,尽管它是我认为最重要的部分。今天我们来创建一个用于文档分类、垃圾过滤的自然语言处理模型,使用机器学习来检测垃圾短信文本消息。我们的ML系统工作流程如下:离线训练->将模型作为服务提供->在线预测。1、通过垃圾邮件和非垃圾邮件训练离线分类器。2、经过训练的模型被部署为服务用户的服务。当我们开发机器学习模型时,我们需要考虑如何部署它,即如何使这个模型可供其他用户使用。Kaggle和数据科学训练营非常适合学习如何构建和优化模型,但他们并没有教会工程师如何将它们带给其他用户使用,建立模型与实际为人们提供产品和服务之间存在重大差异。在本文中,我们将重点关注:构建垃圾短信分类的机器学习模型,然后使用Flask(用于构建Web应用程序的Python微框架)为模型创建API。此API允许用户通过HTTP请求利用预测功能。让我们开始吧!构建ML模型数据是标记为垃圾邮件或正常邮件的SMS消息的集合,可在此处找到。首先,我们将使用此数据集构建预测模型,以准确分类哪些文本是垃圾邮件。朴素贝叶斯分类器是一种流行的电子邮件过滤统计技术。他们通常使用词袋功能来识别垃圾邮件。因此,我们将使用Naive Bayes定理构建一个简单的消息分类器。import pandas as pdimport numpy as npfrom sklearn.feature_extraction.text import CountVectorizerfrom sklearn.model_selection import train_test_splitfrom sklearn.naive_bayes import MultinomialNBfrom sklearn.metrics import classification_reportdf = pd.read_csv(‘spam.csv’, encoding=“latin-1”)df.drop([‘Unnamed: 2’, ‘Unnamed: 3’, ‘Unnamed: 4’], axis=1, inplace=True)df[’label’] = df[‘class’].map({‘ham’: 0, ‘spam’: 1})X = df[‘message’]y = df[’label’]cv = CountVectorizer()X = cv.fit_transform(X) # Fit the DataX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)#Naive Bayes Classifierclf = MultinomialNB()clf.fit(X_train,y_train)clf.score(X_test,y_test)y_pred = clf.predict(X_test)print(classification_report(y_test, y_pred))Naive Bayes分类器不仅易于实现,而且提供了非常好的性能。在训练模型之后,我们都希望有一种方法来保持模型以供将来使用而无需重新训练。为实现此目的,我们添加以下行以将我们的模型保存为.pkl文件供以后使用。from sklearn.externals import joblibjoblib.dump(clf, ‘NB_spam_model.pkl’)我们加载并使用保存的模型:NB_spam_model = open(‘NB_spam_model.pkl’,‘rb’)clf = joblib.load(NB_spam_model)上述过程称为“标准格式的持久模型”,即模型以特定的开发语言的特定格式持久存储。下一步就是将模型在一个微服务中提供,该服务的公开端点用来接收来自客户端的请求。将垃圾邮件分类器转换为Web应用程序在上一节中准备好用于对SMS消息进行分类的代码之后,我们将开发一个Web应用程序,该应用程序由一个简单的Web页面组成,该页面具有允许我们输入消息的表单字段。在将消息提交给Web应用程序后,它将在新页面上呈现该消息,从而为我们提供是否为垃圾邮件的结果。首先,我们为这个项目创建一个名为SMS-Message-Spam-Detector 的文件夹,这是该文件夹中的目录树,接下来我们将解释每个文件。spam.csvapp.pytemplates/ home.html result.htmlstatic/ style.css子目录templates是Flask在Web浏览器中查找静态HTML文件的目录,在我们的例子中,我们有两个html文件:home.html和result.html 。app.pyapp.py文件包含将由Python解释器执行以运行Flask Web应用程序的主代码,还包含用于对SMS消息进行分类的ML代码:from flask import Flask,render_template,url_for,requestimport pandas as pd import picklefrom sklearn.feature_extraction.text import CountVectorizerfrom sklearn.naive_bayes import MultinomialNBfrom sklearn.externals import joblibapp = Flask(name)@app.route(’/’)def home(): return render_template(‘home.html’)@app.route(’/predict’,methods=[‘POST’])def predict(): df= pd.read_csv(“spam.csv”, encoding=“latin-1”) df.drop([‘Unnamed: 2’, ‘Unnamed: 3’, ‘Unnamed: 4’], axis=1, inplace=True) # Features and Labels df[’label’] = df[‘class’].map({‘ham’: 0, ‘spam’: 1}) X = df[‘message’] y = df[’label’] # Extract Feature With CountVectorizer cv = CountVectorizer() X = cv.fit_transform(X) # Fit the Data from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42) #Naive Bayes Classifier from sklearn.naive_bayes import MultinomialNB clf = MultinomialNB() clf.fit(X_train,y_train) clf.score(X_test,y_test) #Alternative Usage of Saved Model # joblib.dump(clf, ‘NB_spam_model.pkl’) # NB_spam_model = open(‘NB_spam_model.pkl’,‘rb’) # clf = joblib.load(NB_spam_model) if request.method == ‘POST’: message = request.form[‘message’] data = [message] vect = cv.transform(data).toarray() my_prediction = clf.predict(vect) return render_template(‘result.html’,prediction = my_prediction)if name == ‘main’: app.run(debug=True)1、我们将应用程序作为单个模块运行,因此我们使用参数初始化了一个新的Flask实例,__name__是为了让Flask知道它可以在templates所在的同一目录中找到HTML模板文件夹()。2、接下来,我们使用route decorator(@app.route(’/’))来指定可以触发home 函数执行的URL 。我们的home 函数只是呈现home.htmlHTML文件,该文件位于templates文件夹中。3、在predict函数内部,我们访问垃圾邮件数据集、预处理文本、进行预测,然后存储模型。我们访问用户输入的新消息,并使用我们的模型对其标签进行预测。4、我们使用该POST方法将表单数据传输到邮件正文中的服务器。最后,通过debug=True在app.run方法中设置参数,进一步激活Flask的调试器。5、最后,我们使用run函数执行在服务器上的脚本文件,我们需要确保使用if语句 name == ‘main’。home.html以下是home.html将呈现文本表单的文件的内容,用户可以在其中输入消息:<!DOCTYPE html><html><head> <title>Home</title> <!– <link rel=“stylesheet” type=“text/css” href="../static/css/styles.css"> –> <link rel=“stylesheet” type=“text/css” href="{{ url_for(‘static’, filename=‘css/styles.css’) }}"></head><body> <header> <div class=“container”> <div id=“brandname”> Machine Learning App with Flask </div> <h2>Spam Detector For SMS Messages</h2> </div> </header> <div class=“ml-container”> <form action="{{ url_for(‘predict’)}}" method=“POST”> <p>Enter Your Message Here</p> <!– <input type=“text” name=“comment”/> –> <textarea name=“message” rows=“4” cols=“50”></textarea> <br/> <input type=“submit” class=“btn-info” value=“predict”> </form> </div></body></html>view rawstyle.css文件在home.html的head部分,我们将加载styles.css文件,CSS文件是用于确定HTML文档的外观和风格的。styles.css必须保存在一个名为的子目录中static,这是Flask查找静态文件(如CSS)的默认目录。body{ font:15px/1.5 Arial, Helvetica,sans-serif; padding: 0px; background-color:#f4f3f3;}.container{ width:100%; margin: auto; overflow: hidden;}header{ background:#03A9F4;#35434a; border-bottom:#448AFF 3px solid; height:120px; width:100%; padding-top:30px;}.main-header{ text-align:center; background-color: blue; height:100px; width:100%; margin:0px; }#brandname{ float:left; font-size:30px; color: #fff; margin: 10px;}header h2{ text-align:center; color:#fff;}.btn-info {background-color: #2196F3; height:40px; width:100px;} /* Blue */.btn-info:hover {background: #0b7dda;}.resultss{ border-radius: 15px 50px; background: #345fe4; padding: 20px; width: 200px; height: 150px;}result.html我们创建一个result.html文件,该文件将通过函数render_template(‘result.html’, prediction=my_prediction)返回呈现predict,我们在app.py脚本中定义该文件以显示用户通过文本字段提交的文本。result.html文件包含以下内容:<!DOCTYPE html><html><head> <title></title> <link rel=“stylesheet” type=“text/css” href="{{ url_for(‘static’, filename=‘css/styles.css’) }}"></head><body> <header> <div class=“container”> <div id=“brandname”> ML App </div> <h2>Spam Detector For SMS Messages</h2> </div> </header> <p style=“color:blue;font-size:20;text-align: center;"><b>Results for Comment</b></p> <div class=“results”> {% if prediction == 1%} <h2 style=“color:red;">Spam</h2> {% elif prediction == 0%} <h2 style=“color:blue;">Not a Spam (It is a Ham)</h2> {% endif %} </div></body></html>从result.htm文件我们可以看到一些代码使用通常在HTML文件中找不到的语法例如,{% if prediction ==1%},{% elif prediction == 0%},{% endif %}这是jinja语法,它用于访问从HTML文件中请求返回的预测。我们就要大功告成了!完成上述所有操作后,你可以通过双击appy.py 或从终端执行命令来开始运行API :cd SMS-Message-Spam-Detectorpython app.py你应该得到以下输出:现在你可以打开Web浏览器并导航到http://127.0.0.1:5000/,你应该看到一个简单的网站,内容如下:恭喜!我们现在以零成本的代价创建了端到端机器学习(NLP)应用程序。如果你回顾一下,其实整个过程根本不复杂。有点耐心和渴望学习的动力,任何人都可以做到。所有开源工具都使每件事都成为可能。更重要的是,我们能够将我们对机器学习理论的知识扩展到有用和实用的Web应用程序!完整的工作源代码可在此存储库中找到,祝你度过愉快的一周!本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

April 9, 2019 · 2 min · jiezi

自然语言生成(NLG)的好处是什么,它如何影响BI?

摘要: 足以让小编失业的NLG,到底如何影响BI?近年来,我们已经看到了大数据的成功应用,但根据研究,只有20%的员工能够真正的使用BI工具。此外,由于在统计思维方面缺乏培训且图表和图表形式的数据不是很清晰,决策者往往会出现误解和决策失误。而这背后的一切其实就是人工智能技术的子集-自然语言处理,自然语言理解和自然语言生成以及他们的分析算法。早些时候,企业需要一定的人力和持续监控半智能机器来理解和遵循预先编程的算法。但随着时间的推移以及人工智能、机器学习、人工神经网络、深度学习、自然语言处理和自然语言生成的发展,机器变得足够智能,也能满足特定的业务需求和目标。战略性地简化和利用这些基于AI的技术可以理解庞大的数据集,从而产生有价值的见解,最终有助于开发定制的、有影响力的解决方案。谷歌,苹果,微软和阿里巴巴等IT巨头都依赖此类算法来改进产品推荐、在线搜索、智能语音的移动服务等。NLP vs. NLU vs. NLG尽管人们可能会遇到令人生畏的技术术语,但NLP,NLG和NLU似乎是用于解释简单过程的复杂缩略词。1、NLP是指计算机读取并将输入文本转换为结构化数据;2、NLU意味着理解计算机捕获的文本/统计数据;3、NLG是指计算机将结构化数据转换为文本并以人类语言编写信息;自然语言处理的阅读部分很复杂,其中包括许多功能,例如:1、不雅表达的语言过滤器;2、涉及人类情感的情感分析;3、主题分类;自然语言理解(NLU)是人工智能的重要子集,它出现在自然语言处理之后,用于真正理解文本的内容并提取隐藏在其中的含义。像Alexa,Siri,Google Assistant这样的会话AI机器人就是使用NLU和NLG来达到目的。了解NLG的真正潜力人类总是需要数据来制定新的想法并进行沟通。但是,随着需要评估的数据量变大以及显著降低成本的需求,企业需要确定一种新的简化方法,自然语言生成(NLG)就是目前最佳的方法之一。自然语言生成(NLG)主要的好处在于它能够将数据集转换为人类理解的清晰叙述。在处理电子表格中存在的统计数据时,NLG可以生成丰富的信息,这与自然语言处理不同,后者仅评估文本以形成见解。通过自然语言生成,可以准确地评估、分析和传达数据。通过常规分析和相关任务的智能自动化,可以提高生产力,这样人类就可以专注于更具创造性、高价值的回报活动。在一个有趣的用例中,美联社利用自然语言生成成功的从公司收益报表中生成了报告。这意味着他们不再需要人类消耗他们的时间和精力去解决这些问题。更重要的是,NLG一旦被完美设置就会自动生成数以千计的报告。自然语言生成的好处是什么?自然语言生成的好处超出了人们对于采用人工智能的普遍看法。因为它对营销和业务管理也有很多好处:自动化创建内容NLG主要能够做的是根据NLP和NLU之前处理的信息,在有组织结构的数据上创建,通过将结构良好的数据放置在精心配置的模板中,NLG可以自动输出并提供可记录的数据形式,例如分析报告、产品描述、以数据为中心的博客文章等。在这种情况下,依靠算法编程的机器可以完成以内容开发者所希望的格式创建内容。他们唯一要做的就是通过流行的媒体渠道向目标受众宣传,因此,自然语言生成可以为内容开发者和营销人员提供两大利器:1、内容生成自动化;2、以预期格式传送数据;内容生成可以围绕Web挖掘、搜索引擎API来开发依靠各种在线搜索的结果和参考文档创造有价值的内容。到目前为止,已经出现了几个基于NLG的文本报告生成系统,比如说以根据输入的天气数据生成文本天气预报报告。人类参与的显著减少随着自然语言生成系统不断的优化,雇用具有数据素养的专业人员并训练他们完成工作变得非常重要。通过使用自然语言生成,企业家会慢慢意识到雇用理解复杂数据的人员是多么昂贵,为了提升企业效益,注定会有人被淘汰。Gartner预测,在未来20%的业务内容将通过使用自然语言生成的机器编写,其中法律文件、股东报告、新闻稿或案例研究将不再需要人类创建。预测性库存管理商店库存管理的成功都会在业务目标和总体利润方面产生巨大的推动。而在供应链管理中,获取并分析生产率、销售数据尤为重要。根据这些信息,商店经理可以了解如何将库存维持在最佳水平。然而,管理者并不可能完完全全的掌握到实时数据。此时,更高级的NLG可以作为数据分析的交互式媒介,使整个数据报告流程无缝且富有洞察力。商店经理无需通过数据的多个图表和条形图,就可以获得所需格式的清晰叙述和分析。通过自然语言生成,管理者将拥有最佳预测模型,以此对商店绩效和库存管理提供明确的指导和建议。如何应用自然语言生成?对于希望采用并获得自然语言生成优势的企业而言,拥有某些要素时至关重要的,例如:必须具有匹配的场景并非每个内容创建场景都需要自然语言生成。NLG是一种独特的技术,旨在产生特定的答案,生成你在博客上看到的内容是不可能的。如果你定期传达的任务具有一致的格式,NLG可能是自动执行这些任务的最佳资源。举个例子,一个著名的营销机构PR 20/20利用自然语言生成,在生成Google Analytics的分析报告时少用80%的时间。另一个例子是华盛顿邮报,它们创建了Heliograf,它是一个基于人工智能的引擎,使用自然语言生成为2016年奥运会和选举竞赛撰写快讯。树立现实的目标人工智能技术需要一些时间才能实现自动化操作,要整合并收获自然语言生成的好处,需要一定的时间。你选择的智能是有价格标签的,因此你应该对你的精确要求,AI的实际功能和可扩展性保持理智。如果NLG在生成报告和叙述时真的减少了组织的成本,你可以选择它。数据必须足够结构化AI需要特定形式的输入,NLG只有在输入结构化数据时才会起作用。检查你的数据集是否已组织和优化。确保你上传的数据干净、一致且易于使用。结论聊天机器人将更加智能,不再是简单的查询以及提供简单的对话,而且未来高级NLG系统还将参与企业特定的工作流程管理,它们将帮助管理人员和员工在客户之间建立一个更优越的互动网络,以在最短的时间内实现业务动态并产生准确的输出。最后,对于面临数据分析和多语言支持挑战的企业而言,可以利用自然语言生成的优势实现报告创建、内容生成的实时自动化。有了NLG,企业应该考虑整合能够以最终用户期望的格式有效地生成信息的会话界面,最终增加用户的参与度。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

March 28, 2019 · 1 min · jiezi

4种方法计算句子相似度

Edit Distance计算两个字符串之间,由一个转成另一个所需要的最少编辑次数,次数越多,距离越大,也就越不相关。比如,“xiaoming”和“xiamin”,两者的转换需要两步:去除‘o’去除‘g’所以,次数/距离=2。!pip install distanceimport distancedef edit_distance(s1, s2): return distance.levenshtein(s1, s2)s1 = ‘xiaoming’s2 = ‘xiamin’print(‘距离:’+str(edit_distance(s1, s2)))杰卡德系数用于比较有限样本集之间的相似性与差异性。Jaccard 系数值越大,样本相似度越高,计算方式是:两个样本的交集除以并集。from sklearn.feature_extraction.text import CountVectorizerimport numpy as npdef jaccard_similarity(s1, s2): def add_space(s): return ’ ‘.join(list(s)) # 将字中间加入空格 s1, s2 = add_space(s1), add_space(s2) # 转化为TF矩阵 cv = CountVectorizer(tokenizer=lambda s: s.split()) corpus = [s1, s2] vectors = cv.fit_transform(corpus).toarray() # 求交集 numerator = np.sum(np.min(vectors, axis=0)) # 求并集 denominator = np.sum(np.max(vectors, axis=0)) # 计算杰卡德系数 return 1.0 * numerator / denominators1 = ‘你在干啥呢’s2 = ‘你在干什么呢’print(jaccard_similarity(s1, s2))TF 计算计算矩阵中两个向量的相似度,即:求解两个向量夹角的余弦值。计算公式:cos=a·b/|a|*|b|from sklearn.feature_extraction.text import CountVectorizerimport numpy as npfrom scipy.linalg import normdef tf_similarity(s1, s2): def add_space(s): return ’ ‘.join(list(s)) # 将字中间加入空格 s1, s2 = add_space(s1), add_space(s2) # 转化为TF矩阵 cv = CountVectorizer(tokenizer=lambda s: s.split()) corpus = [s1, s2] vectors = cv.fit_transform(corpus).toarray() # 计算TF系数 return np.dot(vectors[0], vectors[1]) / (norm(vectors[0]) * norm(vectors[1]))s1 = ‘你在干啥呢’s2 = ‘你在干什么呢’print(tf_similarity(s1, s2))高阶模型BertBert的内部结构,请查看从word2vec到bert这篇文章,本篇文章我们只讲代码实现。我们可以下载Bert模型源码,或者使用TF-HUB的方式使用,本次我们使用下载源码的方式。首先,从Github下载源码,然后下载google预训练好的模型,我们选择Bert-base Chinese。预模型下载后解压,文件结构如图:vocab.txt是训练时中文文本采用的字典,bert_config.json是BERT在训练时,可选调整的一些参数。其它文件是模型结构,参数等文件。准备数据集修改 processorclass MoveProcessor(DataProcessor): “““Processor for the move data set .””” def get_train_examples(self, data_dir): “““See base class.””” return self._create_examples( self._read_tsv(os.path.join(data_dir, “train.tsv”)), “train”) def get_dev_examples(self, data_dir): “““See base class.””” return self._create_examples( self._read_tsv(os.path.join(data_dir, “dev.tsv”)), “dev”) def get_test_examples(self, data_dir): “““See base class.””” return self._create_examples( self._read_tsv(os.path.join(data_dir, “test.tsv”)), “test”) def get_labels(self): “““See base class.””” return [“0”, “1”] @classmethod def _read_tsv(cls, input_file, quotechar=None): “““Reads a tab separated value file.””” with tf.gfile.Open(input_file, “r”) as f: reader = csv.reader(f, delimiter="\t", quotechar=quotechar) lines = [] for line in reader: lines.append(line) return lines def create_examples(self, lines, set_type): “““Creates examples for the training and dev sets.””” examples = [] for (i, line) in enumerate(lines): guid = “%s-%s” % (set_type, i) if set_type == “test”: text_a = tokenization.convert_to_unicode(line[0]) label = “0” else: text_a = tokenization.convert_to_unicode(line[1]) label = tokenization.convert_to_unicode(line[0]) examples.append( InputExample(guid=guid, text_a=text_a, text_b=None, label=label)) return examples修改 processor字典def main(): tf.logging.set_verbosity(tf.logging.INFO) processors = { “cola”: ColaProcessor, “mnli”: MnliProcessor, “mrpc”: MrpcProcessor, “xnli”: XnliProcessor, ‘setest’:MoveProcessor }Bert模型训练export BERT_BASE_DIR=/Users/xiaomingtai/Downloads/chinese_L-12_H-768_A-12export MY_DATASET=/Users/xiaomingtai/Downloads/bert_modelpython run_classifier.py \ –data_dir=$MY_DATASET \ –task_name=setest \ –vocab_file=$BERT_BASE_DIR/vocab.txt \ –bert_config_file=$BERT_BASE_DIR/bert_config.json \ –output_dir=/Users/xiaomingtai/Downloads/ber_model_output/ \ –do_train=true \ –do_eval=true \ –do_predict=true\ –init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \ –max_seq_length=128 \ –train_batch_size=16 \ –eval_batch_size=8\ –predict_batch_size=2\ –learning_rate=5e-5\ –num_train_epochs=3.0\Bert模型训练结果 ...

March 12, 2019 · 2 min · jiezi

从Word2Vec到Bert

Word2Vec模型Word2Vec有两种训练方法:CBOW和Skip-gram。CBOW的核心思想是上下文预测某个单词,Skip-gram正好相反,输入单词,要求网络预测它的上下文。如上图所示,一个单词表达成word embedding后,很容易找到词义相近的其它词汇。word embedding使用:句子中的单词以one-hot的形式作为输入,然后乘以学好的word embedding矩阵Q,就直接取出单词对应的word embedding了。word embedding矩阵Q其实就是网络one-hot层到embedding层映射的网络参数矩阵。所以,word embedding等价于把one-hot层到embedding层的网络用预训练好的参数矩阵Q初始化了。不过,word embedding只能初始化第一层网络参数,再高层就无能为力了。下游NLP任务使用word embedding的时候与图像类似,有两种方法,一种是frozen:word embedding层的网络参数固定不动;另一种是fine-tuning,即:word embedding这层参数使用新的训练集合训练。word embedding存在的问题如图所示,多义词bank有两种含义,但是word embedding在对bank这个词进行编码的时候无法区分这两个含义。尽管上下文环境中出现的单词相同,但是在语言模型训练的时候,不论什么上下文的句子经过word2vec,都是预测相同的单词bank,而同一个单词占用的同一行的参数空间,这导致两种不同的上下文信息都会编码到相同的word embedding空间去。所以,word embedding无法区分多义词的不同语义,这是它一个比较严重的问题。BertBert采用transformer作为特征提取器,并采用双向语言模型。此外,Bert预训练的数据规模非常庞大。NLP的四大类任务:序列标注:中文分词,词性标注,命名实体识别,语义角色标注等。特点是,句子中的每个单词要求模型根据上下文给出一个分类类别。分类任务:文本分类,情感计算。特点是,不管文章有多长,总体给出一个分类类别即可。句子关系判断:问答,语义改写,自然语言推理等任务。特点是,给定两个句子,模型判断两个句子是否具有某种语义关系。生成式任务:机器翻译,文本摘要,写诗造句,看图说话等。特点是,输入文本后,需要自主生成另外一种文字。对于句子关系类任务,加上一个其实符号和终结符号,句子之间加上分隔符号即可。对输出来说,把第一个起始符号对应的transformer最后一层位置上串联一个softmax分类层。对于分类问题,增加起始和终结符号,输出部分和句子关系类任务类似。序列标注问题:输入部分和单句分类问题一样,只需要输出部分transformer最后一层每个单词对应位置都进行分类即可。从这里可以看出,NLP四大类任务都可以比较方便的改造bert能够接受的方式,这意味着bert具有很强的普适性。bert构造双向语言模型Masked双向语言模型,随机选择语料中15%的单词,其中80%替换成mask标记,10%随机替换另一个单词,10%不做改动。Next Sentence Prediction,分两种情况选择句子,一种是在语料中选择真正顺序相连的两个句子;另一种方式是,第二个句子随机选择拼接到第一个句子的后面。要求模型做句子关系预测,判断第二个句子是不是真的第一个句子的后续句子。这么做的目的是,在很多NLP任务中是句子关系判断任务,单词预测颗粒度的训练到不了句子关系这个层级,增加这个任务有助于下游句子关系判断任务。由此可以看到,bert的预训练是个多任务过程。bert输入部分处理bert输入是一个线性序列,两个句子通过分隔符分割,前后两端分别增加标识符号。每个单词有三个embedding。位置embedding:NLP中单词顺序是重要特征,需要对位置进行编码。单词embedding句子embedding:前面提到的训练数据都是由两个句子构成,那么每个句子有个句子整体的embedding对应每个单词。三者叠加,就形成了bert的输入。bert输出处理bert评价从模型或者方法的角度来看,bert借鉴了ELMO,GPT以及CBOW,主要提出了masked语言模型和next sentence prediction。训练采用两阶段模型,第一阶段双向语言模型预训练,第二阶段采用具体任务fine-tuning或者做特征集成;第二是特征提取采用transformer作为特征提取器而不是rnn或cnn。bert最大的两点是效果好普适性强,几乎所有的NLP任务都可以套用bert这种两阶段解决思路。案例实现:Predicting Movie Review Sentiment with BERT on TF Hubbert已经添加到TF-Hub模块,可以快速集成到现有项目中。bert层可以替代之前的elmo,glove层,并且通过fine-tuning,bert可以同时提供精度,训练速度的提升。此案例中,我们将在tensorflow中使用bert训练一个模型用于判断电影评论的情绪是消极还是积极。导入模块from sklearn.model_selection import train_test_splitimport pandas as pdimport tensorflow as tfimport tensorflow_hub as hubfrom datetime import datetime!pip install bert-tensorflowimport bertfrom bert import run_classifierfrom bert import optimizationfrom bert import tokenization数据下载# 读取文件,创建dataframedef load_directory_data(directory): data={} data[‘sentence’]=[] data[‘sentiment’]=[] for file_path in os.listdir(directory): with tf.gfile.GFile(os.path.join(directory,file_path),‘r’) as f: data[‘sentence’].append(f.read()) data[‘sentiment’].append(re.match(’\d+_(\d+).txt’,file_path).group(1)) return pd.DataFrame.from_dict(data)# 添加新列,并打乱数据def load_dataset(directory): # 积极情绪文件 pos_df=load_directory_data(os.path.join(directory,‘pos’)) # 消极情绪 neg_df=load_directory_data(os.path.join(directory,’neg’)) pos_df[‘polarity’]=1 neg_df[‘polarity’]=0 # sample 参数frac,返回的比例,如:df中有10行数据,想返回30%,设置值为:0.3 return pd.concat([pos_df,neg_df]).sample(frac=1).reset_index(drop=True)# 下载并加载数据def download_and_load_datasets(force_download=False): dataset=tf.keras.utils.get_file( fname=‘aclImdb.tar.gz’, origin=‘http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz', extract=True ) train_df=load_dataset(os.path.join(os.path.dirname(dataset),‘aclImdb’,’train’)) test_df=load_dataset(os.path.join(os.path.dirname(dataset),‘aclImdb’,’test’)) return train_df,test_dftrain,test=download_and_load_datasets()# 去前5000个样本train=train.sample(5000)test=test.sample(5000)DATA_COLUMN=‘sentence’LABEL_COLUMN=‘polarity’label_list=[0,1]数据处理我们需要将数据转换成bert能够处理的格式。我们首先创建InputExample构造函数:test_a:我们要分类的数据,如:DATA_COLUMNtest_b:用于句子关系判断,如:问答,翻译等label:数据标签train_InputExample=train.apply(lambda x:bert.run_classifier.InputExample( guid=None, text_a=x[DATA_COLUMN], text_b=None, label=x[LABEL_COLUMN]),axis=1)test_InputExample=test.apply(lambda x:bert.run_classifier.InputExample( guid=None, text_a=x[DATA_COLUMN], text_b=None, label=x[LABEL_COLUMN]),axis=1)接下来,我们需要处理数据以适合bert进行训练。步骤依次如下:单词全部小写将文本转换成序列(如:‘sally says hi’ -> [‘sally’,‘says’,‘hi’])将单词分解为wordpieces(如:‘calling’->[‘call’,’##ing’])用bert提供的词汇文件进行单词索引映射添加‘CLS’,‘SEP’标记符每次输入添加‘index’和‘segment’标记# lowercase bert版本BERT_MODEL_HUB=‘https://tfhub.dev/google/bert_uncased_L-12_H-768_A-12/1'# 获取词表文件,小写数据处理def create_tokenizer_from_hub_module(): with tf.Graph().as_default(): bert_module = hub.Module(BERT_MODEL_HUB) tokenization_info = bert_module(signature=‘tokenization_info’, as_dict=True) with tf.Session() as sess: vocab_file,do_lower_case=sess.run([tokenization_info[‘vocab_file’],tokenization_info[‘do_lower_case’]]) return bert.tokenization.FullTokenizer( vocab_file=vocab_file, do_lower_case=do_lower_case )tokenizer=create_tokenizer_from_hub_module()# 序列最长MAX_SEQ_LENGTH=128# 将训练,测试数据特征转换成bert需要的格式train_features=bert.run_classifier.convert_examples_to_features(train_InputExample,label_list,MAX_SEQ_LENGTH,tokenizer)test_features=bert.run_classifier.convert_examples_to_features(test_InputExample,label_list,MAX_SEQ_LENGTH,tokenizer)创建模型def create_model(is_predicting,input_ids,input_mask,segment_ids,labels,num_labels): # 创建分类模型 bert_module=hub.Module( BERT_MODEL_HUB, trainable=True ) bert_inputs=dict( input_ids=input_ids, input_mask=input_mask, segment_ids=segment_ids ) bert_outputs=bert_module( inputs=bert_inputs, signature=‘tonkens’, as_dict=True ) output_layer=bert_outputs[‘pooled_output’] hidden_size=output_layer.shape[-1].value output_weights=tf.get_variable( ‘output_weights’,[num_labels,hidden_size], initializer=tf.truncated_normal_initializer(stddev=0.02) ) output_bias=tf.get_variable( ‘output_bias’,[num_labels],initializer=tf.zeros_initializer() ) with tf.variable_scope(’loss’): # dropout用于防止过拟合,仅训练时使用 output_layer=tf.nn.dropout(output_layer,keep_prob=0.9) logits=tf.matmul(output_layer,output_weights,transpose_b=True) logits=tf.nn.bias_add(logits,output_bias) log_prob=tf.nn.log_softmax(logits,axis=-1) # 将标签转为one-hot格式 one_hot_labels=tf.one_hot(labels,depth=num_labels) predcited_labels=tf.squeeze(tf.argmax(log_prob,axis=-1)) if is_predicting: return (predcited_labels,log_prob) per_example_loss=-tf.reduce_sum(one_hot_labelslog_prob,axis=-1) loss=tf.reduce_mean(per_example_loss) return (loss,predcited_labels,log_prob)创建InputFndef model_fn_builder(num_labels,learning_rate,num_train_steps,num_warmup_steps): def model_fn(features,labels,mode,params): input_idx=features[‘input_idx’] input_mask=features[‘input_mask’] segment_ids=features[‘segment_ids’] lable_ids=features[’labels_ids’] is_predicting=(mode == tf.estimator.ModeKeys.PREDICT) if not is_predicting: (loss,predicted_labels,log_probs)=create_model( is_predicting,input_idx,input_mask,segment_ids,lable_ids,num_labels ) train_op = bert.optimization.create_optimizer( loss, learning_rate, num_train_steps, num_warmup_steps, use_tpu=False) def metric_fn(label_ids,predicted_labels): accuracy=tf.metrics.accuracy(labels=lable_ids,predictions=predicted_labels) f1_score = tf.contrib.metrics.f1_score( label_ids, predicted_labels) auc = tf.metrics.auc( label_ids, predicted_labels) recall = tf.metrics.recall( label_ids, predicted_labels) precision = tf.metrics.precision( label_ids, predicted_labels) true_pos = tf.metrics.true_positives( label_ids, predicted_labels) true_neg = tf.metrics.true_negatives( label_ids, predicted_labels) false_pos = tf.metrics.false_positives( label_ids, predicted_labels) false_neg = tf.metrics.false_negatives( label_ids, predicted_labels) return { “eval_accuracy”: accuracy, “f1_score”: f1_score, “auc”: auc, “precision”: precision, “recall”: recall, “true_positives”: true_pos, “true_negatives”: true_neg, “false_positives”: false_pos, “false_negatives”: false_neg } eval_metrics=metric_fn(lable_ids,predicted_labels) if mode == tf.estimator.ModeKeys.TRAIN: return tf.estimator.EstimatorSpec( mode=mode, loss=loss, train_op=train_op ) else: return tf.estimator.EstimatorSpec( mode=mode, loss=loss, eval_metric_ops=eval_metrics ) else: (predicted_labels, log_probs) = create_model( is_predicting, input_idx, input_mask, segment_ids, lable_ids, num_labels) predictions = { ‘probabilities’: log_probs, ’labels’: predicted_labels } return tf.estimator.EstimatorSpec(mode, predictions=predictions) return model_fn参数配置BATCH_SIZE=32LEARNING_RATE=2e-5NUM_TRAIN_EPOCHS=3WARMUP_PROPORTION=0.1SAVE_CHECKEPOINTS_STEPS=500SAVE_SUMMARY_STEPS=100# 计算train,warmup总训练步数num_train_steps=int(len(train_features)/BATCH_SIZENUM_TRAIN_EPOCHS)num_warmup_steps=int(num_train_steps*WARMUP_PROPORTION)# 设置模型保存路径/次数,图信息保存次数run_config=tf.estimator.RunConfig( model_dir=OUTPUT_DIR, save_checkpoints_steps=SAVE_CHECKEPOINTS_STEPS, save_summary_steps=SAVE_SUMMARY_STEPS)模型训练,验证modle_fn=model_fn_builder( num_labels=len(label_list), learning_rate=LEARNING_RATE, num_train_steps=num_train_steps, num_warmup_steps=num_train_steps)estimator=tf.estimator.Estimator( model_fn=modle_fn, config=run_config, params={‘batch_size’:BATCH_SIZE})train_input_fn=bert.run_classifier.input_fn_builder( features=train_features, seq_length=MAX_SEQ_LENGTH, is_training=True, drop_remainder=False)estimator.train(input_fn=train_input_fn,max_steps=num_train_steps) ...

March 7, 2019 · 2 min · jiezi

可应用于实际的14个NLP突破性研究成果(四)

摘要:最好的论文是可以直接走出实验室!NLP年度最佳应用论文大集锦!可应用于实际的14个NLP突破性研究成果(一) 可应用于实际的14个NLP突破性研究成果(二) 可应用于实际的14个NLP突破性研究成果(三)11.对序列建模的通用卷积和递归网络的实证评估作者:SHAOJIE BAI,J。ZICO KOLTER,VLADLEN KOLTUN论文摘要对于大多数深度学习实践者来说,序列建模与循环网络是同义词。然而,最近的研究结果表明,卷积架构在语音合成和机器翻译等任务上的表现优于循环网络。给定一个新的序列建模任务或数据集,应该使用哪种架构?我们对序列建模的一般卷积和循环架构进行了系统的评价。我们在广泛的标准任务中评估这些模型。我们的结果表明,一个简单的卷积架构在不同的任务和数据集上的表现优于LSTM等典型的循环网络。我们的结论是,需要重新考虑序列建模和循环网络之间的共同关联,卷积网络应该被视为序列建模任务的一个自然起点我们提供了相关代码:http://github.com/locuslab/TCN。总结本文的作者质疑了一个常见假设,即循环架构应该是序列建模任务的默认起点。他们的结果表明,时间卷积网络(TCN)在多个序列建模任务中明显优于长短期记忆网络(LSTMs)和门控循环单元网络等典型的循环架构。论文的核心思想是什么?1、时间卷积网络(TCN)是基于最近提出的最佳实践(如扩张卷积和残差连接)设计的,它在一系列复杂的序列建模任务中表现得明显优于通用的循环架构。2、TCN表现出比循环架构更长的记忆,因此更适合需要较长的历史记录的任务。关键成就是什么?在序列建模任务上提供了卷积架构和循环体系结构系统的比较。设计了卷积体系结构,它可以作为序列建模任务的方便且强大的起点。AI社区的对其评价?在使用RNN之前,一定要先从CNN开始。未来的研究领域是什么?为了提高TCN在不同序列建模任务中的性能,需要进一步精化架构和算法。可能应用的商业领域?引入TCN可以提高依赖于循环架构进行序列建模的AI系统的性能。其中包括以下任务:§机器翻译;§语音识别;§音乐和语音生成。你在哪里可以得到代码?1、如论文摘要所述,研究人员通过GitHub存储库提供了官方代码。2、你还可以查看PhilippeRémy提供的Keras实施的TCN。12.用于文本分类的通用语言模型微调-ULMFiT作者:JEREMY HOWARD和SEBASTIAN RUDER论文摘要迁移学习在计算机视觉方面取得了很多成功,但是同样的方法应用在NLP领域却行不通。所以我们提出了通用语言模型微调(ULMFiT),这是一种有效的转移学习方法,可以应用于NLP中的任何任务。该方法在6个文本分类任务上的性能明显优于现有的文本分类方法,在大部分的数据集上测试使得错误率降低了18-24%。此外,仅有100个标记样本训练的结果也相当不错。我们已经开源我们的预训练模型和代码。总结Howard和Ruder建议使用预先训练的模型来解决各种NLP问题。使用这种方法的好处是你无需从头开始训练模型,只需对原始模型进行微调。通用语言模型微调(ULMFiT)的方法优于最先进的结果,它将误差降低了18-24%。更重要的是,ULMFiT可以只使用100个标记示例,就能与10K标记示例中从头开始训练的模型的性能相匹配。论文的核心思想是什么?为了解决缺乏标记数据的难题,研究人员建议将转移学习应用于NLP问题。因此,你可以使用另一个经过训练的模型来解决类似问题作为基础,然后微调原始模型以解决你的特定问题,而不是从头开始训练模型。但是,这种微调应该考虑到几个重要的考虑因素:§不同的层应该进行不同程度地微调,因为它们捕获不同类型的信息。§如果学习速率首先线性增加然后线性衰减,则将模型的参数调整为任务特定的特征将更有效。§微调所有层可能会导致灾难性的遗忘;因此,从最后一层开始逐渐微调模型可能会更好。关键成就是什么?显著优于最先进的技术:将误差降低18-24%;所需的标记数据要少得多,但性能可以保障。AI社区对其的看法是什么?预先训练的ImageNet模型的可用性已经改变了计算机视觉领域,ULMFiT对于NLP问题可能具有相同的重要性。此方法可以应用于任何语言的任何NLP任务。未来的研究领域的方向是什么?改进语言模型预训练和微调。将这种新方法应用于新的任务和模型(例如,序列标记、自然语言生成、蕴涵或问答)。可能应用的商业领域?ULMFiT可以更有效地解决各种NLP问题,包括:§识别垃圾邮件、机器人、攻击性评论;§按特定功能对文章进行分组;§对正面和负面评论进行分类;§查找相关文件等你在哪里可以得到实现代码?Fast.ai提供ULMFiT的官方实施,用于文本分类,并作为fast.ai库的一部分。13.用非监督学习来提升语言理解,作者:ALEC RADFORD,KARTHIK NARASIMHAN,TIM SALIMANS,ILYA SUTSKEVER论文摘要自然语言理解包括各种各样的任务,例如文本蕴涵、问答、语义相似性评估和文档分类。虽然大量未标记的文本语料库很丰富,但用于学习这些特定任务的标记数据很少。我们证明,通过对多种未标记文本语料库中的语言模型进行生成预训练,然后对每项特定任务进行辨别性微调,可以实现这些任务的巨大收益。与以前的方法相比,我们在微调期间利用任务感知输入转换来实现有效传输,同时对模型架构进行最少的更改。我们证明了我们的方法在广泛的自然语言理解基准上的有效性。例如,我们在常识推理(Stories Cloze Test)上获得8.9%的性能改善,在问答(RACE)上达到5.7%,在文本蕴涵(MultiNLI)上达到1.5%。总结OpenAI团队建议通过在多种未标记文本语料库中预先训练语言模型,然后使用标记数据集对每个特定任务的模型进行微调,从而可以显著改善了语言理解。他们还表明,使用Transformer模型而不是传统的递归神经网络可以显著提高模型的性能,这种方法在所研究的12项任务中有9项的表现优于之前的最佳结果。论文的核心思想是什么?通过在未标记数据上学习神经网络模型的初始参数,然后使用标记数据使这些参数适应特定任务,结合使用无监督预训练和监督微调。通过使用遍历样式方法避免跨任务对模型体系结构进行大量更改:§预训练模型是在连续的文本序列上训练的,但是问题回答或文本蕴涵等任务具有结构化输入。§解决方案是将结构化输入转换为预先训练的模型可以处理的有序序列。使用Transformer模型而不是LSTM,因为这些模型提供了更加结构化的内存,用于处理文本中的长期依赖关系。取得了什么关键成就?对于自然语言推理(NLI)的任务,通过在SciTail上获得5%的性能改进和在QNLI上获得5.8%的性能改进。对于QA和常识推理的任务,表现优于以前的最佳结果-在Story Cloze上高达8.9%,在RACE上高达5.7%。通过在QQP上实现4.2%的性能改善,刷新了3个语义相似性任务中的2个的最新结果。对于分类任务,获得CoLA的45.4分,而之前的最佳结果仅为35分。AI社区对其看法是什么?该论文通过使用基于Transformer模型而非LSTM扩展了ULMFiT研究,并将该方法应用于更广泛的任务。“这正是我们希望我们的ULMFiT工作能够发挥作用的地方!”Jeremy Howard,fast.ai的创始人。未来的研究领域是什么?进一步研究自然语言理解和其他领域的无监督学习,以便更好地理解无监督学习的时间和方式。可能应用的商业领域?OpenAI团队的方法通过无监督学习增强了自然语言理解,因此可以帮助标记数据集稀疏或不可靠的NLP应用。 在哪里可以得到实现代码?Open AI团队在GitHub上的公开了代码和模型。14.语境化词向量解析:架构和表示,作者:MATTHEW E. PETERS,MARK NEUMANN,LUKE ZETTLEMOYER,WEN-TAU YIH论文摘要最近研究显示从预训练的双向语言模型(biLM)导出的上下文词表示为广泛的NLP任务提供了对现有技术的改进。然而,关于这些模型如何以及为何如此有效的问题,仍然存在许多问题。在本文中,我们提出了一个详细的实证研究,探讨神经结构的选择(例如LSTM,CNN)如何影响最终任务的准确性和所学习的表征的定性属性。我们展示了如何在速度和准确性之间的权衡,但所有体系结构都学习了高质量的上下文表示,这些表示优于四个具有挑战性的NLP任务的字嵌入。此外,所有架构都学习随网络深度而变化的表示,从基于词嵌入层的专有形态学到基于较低上下文层的局部语法到较高范围的语义。总之,这些结果表明,无人监督的biLM正在学习更多关于语言结构的知识。总结今年早些时候艾伦人工智能研究所的团队介绍了ELMo嵌入,旨在更好地理解预训练的语言模型表示。为此,他们精心设计了无监督和监督任务上广泛研究学习的单词和跨度表示。研究结果表明,独立于体系结构的学习表示随网络深度而变化。论文的核心思想是什么?预训练的语言模型大大提高了许多NLP任务的性能,将错误率降低了10-25%。但是,仍然没有清楚地了解为什么以及如何在实践中进行预训练。为了更好地理解预训练的语言模型表示,研究人员凭经验研究神经结构的选择如何影响:§直接终端任务准确性;§学习表示的定性属性,即语境化词表示如何编码语法和语义的概念。什么是关键成就?确认在速度和准确度之间存在权衡,在评估的三种架构中-LSTM,Transformer和Gated CNN:§LSTM获得最高的准确度,但也是最慢的;§基于Transformer和CNN的模型比基于LSTM的模型快3倍,但也不太准确。证明由预先训练的双向语言模型(biLM)捕获的信息随网络深度而变化:§深度biLM的词嵌入层专注于词形态,与传统的词向量形成对比,传统的词向量在该层也编码一些语义信息;§biLM的最低上下文层只关注本地语法;证明了biLM激活可用于形成对语法任务有用的短语表示。AI社区对其看法是什么?该论文在EMNLP 2018上发表。 “对我来说,这确实证明了预训练的语言模型确实捕获了与在ImageNet上预训练的计算机视觉模型相似的属性。”AYLIEN的研究科学家Sebastian Ruder。未来的研究领域是什么?使用明确的句法结构或其他语言驱动的归纳偏见来增强模型。 将纯无监督的biLM训练目标与现有的注释资源以多任务或半监督方式相结合。可能应用的商业领域?1、通过更好地理解预训练语言模型表示所捕获的信息,研究人员可以构建更复杂的模型,并增强在业务环境中应用的NLP系统的性能。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

February 18, 2019 · 1 min · jiezi

Transformer-XL: Unleashing the Potential of Attention Models

简介现实远程依赖问题,比如要正确理解文章内容,有时需要阅读多处段落,这对人来说轻松自如。但是,对神经网络来说,远程依赖问题依然是一个挑战。虽然基于门控的RNN(LSTM,GRU等)和梯度裁剪等技术提高了对远程依赖建模的能力,但仍不足以解决问题。其中一个解决方法就是使用Transformers,Transformers允许数据单元直接连接,可以更好的捕获远距离的数据关系。但是,在语音模型中,Transformers一般使用固定长度context实现,即:把文本序列截断为几个固定长度的序列,然后分别单独处理。这存在两个问题:无法计算超过固定长度的依赖关系。序列截断后,造成段落边界破碎,从而造成低效优化,即使是短序列这也是严重问题。为了解决这些问题,可以尝试使用Transformers-XL模型。Transformers-XL由两种技术构成:Segment-level Recurrence和Relative Positional Encodings。Segment-level Recurrence在训练期间,当模型处理下一个新段落时,将前一个段落的计算表示固定并且缓存以作为重用扩展上下文。此附加连接将最大可能的将依赖性长度增加N倍,其中N是网络的深度,因为上下文信息现在能够跨越段落边界流动。此外,这种重复机制还解决了上下文碎片问题。Relative Positional Encodings在标准的Transformer中,序列顺序的信息,都是由一组位置编码提供,每一个位置都有绝对的位置信息。但将这个逻辑应用到重用机制中时,会导致性能损失。这个问题的解决思路是,对隐藏状态中的相对位置信息进行编码。从概念上讲,位置编码为模型提供了关于应如何收集信息的时间线索,即应该在哪里介入处理。以相对的方式定义时间线索,将相同的信息注入每层的注意分数,更加直观,也更通用。基于这个思路,可以创建一组相对位置编码,使得重用机制变得可行,也不会丢失任何的时间信息。将相对位置嵌入Transformer之中,并配合重用机制,就得到了Transformer-XL的架构。基于这些改进,Transformer-XL在相关的数据集上都取得了很好的成绩。论文中表示,这是第一个在字符级和单词级建模方面比RNN结果更好的自注意力模型。总结Transformer-XL 在几种不同的数据集(大 / 小,字符级别 / 单词级别等)均实现了最先进的语言建模结果。它结合了深度学习的两个重要概念——循环机制和注意力机制,允许模型学习长期依赖性,且可能可以扩展到需要该能力的其他深度学习领域,例如音频分析(如每秒 16k 样本的语音数据)等。

February 13, 2019 · 1 min · jiezi

NLP教程:教你如何自动生成对联

桃符早易朱红纸,杨柳轻摇翡翠群 ——FlyAI Couplets体验对对联Demo: https://www.flyai.com/couplets循环神经网络最重要的特点就是可以将序列作为输入和输出,而对联的上联和下联都是典型的序列文字,那么,能否使用神经网络进行对对联呢?答案是肯定的。本项目使用网络上收集的对联数据集地址作为训练数据,运用Seq2Seq + 注意力机制网络完成了根据上联对下联的任务。项目流程数据处理Seq2Seq + Attention 模型解读模型代码实现训练神经网络数据处理创建词向量字典和词袋字典在原始数据集中,对联中每个汉字使用空格进行分割,格式如下所示: 室 内 崇 兰 映 日,林 间 修 竹 当 风 翠 岸 青 荷 , 琴 曲 潇 潇 情 辗 转,寒 山 古 月 , 风 声 瑟 瑟 意 彷 徨由于每个汉字表示一个单一的词,因此不需要对原始数据进行分词。在获取原始数据之后,需要创建两个字典,分别是字到词向量的字典和字到词袋的字典,这样做是为了将词向量输入到网络中,而输出处使用词袋进行分类。在词袋模型中,添加三个关键字 ’ “ ‘, ’ ” ’ 和 ’ ~ ’ ,分别代表输入输出的起始,结束和空白处的补零,其关键字分别为1,2,0。class Processor(Base): ## Processor是进行数据处理的类 def init(self): super(Processor, self).init() embedding_path = os.path.join(DATA_PATH, ’embedding.json’) ##加载词向量字典 words_list_path = os.path.join(DATA_PATH, ‘words.json’) ## 加载词袋列表 with open(embedding_path, encoding=‘utf-8’) as f: self.vocab = json.loads(f.read()) with open(words_list_path, encoding=‘utf-8’) as f: word_list = json.loads(f.read()) self.word2ix = {w:i for i,w in enumerate(word_list, start = 3)} self.word2ix[’“’] = 1 ##句子开头为1 self.word2ix[’”’] = 2 ##句子结尾为2 self.word2ix[’~’] = 0 ##padding的内容为0 self.ix2word = {i:w for w,i in self.word2ix.items()} self.max_sts_len = 40 ##最大序列长度对上联进行词向量编码def input_x(self, upper): ##upper为输入的上联 word_list = [] #review = upper.strip().split(’ ‘) review = [’“’] + upper.strip().split(’ ‘) + [’”’] ##开头加符号1,结束加符号2 for word in review: embedding_vector = self.vocab.get(word) if embedding_vector is not None: if len(embedding_vector) == 200: # 给出现在编码词典中的词汇编码 embedding_vector = list(map(lambda x: float(x),embedding_vector)) ## convert element type from str to float in the list word_list.append(embedding_vector) if len(word_list) >= self.max_sts_len: word_list = word_list[:self.max_sts_len] origanal_len = self.max_sts_len else: origanal_len = len(word_list) for i in range(len(word_list), self.max_sts_len): word_list.append([0 for j in range(200)]) ## 词向量维度为200 word_list.append([origanal_len for j in range(200)]) ## 最后一行元素为句子实际长度 word_list = np.stack(word_list) return word_list对真实下联进行词袋编码def input_y(self, lower): word_list = [1] ##开头加起始符号1 for word in lower: word_idx = self.word2ix.get(word) if word_idx is not None: word_list.append(word_idx) word_list.append(2) ##结束加终止符号2 origanal_len = len(word_list) if len(word_list) >= self.max_sts_len: origanal_len = self.max_sts_len word_list = word_list[:self.max_sts_len] else: origanal_len = len(word_list) for i in range(len(word_list), self.max_sts_len): word_list.append(0) ## 不够长度则补0 word_list.append(origanal_len) ##最后一个元素为句子长度 return word_listSeq2Seq + Attention 模型解读Seq2Seq 模型可以被认为是一种由编码器和解码器组成的翻译器,其结构如下图所示:编码器(Encoder)和解码器(Decoder)通常使用RNN构成,为提高效果,RNN通常使用LSTM或RNN,在上图中的RNN即是使用LSTM。Encoder将输入翻译为中间状态C,而Decoder将中间状态翻译为输出。序列中每一个时刻的输出由的隐含层状态,前一个时刻的输出值及中间状态C共同决定。Attention 机制在早先的Seq2Seq模型中,中间状态C仅由最终的隐层决定,也就是说,源输入中的每个单词对C的重要性是一样的。这种方式在一定程度上降低了输出对位置的敏感性。而Attention机制正是为了弥补这一缺陷而设计的。在Attention机制中,中间状态C具有了位置信息,即每个位置的C都不相同,第i个位置的C由下面的公式决定:公式中,Ci代表第i个位置的中间状态C,Lx代表输入序列的全部长度,hj是第j个位置的Encoder隐层输出,而aij为第i个C与第j个h之间的权重。通过这种方式,对于每个位置的源输入就产生了不同的C,也就是实现了对不同位置单词的‘注意力’。权重aij有很多的计算方式,本项目中使用使用小型神经网络进行映射的方式产生aij。模型代码实现EncoderEncoder的结构非常简单,是一个简单的RNN单元,由于本项目中输入数据是已经编码好的词向量,因此不需要使用nn.Embedding() 对input进行编码。class Encoder(nn.Module): def init(self, embedding_dim, hidden_dim, num_layers=2, dropout=0.2): super().init() self.embedding_dim = embedding_dim #词向量维度,本项目中是200维 self.hidden_dim = hidden_dim #RNN隐层维度 self.num_layers = num_layers #RNN层数 self.dropout = dropout #dropout self.rnn = nn.GRU(embedding_dim, hidden_dim, num_layers=num_layers, dropout=dropout) self.dropout = nn.Dropout(dropout) #dropout层 def forward(self, input_seqs, input_lengths, hidden=None): # src = [sent len, batch size] embedded = self.dropout(input_seqs) # embedded = [sent len, batch size, emb dim] packed = torch.nn.utils.rnn.pack_padded_sequence(embedded, input_lengths) #将输入转换成torch中的pack格式,使得RNN输入的是真实长度的句子而非padding后的 #outputs, hidden = self.rnn(packed, hidden) outputs, hidden = self.rnn(packed) outputs, output_lengths = torch.nn.utils.rnn.pad_packed_sequence(outputs) # outputs, hidden = self.rnn(embedded, hidden) # outputs = [sent len, batch size, hid dim * n directions] # hidden = [n layers, batch size, hid dim] # outputs are always from the last layer return outputs, hiddenAttentation机制Attentation权重的计算方式主要有三种,本项目中使用concatenate的方式进行注意力权重的运算。代码实现如下:class Attention(nn.Module): def init(self, hidden_dim): super(Attention, self).init() self.hidden_dim = hidden_dim self.attn = nn.Linear(self.hidden_dim * 2, hidden_dim) self.v = nn.Parameter(torch.rand(hidden_dim)) self.v.data.normal_(mean=0, std=1. / np.sqrt(self.v.size(0))) def forward(self, hidden, encoder_outputs): # encoder_outputs:(seq_len, batch_size, hidden_size) # hidden:(num_layers * num_directions, batch_size, hidden_size) max_len = encoder_outputs.size(0) h = hidden[-1].repeat(max_len, 1, 1) # (seq_len, batch_size, hidden_size) attn_energies = self.score(h, encoder_outputs) # compute attention score return F.softmax(attn_energies, dim=1) # normalize with softmax def score(self, hidden, encoder_outputs): # (seq_len, batch_size, 2*hidden_size)-> (seq_len, batch_size, hidden_size) energy = torch.tanh(self.attn(torch.cat([hidden, encoder_outputs], 2))) energy = energy.permute(1, 2, 0) # (batch_size, hidden_size, seq_len) v = self.v.repeat(encoder_outputs.size(1), 1).unsqueeze(1) # (batch_size, 1, hidden_size) energy = torch.bmm(v, energy) # (batch_size, 1, seq_len) return energy.squeeze(1) # (batch_size, seq_len)DecoderDecoder同样是一个RNN网络,它的输入有三个,分别是句子初始值,hidden tensor 和Encoder的output tensor。在本项目中句子的初始值为‘“’代表的数字1。由于初始值tensor使用的是词袋编码,需要将词袋索引也映射到词向量维度,这样才能与其他tensor合并。完整的Decoder代码如下所示:class Decoder(nn.Module): def init(self, output_dim, embedding_dim, hidden_dim, num_layers=2, dropout=0.2): super().init() self.embedding_dim = embedding_dim ##编码维度 self.hid_dim = hidden_dim ##RNN隐层单元数 self.output_dim = output_dim ##词袋大小 self.num_layers = num_layers ##RNN层数 self.dropout = dropout self.embedding = nn.Embedding(output_dim, embedding_dim) self.attention = Attention(hidden_dim) self.rnn = nn.GRU(embedding_dim + hidden_dim, hidden_dim, num_layers=num_layers, dropout=dropout) self.out = nn.Linear(embedding_dim + hidden_dim * 2, output_dim) self.dropout = nn.Dropout(dropout) def forward(self, input, hidden, encoder_outputs): # input = [bsz] # hidden = [n layers * n directions, batch size, hid dim] # encoder_outputs = [sent len, batch size, hid dim * n directions] input = input.unsqueeze(0) # input = [1, bsz] embedded = self.dropout(self.embedding(input)) # embedded = [1, bsz, emb dim] attn_weight = self.attention(hidden, encoder_outputs) # (batch_size, seq_len) context = attn_weight.unsqueeze(1).bmm(encoder_outputs.transpose(0, 1)).transpose(0, 1) # (batch_size, 1, hidden_dim * n_directions) # (1, batch_size, hidden_dim * n_directions) emb_con = torch.cat((embedded, context), dim=2) # emb_con = [1, bsz, emb dim + hid dim] , hidden = self.rnn(emb_con, hidden) # outputs = [sent len, batch size, hid dim * n directions] # hidden = [n layers * n directions, batch size, hid dim] output = torch.cat((embedded.squeeze(0), hidden[-1], context.squeeze(0)), dim=1) output = F.log_softmax(self.out(output), 1) # outputs = [sent len, batch size, vocab_size] return output, hidden, attn_weight在此之上,定义一个完整的Seq2Seq类,将Encoder和Decoder结合起来。在该类中,有一个叫做teacher_forcing_ratio的参数,作用为在训练过程中强制使得网络模型的输出在一定概率下更改为ground truth,这样在反向传播时有利于模型的收敛。该类中有两个方法,分别在训练和预测时应用。Seq2Seq类名称为Net,代码如下所示:class Net(nn.Module): def init(self, encoder, decoder, device, teacher_forcing_ratio=0.5): super().init() self.encoder = encoder.to(device) self.decoder = decoder.to(device) self.device = device self.teacher_forcing_ratio = teacher_forcing_ratio def forward(self, src_seqs, src_lengths, trg_seqs): # src_seqs = [sent len, batch size] # trg_seqs = [sent len, batch size] batch_size = src_seqs.shape[1] max_len = trg_seqs.shape[0] trg_vocab_size = self.decoder.output_dim # tensor to store decoder outputs outputs = torch.zeros(max_len, batch_size, trg_vocab_size).to(self.device) # hidden used as the initial hidden state of the decoder # encoder_outputs used to compute context encoder_outputs, hidden = self.encoder(src_seqs, src_lengths) # first input to the decoder is the <sos> tokens output = trg_seqs[0, :] for t in range(1, max_len): # skip sos output, hidden, _ = self.decoder(output, hidden, encoder_outputs) outputs[t] = output teacher_force = random.random() < self.teacher_forcing_ratio output = (trg_seqs[t] if teacher_force else output.max(1)[1]) return outputs def predict(self, src_seqs, src_lengths, max_trg_len=30, start_ix=1): max_src_len = src_seqs.shape[0] batch_size = src_seqs.shape[1] trg_vocab_size = self.decoder.output_dim outputs = torch.zeros(max_trg_len, batch_size, trg_vocab_size).to(self.device) encoder_outputs, hidden = self.encoder(src_seqs, src_lengths) output = torch.LongTensor([start_ix] * batch_size).to(self.device) attn_weights = torch.zeros((max_trg_len, batch_size, max_src_len)) for t in range(1, max_trg_len): output, hidden, attn_weight = self.decoder(output, hidden, encoder_outputs) outputs[t] = output output = output.max(1)[1] #attn_weights[t] = attn_weight return outputs, attn_weights训练神经网络训练过程包括定义损失函数,优化器,数据处理,梯队下降等过程。由于网络中tensor型状为(sentence len, batch, embedding), 而加载的数据形状为(batch, sentence len, embedding),因此有些地方需要进行转置。定义网络,辅助类等代码如下所示:# 数据获取辅助类data = Dataset()en=Encoder(200,64) ##词向量维度200,rnn隐单元64de=Decoder(9133,200,64) ##词袋大小9133,词向量维度200,rnn隐单元64network = Net(en,de,device) ##定义Seq2Seq实例loss_fn = nn.CrossEntropyLoss() ##使用交叉熵损失函数optimizer = Adam(network.parameters()) ##使用Adam优化器model = Model(data)训练过程如下所示:lowest_loss = 10# 得到训练和测试的数据for epoch in range(args.EPOCHS): network.train() # 得到训练和测试的数据 x_train, y_train, x_test, y_test = data.next_batch(args.BATCH) # 读取数据; shape:(sen_len,batch,embedding) #x_train shape: (batch,sen_len,embed_dim) #y_train shape: (batch,sen_len) batch_len = y_train.shape[0] #input_lengths = [30 for i in range(batch_len)] ## batch内每个句子的长度 input_lengths = x_train[:,-1,0] input_lengths = input_lengths.tolist() #input_lengths = list(map(lambda x: int(x),input_lengths)) input_lengths = [int(x) for x in input_lengths] y_lengths = y_train[:,-1] y_lengths = y_lengths.tolist() x_train = x_train[:,:-1,:] ## 除去长度信息 x_train = torch.from_numpy(x_train) #shape:(batch,sen_len,embedding) x_train = x_train.float().to(device) y_train = y_train[:,:-1] ## 除去长度信息 y_train = torch.from_numpy(y_train) #shape:(batch,sen_len) y_train = torch.LongTensor(y_train) y_train = y_train.to(device) seq_pairs = sorted(zip(x_train.contiguous(), y_train.contiguous(),input_lengths), key=lambda x: x[2], reverse=True) #input_lengths = sorted(input_lengths, key=lambda x: input_lengths, reverse=True) x_train, y_train,input_lengths = zip(*seq_pairs) x_train = torch.stack(x_train,dim=0).permute(1,0,2).contiguous() y_train = torch.stack(y_train,dim=0).permute(1,0).contiguous() outputs = network(x_train,input_lengths,y_train) #, prediction = torch.max(outputs.data, 2) optimizer.zero_grad() outputs = outputs.float() # calculate the loss according to labels loss = loss_fn(outputs.view(-1, outputs.shape[2]), y_train.view(-1)) # backward transmit loss loss.backward() # adjust parameters using Adam optimizer.step() print(loss) # 若测试准确率高于当前最高准确率,则保存模型 if loss < lowest_loss: lowest_loss = loss model.save_model(network, MODEL_PATH, overwrite=True) print(“step %d, best lowest_loss %g” % (epoch, lowest_loss)) print(str(epoch) + “/” + str(args.EPOCHS))小结通过使用Seq2Seq + Attention模型,我们完成了使用神经网络对对联的任务。经过十余个周期的训练后,神经网络将会对出与上联字数相同的下联,但是,若要对出工整的对联,还需训练更多的周期,读者也可以尝试其他的方法来提高对仗的工整性。体验对对联Demo: https://www.flyai.com/couplets获取更多项目样例开源代码 请PC端访问:www.flyai.com ...

January 31, 2019 · 6 min · jiezi

可应用于实际的14个NLP突破性研究成果(一)

摘要: 最好的论文是可以直接走出实验室!NLP年度最佳应用论文大集锦!语言理解对计算机来说是一个巨大的挑战。幼儿可以理解的微妙的细微差别仍然会使最强大的机器混淆。尽管深度学习等技术可以检测和复制复杂的语言模式,但机器学习模型仍然缺乏对我们的语言真正含义的基本概念性理解。但在2018年确实产生了许多具有里程碑意义的研究突破,这些突破推动了自然语言处理、理解和生成领域的发展。我们总结了14篇研究论文,涵盖了自然语言处理(NLP)的若干进展,包括高性能的迁移学习技术,更复杂的语言模型以及更新的内容理解方法。NLP,NLU和NLG中有数百篇论文,由于NLP对应用和企业AI的重要性和普遍性,所以我们从数百篇论文中寻找对NLP影响最大的论文。2018年最重要的自然语言处理(NLP)研究论文1.BERT:对语言理解的深度双向变换器的预训练,作者:JACOB DEVLIN,MING-WEI CHANG,KENTON LEE和KRISTINA TOUTANOVA论文摘要:我们引入了一种名为BERT的新语言表示模型,它是Transformer的双向编码器表示。与最近的语言表示模型不同,BERT旨在通过联合调节所有层中的左右上下文来预训练深度双向表示。因此,预训练的BERT表示可以通过一个额外的输出层进行微调,以创建适用于广泛任务的最先进模型,例如问答和语言推理,而无需实质性的具体的架构修改。BERT在概念上简单且经验丰富,它获得了11项自然语言处理任务的最新成果,包括将GLUE基准推至80.4%(提升了7.6%)、MultiNLI准确度达到86.7%(提升了5.6%)、SQuAD v1.1问题回答测试F1到93.2%(提升了1.5%)。总结谷歌AI团队提出了自然语言处理(NLP)的新前沿模型-BERT,它的设计允许模型从每个词的左侧和右侧考虑上下文。BERT在11个NLP任务上获得了新的最先进的结果,包括问题回答,命名实体识别和与一般语言理解相关的其他任务。论文的核心思想是什么?通过随机屏蔽一定比例的输入token来训练深度双向模型-从而避免单词间接“看到自己”的周期。通过构建简单的二进制分类任务来预训练句子关系模型,以预测句子B是否紧跟在句子A之后,从而允许BERT更好地理解句子之间的关系。训练一个非常大的模型(24个Transformer块,1024个隐藏层,340M参数)和大量数据(33亿字语料库)。什么是关键成就?刷新了11项NLP任务的记录,包括:获得80.4%的GLUE分数,这比之前最佳成绩提高了7.6%;在SQuAD 1.1上达到93.2%的准确率。预训练的模型不需要任何实质的体系结构修改来应用于特定的NLP任务。AI社区对其看法?BERT模型标志着NLP的新时代;两个无人监督的任务在一起为许多NLP任务提供了很好的性能;预训练语言模型成为一种新标准;未来的研究领域是什么?在更广泛的任务上测试该方法。收集BERT可能捕获或未捕获的语言现象。最可能的商业应用是什么?BERT可以帮助企业解决各种NLP问题,包括:提供更好的聊天机器人客服体验;客户评论分析;搜索相关信息;你在哪里可以代码?Google Research发布了一个官方Github存储库,其中包含Tensorflow代码和BERT预训练模型。BIT的PyTorch实现也可以在GitHub上获得。2.人类注意力的序列分类,作者:MARIA BARRETT,JOACHIM BINGEL,NORA HOLLENSTEIN,MAREK REI,ANDERSSØGAARD论文摘要学习注意力函数需要非常大规模的数据,不过有很多自然语言处理任务都是对人类行为的模拟,在这篇论文中作者们就表明人类的注意力确实可以为 NLP 中的许多注意力函数提供一个不错的归纳偏倚。具体来说,作者们根据人类阅读语料时的眼睛动作追踪数据估计出了「人类注意力」,然后用它对 RNN 网络中的注意力函数进行正则化。作者们的实验表明,人类注意力在大量不同的任务中都带来了显著的表现提升,包括情感分析、语法错误检测以及暴力语言检测。总结Maria Barrett和她的同事建议使用从眼动(eye-tracking)追踪语料库中获取的人类注意力来规范循环神经网络(RNN)中的注意力。通过利用公开可用的眼动追踪语料库,即通过眼睛跟踪测量(例如注视持续时间)增强的文本,它们能够在NLP任务中显着提高RNN的准确性,包括情绪分析、滥用语言检测和语法错误检测。论文的核心思想是什么?使用人的注意力,从眼动追踪语料库中估计,以规范机器注意力。模型的输入是一组标记序列和一组序列,其中每个标记与标量值相关联,该标量值表示人类读者平均专注于该标记的注意力。RNN联合学习循环参数和注意力功能,但可以在来自标记序列的监督信号和眼睛跟踪语料库中的注意力轨迹之间交替。建议的方法不要求目标任务数据带有眼睛跟踪信息。什么是关键成就?在注意力序列分类任务中引入循环神经结构。证明使用人眼注意力(从眼动追踪语料库中估计)来规范注意力功能可以在一系列NLP任务中实现显著改善,包括:§ 情绪分析,§ 检测语言检测,§ 语法错误检测。性能比基线平均误差减少4.5%。这些改进主要是由于召回率(recall)增加。AI社区对其看法?该论文获得了关于计算自然语言学习顶级会议的CoNLL 2018人类语言学习和处理启发的最佳研究论文特别奖。未来的研究领域是什么?在学习人类相关任务时,探索利用人类注意力作为机器注意力的归纳偏见的其他可能性。什么是可能的商业应用?RNN结合人类注意力信号,可应用于商业环境:§ 加强客户评论的自动分析;§ 过滤掉滥用的评论,回复。你在哪里可以得到实现代码?本研究论文的代码可在GitHub上获得。3.基于短语和神经元的无监督机器翻译,作者:GUILLAUME LAMPLE,MYLE OTT,ALEXIS CONNEAU,LUDOVIC DENOYER,MARC’AURELIO RANZATO论文摘要机器翻译系统在某些语言上实现了接近人类的性能,但其有效性强烈依赖于大量并行句子的可用性,这阻碍了它们适用于大多数语言。本文研究了如何在只能访问每种语言的大型单语语料库时学习翻译。我们提出了两种模型变体,一种神经模型,另一种基于短语的模型。两个版本都利用参数的初始化、语言模型的去噪效果以及通过迭代反向翻译自动生成并行数据。这些模型明显优于文献中的方法,同时更简单且具有更少的超参数。在广泛使用的WMT'14英语-法语和WMT'16德语-英语基准测试中,我们的模型不使用单个平行句的情况下分别获得28.1和25.2 BLEU分数,超过现有技术水平11 BLEU分。在英语-乌尔都语和英语-罗马尼亚语等低资源语言中,我们的方法比半监督和监督方法获得的效果都要好,我们的NMT和PBSMT代码是公开的。总结Facebook AI研究人员承认了缺乏用于训练机器翻译系统的大型并行语料库,并提出了一种更好的方法来利用单语数据进行机器翻译(MT)。特别是,他们认为通过适当的翻译模型初始化、语言建模和迭代反向翻译,可以成功地完成无监督的MT。研究人员提出了两种模型变体,一种是神经模型,另一种是基于短语的模型,它们的性能都极大地超越了目前最先进的模型。论文的核心思想是什么?无监督的MT可以通过以下方式完成:§ 合适的翻译模型初始化(即字节对编码);§ 在源语言和目标语言中训练语言模型,以提高翻译模型的质量(例如,进行本地替换,单词重新排序);§ 用于自动生成并行数据的迭代反向转换。有两种模型变体:神经和基于短语:§ 神经机器翻译一个重要的属性:跨语言共享内部表示。§ 基于短语的机器翻译在低资源语言对上优于神经模型,且易于解释和快速训练。什么是关键成就?基于神经和短语的机器翻译模型显著优于以前的无监督,例如:§ 对于英语-法语任务,基于短语的翻译模型获得的BLEU分数为28.1(比之前的最佳结果高出11 BLEU分);§ 对于德语-英语任务,基于神经和短语的翻译模型组合得到BLEU得分为25.2(高出基线10个BLEU点)。无监督的基于短语的翻译模型实现了超过使用10万个并行句子训练的监督模型对应的性能。AI社区的对其想法?该论文在自然语言处理领域的领先会议被评为EMNLP 2018评为最佳论文奖。未来的研究领域是什么?寻找更有效的原则实例或其他原则。扩展到半监督模型。什么是可能的商业应用?改进其中没有足够的并行语料库来训练受监督的机器翻译系统的机器翻译结果。你在哪里可以得到实现代码?Facebook团队在GitHub上提供了本研究论文的原始实现代码。未完待续……本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

January 29, 2019 · 1 min · jiezi

NLP度量指标BELU真的完美么?

摘要: NLP重要评价准则之一——BLEU,真的完美无缺么?刚接触自然语言处理的朋友通常会问我:当系统的输出是文本,而非对输入文本进行某种分类,如何对该系统进行评估。当模型的输入是文本信息,输出也是文本信息时,我们称之为序列到序列问题,也可称为字符串转换问题。序列到序列建模是解决NLP中较难任务的核心,它包括:1、 自动文摘(Text Summarization);2、 文本简化(Text simplification);3、 问答(Question answering);4、 聊天机器人(Chatbots);5、 机器翻译(Machine translation);理解序列到序列建模问题相对容易,如何对其进行评价才是难点。对于刚入门NLP的人来说,选取衡量标准较为困难。目前最流行的评价指标之一BLEU虽然常用,但也存在较大的缺陷。本文将介绍BELU的工作原理,指出其存在的问题,并探索如何结合自己的工作最大程度规避这些问题。一个难题BELU最初是评价机器翻译的指标,所以我们会以翻译(法语—英语)为例进行讲解。J’ai mangé trois filberts.下面两句为英语参考译文:I have eaten three hazelnuts.I ate three filberts.假设下面的翻译是由我们训练的神经网络产生。I ate three hazelnuts.问题来了:如何给上述翻译结果打分。要想利用机器学习来建立一个翻译系统,就需要一个实值分数来对其性能进行衡量。如果我们能够获取潜在的最佳得分,便能够计算它与实际值之间的误差。这能够在训练时为系统提供反馈,通过最小实际分数与潜在分数之间的差值来改进翻译模型,并通过查看同一任务上训练过的系统得分比较不同的模型。假设:如果输出句子中的单词在任何一个参考句出现,就给它打1分,如果没有出现,打0分。为了使计数标准化,使分数始终介于0和1之间。我们可以将某个参考译文中出现的单词总数除以输出句子中的单词总数。我们称该方法为unigram precision。在上面的翻译示例中,“I ate three hazelnuts”,我们能够在输出句子中看到至少一个参考句中的单词,再除以单词数4,该翻译的最终得分为1。但如果换成了下面的句子,该如何打分呢?Three three three three.按照刚才的衡量标准,得分依旧为1。但很明显,“I ate three hazelnuts”比“Three three three three”翻译得好。但如何将这一点告知我们正在训练的系统呢?你可以通过限定单词出现在翻译句子中的最大次数来调整分数。经过调整,“I ate three hazelnuts”计算出的得分仍然为1,而“Three three three three”为0.25。这解决了单词简单重复的问题,但新问题来了,如果单词的排列是无序的呢?就像下面:Ate hazelnuts I three如果继续用刚才的方法,这个句子得分为1。通过计数可以解决这个问题,但此时并非统计单个单词,而是相邻的单词。该方法称为n-grams,n是每组单词的数量,unigrams,bigrams,trigrams以及4-grams分别由一个、两个、三个、四个单词组成。在这个例子中,我们使用bigrams。通常来讲,BLEU的分数是unigram,bigram,trigram,4-grams的加权平均。为了简便,我们选择bigram,并忽略句子开头和结尾定义边界的单词。基于上述规则,句子排序如下:[Ate hazelnuts][hazelnuts I][I three]如果我们利用bigrams计算句子得分,“I ate three hazelnuts”是0分,“Three three three three”是0分,“I eat three hazelnuts”为1分,而下面这个例子也是0分:I ate.很明显这不是我们想要的。解决这个问题的方法是将目前的分数乘以一个简短惩罚因子。通过这个因子,得分高的候选翻译结果,能够同时在长度、词语选择、词语顺序等方面与参考句子匹配。如果翻译结果比参考句子更长或者一样长,惩罚因子为1。如果翻译译文长度比参考译文要短,就需要一个惩罚的机制去控制。在示例“I ate”中,句子长度为2个单词,与其最接近的参考句长度为4个单词。其简洁惩罚为0.36,乘以bigram的精度分数1,最终得分降至0.36。该指标旨在探测输出翻译与参考语句中有多少个n-grams重叠,并乘以简洁惩罚值后输出得分。BLEU由Kishore Papineni, Salim Roukos, Todd Ward, and Wei-Jing Zhu于2002年提出,是NLP中非常流行的度量指标,特别是对于系统输出是文本信息而不是分类的任务,其中包括机器翻译和自然语言生成。它解决了我们在文章开头提出的问题:找到一种方法,告诉我们翻译结果有多“好”,并为其打分。BLEU存在的问题在此之前,先概括一下BLEU的优势:**1、它方便,快速,容易计算,结果比较接近人类评分;2、在相同的任务中,能够很容易地将模型与基准进行比较;**但这些便利使得人们过度的使用它,即使在它不是最佳度量标准的任务中也作为了首选。尽管我们只以一句话为例进行了介绍,但BLEU是一种语料库级别的度量标准。计算语料库中的每个句子的BLEU分数,然后求它们的平均值会使得分数过大。BLEU的问题主要有以下四点:1、 不考虑意义;2、 不直接考虑句子结构3、 不能很好地处理形态丰富的语言4、 不能很好的映射到人类判断BLEU不考虑意义由于BLEU不考虑意义,我们便不能只使用它对机器翻译进行评估。作为一名机器翻译软件的用户,我更希望准确理解原文的含义,即使翻译的句子中在语法或句法上有所欠缺,只要清楚的表达了原文的意义也能接受。但BLEU并不考虑意义,它只奖励精确匹配的n-grams。这意味着一个虚词(如“an”或“on”)的差异和一个更重要的与内容相关的词语受到的惩罚是一样的。如果一个译文中有一个完全有效的同义词,只是没有出现在参考译文中,也会受到惩罚,但这并不合理。以下列句子为例对这个问题进行分析:Original (French): J’ai mangé la pomme.Reference translation: I ate the apple.下列的句子都是BLEU评出的 “糟糕的翻译”:I consumed the apple.I ate an apple.I ate the potato.但作为机器翻译的使用者,我觉得前面两句也表达清楚了原文的意思,即使它们和参考译文有所出入。第三句话让人不能接受,它完全改变了原文的意思。NIST方法是在BLEU方法上的一种改进。最主要的是引入了每个n-gram的信息量(information)的概念。BLEU算法只是单纯的将n-gram的数目加起来,而NIST是在得到信息量累加起来再除以整个译文的n-gram片段数目。这样相当于对于一些出现少的重点的词权重就给的大了。因此,在更常见的n-gram(如“of”)上的不匹配将受到更小的惩罚,而在更罕见的n-gram(如“buffalo buffalo”)上的不匹配将受到更大的惩罚。虽然这解决了赋予虚词过多权重的问题,但实际上却使惩罚同义词(如“ambled”代替“walked”)的问题变得更糟,因为这些同义词只出现在更少见的n-gram中,因此惩罚因子会更大。BLEU不直接考虑句子结构即使你通过调整词序改变句子的结构,仍然可以获得很高的BLEU分数。句法是对句子结构的研究,以词作为基本单位,并且各单词按照一定顺序排列。“I saw the dog with the telescope”一句,即能表示“I was using the telescope to look at the dog”,也可以说“the dog had the telescope”。二者的区别通过句子中各单词的排列顺序体现。在自然语言中,句子的内部结构特别重要,将句子各单词顺序打乱,既破坏了其完整含义,又让人难以理解。通过parsing可解决该问题。但parsing的计算相当密集,每次求值时必须解析所有输出,增加了开销。但不考虑句法结构,词序混乱的翻译与意思连贯的翻译获得相同的分数显得极其不合理。Callison-Burch等人在2006年对此进行了说明:Orejuela appeared calm as he was led to the American plane which will take him to Miami, Florida.Orejuela appeared calm while being escorted to the plane that would take him to Miami, Florida.Orejuela appeared calm as he was being led to the American plane that was to carry him to Miami in Florida.Orejuela seemed quite calm as he was being led to the American plane that would take him to Miami in Florida.翻译如下:Appeared calm when he was taken to the American plane, which will to Miami, Florida.这个翻译并不完美,它删除了人名,且句子后半段“will”后面没有动词,但它并非一点意义没有,毕竟比下面的翻译好,虽然两句话获得的BLEU分数相同:which will he was, when taken appeared calm to the American plane to Miami, Florida.BELU不能很好地处理形态丰富的语言BELU基于单词级别进行匹配,对于形态丰富的语言,显得并不适用。语素是语言中最小的音义结合体,它们组合在一起构成单词。以英语单词“cats”中的“s”为例,它告诉我们不止一只猫。有些语言,如土耳其语,在一个单词中有很多的语素,而英语,通常每个单词中的语素很少。以秘鲁语句为例:Jawen jemara ani iki.Jawen jemaronki ani iki.两句话都是可接受的英语“her village is large”的翻译。其中,以“jemar-”开头的单词在两个句子中有不同的结尾。不同的结尾代表不同的词素,这句话表明说话人很确定这个村子很大。上面那句话是他们去过那里见到了很大的村子,而下面那句话则表示他们是从别人那听说村子很大。这种特殊类型的语素被称为“证据标记(evidentiality marker)”,这在英语中不存在,而在秘鲁语中,一个句子的语法需要二者中的一个,所以我们的参考译文也应该有其中的一个。但是,如果我们没有在参考句中准确地找到该单词,就会对它进行惩罚,即使这两个句子都很好的表达了英语原句的意思。BELU不能很好的映射到人类判断构建机器翻译,聊天机器人以及问答系统最终的目的是希望人们能够使用它们。如果一个系统不能提供有效的输出,就没有意义。所以优化目的是使更多的人喜欢并尽可能多的使用所开发的系统。BELU首次提出时,作者进行了相关的行为测试,以确保与人类的判断相关。但当研究人员进行更多的实验时,发现BELU分数并不能很好的映射到人类判断。在一些任务中,甚至其它的评价方法更接近人类判断。Turian在2003年发现,BLEU在机器翻译中与人类判断的相关性最差,F1与人类判断最为相关,NIST次之。Sun在2010年比较了BLEU,GTM以及TER,发现BELU与人类判断的相关性最小。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

January 21, 2019 · 2 min · jiezi

2018年AI和ML(NLP、计算机视觉、强化学习)技术总结和2019年趋势(上)

摘要: 回顾2018,展望2019,计算机科学技术继续前进!1、简介:过去几年一直是人工智能爱好者和机器学习专业人士最幸福的时光。因为这些技术已经发展成为主流,并且正在影响着数百万人的生活。各国现在都有专门的人工智能规划和预算,以确保在这场比赛中保持优势。数据科学从业人员也是如此,这个领域正在发生很多事情,你必须要跑的足够的快才能跟上时代步伐。回顾历史,展望未来一直是我们寻找方向的最佳方法。这也是我为什么想从数据科学从业者的角度退一步看一下人工智能的一些关键领域的发展,它们突破了什么?2018年发生了什么?2019年会发生什么?我将在本文中介绍自然语言处理(NLP)、计算机视觉、工具库、强化学习、走向合乎正道的人工智能2、自然语言处理(NLP)让机器分析单词和句子似乎是一个梦想,就算我们人类有时候也很难掌握语言的细微差别,但2018年确实是NLP的分水岭。我们看到了一个又一个显著的突破:ULMFiT、ELMO、OpenAI的Transformer和Google的BERT等等。迁移学习(能够将预训练模型应用于数据的艺术)成功应用于NLP任务,为无限可能的应用打开了大门。让我们更详细地看一下这些关键技术的发展。ULMFiTULMFiT由Sebastian Ruder和fast.ai的Jeremy Howard设计,它是第一个在今年启动的NLP迁移学习框架。对于没有经验的人来说,它代表通用语言的微调模型。Jeremy和Sebastian让ULMFiT真正配得上Universal这个词,该框架几乎可以应用于任何NLP任务!想知道对于ULMFiT的最佳部分以及即将看到的后续框架吗?事实上你不需要从头开始训练模型!研究人员在这方面做了很多努力,以至于你可以学习并将其应用到自己的项目中。ULMFiT可以应用六个文本分类任务中,而且结果要比现在最先进的方法要好。你可以阅读Prateek Joshi关于如何开始使用ULMFiT以解决任何文本分类问题的优秀教程。ELMO猜一下ELMo代表着什么吗?它是语言模型嵌入的简称,是不是很有创意? ELMo一发布就引起了ML社区的关注。ELMo使用语言模型来获取每个单词的嵌入,同时还考虑其中单词是否适合句子或段落的上下文。上下文是NLP的一个重要领域,大多数人以前对上下文都没有很好的处理方法。ELMo使用双向LSTM来创建嵌入,如果你听不懂-请参考这篇文章,它可以让你很要的了解LSTM是什么以及它们是如何工作的。与ULMFiT一样,ELMo显着提高了各种NLP任务的性能,如情绪分析和问答,在这里了解更多相关信息。BERT不少专家声称BERT的发布标志着NLP的新时代。继ULMFiT和ELMo之后,BERT凭借其性能真正击败了竞争对手。正如原论文所述,“BERT在概念上更简单且更强大”。BERT在11个NLP任务中获得了最先进的结果,在SQuAD基准测试中查看他们的结果:有兴趣入门吗?你可以使用PyTorch实现或Google的TensorFlow代码尝试在自己的计算机上得出结果。我很确定你想知道BERT代表什么,它实际上是Transformers的双向编码器表示,如果你能够领悟到这些,那很不错了。PyTextFacebook开源了深度学习NLP框架PyText,它在不久之前发布,但我仍然要测试它,但就早期的评论来说非常有希望。根据FB发表的研究,PyText使会话模型的准确性提高了10%,并且缩短了训练时间。PyText实际上落后于Facebook其他一些产品,如FB Messenger。如果你对此有兴趣。你可以通过GitHub下载代码来自行尝试。2019年NLP趋势:塞巴斯蒂安·罗德讲述了NLP在2019年的发展方向,以下是他的想法:预训练的语言模型嵌入将无处不在,不使用它们的模型将是罕见的。我们将看到可以编码专门信息的预训练模型,这些信息是对语言模型嵌入的补充。我们将看到有关多语言应用程序和跨语言模型的成果。特别是,在跨语言嵌入的基础上,我们将看到深度预训练的跨语言表示的出现。3、计算机视觉这是现在深度学习中最受欢迎的领域,我觉得我们已经完全获取了计算机视觉中容易实现的目标。无论是图像还是视频,我们都看到了大量的框架和库,这使得计算机视觉任务变得轻而易举。我们今年在Analytics Vidhya花了很多时间研究这些概念的普通化。你可以在这里查看我们的计算机视觉特定文章,涵盖从视频和图像中的对象检测到预训练模型列表的相关文章,以开始你的深度学习之旅。以下是我今年在CV中看到的最佳开发项目:如果你对这个美妙的领域感到好奇,那么请继续使用我们的“使用深度学习的计算机视觉”课程开始你的旅程。BigGAN的发布在2014年,Ian Goodfellow设计了GAN,这个概念产生了多种多样的应用程序。年复一年,我们看到原始概念为了适应实际用例正在慢慢调整,直到今年,仍然存在一个共识:机器生成的图像相当容易被发现。但最近几个月,这个现象已经开始改变。或许随着BigGAN的创建,该现象或许可以彻底消失,以下是用此方法生成的图像:除非你拿显微镜看,否则你将看不出来上面的图片有任何问题。毫无疑问GAN正在改变我们对数字图像(和视频)的感知方式。Fast.ai的模型18分钟内在ImageNet上被训练这是一个非常酷的方向:大家普遍认为需要大量数据以及大量计算资源来执行适当的深度学习任务,包括在ImageNet数据集上从头开始训练模型。我理解这种看法,大多数人都认为在之前也是如此,但我想我们之前都可能理解错了。Fast.ai的模型在18分钟内达到了93%的准确率,他们使用的硬件48个NVIDIA V100 GPU,他们使用fastai和PyTorch库构建了算法。所有的这些放在一起的总成本仅为40美元! 杰里米在这里更详细地描述了他们的方法,包括技术。这是属于每个人的胜利!NVIDIA的vid2vid技术在过去的4-5年里,图像处理已经实现了跨越式发展,但视频呢?事实证明,将方法从静态框架转换为动态框架比大多数人想象的要困难一些。你能拍摄视频序列并预测下一帧会发生什么吗?答案是不能!NVIDIA决定在今年之前开源他们的方法,他们的vid2vid方法的目标是从给定的输入视频学习映射函数,以产生输出视频,该视频以令人难以置信的精度预测输入视频的内容。你可以在这里的GitHub上试用他们的PyTorch实现。2019年计算机视觉的趋势:就像我之前提到的那样,在2019年可能看到是改进而不是发明。例如自动驾驶汽车、面部识别算法、虚拟现实算法优化等。就个人而言,我希望看到很多研究在实际场景中实施,像CVPR和ICML这样的会议描绘的这个领域的最新成果,但这些项目在现实中的使用有多接近?视觉问答和视觉对话系统最终可能很快就会如他们期盼的那样首次亮相。虽然这些系统缺乏概括的能力,但希望我们很快就会看到一种综合的多模式方法。自监督学习是今年最重要的创新,我可以打赌明年它将会用于更多的研究。这是一个非常酷的学习线:标签可以直接根据我们输入的数据确定,而不是浪费时间手动标记图像。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

January 16, 2019 · 1 min · jiezi

四大维度全景揭秘阿里巴巴智能对话开发平台

在阿里巴巴智能服务事业部的X蜂会上,小蜜北京团队的高级算法专家李永彬(水德)分享了小蜜智能对话开发平台的构建,围绕平台来源、设计理念、核心技术、业务落地情况四大维度讲述了一个较为完整的智能任务型对话开发平台的全景。以下为演讲具体内容。平台由来为什么要做一个平台?我觉得还是从一个具体的任务型对话的例子说起,在我们日常工作中,一个很高频的场景就是要约一个会议,看一下我们内部的办公助理是怎么来实现约会议的:我说“帮我约一个会议”,然后它问“你是哪一天开会?”,跟它说是“后天下午三点”,接下来它又会问“你跟谁一起开会啊?”,我会把我想约的人告诉它,这个时候它在后台发起一次服务调用,因为它要去后台拿到所有参会者的日程安排,看一下在我说的这个时间有没有共同的空闲时间,如果没有的话它会给我推荐几个时间段,我看了一下我说的那个时间段大家没有共同的空闲时间,所以我就会改一个时间。我说“上午十一点吧”,然后它会接着问,“你会持续多长时间”,我会告诉它“一个小时”,然后它接着问“会议的主题是什么”,然后我跟它说“我们讨论一下下周的上线计划”,到此为止它把所有的信息收集全了,然后它会给我一个 summary,让我确认是不是要发送会议邀约,我回复确认以后,它在后台就会调用我们的邮件系统,把整个会议邀约发出来。这是一个非常典型的任务型的对话,它满足两个条件,第一,它有一个明确的目标;第二,它通过多轮对话交互来达成这个目标。像这样的任务型对话在整个办公行业里面,除了约会议以外还有查考勤、请假、定会议室或者日程安排等等。如果我们把视野再放大一点的话,再看一下电商行业,电商行业里面就会涉及到开发票、催发货、查物流、改地址、收快递等等,也会涉及到很多很多的这样的任务型对话场景;视野再放大一下,我们再看一下电信行业或者整个运营商的行业里面,会有查话费、查流量、买套餐、报故障或者是进行密码的更改服务等,也会有大量的这种任务型的对话场景。如果我们再一步去看的话,像政务、金融、教育、文娱、健康、旅游等,在各行各业的各种场景里面我们都会发现这种任务型的对话,它是一种刚需,是一种普遍性的存在。所有的这些场景落地到我们小蜜家族的时候,是通过刚刚介绍过的三大小蜜来承载:阿里小蜜、店小蜜和云小蜜。我们不可能给每一个行业里面的每一个场景去定制一个对话流程,所以我们就沿用了阿里巴巴一贯做平台的思路,这也是我们整个智能对话开发平台的由来。这款产品在内部的名字叫对话工厂(Dialog Studio)。以上主要是给大家介绍我们为什么要做智能对话开发平台,总结起来就是我们目前面临的业务,面临的场景太宽泛了,不可能铺那么多人去把所有的场景都定制化,所以我们需要有一个平台来让开发者进来开发各行各业的各种场景对话。设计理念再看第二部分,对话工厂的一些核心设计理念。整个设计理念这块我觉得概括起来就是“一个中心,三个原则”。一个中心就是以对话为中心,这句话大家可能觉得有点莫名其妙,你做对话的,为何还要强调以对话为中心呢?这是有来源的,因为在过去几年全世界范围的技术实践以及直到今天很多巨头的对话平台里面,我们能看到的基本还是以意图为中心的设计模式,它把意图平铺在这里,比如你想完成音乐领域的一些事情,可是你看到的其实是一堆平铺的意图列表,完全看不出对话在哪里。我们在这次对话工厂的设计中彻底把它扭转回来,对话就是要以对话为中心,你在我们的产品界面里面看到的不再是一个个孤立的意图,而是关联在一起的、有业务逻辑关系的对话流程。以意图为中心的设计中,你看到的其实是一个局部视角,就只能实现一些简单的任务,比如控制一个灯,讲个笑话,或者查个天气,如果你想实现一个复杂的任务,比如开一个发票,或者去 10086 里开通一个套餐,它其实是较难实现,很难维护的。我们把整个理念转换一下,回到以对话为中心以后,就会看到全局视野,可以去做复杂的任务,可以去做无限的场景。整个对话工厂刚刚也说过了,它是一个平台,要做一个平台就会遇到很多挑战:第一个挑战就是对用户来说,希望使用门槛越低越好;第二个挑战是要面对各行各业的各种场景,就要求能做到灵活定制;第三个挑战是上线以后所有的用户肯定都希望你的机器人,你的对话系统能够越用越好,而不是停留在某一个水平就不动了。这就是我们平台所面临的三大挑战。为了应对这三个挑战,我们提出了在整个平台的设计以及实现过程中始终要遵循三个原则。第一个原则是冷启动要快,其实就是要让用户的使用门槛低一点;第二个原则是要有灵活定制的能力,只有这样才能满足各行各业的各种场景需求;第三个是要有鲁棒进化的能力,就是模型上线以后,随着时间的变化,随着各种数据的不断回流,模型效果要不断提升。冷启动,就是要把用户用到的各种能力和各种数据都尽量变成一种预置的能力,简单来说就是平台方做得越多,用户就做得越少;灵活定制,就要求我们把整个对话平台的基础元素进行高度抽象,你抽象的越好就意味着你平台的适应能力越好,就像是经典力学只要三条定律就够了;鲁棒进化,这一块就是要在模型和算法上做深度了,语言理解的模型,对话管理的模型,数据闭环,主动学习,在这些方面能够做出深度来。以上说的都是一些理念和原则,接下来给大家介绍一下具体在实现过程中是怎么来做的。核心技术讲到技术这块的话,因为我们做的是一个平台,涉及到的技术非常广,是全栈的技术,从算法到工程到前端到交互所有的技术都会涉及到。我摘取里面算法的核心部分来给大家做一个介绍。对话工厂首先是用来做对话的,人机对话有两个主体,一个是人,一个是机器,人有人的逻辑,人的逻辑使用什么来表达呢?到今天为止主要还是通过语言,所以我们需要有一个语言理解的服务来承载这一块;机器有机器的逻辑,机器的逻辑到今天为止还是通过代码来表达的,所以我们需要一个函数计算的服务;在人和机器对话的过程中,这种对话过程需要有效的管理,所以我们需要一个对话管理模块。整个对话工厂最核心的三个模块就是语言理解、对话管理和函数计算。第一个模块是语言理解。我们先看一下这个图,在整个这个图里面,横轴是意图的多样性,纵轴是频次,这样说有点抽象,我举一个具体的例子,比如说我要开发票,这是一个意图,如果去采样十万条这个意图的用户说法作为样本,把这些说法做一个频率统计,可能排在第一位的就是三个字“开发票”,它可能出现了两万次,另外排在第二位可能是“开张发票”,它可能出现了八千次,这些都是一些高频的说法,还有一些说法说的很长,比如“昨天我在你们商铺买了一条红色的裙子,你帮我开个发票呗”,这种带着前因后果的句式,在整个说法里面是比较长尾的,可能只出现了一次或两次。我们统计完以后,整个意图的说法的多样性分布符合幂律分布。这种特征可以让我们在技术上进行有效的针对性设计,首先针对这种高频的部分,我们可以上一些规则,比如上下文无关文法,可以比较好的 cover 这一块,但是基于规则的方法,大家也知道,规则是没有泛化能力的,所以这时候要上一个匹配模型,计算一个相似度来辅助规则,这两块结合在一起就可以把我们高频确定性的部分解决的比较好;对于长尾的多样性的这一部分,基本到今天为止还是上有监督的分类模型,去收集或者去标注很多数据,把这一块做好;在规则和分类模型之间,我们又做了一部分工作,就是迁移学习模型,为什么要引入这个模型呢?我们看下一张图。在冷启动阶段,用户在录入样本的时候,不会录入太多,可能录入十几条几十条就已经很多了,这个时候按照刚才那个幂律分布,二八原则的话,它的效果的话可能也就是 70% 多,它不可能再高了。但对于用户的期望来说,如果想要上线,想要很好的满足他的用户需求,其实是想要模型效果在 90% 以上,如果想要达到这个效果,就需要复杂的模型,需要标注大量数据。所以其实是存在一个 gap 的,我们引入了迁移学习模型。具体来说,我们把胶囊网络引进来和 few-shot learning 结合在一起,提出了一个网络结构叫 Induction Network,就是归纳网络。整个网络结构有三层,一层是 Encoder层,第二层是 Induction,归纳层,第三层是 Relation 层。第一层负责将每一个类的每一个样本进行编码,编码成一个向量;第二层是最核心的一层,也就是归纳层,这里面利用胶囊网络的一些方法,把同一个类的多个向量归纳成一个向量;然后第三层 Relation 层把用户新来的一句话和每一个类的归纳向量进行关系计算,输出他们的相似性打分。如果我们想要一个分类结果就输出一个 One-hot,如果不想要 One-hot,就输出一个关系的 Relation score,这是整个 Induction network 的网络结构。这个网络结构提出来以后,在学术圈里面关于 few-shot learning 的数据集上,我们以比较大的提升幅度做到了 state-of-the-art 的效果,目前是最好的,同时我们将整个网络结构上线到了我们的产品里面,这是语言理解。第二块我们看对话管理。对话管理其实我刚刚也说过了,如果想要让平台有足够的适应性的话,那么它的抽象能力一定要好。对话管理是做什么的?对话管理就是管理对话的,那么对话是什么呢?对话的最小单位就是一轮,一个 turn,我们进去看的话,一个 turn 又分为两部分,一个叫对话输入,一个叫对话输出;在输入和输出中间,有一个对话处理的过程,就像两个人互相交流一样,我问你答,但其实你在答之前是有一个思考过程的,如果你不思考就回答,那你的答案就是没有质量的,所以就会有一个中间的对话处理过程。我们把对话抽象到这种程度以后,整个平台就三个节点,一个叫触发节点,一个叫函数节点,一个叫回复节点。触发节点是和用户的对话输入对着的,函数节点是和对话处理对着的,回复节点是和对话输出对着的。有了这一层抽象以后,无论你是什么行业的什么场景,什么样的对话流程,都可以通过这三个节点通过连线把你的业务流画出来。举两个例子,先看一个简单的,你要查一个天气,很简单,先来一个触发节点,把天气流程触发起来,中间有两个函数节点,一个是调中央气象台的接口,把结果拿过来,另一个是对结果进行一次解析和封装,以一个用户可读的形式通过回复节点回复给用户。这里面稍微解释一下就是增加了一个填槽节点,填槽节点是什么意思呢?就是在任务型对话里面,几乎所有的任务都需要收集用户的信息,比如你要查天气,就需要问时间是哪一天的,地点是什么地方的,这样就叫做填槽,填槽因为太常用太普遍了,就符合我们冷启动快里面做预置的思想,所以通过三个基础节点,我们自己把它搭建成填槽的一个模板,需要填槽的时候从页面上拖一个填槽节点出来就可以了。我们再看一个复杂的场景,这是在线教育里面的一个外呼场景,家里有小孩的可能知道,这种在线教育特别火,在上课之前半小时,机器人就会主动给用户打电话,指导软件下载,指导怎么登陆,登陆进去以后怎么进入教室,所有的这些流程都可以通过机器人进行引导。通过这两个例子我们就可以看到,无论是简单还是复杂的场景,通过这三种抽象节点的连线都可以实现。有时候我们开玩笑就会说,整个这种连线就叫一生二,二生三,三生万千对话。讲了抽象以后,再看一下具体的对话管理技术。从实现上来说,这张图和大家刚才看到的语言理解那张是一模一样的,因为很多东西的分布其实是遵循着共同规律的,区别在与把意图换成了对话。举一个例子,比如像查天气这样的,如果采集十万个查天气的样本,对这些用户的说法进行一个频率统计的话,大概就是这样一个曲线,用两步能够完成的,比如说查天气,先填槽一个时间再填槽一个地点,然后返回一个结果,通过这种流程来完成的,可能有两万次;中间可能会引入一些问 A 答 B 的情况,这样的 B 可能有各种各样的,就跑到长尾上来了,这样整个对话其实也遵循一个幂律分布。对于高频确定的部分,可以用状态机进行解决,但状态机同样面临一个问题,它没有一个很好的容错能力,当问 A 答 B 的时候,机器不知道下面怎么接了。在这种情况下,需要引入一个类人能力,对状态机的能力进行补充,状态机加上类人能力以后,基本上可以把高频的对话比较好的解决了。对于长尾上的对话,目前对于整个学术界或者工业界都是一个难题,比较好的解决方式就是上线以后引入在线交互学习,不断跟用户在对话过程中学习对话。在状态机和在线交互学习之间其实是有 gap 的,因为状态机自己没有学习能力,所以需要引入增强学习。接下来我会介绍在类人能力以及增强学习方面的一些工作。先看一下类人能力。我们把人说的话,做一下分类大概可以分为三种:第一种就是用户说的话清晰明了只有一个意思,这种其实对机器来说是可理解的;第二种机器压根儿不知道在说啥,也就是 unknown 的;还有一种就是用户表达的意思可以理解,但是有歧义,有可能包含着两个意图、三个意图,就是uncertain,不确定的。确定性的,状态机其实是可以很好地捕捉和描述的,类人能力主要关注拒识的和不确定性的。对于拒识这块,比如还是在线英语的这个例子,机器人打来一个电话,问现在方不方便调试设备,这个时候从设计的角度来说希望用户回答方便或者不方便就OK了,但是一旦这个用户回答了一个比较个性化的话,比如,“呃,我刚扫完地,过会儿可能有人要来”,这时候我们的语言理解模块很难捕捉到这是什么语义,这时候需要引入一个个性化的拒识,比如说,“您好,不好意思,刚才没听明白,请问您现在是否方便调试,如果您不方便,我过会儿再给您打过来”,这个就是对话的兜底,是对 unknown 的处理。第二个我们看一下澄清,用户说的一句话里面,如果是模糊不清的怎么办?我们通过大量的数据分析发现这种模糊不清主要出现在两种情况下,一种是用户把多个意图杂糅在一段话里来表达;第二种是用户在表达一个意图之前做了很长的铺垫,对于这两种长句子现在的语言理解给出的是意图的概率分布,我们把这个概率分布放到对话管理模块以后就需要让用户进行一轮澄清。比如这个例子,这是移动领域的一个例子,这句话理解有三种意图,到底是想问花费明细,还是套餐的事情还是想问合约的低保,把这三个问题抛给用户进行澄清就可以了。从技术上来说是怎么实现的呢,我们看一下这个图,开发者负责把对话流程用流程图清晰描述出来,然后像澄清这种其实是我们系统的一种内置能力,什么时候澄清是通过下端的这两个引擎里面的能力来决定的,第一块是 Error Detection,它用来检测用户当前说的这句话是否需要触发澄清,一旦它觉得要触发澄清,就会交给下一个模块,究竟用什么样的方式澄清以及怎么生成澄清的话术,这是目前我们整个智能澄清这块做的工作。再看一下我们在增强学习方面的工作。在对话管理模型里面,经典的分成两个模块,一个是 neural belief tracker,用来做对话状态追踪的,另一个是 policy network,用来做行为决策的。在整个框架下,要去训练这个网络的时候,有两种训练方式,一种是端到端的去训练,用增强学习去训练,但这种方式一般它的收敛速度会比较慢,训练出的结果也不好;另外一种方式是先分别做预训练,这个时候用监督学习训练就好了,不用增强学习训练,训练完以后再用增强学习对监督学习预训练的模型进行调优就可以了。无论是端到端的一步训练还是先预训练再调优,只要涉及增强学习这一块,都需要有一个外部环境,所以在我们的实现架构里面,引入了模拟器的概念,就是user simulator。模拟器这主要分为三大块,一个是 user model,用来模拟人的行为的;第二个是 error model,模拟完人的行为以后经过 error model 引入一个错误扰动,用 user model 产出的只是一个概率为 1 的东西,它对网络训练是不够好的,error model 会对这个结果进行扰动并给他引进几个其他的结果,并且把概率分布进行重新计算一下,这样训练出的模型在扩展能力或者泛化能力上会更好一些;第三个模块是 reward model,用来提供 reward 值。这是我们今天在整个增强学习的对话管理这块的一些工作。最后看一下函数计算。函数计算是什么东西呢?还是举一个例子吧,比如说,10086 里面用户说要查一下话费,10086 那边的机器人就会回复一句是发短信还是播放语音,表面看来就是简单的一入一出,其实在这背后要经过多轮的服务查询,才能完成这个结果,因为当要查话费的时候,先要经过函数计算查一下现在是哪一天,如果是下账期的话是不能查话费的,就是每个月的最后一天不能查话费,如果可以查话费的话,先看一下用户是否存在话费,如果存在花费的话第三步调用的服务看是不是停机了,因为停机了的话只能语音播报不能接收短信。所以看一下在一个简单的一入一出的对话背后,是走了一个复杂的流程的,这些流程今天都是在机器端用代码来实现的。函数计算的引入,使对话工厂可以去处理复杂的任务。业务应用最后我们看一下对话工厂的业务应用情况。这是我们在浙江上线的 114 移车,当有市民举报违规停车挡路后,就会自动打一个电话让他移车。第二个是在金融领域里面关于贷款催收的例子。在刚刚过去的双十一里面,对话工厂在整个电商里面也有大量应用,主要是在店小蜜和阿里小蜜里面。店小蜜主要是一些开发票、催发货、改地址这样的流程,这里是一个开发票的例子,用户可能会先说一个开发票,进来以后要进行复杂的流程,一种是在说的时候其实他已经把它的订单号送进来了,如果没有说订单号的话需要去后台系统查订单号,查出来以后弹一个订单选择器选择订单,接下来如果是个人发票就走这个流程,如果是公司发票走另一个流程,接下来会问是普通发票还是增值税发票,如果是普通发票接着往这儿走,如果是增值税发票需要获取企业增值税的税号,最后汇总到一个节点,调用后台开发票的系统,把发票开出来。这是这次双十一里面用到的开发票的一个例子。最后看一下我们整体的落地情况。整个对话工厂在店小蜜里面主要是做像开发票这样的售后流程的处理。在云小蜜,公有云是一大块;私有云现在有很多家客户了,主要有银行、电信运营商还有金融等;钉钉是我们另一个重要的端,钉钉上也有几百万的企业;内外小蜜是我们集团用小蜜实现的一个办公助理;另外两个巨大的客户,一个是浙江省的政务,第二个是中国移动,这也是是云小蜜的业务。阿里小蜜主要是负责阿里巴巴集团内部各个 BU 的业务,手淘是一个最大的业务,进入手机淘宝以后,进入“我的”里面有一个客服小蜜,就是阿里小蜜;上个月我们刚刚在优酷上线了优酷小蜜,星巴克是 9 月份上的,是属于新零售的一个最大的尝试点,还有很多其他的场景。总结小蜜智能对话开发平台,即对话工厂(Dialog Studio),以对话为中心来设计,使得对话开发者能够看到全局视野,可以去做复杂的任务,可以去做无限的场景。同时,作为一个平台性产品,为了能够实现低门槛、适用于各行各业以及具备效果持续提升能力,在整个设计实现中,遵循冷启动快、灵活定制、鲁棒进化三大原则。技术方面,我们在语言理解、对话管理、迁移学习、增强学习以及模仿学习等各方面做了深入探索,部分成果做到了学术界state-of-the-art。业务方面,对话工厂在小蜜家族的大量业务中落地应用,带来了良好的业务价值。对话工厂,“让人和机器自由对话”!本文作者:李永彬阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

January 15, 2019 · 1 min · jiezi

2018年,自然语言处理最全的应用与合作

摘要: 机器翻译、语音交互、汽车、医疗、法律、金融、广告、电商,全年案例大合集。2018年见证了 NLP 许多新的应用发展。Elvis Saravia 是计算语言学专家,也是2019 计算语言学会年度大会北美分部的项目委员之一。他在一份报告中总结出,NLP 不仅在聊天机器人和机器学习中有所突破,也在医疗健康、金融、法律和广告等行业中有崭新的表现。点击文章中的链接,可查看详细信息。聊天机器人聊天机器人是一项非常重要的研究领域,因为包括了 NLP 所覆盖的几大目标。这篇 Wired 文章,解释语音情感识别如何帮助机器与人类建立更加健康的关系。梅赛德斯奔驰发布了聊天机器人 MBUX,据称能为顾客创造“最会聊天的汽车”,让人与汽车可以通过自然的对话进行聊天。NLP 创业公司 Hugging Face 获得400万美元融资,打造情感智能聊天机器人。Wired 还发布了一篇文章讨论 Facebook 的虚拟助理 M ,以及为何公司计划将其关闭。此前就有许多人认为,也许聊天机器人只是一个泡沫,因为目前的 NLP 和 AI 的技术水准还无法达到顾客的预期。这篇文章讨论 Passage AI 如何使用 NLP 和深度学习技术来训练顶尖的聊天机器人,用英语、西班牙语和中文进行聊天。谷歌研究人员开发了一系列技术,深化聊天中的语意文本相似度。Mastercard 称,聊天银行也许已经成为主流。艾伦 AI 研究院通过 Alexandria 项目开发具有常识的AI。AskArvi 使用 NLP 和深度学习,理解顾客的需要,从而推荐合适的保险项目。亚马逊的新技术和 API 将提供能够离线使用的机器学习工具。Facebook 提交了一个电商聊天机器人的专利申请,以 NLP 为其核心技术。谷歌发布 Google Duplex,用于进行自然聊天,通过电话实现“真实世界”任务。这项技术在谷歌2018 IO 大会发布。医疗健康Jessica Kent 探讨如何将 NLP 应用于电子医疗记录,精确分析并改善心脏衰竭的病人护理。Anthem 与 doc.ai 合作,分析和预测病人的过敏模式。MIT 研究人员打造了一个基于 AI 的众筹平台,打造一个可以分析药物与蛋白质的系统。据一份新报告称,NLP 和 AI 将把医疗从线下服务,改变为不受医生地理位置限制的高质量服务。DeepMind 称其开发了一项新技术,能自动探测和治疗视网膜疾病。一种基于 NLP 的新文本挖掘技术,可以通过病人的生物标记来决定癌症治疗方案。创业公司 Proven Beauty 使用 NLP 为顾客提供个人化的护肤产品线。看 NLP 如何帮助改善医疗文档。BrightSign 是一款智能手套,使得具有语言残疾的人能够更好地沟通。一家医疗机构使用深度学习和计算机视觉技术在 CT 扫描中检测疾病,比人类肿瘤学家的速度快150倍。看谷歌如何通过技术,提升人们的健康水平。自动化心理治疗机器人 Woebot 获得A轮800万美元融资。Stitch CEO 讨论如何通过数据来销售个人化时尚。Linguamatics 提供基于文字药物发现和研究的工具库。机器学习工具谷歌发布 Cloud AutoML,目标是为大企业提供云端 AI 服务,这是谷歌普及 AI 使命的一部分。谷歌 AI 发布 BigQuery ML,能让数据科学家在大规模结构化和半结构化数据库上使用机器学习模型。Fast.ai 与 AWS Open Datasets 合作,标准化并发布开放数据库。Facebook 通过多语言嵌入,提供更快速的翻译服务。PyTorch Geometric 通过 PyTorch 进行几何深度学习。简单的几项测试看出,最优秀的谷歌翻译也很肤浅。Linguistics Agents Ltd. 发布了一个 NLP 平台,训练深度增强学习代理。这里有一个简化电子游戏代码编写的 AI 工具。谷歌 Brain 发布 Magenta.js,一个利用 TensorFlow.js 生成音乐和艺术内容的API。谷歌发布谷歌文字语音转换,其基础是 DeepMind 开发的 WaveNet。TensorFlow 1.9 和 TensorFlow 1.10.0 相继发布,TensorFlow 2.0 将于2019年初发布,在这个论坛可以看到新版本的预期特征。PyTorch 主持了第一场开发者大会,讨论最新发布的 PyTorch 1.0 的研究和生产能力。Intel 开源了名为 NLP Architect 的 Python 库。Semantris 是一款基于 NLP 和机器学习的文字联想游戏。金融、广告和法律澳大利亚证券与投资委员会(ASIC)希望利用 NLP 加强管理公司和金融服务法律。Tumi 使用 AI 和 NLP 进行目标营销。华尔街和大型创业公司现在都下血本投资 NLP 和机器学习,用于为客户进行更好的投资,类似于一种自动化投资管理。小型和大型律师事务所正在通过 AI 一决高下。金融行业在使用机器学习和 NLP 来重新定义服务,开发新市场。通过“数据转移项目”,谷歌希望实现数据移动化,包括给予用户完全的数据掌控。更多的NLP故事据称,DARPA 将在 AI Next Initiative 投资高达20亿美元,实现语境推理和问题解决能力。著名教授及研究员 Pedro Domingos 计划成为纽约投资公司 D.E. Shaw 集团的管理总监,领导公司的机器学习工作。微软最新的专利目标通过 NLP 将来电 ID 功能提升一个水准,系统将能够识别来电者的目标和行动。使用 AI 改善呼叫中心服务的创业公司 Observe.ai 筹集800万美元资金,使用机器学习和 NLP 技术将呼叫中心体验自动化。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

January 10, 2019 · 1 min · jiezi

2018年自然语言处理最值得关注的研究、论文和代码

摘要: NLP 与情感分析、增强学习、深度学习的交叉领域,全年干货大合集。2018年对于自然语言处理(NPL)是很有意义的一年,见证了许多新的研究方向和尖端成果。Elvis Saravia 是计算语言学专家,也是2019 计算语言学会年度大会北美分部的项目委员之一。他总结了2018年 NLP 的重要进展,包括增强学习、情感分析和深度学习等领域。点击文章中的链接,可获得每一项研究的详细信息、论文或者代码。综合领域Facebook 研究员们发明了一种机器翻译的新方法,只需要使用单一语言语料库,这对于缺乏资料的语言非常有用。Young 和同事更新了他们近期发表的论文《基于深度学习的自然语言处理的最新趋势》,增加了 NLP 文献中最新的 SQuAD 结果。Bloomberg 研究员 Yi Yang 发表了 RNN 卷积筛选建模的最新论文及代码,称体现了语言中的长期依存性和组合性。百度发布了 Deep Voice 3,是一项基于注意、完全卷积的文字语音转换神经系统,比目前的循环系统在神经语音合成方面快几个量级。Pair2vec 是一种学习文字嵌入对的新方法,能体现隐含关系的背景知识。百度发布了名为同声翻译与预测及可控延迟(STACL)的机器翻译算法,能够同时进行多个翻译。在同声传译时,这项技术不需要等发言者暂停发言,而可以预测发言者的下一个词语。Deep INFOMAX 是一种学习无监督表征的方法,将输入和高层特征矢量之间的共同信息最大化。蒙特利尔大学的 AI 研究团队 MILA 发表了多个超赞的研究成果,记录了自然语言生成(NLG)任务中 GAN 的限制。聊天机器人是 NLP 的一个重要研究领域,创业公司 lang.ai 如何使用无监督 AI 来解决打造聊天机器人的重要挑战之一:理解用户到底想要什么。这个模型提供了一种新方法进行文字生成,可以实现更强的解读性和控制性。谷歌 AI 发表了论文,探索语言建模的极限。亚马逊研究员提出了一种语言建模方法,这种新的训练策略的重要性在于,在现实中,要获得大量的训练数据来建立一种新能力经常是不现实的。增强学习许多研究员认为增强学习是机器学习的最前端。 我们来看看这个领域内,2018年都有哪些重大进展。David Ha 的“世界模型”,目标是研究个体能否在其自身的梦境中学习,需要利用增强学习来学习一项规则,依靠世界模型中抽取的特征来解决制定的任务。OpenAI 开发了一个类似人类的机器人手,通过增强学习算法获得操纵物体的灵活性。DeepMind 在《自然》杂志发布了一篇论文,讨论虚拟环境中,人工个体的网格表征怎样通过矢量导航找到解决。TextWorld 是以文字游戏为灵感的学习环境,用于训练增强学习代理。Google研究员开发了一项名为 MnasNet 的技术,是一种自动化神经网络架构搜索方法,用于通过增强学习设计移动化机器学习模型。OpenAI Five 利用增强学习,能在复杂游戏 Dota 2 中打败业余水准的人类选手。DeepMind 开发了名为 PopArt 的技术,利用增强学习在多任务环境中具有高精确度。三星的 CozNet 是一种增强学习算法,在两项知名的NPL比赛中展现了顶尖表现。Arel 使用对抗奖励学习来讲故事,解决故事评估维度的局限。Metacar 是为无人驾驶汽车而设计的增强学习环境,在以 Tensorflow.js 打造的浏览器上使用。OpenAI 发布的 Gym Retro 平台提供 1000多个游戏,进行增强学习研究。情感分析机器学习系统需要更深的理解能力,才能与人类在情感层面互动。这篇新论文提出了“层级化CVAE用于精准的仇恨言论分类”,能够理解40多个群体和13中不同类别的仇恨言论。这篇论文讨论如何使用简单的支持向量机变量获得最佳结果,并指出模型方面需要注意的几点。目前大部分情感分析都是基于神经方法,研究时需要注意模型和特征的选择。这篇论文定量分析了推特表情肤色修改器的使用效果。这篇论文讨论如何使用深度卷积神经网络检测讽刺。另外,这项新研究使用眼动追踪、NLP和深度学习算法检测讽刺。研究员开发了一项成为“情感聊天机器”的方法,这个聊天机器人不仅能给出符合事实与逻辑的答案,还能在聊天中加入悲伤、厌烦等情绪。Lei Zhang 等研究员发表了一篇论文,综合概括了深度学习方法如何用于情感分析。这个双向异步框架可以在聊天中生成有意义的情感回复。这项研究使用计算机视觉方法,研究语境中的情感识别。这篇在2018 NAACL 大会上发表的论文,提出了一种方法可以使用简单的递归神经网络模拟情感流。深度学习DeepMind 与哈佛大学教师 Wouter Kool 合作发表了论文,研究人类如何使用大脑来做决定,以及这些研究结果能如何启发人工智能的研究。这篇论文引入了“群组归一化”的概念,可以有效替代批归一化,被认为是深度学习的一项重要技术。Sperichal CNN 是一种打造卷积神经网络的新方法。BAIR 发布了一篇文章,讨论目前循环神经网络和前馈神经网络在解决各种问题时的优缺点。Facebook 的 AI 研究小组开发了一项新技术,能将 AI 模型运行效率提升16%。这能提高 AI 模型的训练速度,并简化模型的量化和运行。这篇《自然》杂志论文,介绍了一种可以预测地震后余震位置的深度学习方法。DeepMind 研究员开发了一种新方法,利用神经算数逻辑单元(NALU)改善神经网络,追踪时间、用数字图片运行算数、数图片中的物体个数等等。DARTS 是一种架构搜索算法,可以设计高性能的图像分类卷积架构。这篇论文《实证验证序列建模中的通用卷积网络和神经网络》,讨论了序列建模中 CNN 和 RNN 的区别。图形神经网络如何帮助推断潜在关系结构、模拟多代理和物理动态。谷歌 AI 研究团队发布了一篇论文,提出了一种改进版的 RNN,能够提高自动数据解读的精确度。Distill 发布了新研究,可以在一个数据源的语境下分析另一个数据。如果没有任何数据、也没有任何人类知识工程,有可能习得精准的认知模型吗?这项研究会告诉你答案。这篇论文详细描述了针对深度神经网络的批归一化研究。这篇论文回顾了神经网络中,如何更好地进行批训练。这篇论文讨论如何正确评估深度半监督学习算法。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

January 9, 2019 · 1 min · jiezi

菜鸟数据科学家五大误区

你准备好要成为一名数据科学家,积极的参加Kaggle比赛和Coursera的讲座。虽然这一切都准备好了,但是一名数据科学家的实际工作与你所期望的却是大相径庭的。本文研究了作为数据科学家新手的5个常见错误。这是由我在塞巴斯蒂安·福卡德(<u style=“box-sizing: border-box;">Dr. Sébastien Foucaud</u>)博士的帮助下一起完成的,他在指导和领导学术界与行业领域的年轻数据科学家方面拥有20多年的经验。本文旨在帮助你更好地为今后的实际工作做准备。1、Kaggle成才论你通过参加Kaggle比赛,练习了数据科学领域的各项技能。如果你能把决策树和神经网络结合起来那就再好不过了。说实话,作为一个数据科学家,你不需要做那么多的模型融合。请记住,通常情况下,你将花80%的时间进行数据预处理,剩下的20%的时间用于构建模型。作为Kaggle的一份子对你在很多方面都有帮助。所用到的数据一般都是彻底处理过的,因此你可以花更多的时间来调整模型。但在实际工作中,则很少会出现这种情况。一旦出现这种情况,你必须用不同的格式和命名规则来收集组装不同来源的数据。做数据预处理这项艰苦的工作以及练习相关的技能,你将会花费80%的时间。抓取图像或从API中收集图像,收集Genius上的歌词,准备解决特定问题所需的数据,然后将其提供给笔记本电脑并执行机器学习生命周期的过程。精通数据预处理无疑会使你成为一名数据科学家,并对你的公司产生立竿见影的影响。2、神经网络(Neural Networks)无所不能在计算机视觉或自然语言处理的领域,深度学习模型优于其它机器学习模型,但它们也有很明显的不足。神经网络需要依赖大量的数据。如果样本很少,那么使用决策树或逻辑回归模型的效果会更好。神经网络也是一个黑匣子,众所周知,它们很难被解释和说明。如果产品负责人或主管经理对模型的输出产生了质疑,那么你必须能够对模型进行解释。这对于传统模型来说要容易得多。正如詹姆斯·勒(James Le)在一个伟大的邮件中所阐述的那样,有许多优秀的统计学习模型,自己可以学习一下,了解一些它们的优缺点,并根据用例的约束来进行模型的实际应用。除非你正在计算机视觉或自然语言识别的专业领域工作,否则最成功的模型很可能就是传统的机器学习算法。你很快就会发现,最简单的模型,如逻辑回归,通常是最好的模型。3、机器学习是产品在过去的十年里,机器学习既受到了极大的吹捧,也受到了很大的冲击。大多数的初创公司都宣称机器学习可以解决现实中遇到的任何问题。机器学习永远都不应该是产品。它是一个强大的工具,用于生产满足用户需求的产品。机器学习可以用于让用户收到精准的商品推荐,也可以帮助用户准确地识别图像中的对象,还可以帮助企业向用户展示有价值的广告。作为一名数据科学家,你需要以客户作为目标来制定项目计划。只有这样,才能充分地评估机器学习是否对你有帮助。4、混淆因果和相关有90%的数据大约是在过去的几年中形成的。随着大数据的出现,数据对机器学习从业者来说已经变得越来越重要。由于有非常多的数据需要评估,学习模型也更容易发现随机的相关性。上图显示的是美国小姐的年龄和被蒸汽、热气和发热物体导致的命案总人数。考虑到这些数据,一个学习算法会学习美国小姐的年龄影响特定对象命案数量的模式。然而,这两个数据点实际上是不相关的,并且这两个变量对其它的变量没有任何的预测能力。当发现数据中的关系模式时,就要应用你的领域知识。这可能是一种相关性还是因果关系呢?回答这些问题是要从数据中得出分析结果的关键点。5、优化错误的指标机器学习模型通常遵循敏捷的生命周期。首先,定义思想和关键指标。之后,要原型化一个结果。下一步,不断进行迭代改进,直到得到让你满意的关键指标。构建一个机器学习模型时,请记住一定要进行手动错误分析。虽然这个过程很繁琐并且比较费时费力,但是它可以帮助你在接下来的迭代中有效地改进模型。参考下面的文章,可以从Andrew Ng的Deep Learning Specialization一文中获得更多关于改进模型的技巧。注意以下几个关键点:实践数据处理研究不同模型的优缺点尽可能简化模型根据因果关系和相关性检查你的结论优化最有希望的指标本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

January 8, 2019 · 1 min · jiezi

2018年深度学习的主要进步

摘要: 一文了解2018深度学习取得了哪些突破性进展!在过去几年中,深度学习改变了整个人工智能的发展。深度学习技术已经开始在医疗保健,金融,人力资源,零售,地震检测和自动驾驶汽车等领域的应用程序中出现。至于现有的成果表现也一直在稳步提高。在学术层面,机器学习领域已经变得非常重要了,以至于每20分钟就会出现一篇新的科学文章。在本文中,我将介绍2018年深度学习的一些主要进展,与2017年深度学习进展版本一样,我没有办法进行详尽的审查。我只想分享一些给我留下最深刻印象的领域成就。语言模型:Google的BERT在自然语言处理(NLP)中,语言模型是可以估计一组语言单元(通常是单词序列)的概率分布的模型。在该领域有很多有趣的模型,因为它们可以以很低的成本构建,并且显着改进了几个NLP任务,例如机器翻译,语音识别和内容解析。历史上,最著名的方法之一是基于马尔可夫模型和n-gram。随着深度学习的出现,出现了基于长短期记忆网络(LSTM)更强大的模型。虽然高效,但现有模型通常是单向的,这意味着只有单词的上下文才会被考虑。去年10月,Google AI语言团队发表了一篇引起社区轰动的论文。BERT是一种新的双向语言模型,它已经实现了11项复杂NLP任务的最新结果,包括情感分析、问答和复述检测#Paraphrase_recognition)。预训练BERT的策略不同于传统的从左到右或从右到左的选项。新颖性包括:随机屏蔽一定比例的输入词,然后预测那些被屏蔽的词;这可以在多层次的背景下保持间接“看到自己”的词语。构建二元分类任务以预测句子B之后是否紧跟句子A,这允许模型确定句子之间的关系,这种现象不是由经典语言建模直接捕获的。至于实施,Google AI开源了他们的论文代码,该代码基于TensorFlow。其中一些在PyTorch也能实现,例如Thomas Wolf和Junseong Kim的实现。BERT对业务应用程序的影响很大,因为这种改进会影响NLP的各个方面。这可以在机器翻译,聊天机器人行为,自动电子邮件响应和客户审查分析中获得更准确的结果。视频到视频合成我们通常习惯由图形引擎创建的模拟器和视频游戏进行环境交互。虽然令人印象深刻,但经典方法的成本很高,因为必须精心指定场景几何、材料、照明和其他参数。一个很好的问题是:是否可以使用例如深度学习技术自动构建这些环境。在他们的视频到视频合成论文中,NVIDIA的研究人员解决了这个问题。他们的目标是在源视频和输出视频之间提供映射功能,精确描绘输入内容。作者将其建模为分布匹配问题,其目标是使自动创建视频的条件分布尽可能接近实际视频的条件分布。为实现这一目标,他们建立了一个基于生成对抗网络(GAN)的模型。在GAN框架内的关键思想是,生成器试图产生真实的合成数据,使得鉴别器无法区分真实数据和合成数据。他们定义了一个时空学习目标,旨在实现暂时连贯的视频。结果非常惊人,如下面的图片所示:输入视频位于左上象限,它是来自Cityscapes数据集的街道场景视频的分段图。作者将他们的结果(右下)与两个基线进行比较:pix2pixHD(右上)和COVST(左下)。这种方法甚至可以用于执行未来的视频预测。由于NVIDIA开源vid2vid代码(基于PyTorch),你可以尝试执行它。改进词嵌入去年,我写了关于字嵌入在NLP中的重要性,并且相信这是一个在不久的将来会得到更多关注的研究课题。任何使用过词嵌入的人都知道,一旦通过组合性检查的兴奋(即King-Man+Woman=Queen)已经过去,因为在实践中仍有一些限制。也许最重要的是对多义不敏感,无法表征词之间确切建立的关系。到底同义词Hyperonyms?另一个限制涉及形态关系:词嵌入模型通常无法确定诸如驾驶员和驾驶之类的单词在形态上是相关的。在题为“深度语境化词语表示”(被认为是NAACL 2018年的优秀论文)的论文中,来自艾伦人工智能研究所和Paul G. Allen计算机科学与工程学院的研究人员提出了一种新的深层语境化词汇表示方法。同时模拟单词使用的复杂特征(例如语法和语义)以及这些用途如何在语言环境(即多义词)中变化。他们的提议的中心主题,称为语言模型嵌入(ELMo),是使用它的整个上下文或整个句子来对每个单词进行矢量化。为了实现这一目标,作者使用了深度双向语言模型(biLM),该模型在大量文本上进行了预训练。另外,由于表示基于字符,因此可以捕获单词之间的形态句法关系。因此,当处理训练中未见的单词(即词汇外单词)时,该模型表现得相当好。作者表明,通过简单地将ELMo添加到现有的最先进解决方案中,结果可以显著改善难以处理的NLK任务,例如文本解释,共指解析和问答,与Google的BERT表示一样,ELMo是该领域的重要贡献,也有望对业务应用程序产生重大影响。视觉任务空间结构的建模视觉任务是否相关?这是斯坦福大学和加州大学伯克利分校的研究人员在题为“Taskonomy:Disentangling Task Transfer Learning”的论文中提出的问题,该论文获得了2018年CVPR的最佳论文奖。可以合理地认为某些视觉任务之间存在某种联系。例如,知道表面法线可以帮助估计图像的深度。在这种情况下,迁移学习技术-或重用监督学习结果的可能性将极大的提高。作者提出了一种计算方法,通过在26个常见的视觉任务中找到转移学习依赖关系来对该结构进行建模,包括对象识别、边缘检测和深度估计。输出是用于任务转移学习的计算分类图。上图显示了计算分类法任务发现的示例任务结构。在该示例中,该方法告知我们如果组合了表面法线估计器和遮挡边缘检测器的学习特征,则可以用很少的标记数据快速训练用于重新整形和点匹配的模型。减少对标签数据的需求是这项工作的主要关注点之一。作者表明,可以通过粗略地减小求解一组10个任务所需的标记的数据点的总数2/3(具有独立训练相比),同时保持几乎相同的性能。这是对实际用例的重要发现,因此有望对业务应用程序产生重大影响。微调通用语言模型以进行文本分类深度学习模型为NLP领域做出了重大贡献,为一些常见任务提供了最先进的结果。但是,模型通常从头开始训练,这需要大量数据并且需要相当长的时间。Howard和Ruder提出了一种归纳迁移学习方法,称为通用语言模型微调(ULMFiT)。主要思想是微调预训练的语言模型,以使其适应特定的NLP任务。这是一种精明的方法,使我们能够处理我们没有大量数据的特定任务。他们的方法优于六个文本分类任务的最新结果,将错误率降低了18-24%。关于训练数据的数量,结果也非常惊人:只有100个标记样本和50K未标记样本,该方法实现了与10K标记样本从头开始训练的模型相同的性能。同样,这些结果证明迁移学习是该领域的关键概念。你可以在这里查看他们的代码和预训练模型。最后的想法与去年的情况一样,2018年深度学习技术的使用持续增加。特别是,今年的特点是迁移学习技术越来越受到关注。从战略角度来看,这可能是我认为今年最好的结果,我希望这种趋势在将来可以继续下去。我在这篇文章中没有探讨的其他一些进展同样引人注目。例如,强化学习的进步,例如能够击败Dota 2的职业玩家的惊人的OpenAI Five机器人。另外,我认为现在球CNN,特别有效的分析球面图像,以及PatternNet和PatternAttribution,这两种技术所面临的神经网络的一个主要缺点:解释深层网络的能力。上述所有技术发展对业务应用程序的影响是巨大的,因为它们影响了NLP和计算机视觉的许多领域。我们可能会在机器翻译、医疗诊断、聊天机器人、仓库库存管理、自动电子邮件响应、面部识别和客户审查分析等方面观察到改进的结果。从科学的角度来看,我喜欢Gary Marcus撰写的深度学习评论。他清楚地指出了当前深度学习方法的局限性,并表明如果深度学习方法得到其他学科和技术的见解(如认知和发展心理学、符号操作和混合建模)的补充,人工智能领域将获得相当大的收益。无论你是否同意他,我认为值得阅读他的论文。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

January 2, 2019 · 1 min · jiezi

文本相似度计算_03

本文主要介绍余下的两种文本相似度的计算方式:simhash + 汉明距离minhashsimhash+汉明距离simhash是google用来处理海量文本去重的算法。simhash就是将一个文档,最后转换成一个64位的字节,然后判断重复只需要判断他们的各个字节的距离是不是<n(n为自定义大小,一般取3~5),就可以判断两个文档是否相似。simhash算法分为5个步骤:分词、hash、加权、合并、降维,具体过程如下所述:分词给定一段语句,进行分词,得到有效的特征向量,然后为每一个特征向量设置1-5等5个级别的权重(如果是给定一个文本,那么特征向量可以是文本中的词,其权重可以是这个词出现的次数)。hash通过hash函数计算各个特征向量的hash值,hash值为二进制数01组成的n-bit签名。加权在hash值的基础上,给所有特征向量进行加权,即W = Hash weight,且遇到1则hash值和权值正相乘,遇到0则hash值和权值负相乘。合并将上述各个特征向量的加权结果累加,变成只有一个序列串。降维对于n-bit签名的累加结果,如果大于0则置1,否则置0,从而得到该语句的simhash值,最后我们便可以根据不同语句simhash的海明距离来判断它们的相似度。具体的流程图如下:找到了一个例子来说明具体的步骤:首先对文本内容进行分词,去掉一些停用词后,将剩余的词语hash编码,然后对应的每个词进行与权重相乘的方式得到每一个词的新的hash编码(权重采用的词的tf-idf的大小作为权重),然后进行hash对应位置进行合并,最后对合并后的hash进行降维操作。得到的每一个文档的simhash均为等长的hash编码,所以可以用汉明距离快速的计算出n值的大小。例如,两篇文档的simhash分别为:所以该两个文本的汉明距离为3,若n取5,则可以认为这两个文本是相似的。minhashminhash推荐阅读博客:http://www.cnblogs.com/bourne…文中下面内容将参照该篇博客讲解:问题背景:给出N个集合,找到相似的集合对,如何实现呢?直观的方法是比较任意两个集合。那么可以十分精确的找到每一对相似的集合,但是时间复杂度是O(n2)。当N比较小时,比如K级,此算法可以在接受的时间范围内完成,但是如果N变大时,比B级,甚至P级,那么需要的时间是不能够被接受的。上面的算法虽然效率很低,但是结果会很精确,因为检查了每一对集合。假如,N个集合中只有少数几对集合相似,绝大多数集合都不等呢?那么根据上述算法,绝大多数检测的结果是两个结合不相似,可以说这些检测“浪费了计算时间”。所以,如果能找到一种算法,将大体上相似的集合聚到一起,缩小比对的范围,这样只用检测较少的集合对,就可以找到绝大多数相似的集合对,大幅度减少时间开销。虽然牺牲了一部分精度,但是如果能够将时间大幅度减少,这种算法还是可以接受的。接下来的内容讲解如何使用Minhash和LSH来实现上述目的,在相似的集合较少的情况下,可以在O(n)时间找到大部分相似的集合对。minhash降维原始问题的关键在于计算时间太长。所以,如果能够找到一种很好的方法将原始集合压缩成更小的集合,而且又不失去相似性,那么可以缩短计算时间。Minhash可以帮助我们解决这个问题。举个例子,S1 = {a,d,e},S2 = {c, e},设全集U = {a,b,c,d,e}。集合可以如下表示:表1中,列表示集合,行表示元素,值1表示某个集合具有某个值,0则相反(X,Y,Z的意义后面讨论)。Minhash算法大体思路是:采用一种hash函数,将元素的位置均匀打乱,然后将新顺序下每个集合第一个元素作为该集合的特征值。比如哈希函数h1(i) = (i + 1) % 5,其中i为行号。作用于集合S1和S2,得到如下结果:这时,Minhash(S1) = e,Minhash(S2) = e。也就是说用元素e表示S1,用元素e表示集合S2。那么这样做是否科学呢?进一步,如果Minhash(S1) 等于Minhash(S2),那么S1是否和S2类似呢?结论:P(Minhash(S­1) = Minhash(S2)) = Jaccard(S1,S2)在哈希函数h1均匀分布的情况下,集合S1的Minhash值和集合S2的Minhash值相等的概率等于集合S1与集合S2的Jaccard相似度,下面简单分析一下这个结论。S1和S2的每一行元素可以分为三类:X类 均为1。比如表2中的第1行,两个集合都有元素e。Y类 一个为1,另一个为0。比如表2中的第2行,表明S1有元素a,而S2没有。Z类 均为0。比如表2中的第3行,两个集合都没有元素b。这里忽略所有Z类的行,因为此类行对两个集合是否相似没有任何贡献。由于哈希函数将原始行号均匀分布到新的行号,这样可以认为在新的行号排列下,任意一行出现X类的情况的概率为|X|/(|X|+|Y|)。这里为了方便,将任意位置设为第一个出现X类行的行号。所以P(第一个出现X类) = |X|/(|X|+|Y|) = Jac(S1,S2)。这里很重要的一点就是要保证哈希函数可以将数值均匀分布,尽量减少冲撞。一般而言,会找出一系列的哈希函数,比如h个(h << |U|),为每一个集合计算h次Minhash值,然后用h个Minhash值组成一个摘要来表示当前集合(注意Minhash的值的位置需要保持一致)。举个列子,还是基于上面的例子,现在又有一个哈希函数h2(i) = (i -1)% 5。那么得到如下集合:所以,现在用摘要表示的原始集合如下:从表四还可以得到一个结论,令X表示Minhash摘要后的集合对应行相等的次数(比如表4,X=1,因为哈希函数h1情况下,两个集合的minhash相等,h2不等):X符合次数为h,概率为Jac(S1,S2)的二项分布。那么期望E(X) = h Jac(S1,S2) = 2 2 / 3 = 1.33。也就是每2个hash计算Minhash摘要,可以期望有1.33元素对应相等。所以,Minhash在压缩原始集合的情况下,保证了集合的相似度没有被破坏。LSH-局部敏感哈希现在有了原始集合的摘要,但是还是没有解决最初的问题,仍然需要遍历所有的集合对,,才能所有相似的集合对,复杂度仍然是O(n2)。所以,接下来描述解决这个问题的核心思想LSH。其基本思路是将相似的集合聚集到一起,减小查找范围,避免比较不相似的集合。仍然是从例子开始,现在有5个集合,计算出对应的Minhash摘要,如下:上面的集合摘要采用了12个不同的hash函数计算出来,然后分成了B = 4个区间。前面已经分析过,任意两个集合(S1,S2)对应的Minhash值相等的概率r = Jac(S1,S2)。先分析区间1,在这个区间内,P(集合S1等于集合S2) = r3。所以只要S­1和S2的Jaccard相似度越高,在区间1内越有可能完成全一致,反过来也一样。那么P(集合S1不等于集合S2) = 1 - r3。现在有4个区间,其他区间与第一个相同,所以P(4个区间上,集合S1都不等于集合S2) = (1 – r3)4。P(4个区间上,至少有一个区间,集合S1等于集合S2) = 1 - (1 – r3)4。这里的概率是一个r的函数,形状犹如一个S型,如下:如果令区间个数为B,每个区间内的行数为C,那么上面的公式可以形式的表示为:令r = 0.4,C=3,B = 100。上述公式计算的概率为0.9986585。这表明两个Jaccard相似度为0.4的集合在至少一个区间内冲撞的概率达到了99.9%。根据这一事实,我们只需要选取合适的B和C,和一个冲撞率很低的hash函数,就可以将相似的集合至少在一个区间内冲撞,这样也就达成了本节最开始的目的:将相似的集合放到一起。具体的方法是为B个区间,准备B个hash表,和区间编号一一对应,然后用hash函数将每个区间的部分集合映射到对应hash表里。最后遍历所有的hash表,将冲撞的集合作为候选对象进行比较,找出相识的集合对。整个过程是采用O(n)的时间复杂度,因为B和C均是常量。由于聚到一起的集合相比于整体比较少,所以在这小范围内互相比较的时间开销也可以计算为常量,那么总体的计算时间也是O(n)。参考资料http://www.cnblogs.com/bourne…详细代码见github。 ...

December 21, 2018 · 1 min · jiezi

文本相似度计算_02

该篇文章主要介绍基于词语的文本相似度计算方式,包括:余弦相似度欧式距离Dice系数Jaccard在计算余弦相似度与欧式距离的时候,需要将词语向量化表示,这就需要用到词袋模型。词袋模型(Bag of words)最初的Bag of words,也叫做“词袋”,Bag of words model假定对于一个文本,忽略其词序和语法,句法,将其仅仅看做是一个词集合,或者说是词的一个组合,文本中每个词的出现都是独立的,不依赖于其他词是否出现,或者说当这篇文章的作者在任意一个位置选择一个词汇都不受前面句子的影响而独立选择的。例如两个句子:句子A:这只皮靴号码大了。那只号码合适。句子B:这只皮靴号码不小,那只更合适。第一步:分词句子A:这只/皮靴/号码/大了,那只/号码/合适。句子B:这只/皮靴/号码/不/小,那只/更/合适。第二步:列出所有的词这只,皮靴,号码,大了,那只,合适,不,小,更第三步:计算词频句子A:这只 1,皮靴 1,号码 2,大了 1,那只 1,合适 1,不 0,小 0,更 0句子B: 这只 1,皮靴 1,号码 1,大了 0,那只 1,合适 1,不 1,小 1,更 1第四步:写出词频向量句子A:(1,1,2,1,1,1,0,0,0)句子B:(1,1,1,0,1,1,1,1,1)余弦相似度余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就是余弦相似性。所以句子A与句子B的余弦相似度为:欧式距离欧式距离也称为欧几里得距离,是最常见的距离度量,衡量的是多维空间中两个点之间的绝对距离。计算公式如下:Dice距离Dice距离用于度量两个集合的相似性,因为可以把集合字符串理解为一种集合,因此Dice距离也会用于度量字符串的相似性。Dice系数定义如下:其中分子是A与B的交集数量的两倍,分母为A与B的长度之和。所以他的范围在0到1之间。句子A:{这只,皮靴,号码,大了,那只,号码,合适}句子B:{这只,皮靴,号码,不,小,那只,更,合适}Jaccard距离Dice系数与Jaccard非常的类似。Jaccard是在分子和分母上都减去了A∩B。

December 21, 2018 · 1 min · jiezi

文本相似度计算_01

近期准备整理一下自然语言处理方面用到的技术,之前工作都是按照工作需求来走,对用到的技术算法也没有做一下系统性的整体,所以近期准备系统性的整理一下自然语言处理相关的内容。初步构想涉及6个方面的问题。文本相似度的计算文本关键词提取文本分类情感分析文本主题提取命名实体识别常用的文本相似度的计算方式主要分为基于字符串的与基于语料库的方式。本篇先来讨论一下常用的基于字符串的相似度计算方法。基于字符串的文本相似度计算方法如下: 该方法从字符串匹配的角度出发,以字符串共现和重复程度为相似度衡量的标准。根据计算细粒度不同,可以将方法分为基于字符的方法和基于词语的方法。一类方法单纯从字符串或词语的组成考虑相似度算法,如编辑距离,汉明距离,余弦相似度,Dice系数,欧式距离;另一类方法还加入了字符串顺序,即字符组成和字符顺序相同是字符串相似的必要条件,如最长公共子串,Jaro-Winkler,再一类方法是采用集合的思想,将字符串看作由词语构成的集合,词语共现可用集合的交集计算,如Jaccard。基于字符编辑距离(Levenshtein)汉明距离LCSJaro-Winkler基于词语余弦相似度Dice系数欧式距离Jaccardsimhash+汉明距离minhash下面针对每一个计算方式来逐一介绍。编辑距离Levenshtein距离是一种计算两个字符串间的差异程度的字符串度量(string metric)。我们可以认为Levenshtein距离就是从一个字符串修改到另一个字符串时,其中编辑单个字符(比如修改、插入、删除)所需要的最少次数。俄罗斯科学家Vladimir Levenshtein于1965年提出了这一概念。简单的例子:从字符串“kitten”修改为字符串“sitting”只需3次单字符编辑操作,如下:sitten ( k -> s )sittin ( e -> i )sitting ( _ -> g )因此“kitten”和“sitting”的Levenshtein距离为3。汉明距离在信息理论中,Hamming Distance 表示两个等长字符串在对应位置上不同字符的数目,我们以d(x, y)表示字符串x和y之间的汉明距离。从另外一个方面看,汉明距离度量了通过替换字符的方式将字符串x变成y所需要的最小的替换次数。也就是x与y取异或的过程。简单的例子:“karolin” and “kathrin” is 3"1011101" and “1001001” is 2汉明距离的计算是要两个字符串的长度等长,对应位置查找不同的字符即可。LCS(最长公共子序列)两个字符串的最长公共子序列(LCS)是指这两个字符串中最长的有相同顺序的子序列。举例说明一下,“Hello World” 和 “Bonjour le monde” 的 LCS 是 “oorld”。如果从左到右依次扫过字符串,你会发现 o、 o、 r 、l、 d 在两个字符串中出现的顺序是一样的。其他的子序列为 “ed” 和 “old”,但是它们都比 “oorld” 要短。注意:不要和最长公共字符串混淆了,后者必须是两个字符串的子字符串,也就是字符是直接相邻的。但对公共序列来说,字符之间并不是连续,但是它们必须有相同的顺序。计算两个字符串 a 和 b 的 LCS 方法之一是通过动态规划和回溯法。Jaro-WinklerJaro-Winkler Distance是一个度量两个字符序列之间的编辑距离的字符串度量标准,是由William E. Winkler在1990年提出的Jaro Distance度量标准的一种变体。Jaro Distance是两个单词之间由一个转换为另一个所需的单字符转换的最小数量。Jaro-Winkler Distance通过前缀因子使Jaro Distance相同时共同前缀长度越大的相似度越高。Jaro–Winkler Distance越小,两个字符串越相似。如果分数是0,则表示完全不同,分数为1则表示完全匹配。下面为Jaro相似度的计算方式:Jaro-Winkler只是在Jaro的基础上,为前缀因子增加了权重而已。简单的例子:文中提到的算法的相关代码,稍后会在github中更新。

December 18, 2018 · 1 min · jiezi

在数据采集器中用TensorFlow进行实时机器学习

摘要: 本文学习如何通过发布的最新TensorFlow Evaluator版本使用TensorFlow(TF)模型进行预测和分类。最新DataOps平台的真正价值,只有在业务用户和应用程序能够从各种数据源来访问原始数据和聚合数据,并且及时地产生数据驱动的认识时,才能够实现。利用机器学习(Machine Learning),分析师和数据科学家可以利用历史数据,以及实时地使用类似TensorFlow(TF)这样的技术,以做出更好的数据驱动业务的线下决策。在本文中,你将学习如何利用TensorFlow模型在StreamSets Data Collector3.5.0和StreamSets Data Collector Edge中最新发布的TensorFlow Evaluator进行预测和分类。在深入讨论细节之前,我们来看一些基本概念。机器学习(Machine Learning)亚瑟·塞缪尔把它描述为:“不需要明确地编写程序而使计算机有能力学习的研究领域。”随着机器学习领域的最新发展,计算机现在有能力做出预测,甚至比人类做的还要好,并且感觉可以解决任何问题。让我们先回顾一下机器学习都解决了什么样的问题吧。通常来说,机器学习被分为两大类:监督学习(Supervised Learning)“监督学习是学习一个函数的机器学习任务,该函数基于输入-输出的实例,将输入映射到输出。”—维基百科(Wikipedia)。它涉及到构建一个精准的模型,当历史数据被标记为一些结果的时候,模型就可以预测出结果了。用监督学习解决的常见业务问题:二元分类(学习预测一个分类值)顾客会购买一个特定产品吗?癌症是恶性的还是良性的?多级分类(学习预测一个分类值)给定的一段文本是否带有病毒、恐吓或淫秽内容?这是山鸢尾、蓝旗鸢尾还是北美鸢尾的物种?回归(学习预测一个连续值)一个代售房子的预测价格是多少?明天旧金山的气温是多少?无监督学习无监督学习允许我们在知道很少,或是完全不知道输出应该是什么样子的情况下处理问题。它涉及在之前数据上的标签是不可用的情况下创建模型。在这类的问题中,通过对基于数据中变量之间的关系进行数据聚类来导出结构。无监督学习的两种常见方法是K-均值聚类(K-means clustering)和DBSCAN。注意:Data Collector和Data Collector Edge中的TensorFlow Evaluator目前仅支持监督学习模型。神经网络与深度学习神经网络是机器学习算法的一种,可以学习和使用受人脑结构启发而来的计算模型。与其它机器学习算法,如决策树、逻辑回归等相比,神经网络具有较高的准确性。Andrew Ng在传统人工神经网络的背景下对深度学习进行了描述。在题为“深度学习、自我学习与无监督特征学习”的演讲中,他把深度学习的思想描述为:“利用了大脑结构的模仿, 希望:让学习算法更好地、更容易地使用;在机器学习和人工智能领域取得革命性的进展;我相信这是我们朝着真正的人工智能前进的最好办法。”常见的神经网络和深度学习应用包括:计算机视觉/图像识别/目标检测语言识别/自然语言处理(NLP)推荐系统(产品、婚介等)异常检测(网络安全等)TensorFlowTensorFlow是为深度神经网络设计的开源机器学习框架,由Google Brain Team开发的。TensorFlow支持在Windows和Mac操作系统上的可伸缩和便携式的训练,包括CPU、GPU和TPU。迄今为止,它是GitHub上最流行的和最活跃的机器学习项目。Data Collector中的TensorFlow随着TensorFlow Evaluator的引入,你现在能够创建管道(pipelines),以获取数据或特征,并在一个可控的环境中生成预测结果或分类,而不必发起对作为Web服务而提供和公布的机器学习模型的HTTP或REST API的调用。例如,Data Collector管道现在可以实时地检测欺诈交易或在文本上执行自然语言处理,因为数据在被存储到最终目的地之前,为了进一步的处理或做决策,正在经过各个阶段。另外,使用Data Collector Edge,你可以在Raspberry Pi和其它运行在所支持的平台上的设备上运行已经启用了的TensorFlow机器学习管道。例如,在高风险地区检测洪水等自然灾害发生的概率,以防止对人们财产的破坏。乳腺癌分类让我们考虑将乳腺癌肿瘤分类成恶性还是良性的例子。乳腺癌是一个经典的数据集,可以作为scikit-learn的一部分。要了解如何在Python中使用该数据集训练和导出一个简单的TensorFlow模型,请查看我在GitHub上的代码。正如你将要看到的那样,模型创建和训练被保持在最小范围,并且非常简单,只有几个隐藏层。最需要注意的重要方面是如何使用TensorFlow SavedModelBuilder来导出和保存模型。注意:要在Data Collector或Data Collector Edge中使用TensorFlow模型,首先应该在你选择支持的开发语言里,如Python,和交互式环境中,如Jupiter Notebook,使用TensorFlow的SavedModelBuilder导出和保存模型。一旦使用TensorFlow的SavedModelBuilder训练并导出了模型,那么在数据流管道中使用它进行预测或分类就非常简单了 — 只要模型保存在Data Collector或Data Collector Edge可访问的位置上即可。管道概述在深入了解细节之前,可以看下管道是什么样的:管道细节目录源:这将从.csv文件中加载乳腺癌的记录数据(注意:这个输入数据源可以非常简单地替换为其它的来源,包括Kafka、AWS S3、MySQL等等);字段转换器:这个处理器将转换供模型所使用的所有输入的乳腺癌记录特征数据,从String类型转换到Float类型(mean_radius,mean_texture,mean_perimeter,mean_area,mean_smoothness,mean_compactness,mean_concavity,mean_concave_points,mean_symmetry,mean_fractal_dimension,radius_error,texture_error,perimeter_error,area_error,smoothness_error,compactness_error,concavity_error,concave_points_error,symmetry_error,fractal_dimension_error,worst_radius,worst_texture,worst_perimeter,worst_area,worst_smoothness,worst_compactness,worst_concavity,worst_concave_points,worst_symmetry,worst_fractal_dimension) ;TensorFlow Evaluator:模型的保存路径:指定要使用的预训练的TensorFlow模型的位置;模型标签:设置为“serve”,因为元图(在我们导出的模型中)要用于服务中。有关详细信息,请参见tag_constants.py和相关的TensorFlow API documentation;输入配置:指定在训练和导出模型期间配置的输入张量信息(请见Train model and save/export it using TensorFlow SavedModelBuilder部分);输出配置:指定在训练和导出模型期间配置的输出张量信息(请见Train model and save/export it using TensorFlow SavedModelBuilder部分);输出字段:我们想保存分类值的输出记录字段;Expression Evaluator:-该处理器评估模型输出或分类值为0或1(存储在输出的字段TF_Model_Classification之中) ,并用Benign或Malignantrespectively这两个值创建一个新的记录字段“Condition”;Stream Selector:该处理器评估癌症状况(良性或恶性)并发送记录到各自的Kafka生产者;Kafka Producers:输入记录以及模型的输出或者分类值被有条件地发送给两个Kafka生产者以获得进一步地处理和分析;*TensorFlow Evaluator配置注意:一旦TensorFlow Evaluator产生了模型输出结果,本实例中采用的管道阶段是可选的,并且可以根据用例的需要与其它处理器和目标进行互换。管道执行在预览管道上,乳腺癌数据记录的输入通过了上面所述的数据流管道过程,包括服务于我们的TensorFlow模型。发送给Kafka生产者的最终输出记录数据(如上所示)包括用于分类的模型所使用的乳腺癌特征,在用户定义的字段TF_Model_Classification中模型输出值为0或1,以及由Expression Evaluator创建的Condition字段中表示相应的癌症状况是良性或恶性。总结本文说明了在Data Collector 3.5.0中使用最新发布的TensorFlow Evaluator。一般来说,这个评估器将允许你提供预训练的TensorFlow模型,用于生成预测结果和分类结果,而无需编写任何自己的代码。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

December 3, 2018 · 1 min · jiezi

一文了解自然语言处理神经史(下)

摘要: 越来越火的NLP到底经历了什么?2014年-序列到序列模型2014年,Sutskever等人提出序列到序列学习,一种通过神经网络将一个序列映射到另一个序列的通用框架。在该框架中,编码器神经网络逐个符号地处理句子并将其压缩成矢量表示; 然后,解码器神经网络基于编码器状态逐个符号地预测输出符号,在每个步骤中将先前预测的符号作为输入,如下面的图8所示。机器翻译成了这个框架的杀手级应用。2016年,谷歌宣布开始用NMT模型替换其基于单片短语的MT模型(Wu et al.,2016)。根据Jeff Dean的说法,这意味着用500线性神经网络模型替换500,000行基于短语的MT代码。由于其灵活性,该框架现在是自然语言生成任务的首选框架,不同的模型承担编码器和解码器的角色。重要的是,解码器模型不仅可以以序列为条件,而且可以以任意表示为条件。这使得例如基于图像生成标题(Vinyals等人,2015)(如下面的图9中可见),基于表格的文本(Lebret等人,2016),以及基于源代码更改的描述(Loyola等,2017),以及许多其他应用程序。序列到序列学习甚至可以应用于NLP中常见的结构化预测任务,其中NLP输出具有特定结构。简单地说,输出是线性化的,如下面图10中的consituency解析所示。神经网络已经证明了在给予consituency解析的足够数量的训练数据(Vinyals等,2015)和命名实体识别(Gillick等,2016)等的情况下,能够直接学习产生这种线性化输出的能力。用于序列和解码器的编码器通常基于RNN,但是也可以使用其他模型类型,最新的架构主要来自作为序列到序列架构的培养皿MT的工作。最近的模型是卷积编码器(Kalchbrenner等,2016; Gehring等,2017),变换器(Vaswani等,2017),将在下一个部分讨论,以及LSTM和变压器的组合(Chen等,2018)。2015-注意力注意力(Bahdanau等,2015)NMT)的核心创新之一,也是使NMT模型优于基于经典短语的MT系统的关键思想。序列到序列学习的主要瓶颈是它需要将源序列的整个内容压缩成固定大小的矢量。注意力通过允许解码器回顾源序列隐藏状态来减轻这种情况,然后将其作为加权平均值提供给解码器的附加输入,如下面的图11所示。注意力有不同的形式(Luong等,2015)在这里查看简要概述。 注意力广泛适用并且可能对任何需要根据输入的某些部分做出决策的任务有用。它已被应用于consituency解析(Vinyals等,2015),阅读理解(Hermann等,2015)和一次性学习(Vinyals等,2016)等。甚至输入不需要是序列,但可以包括其他表示,如图像字幕的情况(Xu et al.,2015),可以在下面的图12中看到。注意力的一个有用的副作用是,通过根据注意力量检查输入的哪些部分与特定输出相关。注意力也不仅限于查看输入序列;自-注意力可用于查看句子或文档中的周围单词以获得更多上下文敏感的单词表示。多层自-注意力是Transformer架构的核心(Vaswani等,2017),这是目前最先进的NMT模型。2015-基于记忆的网络注意力可以看作是模糊记忆的一种形式,其中记忆由模型的过去隐藏状态组成,模型选择从记忆中所检索的内容。有关注意事项及其与记忆关联的更详细概述,请查看此文章。许多具有更明确记忆的模型已经被提出,它们有不同的变体,例如神经网络图灵机(Graves et al,2014),记忆网络(Weston et al.,2015)[70]和端到端的记忆网络(Sukhbaatar et al.,2015),动态记忆网络( Kumar等,2015),可微神经计算机(Graves等,2016)和递归实体网络(Henaff等,2017)。通常基于与当前状态的相似性来访问内存,类似于注意力,并且通常可以写入和读取存储器,模型在实现和利用内存方面有所不同。例如,端到端记忆网络多次处理输入并更新内存以启用多个推理步骤。神经图灵机还具有基于位置的寻址,允许它们学习简单的计算机程序,如排序。基于记忆的模型通常应用于其中保留较长时间跨度信息的有用任务,例如语言建模和阅读理解。存储器的概念非常通用:知识库或表可以用作存储器,而存储器也可以基于整个输入或其特定部分来填充。2018年 - 预训练语言模型预训练的词嵌入与上下文无关,而且仅用于初始化模型中的第一层。最近几个月,一系列监督任务被用于预训练神经网络(Conneau等,2017; McCann等,2017; Subramanian等,2018)。相比之下,语言模型只需要未标记的文本; 因此,训练可以扩展到数十亿个tokens,新领域和新语言。 2015年首次提出了预训练语言模型(Dai&Le,2015); 直到最近,它们才被证明对各种各样的任务都有益。 语言模型嵌入可以用作目标模型中的特征(Peters等,2018),或者可以对目标任务数据微调语言模型(Ramachandran等,2017; Howard&Ruder,2018)。添加语言模型嵌入比许多任务的最新技术有了很大的改进,如下面的图13所示。预训练语言模型可以用更少的数据进行学习,由于语言模型仅需要未标记的数据,因此对于标记数据稀缺的低资源语言尤其有用。有关预训练语言模型的更多信息,请参阅本文。其他里程碑基于字符的表示:在字符上使用CNN或LSTM来获得基于字符的词表示是相当普遍的,特别是对于形态学丰富的语言和形态信息很重要或具有许多未知单词的任务。据我所知,基于字符的表示首先用于序列标记(Lample等,2016; Plank等,2016)。基于字符的表示减少了必须以增加计算成本处理固定词汇表的需要,并且能够实现诸如完全基于字符的NMT之类的应用(Ling等人,2016; Lee等人,2017)。对抗性学习:对抗性方法已经在风暴中占据了ML的领域,并且在NLP中也以不同的形式使用。对抗性示例越来越广泛地被广泛使用,不仅作为探测模型和理解其失败案例的工具,而且还使它们更加具有鲁棒性(Jia&Liang,2017)。对抗性训练:域对抗性损失(Ganin等,2016; Kim等,2017)是可以同样使模型更加健壮的有用的正规化形式。生成对抗网络(GAN)对于自然语言生成来说还不是太有效(Semeniuta等,2018),但是例如在匹配分布时是有用的(Conneau等,2018)。强化学习:强化学习已经被证明对于具有时间依赖性的任务是有用的,例如在训练期间选择数据(Fang等,2017; Wu等,2018)和建模对话(Liu等,2018)。RL对于直接优化诸如ROUGE或BLEU之类的非可微结束度量而不是优化替代损失(例如摘要中的交叉熵(Paulus等,2018; Celikyilmaz等,2018)和机器翻译也是有效的。(Ranzato等人,2016),反向强化学习在犒赏太复杂而无法指定的环境中可能是有用的,例如视觉叙事(Wang et al。,2018)。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

November 29, 2018 · 1 min · jiezi

一文了解自然语言处理神经史(上)

摘要: 越来越火的NLP到底经历了什么?本文扩展了Herman Kamper和我在2018年深度学习Indaba组织的自然语言处理前沿课程。整个课程的幻灯片都可以在这里找到,这篇文章将主要讨论NLP中基于神经网络方法的近期进展。免责声明:本文尝试将大约15年NLP的发展历程浓缩为今天最相关的八个里程碑,因此遗漏了许多相关和重要的发展。特别是,它严重偏向于当前的神经方法,这可能给人留下此期间没有其他有影响力方法的错误影响。2001年-神经语言模型语言建模是在给定前面的单词的情况下预测文本中的下一个单词的任务。 它可能是最简单的语言处理任务,具有实际应用,如智能键盘和电子邮件响应建议(Kannan et al.,2016)。语言建模有着丰富的历史。基于n-gram的经典方法采用平滑处理看不见的n-gram(Kneser&Ney,1995)。Bengio等人于2001年提出了第一种神经语言模型,一种前馈神经网络,如下图1所示。该模型把n个可以在表C中查找的先前单词向量表示作为输入。现在,这种向量被称为词嵌入。这些词嵌入被连接并送入隐藏层,然后将其输出提供给softmax层。想要了解更多该模型的信息,请查看此文章。最近,前馈神经网络已被用于语言建模的递归神经网络(RNN; Mikolov等人,2010)和长短期记忆网络(LSTM; Graves,2013)所取代。近年来已经提出了许多经典LSTM的新语言扩展模型(请参阅此页面以获得概述)。尽管有这些发展,但经典的LSTM仍然是一个强大的基线(Melis等,2018)。即使Bengio等人的经典前馈神经网络在某些环境中也与更复杂的模型竞争,但这些通常只学会考虑最近的词(Daniluk等,2017)。如何理解这些语言模型捕获的信息是一个活跃的研究领域(Kuncoro等,2018; Blevins等,2018)。语言建模通常是应用RNN时的首选训练场,并成功捕捉到了想象力,许多人通过Andrej的博客文章开始了解。语言建模是无监督学习的一种形式,Yann LeCun也将预测性学习作为获取常识的先决条件(参见NIPS 2016的Cake幻灯片)。 关于语言建模最显著的方面可能是,尽管它很简单,但它是本文讨论的许多后期进展的核心:词嵌入:word2vec的目标是简化语言建模;序列到序列模型:这种模型通过一次预测一个词来生成输出序列;预训练语言模型:这些方法使用语言模型中的表示来进行迁移学习;这反过来意味着NLP中许多最重要的最新进展减少为一种语言建模形式。 为了做“真正的”自然语言理解,仅仅从原始形式的文本中学习可能是不够的,我们将需要新的方法和模型。2008-多任务学习多任务学习是在多个任务上训练的模型之间共享参数的一般方法。在神经网络中,这可以通过绑定不同层的权重来轻松实现。多任务学习的想法在1993年由Rich Caruana首次提出,并应用于道路跟踪和肺炎预测(Caruana,1998)。直观地说,多任务学习鼓励模型学习对许多任务有用的表示。特别对于学习一般的低级表示,集中模型的注意力或在有限量的训练数据的设置中特别有用。有关多任务学习的更全面概述,请查看此文章。Collobert和Weston于2008年首次将多任务学习应用于NLP的神经网络。 在他们的模型中,查找表(或词嵌入矩阵)在两个在不同任务上训练的模型之间共享,如下面的图2所示。共享词嵌入使模型能够在词嵌入矩阵中协作和共享一般的低级信息,这通常构成模型中最大数量的参数。Collobert和Weston在2008年的论文中证明了它在多任务学习中的应用,它引领了诸如预训练词嵌入和使用卷积神经网络(CNN)之类的思想,这些思想仅在过去几年中被广泛采用。它赢得了ICML 2018的时间考验奖(参见此时的时间考验奖论文)。多任务学习现在用于各种NLP任务,并且利用现有或“人工”任务已成为NLP指令集中的有用工具。有关不同附加任务的概述,请查看此文章。虽然通常预先定义参数的共享,但是在优化过程期间也可以学习不同的共享模式(Ruder等,2017)。随着模型越来越多地在多项任务中被评估来评估其泛化能力,多任务学习越来越重要,最近提出了多任务学习的专用基准(Wang et al,2018; McCann et al,2018)。2013-词嵌入文本的稀疏向量表示,即所谓的词袋模型,在NLP中具有悠久的历史。正如我们在上面所看到的,早在2001年就已经使用了词或词嵌入的密集向量表示。 Mikolov等人在2013年提出的主要创新,是通过移动隐藏层和近似目标来使这些词嵌入的训练更有效率。虽然这些变化本质上很简单,但它们与高效的word2vec一起实现了大规模的词嵌入训练。Word2vec有两种模式,可以在下面的图3中看到:连续的词袋(CBOW)和skip-gram。它们的目标不同:一个基于周围的词预测中心词,而另一个则相反。虽然这些嵌入在概念上与使用前馈神经网络学习的嵌入技术没有什么不同,但是对非常大的语料库的训练使它们能够捕获诸如性别,动词时态和国家–首都关系之类的词之间的某些关系,由图4可知:这些关系及其背后的意义引发了对嵌入词的初步兴趣,许多研究调查了这些线性关系的起源(Arora等,2016; Mimno&Thompson,2017; Antoniak&Mimno,2018; Wendlandt等,2018))。然而,使用预训练嵌入作为初始化的固定词嵌入,把它作为当前NLP的主要内容被证明可以提高各种下游任务的性能。虽然捕获的关系word2vec具有直观且几乎神奇的性能,但后来的研究表明word2vec没有任何固有的特殊性:通过矩阵分解也可以学习词嵌入(Pennington等,2014; Levy&Goldberg,2014)和通过适当的调整,经典的矩阵分解方法(如SVD和LSA)可以获得类似的结果(Levy等,2015)。从那时起,许多工作已经开始探索词嵌入的不同方面,可以通过这篇文章了解一些趋势和未来方向。尽管有许多发展,但word2ve仍然是如今被广泛使用的一种流行的选择。Word2vec的范围甚至超出了词级别:带有负抽样的skip-gram,一个基于本地环境学习嵌入的方便目标,已被应用于学习句子的表示(Mikolov&Le,2014; Kiros et al.,2015)-甚至超越NLP,应用到网络(Grover&Leskovec,2016)和生物序列(Asgari&Mofrad,2015)等。一个特别令人兴奋的方向是将不同语言的词嵌入投影到同一空间中以实现(零射击)跨语言转移。越来越有可能以完全无监督的方式(至少对于类似语言)学习良好的投影,这开启了低资源语言和无监督机器翻译的应用(Lample等,2018; Artetxe等,2018)。请查看(Ruder等,2018)的概述。2013年-NLP的神经网络2013年和2014年是神经网络模型开始应用于NLP的标志年份。三种主要类型的神经网络被广泛使用:递归神经网络、卷积神经网络、循环神经网络。递归神经网络(RNN)是处理NLP中普遍存在的动态输入序列问题的明显选择。 Vanilla RNNs(Elman,1990)很快被经典的长短期记忆网络(Hochreiter&Schmidhuber,1997)所取代,后者证明其对消失和爆炸梯度问题更具弹性。在2013年之前,RNN仍然被认为很难训练,Ilya Sutskever的博士论文是改变这种现状的一个关键例子。LSTM细胞可视化可以在下面的图5中看到。双向LSTM(Graves等,2013)通常用于处理左右上下文。随着卷积神经网络(CNN)被广泛用于计算机视觉,它们也开始应用于文本(Kalchbrenner等,2014; Kim等,2014)。用于文本的卷积神经网络仅在两个维度上操作,其中滤波器仅需要沿时间维度移动。下面的图6显示了NLP中使用的典型CNN。卷积神经网络的一个优点是它们比RNN更可并行化,因为每个时间步的状态仅取决于本地环境(通过卷积运算)而不是像RNN取决过去所有状态。CNN可以使用扩张卷积扩展到更宽的感受野,以捕捉更广泛的背景(Kalchbrenner等2016)。 CNN和LSTM也可以组合和堆叠,并且可以使用卷积来加速LSTM。RNN和CNN都将语言视为一个序列。然而,从语言学的角度来看,语言本质上是等级的:单词被组成高阶短语和子句它们本身可以根据一组生产规则递归地组合。将句子视为树而不是序列的语言启发思想产生了递归神经网络,这可以在下面的图7中看到:与从左到右或从右到左处理句子的RNN相比,递归神经网络从下到上构建序列的表示。在树的每个节点处,通过组合子节点的表示来计算新表示。由于树也可以被视为在RNN上施加不同的处理顺序,因此LSTM自然地扩展到树。RNN和LSTM不仅仅可以被扩展来使用分层结构,而且不仅可以根据本地语言学习词嵌入,而且可以基于语法背景来学习词嵌入(Levy&Goldberg,2014);语言模型可以基于句法堆栈生成单词(Dyer et al。,2016); 图形卷积神经网络可以在树上运行(Bastings等,2017)。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

November 29, 2018 · 1 min · jiezi