尽管事情的进展让机器学习变得更加容易上手,但这一领域在过去一直因为技术门槛而受到限制。
在消费级应用中,机器学习的复杂性常常让人望而却步。例如,数据库的建立过程对不同背景的人来说有着截然不同的实现方式。对于Postgres的开发者来说,这可能意味着编写大量的C语言代码;而对于Rails开发者来说,只需执行简单的命令即可完成任务。这种差异反映了软件开发中的抽象层次,每个工程师可以根据自己的专业背景选择最适合的方式。
然而,长期以来,机器学习的抽象层相对匮乏,这限制了它的广泛应用。但现在,情况正在改变。新的项目专注于使机器学习更加易于使用。
首先,模型需要一个对开发者友好的界面。为了在实际应用中运用机器学习,开发人员需要具备设计模型的专业知识、足够的数据和资金来训练模型,以及对机器学习基础设施的理解来部署模型。这通常需要多个领域的专家共同协作,这是一个需要解决的瓶颈。
对于不具备机器学习背景的开发者来说,应该能够像使用哈希库那样轻松地使用机器学习,无需深入了解其背后的复杂性。幸运的是,现在这种情况正在逐步实现。
要让机器学习真正普及,开发人员需要掌握机器学习的基本概念,并能够利用现有的抽象层来构建应用程序。许多关键的抽象已经在研究中形成,这些抽象主要集中在以下几个方面:
简化模型训练:理想的状况是,对于许多机器学习应用场景,开发者不需要从零开始训练模型。借助迁移学习,开发者可以从少量数据出发,微调已有的开放源码模型。例如,使用gpt-2-simple库,开发者可以通过简单的命令行界面微调GPT-2模型:
$ gpt_2_simple finetune your_custom_data.txt
类似的工具,如Google的Cloud AutoML,提供了图形用户界面,使用户可以选择数据集并自动训练模型,无需编写代码。
简化模型预测生成:一旦获得了经过训练的模型,如何快速生成预测也是一个重要的问题。有许多项目提供了模型服务功能,例如TensorFlow的TF服务和ONNX的ONNX Runtime。此外,一些独立的开源项目也在解决这一问题,如Bert Extractive Summarizer,它允许用户轻松地生成文本摘要:
python
from summarizer import Summarizer
body = 'Text body that you want to summarize with BERT'
model = Summarizer()
model(body)
简化模型部署:最后,基础架构的设置是部署模型时的主要瓶颈。大型模型如GPT-2需要较大的服务器和更多的资源。为了解决这个问题,一些项目如Cortex提供了配置文件和命令行接口,使模型部署变得更加简便。
总之,机器学习背后的基础数学仍然是复杂的,但并不意味着开发者需要成为机器学习专家才能使用它。随着更多简化工具的出现,机器学习将逐渐变得更容易被广大开发者接受和使用。