摘要:从AI开发模型、框架、工具,到晋升开发效率的学习方法,为AI开发者逐个解答。
本文分享自华为云社区《10分钟理解AI开发的根本过程》,作者:简略保持。
1、AI开发到底在开发什么?
- 一个硬件开发者的工作成绩是一个布满集成电路的服务器,开机就能够运行某种软件。
- 一个挪动端开发者的工作成绩能够是一个手机APP,包含了大量二进制数据,可被麒麟芯片间接运行。
- 一个AI开发者的工作成绩则是一个模型,模型实质上是一个函数:
f(图片) = "How are you"f(猫图片) = "Cat"
无论这个函数有如许简单,有多少个变量或者参数,AI开发都是试图找出这个函数的表达式。
2、AI模型(函数)是怎么开发进去的?
AI模型实质是一个函数,想要找到这个函数精确的的表达式,仅凭逻辑是无奈推导进去的,而是训练进去的,咱们喂给机器目前已有的数据,机器就会从这些数据里去找出一个最能满足(专业术语称为拟合)这些数据的函数,当有新的数据须要预测的时候,机器就能够通过这个函数去预测出这个新数据对应的后果是什么。
对于一个具备某种智能能力而言,个别具备以下因素:数据+算法+模型,开发的过程,就是一直地用数据和算法使得模型越来越迫近真实情况,留神是迫近而非推导,这个过程称为训练。
3、AI模型的训练过程是怎么样的?
咱们来用一个可能辨别猫和狗图片的模型来帮忙了解训练的过程:“数据”就是咱们须要筹备大量标注过是“猫”还是“狗”的图片;“算法”指的是构建模型时咱们打算用浅层的网络还是深层的,如果是深层的话咱们要用多少层,每层有多少神经元、性能是什么等等,也就是网络架构的设计,相当于咱们确定了咱们的预测函数应该大抵构造是什么样的。
咱们用Y=f(W,X,b)来示意这一函数,X是已有的用来训练的数据(猫和狗的图片),Y是已有的图片数据的标签(该图片是猫还是狗), W和b是什么意思呢?一开始,咱们的确不晓得,这两个参数是须要机器学习后本人找进去的,找的过程也就是训练的过程。
“模型”指的咱们把数据带入到算法中进行训练,机器就会去一直地学习,当机器找到最优W和b后,咱们就说这个模型是训练胜利了,这个时候咱们的函数Y=f(W,X,b)就齐全确定下来了
而后咱们就能够在已有的数据集外给模型一张新的猫或狗的图片,那模型就能通过函数Y=f(W,X,b)算进去这张图的标签到底是猫还是狗,这就是推理。
简略总结下:不论是最简略的线性回归模型、还是较简单的领有一亿个参数的深度神经网络模型,实质都是寻找一个可能良好拟合目前已有数据的函数Y=f(W,X,b),并且咱们心愿这个函数在新的未知数据上也可能体现良好。
4、AI为什么要强调大量数据?
因为只有数据量足够大,模型才可能学习到足够多且精确的辨别猫和狗的特色,能力在辨别猫狗这个工作上,体现出足够高的准确性;当然数据量不大的状况下,咱们也能够训练模型,不过在新数据集上预测进去的后果往往就会差很多。
假如辨认猫的模型要十分精确,就须要各种光照条件、各种背景、各种花色的猫的照片,不仅要有波斯猫,还要有加菲猫,直到模型蕴含了咱们能想到的各种猫的特色,一个人脸识别模型,大概须要几百万张照片,能力达到可用,驰名的Imagenet数据集,大概蕴含了1400万张图片,极大中央便了开发者。
5、在AI开发过程中一个好的开发工具能够帮忙开发者做什么?
假如没有一个现成的开发平台,首先你须要学会罕用的AI开发语言python,python是整个过程并不耗精力的环节,其次你须要学习传统机器学习和深度学习相干算法,这块算是破费最多精力和工夫的环节,而后尽可能去了解和推导算法,而后用python代码去实现算法再训练模型,代码能力很重要,不然你的模型都建不起来。
而后你发现了一个开发框架,华为MindSpore或者谷歌Tensorflow,你会发现并不需要那么高的数学门槛,不是说要深刻理解算法能力更好训练出好模型,模型损失函数优化办法MindSpore/Tensorflow都内置好了,而且只须要简略的调用就好了,如果说MindSpore/Tensorflow是能够把一个模型代码量大大减少的框架,那么Keras就是让模型代码量能够少到惊人的框架,例如下面的猫狗分类器,15行代码就能够搞定,几十行代码就把一个领有着卷积层、池化层和全连贯层的较高级优化办法的深度学习网络架构写进去。
一个开发框架就像安卓框架为手机APP开发者提供的很多根底性能,如果没有这个框架,一个简略的给好友发送图片的性能,你须要间接和操作系统的各个底层功能模块打交道了。
6、AI开发,有了开发框架就够了吗?
当然不是,一个开发框架,只是帮开发者做了一些开发者没必要实现的局部,或者实现起来代价太大的局部,一个残缺的AI开发过程,从筹备数据、数据预处理、数据标注、抉择算法、训练、调参、部署,这和一个一般的APP开发的过程差不多。如同生产一辆汽车,一个自动化、高科技的总装车间是必不可少的,但冲压、涂装车间也制约着汽车的生产效率,那么制约AI开发效率最头痛的是什么,请看下一个问题。AI开发过程中最大的艰难是什么?
7、AI开发过程中最大的艰难是什么?
- 要筹备大量的数据,后面曾经提过,更可怕的是数据标注,据统计,数据处理和标注环节大概占整个开发周期的70%。所谓标注,就是给数据打标签,通知机器一张图片到底是猫还是狗,标注是一件在AI开发者看来技术含量非常低的工作,曾经属于劳动密集型产业,业界有大量的第三方公司,专门从事数据标注工作。以主动驾驶为例,车头上的摄像机在实时拍摄车前的所有画面,主动驾驶标注的过程要标注前车、障碍物、行人、信号灯、指示牌、批示线等等,这个过程如果齐全依赖人工标注,主动驾驶将永远难以商用。
- 要重复迭代训练,训练并不是欲速不达,要重复批改各种参数,使得模型的准确度逐渐晋升,这个过程,目前须要丰盛的教训,如果没有短缺的算力,训练一次,期待三天,而后调参,再期待三天,如果要迭代20次,这个过程是很耗费人的意志。所以,即便不思考老本因素,算力也是制约AI遍及最大的问题。
8、怎么解决AI开发者的问题?
正如开发一个office软件,不可能麻烦到用记事本敲代码,你须要一个像visual studio一样的集成开发环境,须要一个像Git一样的代码管理工具,同理,开发一个AI模型,你也须要一个集成开发环境,而且须要一个版本管理工具。
提供给开发者代码编辑环境、语法查看、编译器等性能,一个AI的开发平台,同样也要能帮开发者标注数据、创立模型训练作业、部署模型等性能,有了开发平台,开发平台要帮忙开发者把所有苦活累活都干完,让开发者聚焦在最外围的代码和算法上。
当然,要提供给开发者易获取、性能强、价格低的算力,进步模型训练的迭代速度。
9、有没有更快地晋升AI开发速度的方法?
当然有。从根本上晋升开发效率,开掘到最实质,只有两个方法:重用和自动化,否则只能一行一行代码干起。
开发一个APP,能够从最根本的代码写起,能够复用开发者共享的开发包、函数等,华为云开源镜像站有大量的java开发包,就是这个意思,也能够复用一个残缺的APP,批改下界面配色,就变成了本人的APP,这是复用。要保障APP的品质,能够手工测试,也能够用自动化测试工具。如果这些都不想做,能够也能够用一个现成的工具,用可视化的办法生成一个APP,当然APP的格调只能从工具已有的模板中选取。开发者始终在试图用各种方法,升高开发的工作量。
AI开发也是一样的。能够找现成的数据集、找现成的标注好的数据集,现成的算法和模型,用主动部署工具将模型部署到端边云。当然,也可用主动学习性能,只有提供原始数据,由零碎帮忙开发者实现模型构建、算法抉择和主动训练,开发者能够间接看到后果。最简略的方法,就是寻找一个曾经训练好的模型,在软件中间接调用。
基于此,一个好的AI开发平台,要从各个维度去晋升开发效率,这些性能往往都是很多小细节,算力强、训练快,只是实现了必须的最根本的性能。
10、华为将提供什么开发工具给开发者?
- ModelArts,一个AI开发平台 ,用于AI模型开发
- HiLens,一个视觉AI利用开发平台,用于AI利用开发,利用外面的模型由ModelArts提供。
以上两款产品以云服务的形式在华为云EI提供服务。
Atlas 200 developer kit(开发板)是ModelArts 的线下开发套件。
点击关注,第一工夫理解华为云陈腐技术~