睡不着的iris、涂世文、云舟编译

iPhone上也能运行AI模型,瞧瞧别人家的程序员是怎么用Core ML的

第一台iPhone发布于2007年,而机器学习这一概念更是在第一台iPhone发布的十年前就已经出现。但这两者碰撞出火花,则是在最近几年才出现的事情。

6月4日,在加州圣何塞举行的2018苹果开发者大会(WWDC)上,克雷格·费得里吉(Craig Federighi)发布了适用于 iOS 设备的新版机器学习框架 Core ML 2。

2017年5月,除了iOS 11,苹果还发布了专为加速机器学习任务而设计的Core ML框架。在去年的iPhone X中,这家位于库比提诺市的公司推出了首个专为AI打造的A11 Bionic芯片。在2018苹果全球开发者大会(WWDC)上,苹果发布了新版本的Core ML 2,对Core ML进行了改进,同时,还发布了支持GPU的加速工具Create ML,用于在Mac电脑上进行原生人工智能模型的训练。

近一年的进步令人瞩目,但智能手机上部署的人工智能依旧处于起步阶段,还将面临诸多严峻的考验。为了更好地了解这一领域的当前进展,美国科技博客VentureBeat采访了几位正在使用Core ML做机器翻译、对象识别和风格迁移的iOS开发者。

Digital Masterpieces

Digital Masterpieces是德国波茨坦哈索·普拉特纳研究所(Hasso Plattner Institute)旗下的公司,其部分投资来自德国孵化器German Deep Tech,该公司起初并未考虑使用Core ML。首席技术官弗兰克施·莱格尔(Frank Schlegel)告诉VentureBeat,使用 Core ML “看起来更像是个巧合”。

Digital Masterpieces

https://www.digitalmasterpieces.com

他提到:“我们使用的技术源于研究所多年的积累,特别是风格迁移这一将画作、图片或者草图重新组合成其他图像的技术。现在,我们已经能在个人电脑上应用这类神经网络和人工智能技术了,因此,如果能够将它们移植到iPhone上,那实在是太棒了。”

这些想法最终形成了一款叫做BeCasso的应用程序,正如施莱格尔所说,这个程序实现了“将图片转换为艺术作品。”(它在今年WWDC上登台亮相。)

施莱格尔将整个移植过程描述为“狂野的西部。”他说,在Core ML推出后的几个月里,开发者工具还有很多需要完善的地方。“问题是如何在不影响准确性的情况下,实现足够的计算速度。”

机器学习中,神经网络是一种借鉴于人类大脑生理学原理的计算架构,它由包含节点(nodes)的层(layers)组成。节点类似于神经元neurons)——数据与称为权重(weights)的系数一起输入网络,权重通过抑制或放大数据为输入赋予重要性。深度神经网络由多个层和多个节点组成,一般来说(但并非总是)这个术语的意味着更高的准确性。

“对于风格迁移任务,模型可以训练至任意深度,” 施莱格尔说,“更深的模型可以执行更多的操作,但需要更强大的计算能力。”

更深的模型还会占用更多的存储空间,特别是RAM(内存)。实际上,风格迁移算法对内存的要求特别高,因为输入数据——图像——会被编码成二级制数据(1和0)。

“如果输入的图像过大,你的RAM很容易就会爆了”,他解释道。

Digital Masterpieces的解决方案是发布同一模型的两个不同版本——一个用于RAM较小、处理器较弱的设备(如iPhone 6S,7和7S),另一个用于较新的设备(如iPhone 8,8S和X)。这一策略确实奏效:在最新的iPad上完成一次风格迁移计算现在只需不到一秒钟时间。

“从各方面看来,我们对结果非常满意,”施莱格尔说。

Memrise

Memrise团队打造的一款同名的语言学习应用程序,专门提供基于抽认卡的课程计划,致力于使用人工智能技术助力语言学习。

Memrise

https://www.memrise.com/

“我们的一名iOS开发者曾在几天内创建了一个应用的原型”,Memrise的技术经理詹姆斯•索尔特说,“我们差不多就是从那时候开始做起的。”

模型的工作原理主要是通过识别对象来告诉用户如何用他们的语言表述所识别的对象。但这并非是Memrise体验的核心部分,因为它只能识别几百个小玩意儿(Memrise的工程师使用来自斯坦福大学的公共图像数据集ImageNet进行模型训练)。但是,这“引起了苹果公司的注意”,索尔特说道。

“因此,我们坚持做了下去。”索特尔使用开源的神经网络库Keras对来自谷歌的数百万张图像重新训练。很快模型就识别出了20件新东西,然后是160件新东西。

唯一的问题是,随着模型准确性的提高,模型也随之变大。

最终,Memrise团队在Create ML中找到了一个解决方案,不仅将模型训练时间从24小时减少至40分钟,而且模型大小也从90MB减少到3MB。

“这个用例较为简单,我们能够得到相对好的结果并不意外”, 索尔特说道。

Polarr

iOS版Polarr应用程序

CEO王博睿(Borui Wang)提到,相对于泼辣修图(Polarr)仅仅20人的团队规模来说,Core ML魅力在于能够在手机上运行“大而复杂”的算法。

但是一切未必都是美好的。在iOS生态系统中工作需要“大量妥协”,王说,主要原因是iPhone的RAM无法为复杂神经网络提供太多的空间,例如,iPhone8的RAM仅为3GB。

这并不代表Polarr团队没有尝试过更有野心的计划,但这些计划以失败告终。在实验室中,模型在运行的前5秒内便将处理器和图形芯片的使用率提升至100%,这将iOS设备的性能推向了极限,整个操作系统随后开始卡顿,屏幕和后板异常发烫,电池电量也很快耗尽。

“如果你只是想从名片中提取名字,这很容易,但我们希望机器学习对消费者更有实用价值”,他说:“我认为这还有很长的路要走。”

“当然,我们得到的也不都是坏消息”,王说:“我们的团队使用类似量化的压缩技术取得了不错的成果,模型的尺寸缩减了五倍,并能够以每秒二十帧的速度运行对象识别算法”。

王对未来持乐观态度。他预计,在未来的一到三年内,手机硬件将得到更进一步的改善,电量将成为智能手机的硬限制,而非处理器和内存。

“当芯片组变得越来越快时,能耗权衡就将成为可能”,他说:“但现在,我们距离这一技术的应用还有距离”。

Core ML需要什么:更多的预训练模型和基准测试工具

凭心而论,Core ML 2引入了很多改进。采用批量预测技术,Core ML 2的速度提高了30%.它还能支持16位浮点和低至1比特位的所有量级运算并附带了一个模型转换器,能够与Facebook的Caffe和Caffe2、Keras、scikit-learn、XGBoost、LibSVM和Google的TensorFlow Lite框架配合使用。

施莱格尔认为这已经足够了。“到目前为止,当前的框架能完全覆盖我们的用例”,他说。

对于这一观点,索尔特表示同意,并且认为Core ML有更大的发展空间。

“未来,基于自身庞大的数据,苹果没有理由不发布更多的预训练模型,”他在一封邮件中提到。“较小规模的开发人员即使具备专业知识,仍然没有办法使用大规模数据或者资源来进行长时间的训练。例如,如果存在一种方法不需要使用自有的数据集便可创建图像分类器,这一定会受到所有开发者的追捧——理想地说,开发者只需要声明所需要识别的对象,模型便可通过Apple的云服务自动生成。”

对于王博睿来说,他希望未来版本的Core ML可以提供改进的基准测试工具。

“我最关切的是理解GPU/CPU和热节流机制,”他在一封邮件中写道。“例如,你知道现在的PC游戏会怎样绘制FPS(Frames Per Second, 每秒传输帧数)以及游戏性能检测曲线吗?作为开发者,如果Core ML可以支持这类模型,将会是一个很大的突破。当你加载模型的时候,模型便会告诉你什么时候GPU开始节流,根据此生成一系列各种设备(iPhone 5,6,7,8,X)的性能报告。如果苹果公司不这么做,我肯定会有一些创业公司来做这样的事情。”

大数据文摘
大数据文摘

秉承“普及数据思维,传播数据文化,助⼒产业发展”的企业⽂化,我们专注于数据领域的资讯、案例、技术,形成了“媒体+教育+⼈才服务”的良性⽣态,致⼒于打造精准数据科学社区。

产业AI模型Core ML
1
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

XGBoost技术

XGBoost是一个开源软件库,为C ++,Java,Python,R,和Julia提供了渐变增强框架。 它适用于Linux,Windows,MacOS。从项目描述来看,它旨在提供一个“可扩展,便携式和分布式的梯度提升(GBM,GBRT,GBDT)库”。 除了在一台机器上运行,它还支持分布式处理框架Apache Hadoop,Apache Spark和Apache Flink。 由于它是许多机器学习大赛中获胜团队的首选算法,因此它已经赢得了很多人的关注。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

推荐文章
暂无评论
暂无评论~