文章主题:AI开发, 函数表达式, 机器学习, 数据模型
摘要:从AI开发模型、框架、工具,到提升开发效率的学习办法,为AI开发者逐一解答。
本文分享自华为云社区《10分钟了解AI开发的基本过程》,作者:简单坚持。
1、AI开发究竟在开发什么?
一个硬件开发者的工作成果是一个布满集成电路的服务器,开机就可以运行某种软件。一个移动端开发者的工作成果可以是一个手机APP,包括了大量二进制数据,可被麒麟芯片直接运行。一个AI开发者的工作成果则是一个模型,模型本质上是一个函数:无论这个函数有多么复杂,有多少个变量或者参数,AI开发都是试图找出这个函数的表达式。
2、AI模型(函数)是怎么开发出来的?
AI模型的本质是一种函数形式,要确定这种函数的确切表达方式,仅依靠逻辑推理是无法实现的,唯有通过大量的训练数据来进行优化。我们向机器提供现有的数据集,机器便会从中寻找一个最符合这些数据特征的函数。一旦有了新的数据需要预测,机器便可以借助该函数预测出新数据所对应的结果。因此,AI模型的训练过程实际上是一个寻找最佳函数表达式的过程,而这个过程需要依赖大量的数据和实践经验。
在谈论拥有特定智能能力的系统时,我们通常会提到三个关键元素:数据、算法和模型。数据的收集和处理是算法的基石,而模型的建立则是实现智能的关键。在开发过程中,系统会不断利用数据和算法来优化和完善模型,使其更接近现实世界的真实情况,这个过程被称为训练。训练的目标并非完全推导出真实情况,而是尽可能地逼近它。通过这样的过程,系统的智能水平得以不断提升。
3、AI模型的训练过程是怎么样的?
在本文中,我们将采用一种能够有效区分猫和狗图片的模型,以帮助读者更好地理解训练过程。首先,我们需要收集大量的标注过的图片,这些图片分别标记为猫或狗,这是我们进行训练的数据集。其次,我们需要设计一个合适的算法来构建模型。在构建过程中,我们可以选择使用浅层网络或者深层网络,而如果选择深层网络,就需要考虑深度如何,每一层包含多少个神经元,以及它们的功能等,这些问题都是我们在设计网络架构时需要考虑的,因为这关系到我们的预测函数的大致结构。总的来说,数据和算法是构建深度学习模型的两个关键要素,只有将这两个要素结合起来,才能实现对图像的准确识别。
在表达中,我们可以将函数 Y=f(W, X, b) 代表一个复杂的数学模型,其中 X 和 Y 是已知变量,而 W 和 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 的线下开发套件。
AI开发, 函数表达式, 机器学习, 数据模型
AI时代,拥有个人微信机器人AI助手!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
搜索微信号aigc666aigc999或上边扫码,即可拥有个人AI助手!