可以这么认为,现代 AI 是一系列通用目的技术的总称。现代 AI 技术,主要指基于机器学习(Machine Learning,简称 ML)/ 深度学习(Deep Learning,简称 DL)的一系列方法和应用,这只是 AI 领域的一个分支,也是目前发展最快、应用最广的分支。
机器学习 / 深度学习的原理可以这样理解:建立一个模型,给一个输入,通过模型的运算,得到一个输出。可以用于解决一个简单问题,例如识别图片是不是狗,也可以用来解决复杂问题,例如下棋、开车、医疗诊断、交通治理等等,也可以理解为,模型就是一个函数 f(x),上述过程,可以表达为:f(一张图片)= 狗 / 不是狗。
一个 AI 应用开发,大概分为三个阶段:
第一阶段,识别问题、构建模型、选择模型。AI 的开发和培养一个小孩子类似,不同的孩子有不同的爱好和特长,同样地,AI 也有很多模型 / 算法,不同的模型 / 算法适合解决不同的问题。所以,首先要识别你要解决的是个什么问题,然后选择一个合适的模型 / 算法;
第二阶段,训练模型。和培养小孩子一样,即使你发现小孩子有音乐天分,他也不可能天生就是钢琴家,他需要专业的训练。AI 开发也一样,选定模型 / 算法后,即使算法再好,也不能马上有效工作,你需要用大量的数据训练这个模型,训练过程中不断优化参数,让模型能够更为有效地工作。这个阶段 AI 模型的工作状态,叫做“训练”;
第三阶段,模型部署。模型训练结束后就可以部署了。比如一个人脸识别的模型,你可以把它部署在手机上,用于开机鉴权,也可以把它部署在园区闸机上,用于出入管理,还可以把它部署在银行的客户端上,用于业务鉴权,等等。如同一个孩子成长为钢琴家后,既可以在音乐会上演奏,也可以在家庭聚会上表演。AI 模型部署之后的工作状态,专业的说法,叫做“推理”。
通过上述 AI 开发过程的简述,可以发现,算法、数据和算力,是驱动 AI 发展的三大动力,三者缺一不可。
算法相当于是基因。基因不好,再努力也白搭。如何识别问题,并根据问题选择算法,甚至开发新的算法,是高端 AI 专家的核心竞争力;
数据相当于是学习材料。光基因好,没有好的教材,也教不出大师。AI 的训练,需要海量的、高质量的数据作为输入。AlhpaGo 通过自己和自己下棋,下了几千万盘,人类一辈子最多也就下几千盘。没有这样的训练量,AlhpaGo 根本不可战胜人类。自动驾驶,Google 已经搞了 10 年,训练了几十万小时,远远超过一个专业赛车手的训练量,但离真正的无人驾驶还差很远。另外,数据的质量也很重要,如果你给 AI 输入的数据是错的,那么训练出来的 AI,也会做出错误的结果。简单的说,如果你把猫的图片当做狗的图片去训练 AI,那么训练出来的 AI,就一定会把猫当做狗。数据的重要性直接导致了中国涌现了大批以数据标注为生存手段的公司和个人;
一个小孩,光有天分和好的学习材料,自己如果不努力,不投入时间和精力好好学习,绝对不可能成为大师。同样的道理,一个 AI 模型,算法再好、数据再多,如果没有足够的算力,支撑它持续不断的训练,这个模型永远也不能成为一个真正好用的模型。这就是为什么英伟达崛起的原因,这家公司的 GPU 芯片提供了最为适配于人脑神经网络的计算算力,现在国内工业界也有了类似的公司产品 - 华为的达芬奇芯片。
训练 AI 应用模型动手实践前
接下来,我们通过对一个 AI 应用模型的训练和推理过程介绍,开始动手实践。
训练模型需要算力,对于算力的获取,训练和推理可以根据自己的业务需求,选择使用公有云或自己购买带算力芯片的服务器,本文案我选择的是某花厂的 AI 开发平台,因为近期他们刚推出一个免费算力的推广活动,可以省下一笔训练费用。为了便于调试,我首先在自己的 CPU 个人电脑上编写代码、训练模型,这样做的缺点是模型收敛的时间长了一些。
疫情期间,对于民众来说,佩戴口罩是最有效防止被传染新冠病毒的方式,保护自己的同时也保护他人。所以本文的案例是佩戴口罩的识别模型训练。识别算法离不开目标检测。目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小。由于各类物体有不同的形状、大小和数量,加上物体间还会相互遮挡, 因此目标检测一直都是机器视觉领域中最具挑战性的难题之一。