小米科技|嵌入式开发:机器学习在嵌入式系统中的应用

小米科技|嵌入式开发:机器学习在嵌入式系统中的应用

机器学习已经从一个有趣的研究课题迅速发展成为一个广泛应用的有效解决方案 。 其明显的有效性迅速提高了来自AI理论家社区之外不断增长的开发人员群体的兴趣 。 在某些方面 , 机器学习开发能力正在发展到一个广泛可用的水平 , 与其他建立在坚实理论基础上的技术一样 。 开发一个有用的、高精度的机器学习应用程序绝非易事 。 尽管如此 , 不断增长的机器学习生态系统极大地减少了对底层算法深入理解的需求 , 并使越来越多的嵌入式开发人员对机器学习开发更感兴趣 , 而不是对理论更感兴趣 。 本文试图重点介绍神经网络模型开发中使用的一些关键概念和方法 , 这本身就是一个极其多样化的领域 , 也是嵌入式开发人员可以使用的一种实用机器学习方法 。
与机器学习一样 , 任何基于深度理论的方法都遵循从研究到工程的熟悉迁移模式 。 不久前 , 希望实现三相交流感应电动机精确控制的开发人员需要通过他们自己对相关微分方程组的解决方案来工作 。 如今 , 开发人员可以使用库快速实现高级运动控制系统 , 这些库使用非常先进的技术(如磁场定向控制、空间矢量调制、梯形控制等)打包完整的电机控制解决方案 。 除非面临特殊要求 , 否则开发人员可以部署复杂的电机控制解决方案 , 而无需深入了解底层算法或其特定的数学方法 。 运动控制研究人员继续用新的理论技术发展这门学科 , 但嵌入式开发人员可以开发有用的应用程序 , 依靠库来抽象底层方法 。
在某些方面 , 机器学习也达到了类似的阶段 。 虽然机器学习算法研究和机器学习特定硬件的进步继续取得巨大的进步 , 但如果对其相关要求和当前限制有适当的了解 , 这些算法的应用已经发展成为一种实用的工程方法 。 在这种情况下 , 机器学习可以产生有用的结果 , 需要的高级线性代数专业知识少于对目标应用程序数据的可观理解 , 并且愿意接受一种比传统软件开发更具实验性的开发方法 。 对机器学习基础感兴趣的嵌入式开发人员会发现他们对细节的兴趣完全满足了 。 然而 , 那些几乎没有时间或兴趣探索理论的人将发现一个不断增长的机器学习生态系统 , 它有望简化有用的机器学习应用程序的开发 。

机器学习方法
工程师可以找到优化的库来支持广泛的机器学习 , 包括无监督学习、强化学习和监督学习 。
无监督学习可以揭示大量数据中的模式 , 但这种方法不能专门将这些模式标记为属于特定数据类别 。 但这些技术可能在诸如物联网等应用中被证明是重要的 , 以揭示数据集中的异常值或表明存在偏离数据趋势的情况 。 例如 , 在工业应用中 , 一组机器的传感器读数在统计上显著偏离标准值 , 可能会作为该组机器潜在故障的指标 。 类似地 , 在大规模分布式应用程序(如物联网应用程序)中 , 如果大量偏离测量的性能参数 , 可能会暴露出被黑客攻击的设备 , 这些设备在数百或数千台设备的网络中运行正常 。
强化学习为应用程序提供了一种通过实验进行有效学习的方法 , 使用正反馈(奖励)学习对事件的成功响应 。 例如 , 检测来自一组机器的异常传感器读数的强化学习系统可能会尝试通过采取不同的措施 , 例如增加冷却液流量、降低室温、降低机器负载等 , 将这些读数恢复到正常值 。 在了解了哪些操作导致成功后 , 嵌入式开发人员可以在下次系统看到相同的异常读数时更快地执行相同的操作 。 强化学习可能会在大规模复杂应用(如物联网)中得到越来越多的应用 , 因为在这些应用中 , 无法经济高效地预测所有已实现的运行状态 。