来自 科技 2019-12-19 15:03 的文章

用 TensorFlow,打造电动车的灵魂

在续航更久、动力更强、充电更快的硬件之外,造车新势力们也开始追求更智能的人车交互方式。

在几小时孤独的长途路上,在日常通勤的熟悉景色中,在全家团聚的探亲途中,陪着你的都是身边的车。而在 Google 发布的机器学习开源框架 TensorFlow 的帮助下,电动汽车制造商蔚来第一次让这个人类的好伙伴活了起来,让车变得“有礼貌、会倾听、会思考、知冷暖”。

这位好伙伴甚至还有情绪、有人设,它的名字叫 NOMI:

应用了基于 TensorFlow 构建的自然语言理解模型之后,NOMI 可以学习理解用户发出的各种复杂指令:调节温度、开关车窗、导航定位、监控车况……车主在驾驶过程中只需指挥 NOMI 帮自己完成工作,不需要再动手。

在 TensorFlow 的帮助下,为汽车注入灵魂变得不再遥不可及。

万能 NOMI

调教智能语音助手 NOMI 的第一步,是教会它如何理解人类的语言。

人类的语言非常复杂,不仅可能因语境不同而产生歧义,有时还“话里有话”,不能像计算机指令一样简洁明了地表达需求。因此,对于机器而言,“理解”的过程就是把自然语言分解成各种小任务的过程。

而对于 NOMI 来说,来自车主的千奇百怪的指令可以大致分为三种:单任务、多任务和多轮对话

单任务是最简单的一环,比如“NOMI,把车窗打开”,或者“NOMI,把播放器音量调高”等指令,NOMI 可以自动判断并执行操作。此外,对于一些模糊的指令,NOMI 也可以分析识别用户隐藏意图。当车主提出:“NOMI,太阳太刺眼了”,NOMI 会自动打开遮阳帘;车主提出“NOMI,车快没电了”,NOMI 可以理解车主的充电需求,并自动寻找周边的充电站。

多任务则涉及到一句话中的一连串指令,比如“打开副驾驶座椅加热和按摩功能”。

对于 NOMI 来说,这些指令都只是刚刚入门,NOMI 以及其他的智能语音助手面对的真正挑战其实是多轮对话。多轮对话不仅涉及多方面知识的抽取、推理和应用(如语言知识、情感信息、常识知识等),还涉及对包括自然语言理解在内的其他人工智能核心技术(如用户画像、对话管理等)的综合利用。

人工智能和人工智障往往只有一线之隔,如果智能语音助手对于指令的理解仅仅停留在单句层面而无法联系上下文,就会出现“车轱辘话来回说”的情况:

想要加入人类的聊天,语音助手首先需要理解用户主要说了什么,怎么说的以及对话的逻辑流程。为了做到这一点,工程师需要对之前一轮甚至更多轮的对话进行建模,把上文中有用的槽值继承下来,以便理解上下文意图。想做到这一点实在不太容易,目前较为成熟的商用语音助手都曾经在多轮对话上翻过车。

为了让智能助手“更聪明”,用更多的数据训练是一个提高预测性能的好方法。如果训练数据不足,会造成拟合不足;如果网络模型参数太少,只会得到低精度的模型……但更多的数据也意味着更沉重的计算负担,一次完整的训练动辄用去数天,甚至几周、几个月的时间。

因此,在过去很长一段时间里,智能语音助手都是少数几个大厂才做得起的“奢侈品”。然而 TensorFlow 的出现大大提高了语音助手的开发效率,让语音助手不再遥不可及。

蔚来利用 TensorFlow 丰富的预训练模块开发 NOMI,其中包括而不限于双向循环神经网络(Bi-LSTM)、文本卷积特征(CNN)、注意力机制(Attention Mechanism)、自注意力机制(Self-Attention)、条件随机场(CRF)等。

同时,蔚来利用支持的多机多卡分布式训练的 TensorFlow 2.0 多机并行缩减训练时间,让 NOMI 站在“前辈们”的肩膀上,达到更高的表现水准。

在 TensorFlow 的框架下,NOMI 的语义理解该系统对用户的指令(Query)进行建模,并能通过多层次的表示学习提取用户指令中隐藏的信息,其中包括域信息(Domain)、意图(Intent)、槽位(Slot)、句式信息(Ques_type)等抽象信息。除此之外,NOMI 还保留了上一轮对话的指令信息(Query),通过两轮更加丰富的信息输入,让 NOMI 具有了联系上下文的能力。

如今,NOMI 已经可以和车主进行非常复杂的多轮对话。

以驾驶过程中的温度调节为例:

用户query:Hi Nomi,主驾温度调到20度

结果反馈:好的,主驾温度即将调到20度

用户query:再高点儿

结果反馈:好的,马上调整主驾到22度

用户query:还是关了吧

结果反馈:正在关闭前排空调

在这个例子中,NOMI 自动抽取了前一轮对话中的主语,即“主驾温度”,在车主追加“再高点儿”的指令时,自动理解到车主指的是上文中提到的主驾空调,从而自动进行调整。在第三轮任务中,NOMI 继续保留着从前两轮对话中继承到的主语,不需要用户多费口舌。

此外,NOMI 还有个性化的、基于知识图谱的智能问答功能。传统汽车附带的厚厚的一本用户手册,已经全部存在了 NOMI 的“大脑”里,随时可以通过语音调用 ,再也不需要费劲搜索。

比如当用户提出:“Hi Nomi,教教我怎么充电”,NOMI 会自动反馈:“ES6有直流和交流两种充电插口:交流慢充口位于车辆主驾侧,直流快充口位于车辆副驾侧”。

把强大的算力,放进“小盒子”里

善解人意的 NOMI 虽好,但距离实际应用还有最后一步:工程师需要把依赖强大算力的 NOMI 塞进汽车里

然而车机端资源非常有限,无论是计算能力还是内存数量,都不能与 PC 相比,因此哪怕 NOMI 做得再好,也有可能出现“带不动”的情况。

为了把大 NOMI 装进小汽车,必须要对模型进行结构裁剪、压缩和复杂的参数调节,这个工程的繁琐和复杂程度不亚于重新构建一个小的自然语言处理模型。

好在 TensorFlow 早就为模型的部署留好了后路。

为了让 NOMI 在嵌入式环境运行,蔚来在训练阶段就使用了较低精度的 INT8 量化训练。训练后,可以方便地在 TensorFlow 平台上把模型转化为专为移动设备设计的轻量级的 TersorFlow Lite,省去了冗杂的裁剪压缩过程。

在实际运用过程中,NOMI 在云端和本地的两个大脑会并行进行计算。云端部署完整模型,计算能力较强,本地部署压缩模型,算力相对有限,在本地连接云端超时的情况下,计算会自动转入本地进行。

在 TensorFlow 的帮助下,语音助手表现更智能、训练更高效、压缩更简单。未来当用户有需求时,可供选择的不再只是老熟人 Alexa 和 Siri,更个性化、更专业的语音助手将会变得更多。

目前,我们仍在征集更多杰出的TensorFlow应用案例,你可以扫描海报下方二维码或点击“阅读原文”提交案例参与我们的报道!

或者你对这个项目感兴趣,想要了解更多关于项目的报道,也可以扫描下方二维码或搜索微信号:pingwest-live 添加品玩助手一起聊聊!