让模型认识这才是真实的世界:针对设备训练的边缘模型自适应大法

从保证司机安全驾驶的驾驶员辅助功能到要求手机设置提醒功能,神经网络正在为我们的生活提供越来越多的计算机交互功能。

然而,神经网络模型的一个缺点是通常所说的”一刀切 “。神经网络模型对数据进行学习来最小化误差。但是对于很多应用来说,对用户唯一重要的错误只有“我的数据“的错误。神经网络经常会对少数人表现出更差的性能,导致一种隐蔽的技术不平等形式。如果你是大多数人的一部分,你可能永远不会注意到这个问题。

我们开始研究解决这个问题的方法。 从根本上说,神经网络模型容量的资源是有限的。 我们试图对模型进行训练,让它能平等地表示来自广泛潜在用户的数据:

但事实上,多个部署通常由单一用户使用(或单一麦克风使用,或在单一位置上使用):

没有一个数据集是完全公平的,少数人的代表性总是不足的。但是,当我跟我的手机说话时,我还是希望他能够辨识我的口音。 如果这样做识别澳大利亚口音的准确性会降低,我也可以接受。 对于许多图像,音频和视频任务也是同样的道理。

如果有一种方法可以让模型适应更多资源,从而最大程度地减少模型在实际使用中看到的错误,那么模型可以达到更高的精准度吗?

这可能会导致每个用户的模型版本不同:

或者,如果我们对真实世界的输入分布有更多的了解,我们是否可以实现更好的模型压缩而不是提高精度?

解决这个问题方法很多元化。我们最近完成了基于边缘蒸馏(edge distillation)方法的研究。

无标签学习

边缘学习最大的挑战是没有人愿意提供他们在手机上输入的每一条指令的书面记录,或者整理整个相册并手工标记每个家庭成员。在大多数情况下,最大的难题是没有“正确”的标签可供学习。

我们研究了一种使用on-device teacher规避无标签问题的技术。它的原理是在设备上部署两个神经网络模型:

1.    一个针对低延迟推理进行了高度优化的runtime model。              

2.    一个更大更精确,但运行速度太慢,无法实时运行的teacher model。

因为teacher model的容量约束比runtime model小,所以它可以更好地从所有用户中(而不仅仅是大多数用户)捕获数据。

在正常使用期间,该设备使用runtime model向用户提供实时反馈,并将输入样本保存在本地。

在停机期间(例如,充电时或过夜时),设备使用teacher model为这些采样输入生成更准确的预测。然后再对实时模型进行训练来匹配teacher model的预测。所有的数据都会保留在设备上,这样可以保证隐私,也不需要使用活跃的互联网连接。

效果如何?

我们使用 Google Speech Commands 数据集上的关键字识别来评估on-device teacher的效果。通过对三个基线神经网络的评估来研究这种方法对不同神经网络结构的鲁棒性。teacher model在每种情况下都是更大、更精确的递归神经网络模型,但并不适用于低功耗、始终在线,实时使用的应用。 

对于所有发言者来说,使用设备自适应技术平均可以降低15%的错误率。对于一些发言者来说,这个数字还要高得多,这表明一些用户比其他人受益更多。

Total Compute启用自适应学习

最关键的是每个发言者使用的数据都非常少,总共只用了20个样本(每个班级两个样本),这些益处是通过进行大约100个训练步骤之后获得的。

这意味着语音识别等始终在线的应用程序的实时模型可以在Arm Cortex-M CPU或Ethos NPU上运行。训练也可以在利用浮点单元来执行节能训练和优化的附属Arm Cortex-A CPU上进行。

Arm Total Compute的方法直接实现了Arm IP之间的无缝交互和协作。这将最大限度地利用加速器IP,同时提供持续改进解决方案所需的设备训练和优化功能。

还有许多其他的方法可以实现设备模型自适应,我们正在跟踪几个有希望的方法,所以希望不久后就能听到我们发布关于这个方法的更多信息。

无论哪种方法是最好的,Arm Total Compute所提供了灵活性和性能可以以任何形式实现设备学习。

作者:Mark O’Connor
翻译:  Khorina
原文链接:https://community.arm.com/developer/research/b/articles/posts/adapting-models-to-the-real-world-on-device-training-for-edge-model-adaptation

发表评论

邮箱地址不会被公开。 必填项已用*标注