当你走在大街上,迎面窜出来一只狗。这时候,你的大脑会告诉你,这是一只狗,而且可能具有攻击性,请远离它。对周遭任何环境的变化进行感知,是我们与生俱来的能力。
那么,你有没有想过,你的大脑是如何判断出来这是一只狗的呢?即使你从未与这只狗见过面,也不晓得它的品种,但你过去“阅”狗无数,同样与生俱来的学习能力,让你可以根据它的大概轮廓外形、外貌长相,甚至奔跑的速度,就能判断这是一只狗。
而如果换作是近些年帮助人类做许多事情的AI,识别出来一只狗的难度可能要超乎你的想象。比如,我们让一只哈士奇分别展现一下正面、背面、侧面,亦或者让它躺下、坐下、直立,AI识别这些可能都很无奈,那么,你就需要告诉AI:这些都是哈士奇。
众所周知,世界上可能有很类似的拆家方式,但并没有两只完全一样的哈士奇,所以,你还需要让AI见识更多的哈士奇、见识更多的狗,让它能够对于狗有一个判断,这叫长见识,也叫学习。对于AI来说,各种姿势和各种拆家方式的哈士奇都是数据,也是AI的训练集,只有经历了长时间、多模型的训练之后,AI才能真正拥有“智能”。
AI是如何看世界的?
当我们在公司出入工区,有些人需要刷卡,有些人则很潇洒地走到闸机跟前,闸机就自动打开了。这是因为闸机有人工智能的加持,它能够获取经过的人脸,再用人脸识别的算法去认证,在闸机眼前,你就成了“最潇洒的仔”;当我们在一些电商平台购物,跟客服沟通的过程中,你会发现你给的一些问题,客服能够很快地进行回复,但这时候如果你仔细体会,你可能会发现,其实跟你聊天的并不是一个人,这是NLP技术在聊天机器人的一个应用;当我们在微信上接到语音信息后,机器可以把声音转化成文字,并呈现到屏幕上 。
在我们日常生活中,AI早已经走进了我们身边,并观察着我们的“一举一动”。但我们所知的并非是AI 的全部,AI在各行各业,都发挥着越来越大的作用。
◉ 在金融领域,许多量化交易的公司,用AI算法从事股票买卖。保险公司在对购买保险的人进行评估时,会用AI算法来评估风险;
◉ 在制造业,AI也有着许多应用,比如在联想自身的工厂,通过计算机视觉技术监测笔记本、手机的屏幕缺陷;
◉ 在科学研究方面,一些科学家利用AI做灾难预测,还有一些科学家利用AI发现新材料和新化学品。
那么,AI到底是什么原理呢?我们以计算机视觉技术与人眼作比较,当人眼看到一只狗,这只狗会先进入我们的眼睛,经过视网膜成像,这张照片再经由大脑后方的视神经去解读、去“认证”这到底是不是一只狗,这个过程其实是神经在传导信息,神经元与神经元之间的连接相当复杂。而如何让AI借鉴人的神经去设计,其中就涉及到一个经典的模型——卷积神经网络。
所谓卷积神经网络,其实是拿卷积运算去模拟神经元的连接,当一张图经过许多卷积运算之后,会生成新的一层网络,然后再重复这个过程,一直到最后一层输出一个结果。这个结果就是AI对于一只狗的确认率,比如,AI会告诉你,你拍摄的这张图像有90%的概率是一只狗子,因为从它对这只狗的认知来说,它也不能确定肯定以及一定地告诉你。整个计算过程,从最开始,AI可能辨别的是一些很基础的信息或者特征,比如狗的轮廓,越往后,其识别的信息或者特征越复杂,比如,这只狗的毛色、品种,或者它识别出这是一只狗的鼻子或者耳朵,直到最后,它拿到信息——这是不是一只狗,这就是AI看待世界的一种方式。
当然,不管我们如何去用AI算法去模拟人的神经,对比真正的神经元,它的计算单元的计算能力和单元之间的连接都相对比较“低配”。
如何让“低配”的模拟神经元拥有更高识别率地去认识一只狗,这就涉及到了“炼AI”。
如何炼AI,目前业界有两个观点。
一是以模型为中心,当前的人工智能模型只是比较复杂的统计和模式匹配,距离理想的人工智能还有很长的路要走。人工智能的进步依赖于模型的不断升级;
二是以数据为中心,一个机器学习团队80%的工作应该放在数据准备上,确保数据质量是最重要的工作。如果更多地强调以数据为中心而不是以模型为中心,那么机器学习的发展会更快。
如果把整个AI的开发者看作是一个金字塔结构,那么金字塔塔尖的可能是名校的博士或者是大厂的资深研究员,他们更适合去设计出更好的模型;金字塔中下部的人,则应该把更多的精力放在以数据为中心,更好地准备数据、处理数据,标注数据之后使用别人做好的模型进行训练,让这些模型在各行各业发挥更多作用,这种做法会更有效率。
“炼AI”不仅是一个动词,还是一个名词,联想研究院通过自研,开发出了一款开发AI的平台,叫作“炼AI大师”。炼AI大师既支持能看懂Python代码的专家级用户使用,也支持没有太多经验的用户去训练AI。
当AI专家去炼AI时,他们会在炼AI大师上先申请一个预先配置好环境的工作空间,工作空间可以灵活的搭配计算资源。然后他们就可以在工作空间中写代码和运行程序了。炼AI大师的工作空间可以由用户进一步的做环境定制化。如果用户需要在定制化后的环境下同时用不同的超参数分别运行代码,或者想把自己配置好的环境分享给同事去炼AI的话,那么可以在平台上对工作空间进行克隆、分享等操作,帮助AI专家节省环境配置的时间。
对于没有太多经验的用户,炼AI大师也能帮助他更好地炼AI。我们知道,数据、算力和算法是AI的三大基石。在数据处理方面,炼AI大师能够帮用户创建数据集,并支持多类不同的场景。这些场景分门别类针对AI的不同任务,以图片分类为例,辨别一只狗的图片到底是不是一只狗,或者说它是一只猫还是一只鸟,都属于图片分类的任务。再以图片分割为例,炼AI大师能够帮助你描绘一个图片里的人的轮廓。此外,还有检测一个物体在图片里的位置等不同的场景。
如果你想从宏观上了解数据集,炼AI大师独步江湖的数据可视化功能就派上用场了。用放大镜工具,你可以看到数据集里有什么数据,炼AI大师能帮用户将相似的图片聚在一起,当一堆鸟的照片中混进去一只猫,炼AI大师可以将这只猫单独“拎出来”。如果给某一个数据加上了某个标签,那么可以用标签传播功能给所有和这个数据相似的数据自动打上同样的标签。
我们在炼AI时分以下几步。第一步是训练,标准的训练流程要先训练模型,然后经过模型评估之后进入到部署阶段并提供API服务让别人使用。模型训练是个漫长的过程,为了解决这个问题,炼AI大师内置了分布式训练,比如用户可以使用20个GPU去训练一个模型,达到20倍的加速。
分布式训练的主要瓶颈在于通信开销,炼AI大师通过无等待后向传播,在计算的同时尽早发送数据,并且在发送数据时进行梯度压缩,减少通讯负载。还创新性的通过基于动态延迟的循梯度更新的策略,降低通信频率,实现了接近线性的加速比。
炼AI大师提供了快速的自动化模型搜索(AutoML)功能
通常情况下,AutoML搜索一个模型可能要好几天甚至好几周,联想研究院在设计炼AI大师时做了许多前期的工作。一般,大家是将常用的模块(比如卷积层)先做好,然后像搭积木一样组装,再用启发式的方式组装出符合目标大小、精度的模型。而炼AI大师在做这一步时,更进了一步,相当于先构造一个空间,在这个空间的每个关键点,都事先搜索出了模型的架构。当用户给到炼AI大师一个需求,炼AI大师就能看到用户的需求落在该空间的点,并匹配现有的、离其最近的架构,动态生成一个满足用户需求的模型结构。相比较一般的开发AI的平台,炼AI大师能够在更快的时间内搜索到一个满足用户需求的模型。
1963年,美国的两位科学家Held & Hein用两只猫做了一个实验。
他们将两只刚出生的猫分别放在两个不同的篮子里,左边的这只猫,在一个篮子里,双脚不挨地,不能自主行走;右边的这只猫双脚挨地,能够自由地左右行走或者转圈。当右边的猫行走时,它会带动左边的猫一起。
两个月之后,他们将两只猫“解救”了出来,右边的猫像正常的猫一样可以行走或者蹦跳,而左边的猫却跌跌撞撞,它不知道它的面前有没有障碍,如果把它放在高处,它会直接摔下去,尽管它的眼睛可以成像,但它无法理解它看到的东西,所以,这只猫跟瞎了没有什么区别。
这个实验告诉我们两个事情,第一,对于神经来说,反馈非常重要,当你与外界产生互动,外界的反馈会给你的大脑造成一些变化;第二,不管是人还是动物的神经元,他都会跟随外界的反馈产生连接,连接可以随着外界刺激建立,也可以随着刺激减少而断开,甚至有可能永久断开。
基于这个启发,炼AI大师做了一个模型压缩的工作,先对模型进行稀疏化操作,然后把权重很小的部分去掉。这样就可以在基本不损失精度的情况下将它的体积压缩到很小,比如,在一个具体的实验中,炼AI大师能够将一个100多兆的模型压缩到30多兆。
训练好模型后还需要一个模型评估的过程,将与训练集类似的新数据输入模型,模型测试会自动根据分类、目标检测等不同任务的评估指标,评估AI模型是否已经炼好。
已经炼好的模型可以在炼AI大师上直接一键启动服务并对外提供API调用,也可以下载SDK并部署到各种设备上。
炼AI大师不仅服务于联想自身从事算法开发的人员,也帮助联想的客户进行算力管理,一方面提高了客户的算力利用率,另一方面节约了客户运维和开发的人力。未来,联想希望,炼AI大师能够面向整个社会,让更多人、更多企业学会炼AI,让AI在更多的行业赋能,让世界变得越来越美好。
,