3.1 开发方式和流程简介
现有的开发和应用大概可以分为以下四种。
第一种,在本地或云端进行机器学习的训练,训练后的模型直接运行在移动设备上。在这种情况下,云端和设备是完全分离的。在设备上进行推理和运算。
第二种,和第一种相似,但是会以云端或其他方式对在设备上的机器学习进行不断地更新和修正。在这种方式下,移动端也是以推理为主的。
第三种,即完全的云端和移动端设备交互的机器学习方式。云端对正在设备上进行的机器学习进行监测和修改,把修改过的模型推送到移动端,进行新的机器学习的推测。同时,设备会把新的机器学习的结果推送到云端。在云端,做进一步地训练,把新的增量结果推送到设备上。这样,云端和设备端就形成了一个完整的闭环。在这种方式下,基本还是延续了云端作为机器学习训练的主要资源,设备端作为机器学习推理的主要资源。
第四种,较前三种更为复杂。它考虑到机器设备数量众多,所以同时进行机器学习的训练和推理,并把机器学习训练和推理的结果推送到云端,在云端进行进一步的训练,并把训练后的新的模型推送回设备端。
第一种方式可能更适用于应用的原型的开发,或者新模型开发的预研阶段;第二、三种方式比较常见,已经大规模地应用在开发中;第四种比较复杂,需要云端和设备端的高度配合和比较复杂的算法设计,这种应用比较少。图3-1展示了几种机器学习方式。
图3-1 机器学习方式
典型的基于移动端的开发流程如下:
· 构建云端或本地的模型和测试。
· 移动端的运行、测试和改进。
· 移动端产品化及用户的使用。
由于技术资源和设计规模的限制,移动端的机器学习开发仍然严重依赖于移动设备以外的开发。它与移动应用程序的开发非常相似,通常在桌面机上设计和构建应用程序,然后在移动设备上运行应用程序。我们还要将来自移动设备的数据与应用程序连接起来,并迭代回原始设计。然后,启动另一个循环,以进一步改进应用程序。这个流程如图3-2所示。
图3-2 移动端的机器学习开发流程
对于设备上的机器学习,我们还要在主机设备上开发原始模型,对其进行评估,并将其集成到移动应用程序中。我们从运行结果和日志中收集信息,并与期望值进行比较,再循环到下一个开发周期。