【.com原稿】近年来,人工智能领域异常活跃。除了传统的机构学术界,国内优秀的互联网公司如谷歌、微软、Facebook、苹果、百度、阿里等也建立了相关的研究团队,并取得了很多令人瞩目的成果。谷歌的AlphaGo向世界展示了强大的计算能力,Siri和GoogleNow的语音识别能力,以及国产百度小度机器人在“全球大脑”上的语音和图像识别能力。它极大地反映了人类在人工智能领域的快速发展。但无论是语音还是图像识别,很大程度上都依赖于云计算来满足大量的计算和存储,而移动和PC设备则需要时刻连接互联网获取计算资源,从而实现人工智能。目的。不过,近日,在谷歌发布的AndroidWear2.0中,除了可以让手表脱离手机直接使用外,更让人震撼的是“智能回复”能力。官方技术团队认为,这是基于离线AI。无需接入网络即可实现自学习,寻求云计算帮助。(图自engadget)此前,包括笔者在内,都认为对于智能手表等移动设备而言,在计算能力和内存容量有限的情况下,如果不连接云端,可以进行自学习、“智能回复”等能力,这几乎是不可能的。直到谷歌名为“Expander”的AI研发团队做到了,并将其移植到AndroidWear2.0上,取得了非常好的效果!通过重新设计更轻量级的全新机器学习框架,他们不仅可以驱动AndroidWear2.0上的智能回复,还可以为更多其他离线移动应用带来巨大帮助。不过在此之前,他们也尝试过很多流行的神经网络和图学习技术,但建立的模型并不适合在移动平台上应用,有限的回复数量也没有达到预期的效果。通过这个轻量级和简单的系统,类似的预期回复,例如“你好吗?”.同时,笔者联系到了谷歌Android负责人梁玉玲先生。他说,AI泛指机器学习,主要分为两个过程:训练和预测。训练需要海量数据和强大的计算能力,因此训练通常在云端进行。训练后得到的模型不需要海量数据和计算能力进行单次预测。所谓离线AI,往往是指将在线训练好的模型存储在移动设备上进行预测。因此,技术难点往往在于如何减小模型的尺寸,减少预测时的计算量,加快预测速度。有很多方法可以做到这一点,现在大热的AI芯片加速就是其中之一。事实上,AndroidWear2.0的离线AI技术并没有使用深度学习,而是使用了一种叫做半监督图学习(semi-supervisedgraphlearning[1])的技术,其中技术的核心部分在于信息设备上的内容(如聊天、短信等)被有效地映射到相应的可能的自动回复。在智能回复中,采用了全新的、相对轻量级的机器学习架构。不仅可以满足智能回复功能,还可以为以后的很多线下移动应用带来很大的帮助。接下来笔者结合梁老师的建议和谷歌官方技术团队的博客,对AndroidWear2.0离线AI技术的实践思路进行了分析。GoogleWear2.0智能回复学习和投影构建轻量级会话模型的一个简单策略是在设备上创建的内容是一个通用且规则的小词典(例如输入→回复映射),并在推理中使用更简单的查询策略。这涉及使用多个特征的一小组类别预测任务(例如二元情感分类,其中短语“我喜欢这部电影”传达积极情绪,而短语“太糟糕了”传达消极情绪)。但是,它缺乏支持聊天消息中常见的丰富词汇和众多复杂语言变体的可扩展性。另一方面,递归神经网络(如LTSM)等机器学习模型是自然语言理解任务(包括“智能回复”)中复杂序列学习的极其强大的工具。然而,压缩如此丰富的模型以适应小型存储设备并以低计算成本获得可靠的预测(按需快速处理)是非常具有挑战性的。AndroidWear2.0团队早期尝试将模型限制为仅预测一小部分响应,或者使用量化或字符级模型等技术,但未能取得良好效果。***,通过为设备上的机器学习系统构建一套不同的解决方案。这个想法是首先使用一种快速有效的机制将相似的消息分组,并将它们投影到相似的(“相邻的”)位向量表示中。虽然有多种方法可以执行此投影步骤,例如使用词嵌入或编码器网络,但***AndroidWear2.0采用经过修改的局部敏感哈希算法(LSH),可将维度从数百万扩展到独特的单词被缩减为短,固定长度的位序列。这可以非常快速地计算动态消息的投影,并且在设备上占用的内存更小,因为不需要存储消息、词嵌入,甚至不需要存储用于训练的整个模型。投影步骤:将相似的消息组合在一起并投影到相邻向量。例如,两条消息“嘿,最近怎么样?”和“伙计,最近怎么样?”有相似的内容,可能会投射到同一个11100011。另一条相关的消息“你好,一切顺利吗?”映射到邻近向量11100110,它仅相差2位。接下来,系统通过消息及其投影联合训练成“消息投影模型”,该模型学习使用半监督图学习框架来预测可能的适当回复。图学习框架试图通过结合来自多个来源的语义关系(消息/回复交互、词/短语相似性、语义聚类信息)和学习有用的投影操作来训练可靠的模型,这些操作可以映射到优秀的回复预测。学习步骤:(上图)消息连同投影和相应的回复在机器学习框架中使用,共同学习“消息投影模型”。(下图)消息投影模型学习将回复与相应的消息投影相关联。例如,该模型投射出两条不同的消息:“你好,一切顺利吗?”和“伙计,最近怎么样?”(中下)到相邻的位向量,并学习将它们映射到相关回复(右下)。上面值得一提的是,虽然可以利用复杂的机器学习和云计算能力来训练消息投射模型,但模型本身驻留在设备上,完全在设备上执行和推理。在设备上运行的应用程序可以传递来自用户的消息并从设备上的模型接收回复预测,而数据永远不会离开设备。并且可以更改模型以适应用户的写作风格和个人喜好,从而增强个性化体验。推理步骤:该模型将学习到的预测应用于消息(或消息序列)并建议相关的不同回复。推理是在设备上执行的,允许模型适应用户数据和个性化的写作风格。为了让设备上的系统开箱即用,AndroidWear团队还必须实施一些额外的改进,例如专门优化以加速设备上的计算并从模型中生成丰富多样的响应。从手表通信到应用的离线AI从一开始,当GoogleWear团队开始从头开发这项技术时,他们并不知道模型的预测是否有用和准确。但在完成整个项目后,他们惊讶地发现,即使在计算能力和存储资源非常有限的安卓可穿戴设备上,这项技术也能达到预期的效果,这让整个团队都非常兴奋。接下来,他们会继续完善模型,为用户提供更好的对话体验,同时也会充分利用这个设备端的机器学习平台带来新的应用,类似于谷歌此前推出的基于人工智能应用Allo的APP,让沟通更简单、更高效。因此,AndroidWear团队也提供了非常丰富的API接口,供第三方Wear设备访问和使用智能回复功能。例如,如果你想为你的通知操作启用智能回复,你需要执行以下操作:使用NotificationCompat.MessagingStyle在通知操作上调用setAllowGeneratedReplies(true)确保通知操作具有RemoteInput(响应式驻留)下面是一个如何操作的示例创建带有智能回复响应的MessagingStyle通知://CreateanintentforthereplyactionIntentreplyIntent=newIntent(this,ReplyActivity.class);PendingIntentreplyPendingIntent=PendingIntent.getActivity(this,0,replyIntent,PendingIntent.FLAG_UPDATE_CURRENT);//CreatethereplyactionandaddtheremoteinputNotificationCompat.Actionaction=newNotificationCompat.Action.Builder(R.drawable.ic_reply_icon,getString(R.string.label),replyPendingIntent).addRemoteInput(/1)Input)allowgeneratedreplies.setAllowGeneratedReplies(true).build();Notificationnoti=newNotificationCompat.Builder().setContentTitle(消息.length+"newmessageswith"+sender.toString()).setContentText(subject).setSmallIcon(R.drawable.new_message).setLargeIcon(aBitmap)//2)setthestyletoMessagingStyle.setStyle(newNotificationCompat.MessagingStyle(resources.getString(R.string.reply_name)).addMessage(消息[0].getText(),消息[0].getTime(),消息[0].getSender()).addMessage(messages[1].getText(),messages[1].getTime(),messages[1].getSender()))//3)addanactionwithRemoteInput.extend(newWearableExtender().addAction(action)).build();如果你想访问更多的扩展能力,你需要输入>>***。梁老师还告诉笔者,谷歌有几个项目有离线AI,比如谷歌翻译,但是针对不同的应用场景,具体的实现技术有一些差异,比如GoogleTranslate和Wear2.0上的方法智能回复不使用相同的技术。对于智能回复是否可以开源,梁老师没有发表评论,但建议大家关注一下刚刚发布的TensorFlow1.0版本[2],它展示了在Android上实现基于深度学习的图像识别的能力,ios。也有很好的例子。[1]:https://arxiv.org/pdf/1512.01752[2]:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android【原创稿件,合作站点,转载请注明原作者和出处是.com]
