现状
人工智能、机器学习都已走进了我们的日常,尤其是愈演愈热的大数据更是跟我们的生活息息相关,做人工智能、数据挖掘的人在其他人眼中感觉是很高大上的,总有一种遥不可及的感觉。但这些名词真的跟我们移动开发就没直接关系了吗?何时才能够将机器学习、深度学习应用在移动端,敲开移动端机器学习工业化的大门呢?
自从 AlphaGo 出现以来,深度学习毫无疑问成了行业热点,如雨后春笋快速发展,Google 也在去年就转变 Mobile-first 到 AI-first 的战略,可以说一线的互联网企业几乎都在押宝 AI。越来越多的人开始迈入这个领域,是机遇也是挑战。一方面推动了整个深度学习领域的前进,另一方面也产生了大量的泡沫。 而随着移动设备的推广,能够快速高效地在移动端部署深度学习模型就变成亟待解决的问题了。从目前来看,Apple、Google、Facebook 推出的三大移动端框架形成三足鼎立之势。
2017年4月19日 Facebook在F8开发者大会上推出Caffe2
2017年5月17日 Goole在I/O大会推出TensorFlow Lite,是专门为移动设备而优化的 TensorFlow 版本
2017年6月6日 Apple在WWDC大会上推出Core ML
移动端深度学习目标
如果你不是很熟悉机器学习的话,我想我可以在这里“僭越”地做一些简介。你可以先把机器学习的模型看作一个黑盒函数,你给定一些输入 (可能是一段文字,或者一张图片),这个函数会给出特定的输出 (比如这段文字中的人名地名,或者图片中出现的商店名牌等)。一开始这个模型可能非常粗糙,完全不能给出正确的结果,但是你可以使用大量已有的数据和正确的结果,来对模型进行训练,甚至改进。在所使用的模型足够优化,以及训练量足够大的情况下,这个黑盒模型将不仅对训练数据有较高的准确率,也往往能对未知的实际输入给出正确的返回。这样的模型就是一个训练好的可以实际使用的模型。
现阶段 app 上使用的深度学习主要有两种模式:
一种是 online 方式:移动端做初步预处理,把数据传到服务器执行深度学习模型,优点是这个方式部署相对简单,现成的框架(caffe,theano,mxnet,Torch) 做下封装就可以直接拿来用,服务器性能大, 能够处理比较大的模型,缺点是必须联网。
另外一种是 offline 方式:在服务器进行训练的过程,在手机上进行预测的过程。
现在的移动端的三大框架所要做的就是 offline 方式,它可确保用户数据的私有性,可不再依赖于因特网连接。
要实现机器学习,其实是分了两个阶段的,第一个阶段是训练并得到模型,第二个阶段则是在得到模型后,实际应用它。移动端工程师要解决的,其实只是后一个环节,不需要掌握过于复杂的数学和算法知识,只需了解一些神经网络方面的内容,将科学家们已经训练好的模型放到手机上使用就可以了。
拿一个典型的图片分类问题举例:
在移动端进行深度学习,有着无限的可能性:图片风格转换、实时物体识别、你画我猜...
在知乎看到这样一句话我觉得可以总结这篇文章了
不是说你搞个 HPC 才能搞 AI,移动设备更容易落地,如今的 O2O、SmartHome、mobile payment等等无不是移动端在帮这些新概念落地。AI最终要想落地,还是要往移动端上靠。
参考文章:
http://www.mittrchina.com/Home/Article/getContent/article_id/178
http://www.jianshu.com/p/cba9142f964b
http://www.cocoachina.com/ios/20170607/19457.html
https://sspai.com/post/39551
https://www.zhihu.com/question/38031547/answer/74628007