想象一下,您想创建一个软件来完成一项任务。有两种主要方法和一种中间方法。
代码方法
第一种方法是为软件编程来完成任务,我称之为 "代码方法"。在这种情况下,你知道所有可能发生的交互,并在程序中对其进行预测。最基本的例子就是 "If then "序列,在这个序列中,你告诉计算机,如果发生这种情况,那么就做这件事。例如,如果点击了这个按钮,那么就显示这个屏幕。
代码法不使用任何数据,也不涉及任何训练。无论数据如何,编程序列都会确定无疑地发生。需要说明的是,使用代码法创建的程序可以使用实际代码编写,也可以使用可视化或类似工具。
火车法
第二种方法是利用大数据训练软件完成任务,我称之为 "训练法"。在这种情况下,您需要编写一种算法,如神经网络,让软件在数据上接受训练。然后,您将软件释放到数据中,计算机通过反馈回路学习如何完成任务。例如,你可以通过对猫的图片进行训练,让软件学会识别猫。
当然,训练法是人工智能的精髓。它被称为大数据方法,因为高质量的训练数据越多,结果就越好。要获得合理的结果,需要最少的训练数据。
就其最纯粹的形式而言,训练法可以使用非结构化数据,而且学习本身是以无监督的方式进行的。这意味着,人类根本无法帮助软件进行训练。
算法将从隐含上下文(而非显性标签)中了解给定图片是否是猫。例如,平台上的普通用户可能会临时自发地在照片的描述中加上猫这个词,猫这个词可能出现在图片的文章中,或者如果是视频,当猫出现时,人们可能会说猫这个词。当然,所有这些用户数据都是完全非结构化的(这意味着混乱),算法需要从这些混乱的数据中找出猫是什么。
当然,无监督算法也有潜在的巨大优势。这可能意味着人类在标注和分类数据方面将节省大量精力。要准确标注十万张猫的图片并不是一件小事(或令人兴奋的事)。
问题
非结构化训练法的一个主要问题是,它需要更多的数据。如果没有数据,就无法用这种方法进行训练。有监督的方法也需要大量数据,因此也存在同样的问题。
当然,这也是人们寻找应用人工智能的机会,而不是将人工智能应用于一切的原因。当有大量数据可用于训练时,人工智能算法才能发挥最大作用(或者说,它们能产生大量数据--就游戏而言)。
非结构化、无监督方法的另一个问题是,在手头的数据上编写和测试算法要困难得多。在处理非结构化数据时,算法需要比数据整齐分类时更加复杂。
有监督的方法在如何对数据进行分类的过程中增加了人类的有意性,但它在很大程度上仍然是一种训练方法,一种大数据方法。了解算法的人类可以为数据贴标签,从而减少算法的工作量。
小数据方法
有一种方法介于代码方法和训练方法之间,我称之为 "小数据方法"。这就是我在标题中提到的小数据方法。将代码和训练技术相结合,可以大大减少训练算法所需的数据量。
就小数据方法而言,开发人员会编写一个交互模型,但随后会在比大数据方法所需的小得多的数据集上对该模型进行训练。这使得模型的训练速度比纯训练方法快得多。
当然,如果建立模型和训练数据所需的时间远远少于收集数据和训练算法所需的时间,那么这种小数据方法也是有意义的。
在有些情况下,小数据解决方案可以让我们做一些目前不可行的事情。如果首先不存在训练方法所需的数据,那么小数据方法就是唯一可用的方法。在这种情况下,算法需要在人工创建的数据上进行训练。通常情况下,手工创建数以万计的记录是不现实的。
目前,包括botpress.io 在内的人工智能公司正在研究小数据方法,我预计它将在未来几年成为主流技术。