去年,Apple推出了Core ML,这是针对Apple开发人员的机器学习世界的一个契机。 在此之前,我们已经将机器学习与诸如AutoCorrect,Siri和可预测键盘之类的技术一起使用,但是Core ML为开发人员带来了更高水平的功能和灵活性。 在WWDC 18期间,Apple宣布了Core ML 2,在本文中,您将学习新功能。
乍看上去
在深入研究Core ML 2带来的变化之前,让我们简要讨论一下Core ML的真正含义。 更具体地说,让我们学习一下有关机器学习的细微差别。 Core ML是一个框架,可让iOS和macOS开发人员轻松有效地在其应用程序中实现机器学习。
什么是机器学习?
机器学习是使用统计分析来帮助计算机根据数据中的特征做出决策和预测。 换句话说,这是使计算机形成对现有数据集(称为“模型”)的抽象理解,然后使用该模型来分析较新数据的行为。
它是如何工作的?
使用Apple平台中的低级技术,Core ML能够提供快速有效的机器学习工具,以在您的应用程序中实施。 通过使用Metal and Accelerate可以充分利用设备上的GPU和CPU,从而实现无缝的速度,从而实现这一目的。 这也使机器学习可以在设备上工作,而无需为每个请求访问Internet。
1.批次预测
根据给定的一批输入要素值预测输出要素值。— Apple文档
![图片:https://cms-assets.tutsplus.com/uploads/users/1856/posts/32031/image/tutsplus_03_1.jpg Figure 1 Batch Prediction](https://i-blog.csdnimg.cn/blog_migrate/c309a773fe3a89f82e3cce73275d35af.png)
批处理预测值得注意,因为Apple在Core ML的第一个版本中没有它。 一目了然,批处理预测使您可以对一组数据运行模型并获得一组输出。
如果您有一个Core ML模型来根据是否包含花朵或树木对图像进行分类,并且想要对多个图像进行分类(例如300),则需要编写一个for-loop
来遍历每个图像并定期使用您的模型。
但是,在Core ML 2中,我们得到了Apple所谓的Batch Predict API 。 这使我们可以对一组数据进行多个预测,而不必使用for循环。 如果要使用它,只需致电:
modelOutputs = model.prediction(from: modelInputs, options: options)
在此示例中, modelInputs
是您要在其上运行模型的一组输入,但是我们将不在本文中介绍这些options
。 如果您想了解有关如何使用Batch Predict API的更多信息,请随时参考Apple的文档 。 虽然乍一看似乎并不重要,但实际上可以将模型的性能提高30%!
2.培训模式
将Create ML与Swift和macOS游乐场等熟悉的工具结合使用,可以在Mac上创建和训练自定义机器学习模型。 你可以训练模型来识别类似的图像,从文本中提取的含义,或找到数值values.-之间的关系,执行任务的苹果文档
![图片:https://cms-assets.tutsplus.com/uploads/users/1856/posts/32031/image/tutsplus_04.jpg Figure 2 Create ML](https://i-blog.csdnimg.cn/blog_migrate/360519d03842fd1ebbe84d85ed6adda4.png)
尽管Core ML一直是一个功能强大的平台,但创建自己的模型并不总是那么容易。 在过去,几乎必须要熟悉Python才能创建最基本的模型。 使用Core ML 2,我们还获得了Create ML,这是您创建自己的Core ML模型的简便方法。
但是,创建ML不仅限于基于图像的模型。 您甚至无需创建真正的Xcode项目,就可以在操场上训练不同类型的模型。 此外,您还可以测试这些模型并导出它们以在任何应用程序中使用。
图像分类器
使用卷积神经网络等模式,Create ML可以帮助您创建自定义图像分类器,以从给定图像中识别某些特征。 例如,您可以训练它以区分树和花。
或者,您可以将其用于更复杂的应用程序,例如识别植物的类型或狗的特定品种。 与任何机器学习模型一样,基于图像的数量,准确性也会提高。
文字分类器(NLP)
除了作为图像分类工具外,Create ML还可以帮助您创建基于文本的机器学习模型。 例如,您可以创建一个模型来告诉您特定句子中的情绪。 或者,您可以制作一个垃圾邮件过滤器,该过滤器使用文本的特征(即使用的单词)来检查字符串是“垃圾邮件”还是“非垃圾邮件”。
表格数据分类器
有时,在尝试对数据进行分类时,几个数据点或要素可能会有所帮助。 电子表格就是一个很好的例子,Create ML也可以基于CSV文件创建Core ML模型。
现在,您的Excel电子表格可用于创建一个模型,该模型根据买卖模式预测股市。 或者,它可以根据作者的姓名,书名和页数来预测这本书的体裁。
3.缩小模型尺寸
在应用程序中捆绑机器学习模型是Core ML入门的最简单方法。 随着模型变得越来越先进,它们可能会变大并占用大量存储空间。 对于基于神经网络的模型,请考虑通过为其权重参数使用较低的精度表示来减少其占用空间。— Apple文档
![图片:https://cms-assets.tutsplus.com/uploads/users/1856/posts/32031/image/tutsplus_02_1.jpg Figure 3 Neural Network Size Reductions](https://i-blog.csdnimg.cn/blog_migrate/bdb09a343c1caff3eb875609395f37f4.png)
随着Core ML 2和iOS 12的推出,开发人员现在可以将他们已经训练的模型的大小比原始大小减少70%以上。 型号大小可能是一个实际问题-您可能已经注意到,每次更新后,您的某些应用程序会变得越来越大!
这不足为奇,因为开发人员一直在不断改进其机器学习模型,当然,正如开发人员文档中所述,更高级的模型会占用更多的存储空间,从而使实际应用程序更大。 如果应用太大,某些用户可能会停止下载更新,并且可能会停止使用这些应用。
但幸运的是,你现在必须QUA ntize一个模型,它允许其大小显著减少的能力,以质量为基础的量你愿意放弃。 量化不是唯一的方法。 还有其他方法!
![图片:https://cms-assets.tutsplus.com/uploads/users/1856/posts/32031/image/tutsplus_01_1.jpg Figure 4 Weight Quantization](https://i-blog.csdnimg.cn/blog_migrate/39deddb0bf1ac7e00dd301712258a902.png)
转换为半精度
核心ML工具为开发人员提供了一种将重量减小到一半的方法。 如果您还不知道什么重量 ,那可以。 您需要知道的是它们与模型的精度直接相关。 您可能已经猜到,一半的尺寸等于一半的精度。
Core ML 2之前的模型只能选择用32位表示,这对于精度来说是很大的,但对于存储大小来说并不是理想的选择。 半精度将其减少到仅16位,并且可以大大减小模型的大小。 如果要对模型执行此操作,请访问文档以获取全面指南。
下载并编译
在设备上放置模型非常好,因为它可以提高安全性和性能,并且不依赖于可靠的互联网连接。 但是,如果您的应用程序使用多个模型为用户创建无缝体验,则可能不需要一次所有这些模型。
您还可以根据需要下载这些模型,并在现场进行编译,而不必将它们与应用程序捆绑在一起,从而增加了应用程序在用户设备上占用的空间。 您甚至可以下载这些模型并将它们暂时存储在用户的设备上,以避免多次下载相同的模型。
结论
在本文中,您了解了Core ML中的最新技术和最先进的技术,以及如何将其与上一年的API版本相结合。 当您在Envato Tuts +上时,请查看我们其他一些很棒的机器学习内容!
翻译自: https://code.tutsplus.com/articles/whats-new-in-core-ml-2--cms-32031