呼叫开发人员,陷入开发的桎梏?CreateML了解一下

点击上方关注,All in AI中国

在最近的WWDC期间,苹果公司推出了他们最新的工具CreateML。作为一名ML爱好者,作者对CreateML的印象非常深刻,研究一下它的能力到底有多强大是非常值得的。

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

1.对CreateML的简述(如果你已经看了WWDC相关文件,可以跳过)

CreateML是一个全新的框架,旨在帮助开发人员轻松使用SWIFT和Xcode快速地构建机器学习模型。目前,它能够处理3种类型的数据:图像、文本和表格数据。工作流程非常简单,你只需要一组训练数据,并编写几行代码,就会有神奇的事情发生了,小的CoreML模型已经支持在你的应用程序中使用。苹果承诺这项技术将大大缩短训练时间。如果有1万张图像,它会在几分钟内计算完(苹果公司总是不提供具体的细节)。训练很快,因为(在图像分类器的情况下)苹果使用迁移学习。我们不知道神经网络的基础是什么,但是在WWDC文件中,Inception-v3被认为是图像分类解决方案中一个最先进的例子。

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

2.WWDC演示文稿简述

在WWDC期间,工作人员展示了我们如何轻易地构建不同的模型,首先是图像分类器,只使用几行代码构建:

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

第二个例子是用文本分类器决定文本是"正的"的还是"负的",就像在图像案例中,只有几行代码就足以训练它:

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

对作者来说,最有趣的演示是最后一个演示,用表格数据演示工作。在例子中,CreateML使用新的数据格式,称为MLDataTable,乍一看它只是普通数据矩阵的包装器,然而它内置了CSV和JSON解析器。

在表格数据的情况下,CreateML提供了两种方法:简单的方法和稍微复杂一点的方法。首先看一看最简单的房价公式,它看起来与前面的两个例子几乎相同:

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

表格数据问题可以通过使用MLRegressor来解决,使用MLClassfier进行分类(取决于情况)。但这并不是真正有趣的地方,在处理表格数据时,你可以手动决定将使用哪种分类/回归方法,因为CreateML支持行业中最常用的方法:

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

3.现实生活中的CreateML

为了便于更多人的理解,WWDC的演示总是尽可能简单。然而,在机器学习的情况下,事实是某些东西可以用简单的例子,但这并不意味着它将与一个更复杂的例子一起工作。CreateML的目标用户是开发人员,而不是ML专家或数据科学家,所以作者决定像普通的ML新手一样行事,不对数据进行深入分析,只是将数据集放入CreateML并让它发挥作用。作者决定以Kaggle为基准,将CreateML的成果与Kagglers的成果进行比较,也顺便检查一下CreateML有多快。在许多情况下,一个好模型的关键是对数据的理解和预处理。如果开发人员只导入csv并运行MLRegressor,就期望获得一个高质量的成果,他可能会有失望。正因为如此,作者决定选择一些例子,这些例子接近现实生活中的问题,而且不算复杂。

你可以把作者的Macbook Pro配置作为参考:

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

作者从测试图像分类器开始,为了测试,作者使用了"植物幼苗分类"(https://www.kaggle.com/c/plant-seedlings-classification),其目的是从图像中确定幼苗的种类。数据集比演示中显示的数据集大得多,它包含了4300多幅图像,而作者只使用了2行代码,结果如下所示:

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

作者对这个结果的印象极其深刻,使用1.7GB的训练数据,和5分钟的时间就训练了一个相当好的模型。还有没有更好的方法来构建模型,并将其应用到iOS/macOS应用程序中以验证?作者不这么认为。作者表示,在当前的时间段里,苹果已经做到了极致。值得注意的是,CreateML会自动创建测试集,因此开发人员不必手工拆分这些数据,这无疑会简化一些不必要的流程。

然而,并不是每一个人都会把它用于构建应用程序。所以让我们来看看机器学习中另一个非常常见的案例,数据分析和分类、回归问题。在这里,作者以"泰坦尼克号"为例(https://www.kaggle.com/c/titanic)。

作者下载了csv文件,创建了MLClassfier

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

好的,它不起作用,CreateML需要"完全干净"的数据。这不是什么大问题,可以使用Python删除空行,但是这也将训练数据量从891个例子减少到183个,但至少它是有效的。

最后得到了工作模型:

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

作者对CreateML的工作效率又有了新的认识,不得不承认它速度快,效率高。

作者进行的第二次尝试是对食堂收入的预测。(https://www.kaggle.com/c/restaurant-revenue-prediction/data)

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

呼叫开发人员,陷入开发的桎梏?CreateML了解一下

在这种情况下,CreateML决定使用Boosted Tree Regressor,然而结果却出人意料的低。当然,原因可能是这份数据还有尚未公开的部分。但是CreateML仍然能稳定的发挥作用,甚至可以在几秒钟内与一些模型相媲美。这是大多数开发人员需要的。

4.CreateML的利弊

优点:

  • 目前,这是为IOS/MacOS构建ML模型的最简单方法,尤其是用于应用程序的证明,或者那些使用相对简单数据的应用程序。
  • CreateML为成千上万的IOS/MacOS开发人员打开了ML世界
  • 非常有效和易于使用

缺点:

  • 很少有优化和调试最终模型的方法
  • 不知道用什么模型对图像进行分类
  • 没有数据预处理工具(但很明显,苹果的目标人群不是数据科学家,而是软件开发人员)

5.作者的意见

看起来CreateML确实是一个很好的工具,特别是对于那些根本不使用机器学习的开发人员来说,它速度快,效率很高,而且非常容易开始。如果你是iOS/MacOS开发人员,值得尝试。

6.未解决的问题

由于所有的权重都存储在iOS/macOS中,CreateML构建的CoreML模型只包含最后的、重新训练过的层(incep-v3),那么关于大型ML模型的图像分类问题是被隐藏了吗?