• 项目
首页>>文章列表 >>文化教育
文章列表

人工智能在 iOS 开发上的应用和机会

近几年来人工智能的话题那是炙手可热。在国内很多大佬言必谈机器学习和大数据;在美国刚毕业的人工智能 PHD 也是众人追捧,工资直逼 NFL 四分卫。人工智能甚至成为了互联网领域茶余饭后的话题 —— 仿佛不懂人工智能就是落伍了。


笔者作为一名 iOS 开发者,对于如火如荼的人工智能和机器学习,也保持了密切的追踪和了解。这篇文章就是总结我在硅谷和西雅图的所见所闻,抛砖引玉的与大家分享一下我对于人工智能的思考。 



人工智能是什么?

关于人工智能(AI),我们经常听到这样一些相关词:大数据(Big Data),机器学习(Machine Learning),神经网络(Neural Network)。那么这些词到底有什么区别?我们来看下面一则小故事。


从前有个程序员叫牛顿。他定义了一个方法来计算自由落体的速度:


func getVelocity(time t: second) -> Float {  return 9.8 * t
}


他是怎么得到这个方法的呢?牛顿自己被一个苹果砸中之后,做了大量的逻辑推导和实验论证之后,得到了这个公式。这是目前传统意义上的写程序方法 -- 理解清楚了事物的内在逻辑和真相后,由人来定义方法。直到今天,绝大多数程序都是这么写出来的。


而所谓的人工智能,就是机器自己定义方法。人工智能的实现方法有很多,比如可以让机器来模拟大脑,然后像人一样思考,从而定义方法。机器学习只是另一种实现人工智能的方法,就是由大数据定义方法。假如牛顿时期就有机器学习,它得出自由落体速度的过程是这样的:


  1. 收集尽可能多的自由落体实验数据。假如收集到的数据如下


负责人 速度 (m/s) 时间 (s)
伽利略 9.8 1
牛顿 19.6 2
达芬奇 29.4 3
亚里士多德 30 4


  1. 分析数据。机器学习会分析出,亚里士多德的数据有误不予采纳。其他三人的数据满足同一规律。


  2. 定义方法。根据上面数据,机器学习得出结论,速度 = 时间 * 9.8。


随着数据收集得越多,机器学习得到的结论就越准确。其实人类学习的过程也十分类似:书上有大量的知识(加工的数据),我们看了之后进行理解思考,然后得出自己的结论。

开普勒就是个著名的人肉的机器学习实践者:他前半辈子看星星,把观测到的数据记录下来;后半辈子用自己的逻辑和理解分析这些数据;最后得出行星运动的开普勒-牛顿模型。然后用这个模型去预测其他行星运转,同时新的数据用来修正模型的参数,使之逼近完美。


那么数据和人相比有什么优势呢?我认为是更快更准确。人在定义方法时,总是需要对该方法的前后因果、逻辑关系、各种情况都要求考虑周全,这有时需要花费很多时间去研究论证,而且忽略某些极端情况也时有发生,导致定义漏洞百出。而数据在互联网时代,获取的成本是很低的。在这样情况下,大量数据的轻易获得会使得方法定义越来越快;同时现实中数据涵盖的情况之广,也使得依次定义的方法更加准确。


吴君博士在《智能时代》一书中对大数据的优势进行了以下总结:“在无法确定因果关系时,数据为我们提供了解决问题的新方法,数据中所包含的信息可以帮助我们消除不确定性,而数据之间的相关性在某种程度上可以取代原来的因果关系,帮助我们得到想要的答案,这便是大数据的核心。”


我们回到上文牛顿自由落体速度的实验中去。实际上,机器学习拿到的实验数据,可能是以下的记载:


9月15日的夜晚,小雨微风。伽利略在比萨斜塔上扔下了1颗铅球,质量为4kg,初始速度为0,到达地面时间为6s多。


这个数据样本中有很多特征,时间、空气湿润度、风力、比萨斜塔的高度、铅球质量、初始速度、到达地面时间等等。那么自由落体速度到底跟哪些特征相关?如果让机器自己去分析,这就叫做无监督学习。如果我们告诉机器,不要 care 质量和时间,重点观测时间,这就叫做监督学习。后者在于借鉴了人类的智慧,这样机器学习就有了大致的方向。


至此,机器学习依然难以称得上“智能” -- 它无非是更快更准确的得出答案而已。如果仅仅如此,AlphaGo 就算将所有九段棋手的对弈研究透彻(这些对弈的输赢已定,相当于人为标注走法好坏,故为监督学习),水平也就十段而已,于九段相比,也就是略胜一筹,发挥更稳定一点。然而事实是,AlphaGo 的棋力要远胜人类最高水平。


其实 AlphaGo 在下棋时,每下几步,系统都会告诉它胜率是否提升。这种不断反馈的机制可以让 AlphaGo 实时强化棋力,并鼓励其尝试人类从没有下过的路数,从而实现超越人类。这种反馈的训练方式就叫做增强学习

最后讲讲神经网络是怎么回事。以我粗浅的理解,神经网络是由神经元组成,每个神经元都有对应的功能。比如,人工智能要识别一堆动物照片中的母狗,第一个神经元做的是判断哪些动物是狗,第二个神经元做的就是区分狗的公母。


上面这个例子中,我们是先让第一个神经元进行判断,再将结果传递给第二个神经元。也就是说,后者的输入是前者的输出,这就是神经网络分层的概念。所以 AlphaGo 这种大型神经网络,就是基于神经元分层这个原理。


因为机器学习的发展在人工智能领域一枝独秀。所以提到人工智能,几乎就相当于是在谈机器学习。



人工智能在 iOS 开发上有哪些应用?

前面说了这么多,肯定很多人要问:这些都很高大上,可惜我是 iOS 工程师,人工智能到底关我何事?其实人工智能在 iOS 上由来已久,且可能会深入我们的日常开发中,所以我们有必要对此高度敏感。这里笔者来分享一下人工智能在 iOS 上的应用。


首先,乔布斯老爷子早在若干年前就在 iPhone 上布局了智能语音助手 Siri。Siri 可谓是人工智能和机器学习在移动端上第一次成功的应用:它结合了语音识别(Speech Recognition)和自然语言处理(Natural Language Processing)两大人工智能操作(当然前者是后者的一部分)。后来因为苹果封闭的基因,Siri 的数据量一直没有上去,而我们都知道数据量是提高人工智能水平的关键,所以现在 Siri 现在一直很鸡肋。


同 Siri 类似,Facebook 在他们的 Messenger App 中集成了聊天机器人(Chatbot)。在去年的 F8 现场,我还清楚地记得他们号称这是 App 开发的新纪元 - 由聊天机器人和人工智能主导的 App 将取代传统手机应用,而 Messenger 将从一款聊天应用变成一个平台甚至是一个操作系统。这个跟微信的小程序战略类似,只不过多了人工智能的噱头。可惜的是,很多人工智能领域的大佬告诉我,聊天机器人离成熟还有很大距离。

Facebook Chatbot,通过人工智能优化的购物客服


到这里,人工智能在 iOS 端都没有比较成功的案例。直到这一款 App 的诞生:Prisma。老毛子 Alexey 在读了两篇论文 --《艺术风格的神经算法》和《利用神经卷积网络进行文理合成》之后,开发出了 Prisma 这款风格转换的 App。它的基本流程是这样:


  1. 用户上传照片

  2. 将照片传至云端,云端的神经网络分析识别照片

  3. 输出一副重新绘制的作品

  4. 将重绘的作品下载到手机端


这款 App 最难的地方在于第二步的耗时,即模型分析研究照片的风格。Alexey 优化了神经网络的细节,使得 Prisma 在重绘一张照片的耗时仅需几秒。之后的App 迭代,为了让速度更快,也为了解决海外用户连接云端的演示问题,神经网络的模型被直接部署在了移动端。利用 iPhone 强大的处理器直接进行离线图片绘制,这也让 Prisma 成为了第一款能够离线运行风格转换神经网络的手机运用。现在 Prisma 的处理一张图片的速度只需半秒不到,它也因为艺术和技术的完美结合而拿下 iOS 年度最佳应用,并且拥有了数亿用户。


最后再介绍一款 App:Topology Eyewear。这是一款订制眼镜的电子商务应用。其特点是对用户进行人脸识别,然后在手机端渲染出客户戴上不同眼镜的效果。


第三方 App 的成功,刺激了大厂在相关领域的重视。Snapchat,Instagram,WhatsApp 纷纷将人工智能技术引入了其滤镜效果。同时 Facebook 和 Google 也开始将 AI 框架情轻便化以方便部署在移动端。2017年刚过去的 WWDC,机器学习成为了整个大会最热门的词汇,同时苹果正式推出了 Core ML 框架。它涵盖视觉识别和自然语义处理两大内容,在提供很多训练好的模型基础上还有十分定制化的模型生成工具。操作的易用性让 Core ML 刚面世就受到广大开发者的追捧。


总体来说,移动应用 AI 化已经是一个基本趋势,正如李开复在哥伦比亚大学的毕业演讲中说:在未来,伴随着硬件、软件和网络带宽成本的下降,人工智能的成本几乎就是电费了。



iOS 开发者该何去何从?

首先我认为,iOS 和人工智能并不是对立关系,而是互补的关系。iOS 应用需要人工智能来提高自身的效率和拓展功能,人工智能技术需要在 iOS 平台上落实为产品。智能时代更多是移动时代的升级和补充,而不是取代。所以 iOS 开发仍有市场,我们无需担心人工智能会让我们失业。


但是,iOS 开发者需要拥抱人工智能。这届的 try! Swift 大会,有两个演讲专门提到了机器学习;如果你有读博客的习惯,你会发现 Facebook 的 iOS 技术专栏近年来几乎篇篇都要谈到借鉴人工智能技术开发的新功能。比如《The engineering behind social recommendations》,Facebook纽约的团队为了在移动端更好得面向用户推荐餐厅和旅游地点,利用了大数据和人工智能将大量相关的信息抽取出来,再针对用户的状态和地点进行推荐。Google 更是把人工智能融入到了绝大多数的 iOS 的应用中。如果 iOS 开发者拒绝人工智能,我们可能再也无法开发出让用户满意的应用。就像现在算法和计算机系统是程序员的基本功一样,未来人工智能也会是程序员的必备基本技能之一。


人工智能将给 iOS 开发带来很多新的机会。人工智能界的泰斗,迈克尔乔丹教授说 AI = IA + II + AA。作为 iOS 开发者我深以为然,下面是我对这句话的理解:

人工智能(Artificial Intelligence) = 智能放大(intelligence Augment)+ 智能基建(intelligent Infrastructure)+ 自动算法(Automatic Algorithm)。


  • 智能放大:即我们人类智慧的拓展。比如 Google 搜索拓展了我们获取知识的渠道;大数据可以帮助科尔改进金州勇士队的训练方案和优化战术选择。

  • 智能机建:即物联网。Amazon 的智能家居和 Amazon Go 无人超市,Uber 的无人汽车,IBM 的智慧城市,它们都会根据每个用户的需求进行个性化操作。

  • 自动算法:即各种各样的人工智能工具。深度学习、增强学习、神经网络的改进,以及 TensorFlow, Caffe, MXNet 等框架的推出和应用都属于这个范畴。


无论是哪一个方面,iOS 开发都可以大有作为。智能放大方面的 App 可以直接面向用户;智能机建一定需要 iOS 开发者在终端完成对用户的相应连接;自动算法的运用会让 iOS 应用更加强大。


最后,作为 iOS 开发者该如何学习人工智能?Core ML 是官方推出的工具,大家不妨从这里着手。WWDC 展示的 Core ML 开发步骤分为以下3步:


  1. 通过其他平台或框架得到机器学习模型

  2. 将模型导入 Xcode 中,Xcode 自动生成对应的 Swift 接口

  3. 使用 Swift 接口进行编程

使用场景为:

  • 情感分析

  • 物体识别

  • 个性化定制

  • 类型转换

  • 音乐标签

  • 手势识别

  • 自然语义识别

WWDC展示的物体识别应用


还有Google推出的TensorFlow,Facebook主导的Caffe,以及Amazon力捧的MXNet,都可以训练出很棒的 Core ML 模型供 iOS 开发使用。这几个框架大家也可以了解一下,这里吐血建议,研究人工智能框架,不推荐看中文书,直接去看英文文档效果更好。因为这些框架变化很快,书中内容淘汰得很快,而且有些理论知识还是看一手的资料更好。

人机结合:制造自动化新时代中印受影响最大,至少2.38亿人会被淘汰

在过去20年中,制造业自动化颠覆了工厂、雇佣、以及很多制造业部门的运行方式。今天,我们处在一个新自动化时代的前列:机器人的飞速发展、人工智能、机器学习使得机器在很多活动上与人类比肩,甚至超过人类,其中也包括那些需要认知能力的活动。行业领袖,无论他们是业已拥抱自动化,还是方才接受自动化,抑或还未认真思考自动化时代重要性,都需要考虑以下三点:自动化在当前的技术水平下会实现怎样的发展,而随着技术的不断发展又会有怎样的创新;除了技术可行性外,在做关于自动化的决策时还需要考虑哪些因素;以及为了长期从自动化中获取最大收益,思考从何处、多大程度进行自动化。


制造业和制造业劳动力将会如何改变

为了从整体理解制造业中自动化的可能性,我们在46个国家(包括发达国家与发展中国家)进行了一项涵盖了包括80%全球劳动力的研究。我们的数据和分析表明,截止2015年,在全球范围内,花在制造业相关活动上的劳动时间共计4780亿小时,占总劳动时间(7490亿小时)的64%。假设技术被广泛采用,4780亿小时的工作时间说明了3.31亿全职员工中的2.38亿可被淘汰或者重新安排。这些数字表明,即使制造业已经是世界上自动化程度最高的行业之一,自动化在工厂、供应链、采购等方面仍有很大空间。麦肯锡研究表明,在工业部门,制造业是第二大极具自动化潜力的部门,仅次于住宿和食品服务。

我们强调,以上描述的自动化发展潜力来自于应用和整合当前技术。此外,值得注意的是,新近的技术进步已经克服了许多机器人和自动化的传统限制。比起当前制造业使用的机器人,新一代机器人更具灵活性和多功能性,成本也更低,经过一线人员的训练,还可以执行曾经被认为对机器太难的任务,例如挑选或包装不规则物体,并解决例如航空航天工业大型项目的线路问题。人工智能也在取得重大进展,增加自动化在很多行业应用的可能性。最近的一个测试表明,计算机能比专业人士更为准确地阅读唇语。


我们还研究了制造业部门中特定活动和工作的自动化潜力。我们发现,生产工人87%的生产时间是可以自动化的。制造行业的其他工作(如工程、维护、材料运输、管理和行政),也有45%的工作时间可以自动化。


在比较制造业的各个分部门时,我们可以看到自动化潜力的巨大差异,部分原因是因为活动本身的性质,此外还有工人所需的技术水平和制造产品所需的技术难度而带来的差异。


  • 低技能劳动/低产品复杂性。


服装/时尚/奢侈品(82%的工作时间可自动化),农业加工(80%),食品(76%),饮料(69%)。在本组中,重复和低技能获得极易实现自动化。


  • 中等技能劳动/中等产品复杂性。


家具(70%),基础材料(72%),化学品(69%),医疗器械(60%),制药(68%),汽车/装配(64%),电力和天然气(53%),石油和天然气(49%)。


  • 高技能劳动/高产品复杂性。


航空航天和国防(52%),高等电子(50%),高科技(49%),电信(43%)。

根据分组不同,制造业各部门的自动化劳动价格,差异可能高达三倍。例如,服装/时尚/奢侈品一年的自动化花费为27,000美元,而石油/天然气的自动化花费则需75,000美元。根据以上分组,由低技能/复杂性到高技能/复杂性,平均每小时工资增长1.6倍;从低技能/复杂性到中技能/复杂性,工资每小时增加1.4倍。


最后,我们发现,尽管全球经济中的技术自动化潜力差异并不悬殊,世界上81%的自动制造工时和49%的自动化劳动力价值都在发展中国家,这说明发展中国家的自动化发展可能产生重大的全球影响力。


考虑到发展中国家68%的自动化制造工时(62%的自动化劳动价值)是在中国和印度,我们看到中印两国的自动化驱动发生中断的可能性。这种情况何时发生,取决于自动化解决成本低于中印两国工资水平的速度。中国和印度自动化的剧变会对两国就业产生重大影响,也将大大推动经济增长。



如何自动化?以下是需要考虑的因素

当然,技术的可行性是使一项既定工作或系列活动实现自动化的必要前提。但是当企业在决定何时以及怎样实现自动化的时候,这远非唯一的考虑因素。第二个需要考虑的因素是开发和部署硬件与软件的成本;而劳动力成本与供需关系的平衡则是需要考虑的第三个因素:如果工人数量充足,且明显比自动化成本低廉,这也许就会成为一个“抵制自动化”的决定性理由,或者仅仅在有限的程度上实现自动化。


举个例子,印度的一家汽车供应商发现,在为自己的生产线引入了几个低成本的自动化环节之后,其生产线上的员工从17名减至7名。而这家公司所耗费的成本与另一家实现了更高程度自动化的日本公司基本持平,后者仅拥有2名员工。


第四个需要考虑的因素是除了节省劳动力之外,自动化带给公司的好处。包括更高的生产效率,更好的产品质量,以及减少生产误差。


虽然自动化吸引制造商们的主要动因是如何节省劳动力成本,但以上因素往往比减少劳动力成本为公司带来的好处更大。因此,企业在考虑并评估“是否应该进行自动化改造”这个问题时,应该以“降低运营总成本”为标准制定一项清晰的策略。


我们发现,企业们通常会使用自动化来解决一系列挑战,譬如提升吞吐量与生产效率,降低商品残次率并提升产品质量,确保生产灵活性,以及提高安全性,以确保设备的操作方法与作业环境更适应操作人员的要求。


除了技术上的可行性,  硬件与软件成本,劳动力供求问题以及那些提高生产效率等方面的好处之外,第5个企业需要在决定是否进行自动化改造时考虑的因素,则来自于监管与社会认可层面。譬如,在什么样的条件下,机器才能够在任何特定环境下被普遍接受(特别是一些人机共存的场合)。


总之,自动化在特定部门或场合所具备的工作潜力,其实能反映出以上我们列出的5种影响因素之间微妙的相互作用,以及企业对它们所带来影响的权衡。



从自动化改造中获取长期价值

制造商们衡量上述各种因素的终极目标,是为了尽可能从自动化改造中获取更多的长期价值。如何实现这一点?在某种程度上,这取决于一家既定制造商在自动化成熟度的“光谱”上走了多远。


我们将这张“光谱”分为4个阶段:


低成熟度。部署的自动化基础设施很有限。举个例子,工厂内部或者生产流水线上缺少机器人、传感器与数据收集系统。


中等成熟度。已经在适当的位置部署了重要的自动化基础设施,但这些设备只发挥了一小部分作用,绝大部分生产潜力还未被挖掘。举个例子,某工厂内安装了许多传感器,但这些设备获得的大部分数据没有被利用起来;此外,许多数据抓取系统缺乏互联性,编制的程序仅能优化本地流程,却不能优化整条生产线的价值流。


高成熟度。在生产厂间中充分利用了传统自动化基础设施,但是并没有在生产线上部署更加尖端的自动化技术,也没有充分实现自动化管理,同时也未能挖掘出“生产支持”(公司里财务、法务等不直接产出效益的部门做的事)以及“后台服务”等环节的自动化潜力。


达到一流自动化水平。在整个生产线以及公司运营过程中,利用最先进的技术挖掘出了自动化的所有潜力与价值。


利用“自动化成熟度光谱”来评估一家制造商的自动化操作水平,能够帮助企业确定哪一种方式最有助于自己获得长期良性影响。例如,低成熟度的操作会从“clean sheeting”中获得更多好处,而具备更高成熟度的自动化,可以在其已有的较为完备的基础设施基础上,继续实现一流的自动化水平。而下面的表2就详细介绍了制造商提高自己的自动化成熟度所采取的步骤。

是在自动化成熟的每个阶段上,制造商们都可以获取比前一个阶段更多的价值


无论一家企业处于这张光谱的哪一个阶段,保持对价值创新的关注是至关重要的。譬如,为了让故障检查流程实现自动化后能够提高生产性能,企业领导者可能需要对这些项目以及活动进行彻底盘点与记录,并创建一个热图,把一些更适合自动化的环节标注出来。


接下来,找出那些具被高自动化潜力的活动与业务,然后设想其在充分利用自动化技术的情境下会发生什么变化,以及转化的可行性。


最后,这些自动化过程转换的可行性与优点被整理出来,可以被用来判断哪些生产环节可以被优先进行技术改造。而这种方法,可以帮助企业确保自己在自动化方面的投资对企业产生最大的影响。


【10大深度学习框架实验对比】Caffe2最优,TensorFlow排第6

Karmanov表示,他这个项目的目标是创建一个深度学习框架的罗塞塔石碑,让数据科学家能够轻松地将他们在一个框架上的专长转移到另一个框架上(而不是从头开始学习)。具体说,就是在8种最常用的框架上构建同一个神经网络。而且,有了这样一个模型后,也就有了比较各个框架的基准,各个框架的训练时间和默认选项也变得更加透明。


Karmanov发现,许多在线教程都使用低级别的API,虽然写很详细,但对于大多数用例而言,除非想要创建新的层,否则意义不大。因此,他在项目中使用了最高级别的API,以便更容易地在框架之间进行比较。


结果证明,一旦使用更高级的API,不同框架的代码结构实际上变得非常相似,并且可以粗略地表示为:


  • 加载数据;x_train,x_test,y_train,y_test = cifar_for_library(channel_first=?, one_hot=?)

  • 生成CNN符号(通常在最后的dense层上没有激活)

  • 指定损失(交叉熵与softmax一起),优化和初始化权重 + session

  • 使用custom迭代器训练训练集中的mini-batch

  • 从测试集中预测全新的mini-batch

  • 评估准确性


本质上这里是在对一系列确定的数学运算(尽管是随机初始化的)进行比较,因此在结果中比较各个框架的准确性并没有什么意义。Karmanov将精度作为一个去匹配(而非对比)的指标,确保比较的是相同的模型架构。



结果:Caffe2、MXNet表现不俗

硬件是Nvidia K80 GPU,环境是Ubuntu,所有框架都是最新版本:




但是,比较训练速度意义不大

虽然对10大常用框架进行了对比,但Karmanov进一步在他的Medium文章里解释了,比较速度并没有意义:


  • 使用本地数据加载器可能会省掉几秒钟(实际上意义也不大),因为shuffle是异步执行的。但是,对于常规项目(而不是这里的这个实验),数据不太可能放进RAM里,还需要大量的预处理和数据增强。这就是数据加载器派上用场的地方。Karmanov表示,Facebook的贾扬清对他的这一项目给予了很多帮助,贾扬清告诉他,Facebook的好几个in-production网络,最大瓶颈都是I/O,如果想要实现一流的性能,贾扬清建议最好使用异步I/O,这样会有很大的帮助


  • 其次,Karmanov在这个示例中只使用了几层(conv2d,max_pool2d,dropout,全连接层)。平时工作中的项目可能会有3D卷积、GRU,LSTMS等。


  • 你能很轻松地添加自定义的层,这些层的运行速度会影响你选择用什么框架。所以在这里比较速度也没多大用。能够用Python代码编写一个自定义层并快速执行它才是研究项目的关键


  • 在实际应用中,你会用到TensorBoard这样的高级日志来查看模型是否收敛,帮助调整超参数。但在这个例子中并不涉及。


10点心得

以下是Karmanov在所有框架上匹配训练精度,参考Github上所有issue/Pull request后的一些见解:


1. 上面的框架(除了Keras),为了方便比较,都尝试使用相同级别的API,所以都使用相同的生成函数。对于MXNet和CNTK,我尝试了一个更高级别的API,使用框架的训练生成器函数。这个例子中速度的提升是可以忽略的,因为整个数据集作为NumPy数组加载到RAM中,每个epoch完成的处理是就是一次shuffle。我怀疑框架的生成器运行了异步shuffle。奇怪的是,NXNet和CNTK似乎在batch级别而不是observation级别上shuffle,因此测试精度稍微降低(至少在10个epoch之后)。如果有IO,或者有预处理和数据增强的情况,custom生成器对性能的影响将会更大。



2. 启用CuDNN的auto-tune/穷举搜索参数(为固定大小的图像选择最有效的CNN算法)能够大幅提升性能。在Caffe2,PyTorch和Theano,这个功能得手动开启。CNTK,MXNet和Tensorflow则是默认启用这项功能。Chainer是什么情况我还不清楚。扬清说,cudnnGet(默认)和cudnnFind之间的性能提升在Titan X GPU上要小得多;在这里,K80 +新的cudnn看来使问题更加突出了。在目标检测时,不论组合为何,运行cudnnFind都严重影响了性能回归,所以在目标检测时应该禁用exhaustive_search


3. 使用Keras时,选择与后端框架匹配的[NCHW]排序非常重要。CNTK是最先是针对通道(channel)运算的,但我不小心把Keras配置为最后用通道了。结果每个批次都必须改变顺序,严重降低了性能。


4. Tensorflow,PyTorch,Caffe2和Theano需要向pooling层提供一个布尔值,表示有没有在训练(这对测试精度有很大影响,72%比77%)。在这种情况下,不应该使用dropout来进行测试。


5. TensorFlow有点烦人,需要做两个调整:启用TF_ENABLE_WINOGRAD_NONFUSED,以及将维度最先(而不是最后)提供给通道(data_format='channels_first')可以提升速度。启用WINOGRAD进行卷积,当然也可以提升TF做后端的Keras


6. 对大多数函数而言,Softmax通常跟cross_entropy_loss() 捆绑在一起,如果你在最后的全连接层上需要激活,最好检查一下,这样可以节省时间避免做两次


7. 不同框架的内核初始化函数可能会有所不同(我发现这对准确性有+/- 1%的影响),只要有可能我都会指定xavier/glorot


8. SGD-momentum的实现,我需要关闭unit_gain(在CNTK是默认打开的)来匹配其他框架的实现


9. Caffe2对网络的第一层(no_gradient_to_input = 1)有一个额外的优化,通过不计算输入的梯度,使速度有一个较小的提升。很可能,TensorFlow和MXNet是默认启用这项功能的。但是,对于一些研究目的和像DeepDream这样的项目,计算这个梯度可能还是有用的


10. 在max-pooling之后(而不是之前)应用ReLU激活意味着在降维后执行计算,这会省掉几秒钟的时间。在MXNet上面,这减少了3秒钟的时间

Ian Goodfellow又来探讨安全问题了,noisy SGD和PATE能满足传统计算机安全原则吗?

在上世纪80年代初,互联网只用于学术研究人员和军事实验室的年代,网络连接的计算机之间大家彼此信任且没有恶意行为。而现在如果有基于这样的假设设计出的网络,那么它必定不可能在网络攻击中幸存。

机器学习的现状就有点像上世纪80年代初的那种情形,目前大多基于深度学习的模型都还只是研究人员在使用,当他们设计这些模型的时候主要还是在考虑它的学习能力,而很少会考虑到这个模型是否会遭到黑客的攻击。但随着越来越多的人工智能的研究在业界得到应用,机器学习安全与隐私的问题也逐渐得到越来越多人的关注。

Ian Goodfellow和Nicolas Papernot两人可谓是这个领域的急先锋,自去年两人共同创建了Clever Hans博客(cleverhans.io,博客上已经有三篇关于机器学习安全与隐私问题)后,两人还建立了cleverhans对抗性机器学习样本库,并积极促进研究社区中的学术交流,希望与全世界的研究者们共同探索和改善机器学习模型在安全和隐私方面的表现。

具体可参考AI科技评论往期文章:

Ian Goodfellow和Papernot半年三篇博文,对机器学习的安全隐私来了个大起底

AI科技评论注意到,前不久Ian Goodfellow、Nicolas Papernot等人在arXiv上发表了一篇非常基础性的特邀报告文章。

在这篇文章中,他们探讨了一个问题,即:传统的隐私安全原则,在机器学习环境下是否还适用?Ian Goodfellow等人就分类任务的监督学习问题,讨论了最近出现的两种具备隐私保护的机器学习模型(noisy SGD和PATE),考察了它们是否能满足传统的计算机安全原则(Saltzer 和 Schroeder)。他们认为传统的计算机安全原则在机器学习环境下仍然值得借鉴,依照原则,上述的两个模型还有待改进。


一、攻击者的目的是什么?

机器学习的模型千千万,Ian Goodfellow等人作为示例选择最简单和普遍的分类任务的监督学习问题来做讨论。

所谓分类任务,其实就是一个函数f将样本指向一个类,例如将一张图片指向一个数字。(更广义地来说,每个函数还应包含一个概率值,为了简单这里就不考虑这个了)而所谓学习就是通过训练得到一个函数g(也就是训练出的模型)在某种程度上接近f。“监督”的意思则是学习的输入和输出都是已知的。

在这个模型中,一面是输入输出的训练数据集,一面是由数据集训练出的模型g。所以如果有恶意的攻击,攻击者可能会有两个目的:

  • (完整地或部分地)提取出训练模型的参数;

  • 测试一个输入输出对(或仅仅是输入或输出)是不是训练数据集中的一部分,从而提取训练数据集的信息。

就威胁程度的而言,也有两种可能:

  • 黑箱威胁:攻击者只能拿着模型g应用到他们选择的一些新的输入上,可能还会有一些次数或别的限制;

  • 白箱威胁:攻击者可以查看模型g的内部。


二、两种隐私保护的机器学习模型

1、噪声随机梯度下降(noisy SGD)

机器学习其实就是训练一个参数函数g(θ, x),其中x是样本(训练数据或者预测输入数据),参数θ则可以是神经网络的权重等。当输入一个样本x时,当给定θ和g,则由g和f之间的差别得到损失函数L(g, θ)。训练模型g的过程,其实就是通过寻找合适的θ值,使损失函数L(g, θ)最小(或者在误差容许范围内)。一般来说g和L都是θ的可微分函数,因此训练的过程就会依赖函数的梯度下降。通过随机梯度下降(SGD),我们就可以用样本x重复地计算g和L,得到误差容许范围内的损失函数。

一方面,训练数据只能通过梯度计算来影响θ值;另一方面,θ最终的灵敏度通常是很难分析的。这就允许我们通过在梯度计算的过程中添加仔细校准过的噪声来实现隐私的保护。这个想法在M. Abadi等人去年的一篇文章《Deep learning with differential privacy》中有非常详细的介绍。


2、教师系综的私有聚合(PATE)

另外一种隐私保护的模型非常有意思。设想如果攻击者千辛万苦攻破了一个机器学习模型,却发现他调整模型的内部参数却对模型没有任何影响,是什么样的心情。机器学习系综模型就是这种让攻击者绝望的模型。

PATE(private aggregation of teacher ensembles)模型的思想其实很简单,首先它通过训练数据集中相互没有交集的子数据训练大量“教师”模型,构成一个“教师系综”;随后再通过教师系综的输出去训练“学生”模型,“学生”的训练仅依赖“教师”的预测结果,而不涉及它们的内部参数。

这种模型,一方面,当教师系综的某个“教师”出现问题时并不会对“学生”有很大的影响;另一方面,攻击者不可能通过攻破“学生”模型来得到“教师”的内部结构;不过结合两方面,即使得到一个“教师”的内部参数,也不会对模型本身有太大的影响。此外,一旦“学生”训练完成后,事实上我们可以撤掉“教师系综”(同时也包括它所携带的隐私)。


三、重申计算机安全的十大原则

Ian等人认为传统的计算机安全中的研究在机器学习环境中仍然值得借鉴,他们在此想通过Saltzer和Schroeder两人在75年提出的计算机安全十大原则来评价上述两个机器学习的隐私保护模型。

不得不说,Saltzer和Schroeder当年提出的大部分保护机制和机器学习中的都不一样,因为当时并不涉及数据迁移。不过他们当时描述过通过“数据加密”的保护机制;通过数据来训练模型在某种程度上其实也类似于“数据加密”。所以他们当年提出的十大原则也同样适用于机器学习环境中。那么上述两种隐私保护模型(noisy SGD和PATE)是否符合这十大原则呢?一起和雷锋网AI科技评论来逐一看看。


1、机制的经济性

这一原则强调,保护机制的设计应尽可能得简单。看起来,noisy SGD和PATE(以及它的变种)在这方面都不会表现很好,原因各不同相同:

noisy SGD虽然是通过简单的算法思想(添加噪声)极为容易地实现的,但这些想法会直接影响随机梯度下降(SGD)本身,而SGD是许多学习算法的核心。所以这无异就相当于给模型做了一个心脏手术,这对学习模型的影响是很大的,可能会造成其他潜在的威胁。此外,当学习算法进行优化和扩展的时候,你还需要反过来考察是否需要新的noisy SGD。

PATE模型相比noisySGD模型,会涉及更多的设计细节,尤其是它的变种PATE-G集成了基于GANs的复杂技术。而另一方面,这些复杂的设计细节至关重要,却又与老师”模型的训练完全分离,同时也与“学生”模型的内部结构无关。

所以考虑到机制的经济性,noisy SGD和PATE并不理想,还有待寻找更简单和更小的机制。


2、故障安全默认

这个原则说明模型的默认配置应是缺省访问,特别是,当发生错误时将导致拒绝访问。这个原则似乎很难应用到noisy SGD和PATE上,因为它们通常会在任何情况下向任何提出请求的人提供相同的访问权限。

近来也有许多这方面的研究实现了被称为(ε,δ)的差异隐私保障,其中ε为隐私值,δ为故障概率。不过初步来看,这样的保障一旦失败就会导致隐私丧失,而不是失去精确性。在这个意义上,这种保障并不是故障安全默认。所以在这方面似乎还需要更进一步的研究。


3、完全仲裁

这个原则意味着每一次访问敏感数据都应该通过保护机制。举个例子来说,在线银行会要求15分钟没有操作后用户必须重新登录。这个原则需要站在整个系统的角度来考虑,所以并不适用于对noisy SGD和PATE的分析。

4、开放式设计

这个原则要求保护机制的设计不应当是基于某个秘密,而应该是公开的,这样攻击者就不可能通过对某个秘密的获取来攻破系统。noisy SGD和PATE两者在这方面都完全满足。


5、特权分离

这个原则要求访问某个关键资源,必须使用多个独立的“钥匙”。和“故障安全默认”一样,这个原则也很难应用到noisy SGD和PATE上,它可能更适用于单独的外部保护层次。

6、最小特权

这个原则要求每个程序/系统的每个用户在完成操作的过程中只需要最少的权限。这个原则在noisy SGD和PATE中真的是再适合不过了。例如在PATE中,这就意味着每个“教师”模型即使程序出现错误也不可能访问到其他“教师”的训练数据。

这个原则能最大限度地限制事故或错误可能造成的损害。在这方面还没有太多的研究,不过似乎可以实现的。


7、最少公共机制

该原则要求在多用户系统中,允许多个用户共享的资源应尽可能得少。在noisy SGD和PATE中,对所有训练数据以及学习机制的所有访问,隐私参数都是相同的。但或许可以通过加权的方法来为不同的训练数据的提供隐私保护,从而保证不同用户的隐私需求。

8、心理可接受

这个原则要求用户接口应该是精心设计的,并且非常直观,所有与安全相关的设置都应按普通用户的期望进行配置。程序的行为如果与用户期望之间出现差异,可能就会带来安全问题。

就两个模型来说,noisy SGD的配置需要用户了解足够的数学、差别隐私以及机器学习的知识,这可能是大多数用户所欠缺的。而PATE模型相对来说就比较清晰直观了,它不需要太多背景知识,你想还有什么比“如果100个独立训练的机器学习模型说一张图片是猫,预测结果也应当是猫”这样的模型更直观呢。


9、工作因素

这一原则要求设计安全方案时应根据攻击者的资源来进行,例如保护军事机密的系统,其安全设计和保护学校学生成绩的系统的安全设计是不一样的。noisy SGD和PATE的隐私保护受益于在交互时间,攻击者不受限于任何特定数量的查询。

10、记录危害

这个原则说明有时记录入侵细节比采用更复杂的措施来预防更为理想。如上面所述,(ε,δ)-差别隐私包含了故障的概率,但是没有任何信息可以用来记录故障的原因。所以机器学习的隐私保护在记录危害方面的问题是非常严重的,因为它可能是理论的缺陷,而不是具体某个算法的问题。


四、许多问题有待研究

当然,由于这只是一篇特邀报告的文章,内容只是用来做示例,所以有很多问题和方面,Ian他们选择了“暂不考虑”。例如,攻击者可能会通过学习过程中修改某些训练数据来影响模型(给模型下毒),在其他机器学习任务中的隐私保护问题、交互学习中的隐私保护问题以及如何从整个系统角度(软、硬件)来考虑安全问题等,他们也只是浅尝辄止,并没有就它们展开讨论。事实上,这些问题是非常值得探讨的,它们或许需要更多的人共同努力才能完成。所以Ian Goodfellow等人的这篇文章或许只是用来抛砖引玉的吧,研究人员或许能从这篇文章中获得更多灵感,AI科技评论也将持续关注机器学习隐私问题的动向和内容。

全球高校计算机专业排名出炉:上海交大排名27,清华位列31

近日,麻省理工学院马萨诸塞校区计算机与信息科学学院教授Emery Berger公布了一个全球院校计算机科学领域实力排名的开源项目CSranking。AI科技评论对排名结果及评选内容做了详细介绍。

CSranking的排名主要依据各个大学院系在计算机领域的顶级学术会议发表的论文数量来衡量。

这种方法相对于传统的基于论文引用量排名方法,会更能体现出院校在计算机科学领域的实力水平以及师资力量。和US News, world report相比,此方法只比较院校之间在计算机领域的各大顶会发布的论文数量。因为想要在这些顶会上发表论文还是有一定难度,因此也能从侧面体现高校的科研水平。

值得注意的是,这是一个开源项目,如果读者觉得有什么需要改进的地方,可以通过Github修改。作者也表示,这是他想到的一个初步的排名方式,后期可能也会把论文引用量加入,作为一个评分参考依据。


项目地址:http://csrankings.org/

Github 地址:https://github.com/emeryberger/CSrankings

关于计算分数:每一份发表的论文都精确计算一次,是通过调整所有作者之间的平均值来调整分数。这种方法的好处就是,不可能仅仅通过在论文中添加作者来提高排名。平均数计算每个机构的调整计数在每个领域(+ 1)的几何平均值。这种使得大的研究领域和小的研究领域在评分中所占的比重相同。

据网站介绍,目前论文的数据来源都是来自DBLP,网页中将排名分为6个档次,top10、top25、top50、top75、 top100,以及所有大学排名。

大学的地区也可以选择包括:美国、加拿大、美国和加拿大、北美、亚洲、澳大利亚、欧洲、全球。

纳入评选的专业或方向分为四大块,具体包括:

  • AI:人工智能、计算机视觉、机器学习与数据采集、自然语言处理、网页信息获取。

  • 系统部分:计算机组成结构、计算机网络、计算机安全、数据库、自动化设计、嵌入式实时系统、高性能计算、移动计算、测量及性能分析、操作系统、编程语言、软件工程。

  • 理论部分:算法与复杂性、密码学、逻辑和验证。

  • 跨学科领域:计算生物与生物信息学、计算机图形学、经济学与计算、人机交互、机器人、可视化。

其中,每块又细分为几个方向或专业,这些研究方向又对应有各自领域内的权威会议。比如,AI 部分的计算机视觉领域方向就包括三大顶会:CVPR、ECCV、ICCV。

全球排名的前三名无一例外都是美国高校,分别是:卡内基梅隆大学,麻省理工学院、斯坦福大学。综合全球排名前十位,美国高校占据绝对“垄断”地位,上榜的学校依次为:UC伯克利大学、伊利诺伊大学厄巴纳-香槟分校(UIUC)、密歇根大学、康奈尔大学、华盛顿大学、佐治亚理工大学、加州大学圣迭戈分校。

而在第十一名,新加坡国立大学作为亚洲高校代表紧随其后。

那么国内高校呢?其中,上海交通大学以4.6的得分位列全球高校计算机专业的第27名,而清华大学与爱丁堡大学、UCL一起并列全球第31名。

值得一提的是,以上的专业、高校地区、排名方式可以随机组合。举例来说:AI科技评论编辑选择“亚洲 top 10+人工智能方向”的排名榜单,发现排名第一的是清华大学,平均分为23.9,第二名是香港科技大学,平均分17.8,第三名新加坡国立大学 16.8。

在清华大学中,以论文数排名该校人工智能领域前三位的分别是朱军博士、孙茂松博士及唐杰博士。

如果换一种组合方式,就会看到不同的结果。比如把计算机领域的所有研究方向都勾选的情况下,排名就发生变化了,新加坡国立大学平均分6.3排名第一。第二名是上海交通大学,第三名是清华大学。

大家可以发挥自己的想象力,随意组合,这是一个非常方便且快速的查询高校计算机领域论文数量以及作者的方式。

AI科技评论小结:这种只依据学术顶会发表论文数量的排名方式,可以大概看出高校的科研水平,但是未必能代表计算机领域实力。从勾选不同的研究方向,得出不同的排名结果,说明了各个高校有自己的优势研究领域。如果有想继续在计算机领域深造的想法,这也是一种择校的参考方式。

【全球人工智能学科高校排名】CMU居榜首,清华大学第4

CSRankings.org 的计算机科学高校排名(Computer Science Rankings)就是完全基于量化的,以显示院校在计算机科学各领域的投入和实力。它所依据的是院校在计算机科学各领域顶级会议发表的论文数量。

 

这种方式既考虑了“动机”(院校“瞄准”在顶会上发表论文),又反映了“难度”(因为在顶会上发表论文并不容易)。基本上来说,这种方式就是统计数字,但统计的是“该统计的数字”。而且这个标准完全透明公开,一切数据都是可查的。

 

首先,CSRankings 将计算机科学分为了 4 个门类:AI、Systems、Theory、Interdisciplinary Areas。每个门类下又包括若干领域。


我们今天只关注 AI 领域的高校排名。

 

在 AI 这一门类下,又分为 5 个方向:人工智能、计算机视觉、机器学习和数据挖掘、自然语言处理、网页和信息提取。

 

这一分类试图覆盖大多数计算机科学的学科。几乎所有类别都是以 ACM SIGs (http://www.acm.org/special-interest-groups)的分类为基础的。

 

以下是这 5 个门类所选择的顶会:

 

人工智能:AAAI、IJCAI

计算机视觉:CVPR、ECCV、ICCV

机器学习和数据挖掘:ICML、KDD、NIPS

自然语言处理:ACL、EMNLP、NAACL

网页和信息提取:SIGIR、WWW

 

 

关于排名标准的更多问题,比如顶会的选择标准、作者的院校归属标准等问题,请参考 csrankings.org 做的详细问答:http://csrankings.org/faq.html

 


我们把发表论文的时间范围定为:2006 年—2017 年

 

根据区域,我们分为以下几类:世界、亚洲、美国、欧洲

 

下面就是按区域划分的 AI 领域高校排名。



世界范围排名:清华大学排名第 4 

世界范围(Top 25)

可以看到,在世界范围内,CMU 排名第 1,康奈尔大学排名第 2,斯坦福大学排名第 3,清华大学排名第 4,香港科技大学位列第 10。


以清华大学为例,在 AI 的 5 个细分领域中,论文分布如下所示:

在论文作者中,论文数量排名前十的清华学者如下:

分别是朱军、孙茂松、唐杰、刘知远、张钹、马少平、刘奕群、朱小燕、李涓子、崔鹏



亚洲排名:清华大学排名第 1

亚洲:

其中,Average Count 指的是所选领域(人工智能、计算机视觉、机器学习和数据挖掘、自然语言处理、网页和信息提取)发表论文的平均数量;Faculty 指的是该高校在这些领域发表论文的研究人员(包括教职工、在读学生等,详见原网站 FAQ)数量。


可以看到,在上表中,清华大学排名第 1 ,香港科技大学排名第 2,上海交大排名第 6,香港中文大学第 7,中国科大排名第 18,上海纽约大学第 29。 



美国和欧洲范围内的排名

美国(Top25)


欧洲(Top25)

阿里知识图谱首度曝光:用机器学习构建推理引擎,让千万黑心商家无处可逃

阿里知识图谱每天保持千万级别的拦截量,亿级别的全量智能审核次数,在滥发、侵权、合规、假货、经营范围等多个场景全面与问题卖家正面交锋,实时对弈,最大限度地保护知识产权,保护消费者权益。


什么是知识图谱?

在互联网时代,搜索引擎是人们在线获取信息和知识的重要工具。当用户输入一个查询词,搜索引擎会反馈它认为与这个关键词最相关的网页。

直到2012年5月,搜索引擎巨头谷歌在它的搜索页面中首次引入“知识图谱”:用户除了得到搜索网页链接外,还将看到与查询词有关的更加智能化的答案。

从杂乱的网页到结构化的实体知识,搜索引擎利用知识图谱能够为用户提供更具条理的信息,甚至顺着知识图谱可以探索更深入、广泛和完整的知识体系,让用户发现他们意想不到的知识。谷歌高级副总裁艾米特·辛格博士一语道破知识图谱的重要意义所在:“构成这个世界的是实体(things),而非字符串(not strings)”。


阿里知识图谱

阿里的主要业务是电商。它的知识图谱以商品、标准产品、 标准品牌、 标准条码、标准分类为核心, 利用实体识别、实体链指和语义分析技术,整合关联了例如舆情、百科、国家行业标准等9大类一级本体,包含了百亿级别的三元组,形成了巨大的知识网。雷锋网AI科技评论到,这些海量的数据来源于淘宝、天猫、1688、AliExpress等多个市场,同时品牌商、行业运营、治理运营、消费者、国家机构、物流商等多种角色参与其中,贡献着、校正着这样一个庞大的商品库。这个知识图谱对无论是知识产权保护,还是提升消费者购物体验,实现商品数据的标准化(商品规范的统一和商品信息的确定性), 以及与内外部数据之间的深度互联,意义都非常重大。比如商品标准化可以让我们知道哪些商品是同样一件产品,我们才能确切地知道一个品牌是否被授权,品牌下的产品卖到了哪些市场。


阿里知识图谱运用

阿里的商品知识图谱广泛地应用于搜索、前端导购、平台治理、智能问答、品牌商运营等核心、创新业务。其中最明显的应用之一体现在阿里电商平台的管控上。过去只能通过人工“巡检”来对商品发布进行审核,而现在面对海量的商品发布量,“巡检”模式显然已不太现实。根据阿里技术的官方介绍,

“阿里知识图谱就像一张过滤网,最大可能地借助大数据、人工智能阻止不良商家、问题商品进入阿里生态。面临问题商家实时的对弈、变异和恶意攻击等诸多挑战,阿里知识图谱可以保持每天千万级别的拦截量,亿级别的全量智能审核次数,在滥发、侵权、合规、假货、经营范围等多个场景全面与问题卖家正面交锋,实时对弈。”


根据阿里技术的介绍,为了最大限度地保护知识产权,保护消费者权益,阿里知识图谱团队对知识图谱推理引擎技术提出了智能化、自学习、毫秒级响应、可解释等更高的技术要求。

张伟  博士, 阿里巴巴商品知识图谱负责人

引入机器学习算法搭建推理引擎

据了解,阿里知识图谱研究团队设计了一套框架来实现知识表示和推理。此外:知识图谱实体、关系、词林(同义词、上下位词)、垂直知识图谱(例如地理位置图谱、材质图谱)、机器学习算法模型等都纳入进来做统一的描述。


按照不同场景把推理分为:上下位和等价推理;不一致性推理;知识发现推理;本体概念推理等。例如:

 1.   上下位和等价推理。检索父类时,通过上下位推理把子类的对象召回,同时利用等价推理(实体的同义词、变异词、同款模型等),扩大召回。 例如,为保护消费者我们需要拦截 “产地为某核污染区域的食品”,推理引擎翻译为 “找到产地为该区域,且属性项与“产地”同义,属性值是该区域下位实体的食品,以及与命中的食品是同款的食品”。

2.   不一致推理在与问题卖家对弈过程中,我们需要对商品标题、属性、图片、商品资质、卖家资质中的品牌、材质、成分等基础信息,做一致性校验。比如说标题中的品牌是Nike而属性或者吊牌中品牌是Nake,如下图所示,左边描述了商品标题、属性、吊牌上的品牌信息是一致的,推理为一致。右边为吊牌和商品品牌不一致的商品,被推理引擎判断为有问题的商品。

3.   知识发现推理。一致性推理的目的是确保信息的确定性,例如通过一致性推理我们能确保数据覆盖到的食品配料表正确。但消费者购物时很少看配料表那些繁杂的数字。消费者真正关心的是无糖、无盐等强感知的知识点。为了提高消费者购物体验,知识发现推理通过底层配料表数据和国家行业标准例如:

  • 无糖:碳水化合物≤ 0.5 g /100 g(固体)或100 mL(液体)

  • 无盐:钠≤5mg /100 g 或100 mL

可以把配料表数据转化为“无糖”“无盐”等知识点。从而真正地把数据变成了知识。通过AB test验证,类似知识点在前端导购中极大地改善了消费者购物体验。


推理引擎背后技术框架


首先,推理引擎把自然语言通过语义解析(semantic parsing)转换为逻辑表达式(logical form)。语义解析采用了结合神经网络和符号逻辑执行的方式:自然语言经过句法、语法分析、 NER、 Entity Linking, 被编码为分布式表示(distributed representation),句子的分布式表示被进一步转义为逻辑表达式。

在分布式表示转换为逻辑表达式的过程中,首先面临表示和谓词逻辑(predicate)操作之间映射的问题。我们把谓词当做动作,通过训练执行symbolicoperation,类似neural programmer中利用attention机制选择合适的操作,即选择最有可能的谓词操作,最后根据分析的句法等把谓词操作拼接为可能的逻辑表达式,再把逻辑表达式转换为查询等。过程示意如下图所示。

其次,逻辑表达式会触发后续的逻辑推理和图推理。逻辑表达式在设计过程中遵循以下几个原则:逻辑表达式接近人的自然语言,同时便于机器和人的理解。表达能力满足知识图谱数据、知识表示的要求。应该易于扩展,能够非常方便的增加新的类、实体和关系,能够支持多种逻辑语言和体系,如Datalog、OWL等,即这些语言及其背后的算法模块是可插拔的,通过可插拔的功能,推理引擎有能力描述不同的逻辑体系。 

以上下位和等价推理为例:“产地为中国的食品”


用逻辑表达式描述为:

∀x: 食物(x) ⊓ (∀ y: 同义词(y,产地)) (x, (∀ z: 包括下位实体(中国, z)))

随后找同款:

∀t, x: ($ c:属于产品(x, c) ⊓属于产品(t, c)) 

此外,推理引擎还用于知识库自动补全。是基于embedding做知识库补全。主要思路是把知识库中的结构信息等加入embedding,考虑了Trans系列的特征,还包括边、相邻点、路径、实体的文本描述 (如详情)、图片等特征,用于新关系的预测和补全。

AI科技评论小结:以上就是关于阿里知识图谱团队以及业务介绍。这个团队已成立三年,目前已经形成了巨大的知识图谱和海量的标准数据,同时与浙江大学陈华钧教授团队成立联合项目组,引入了前沿的自然语言处理、知识表示和逻辑推理技术。通过NLP、语义推理和深度学习等技术,阿里知识图谱团队将会以更强大的技术体系保障消费者的权益。