文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

AI开发者九问:10分钟了解AI开发的基本过程

2024-12-03 00:54

关注

1、AI开发究竟在开发什么?

  1. f(图片) = "How are you" 
  2. 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开发过程中最大的困难是什么?

8、怎么解决AI开发者的问题?

正如开发一个office软件,不可能费事到用记事本敲代码,你需要一个像visual studio一样的集成开发环境,需要一个像Git一样的代码管理工具,同理,开发一个AI模型,你也需要一个集成开发环境,而且需要一个版本管理工具。

提供给开发者代码编辑环境、语法检查、编译器等功能,一个AI的开发平台,同样也要能帮开发者标注数据、创建模型训练作业、部署模型等功能,有了开发平台,开发平台要帮助开发者把所有苦活累活都干完,让开发者聚焦在最核心的代码和算法上。

当然,要提供给开发者易获取、性能强、价格低的算力,提高模型训练的迭代速度。

9、有没有更快地提升AI开发速度的办法?

当然有。从根本上提升开发效率,挖掘到最本质,只有两个办法:重用和自动化,否则只能一行一行代码干起。

开发一个APP,可以从最基本的代码写起,可以复用开发者共享的开发包、函数等,华为云开源镜像站有大量的java开发包,就是这个意思,也可以复用一个完整的APP,修改下界面配色,就变成了自己的APP,这是复用。要保障APP的质量,可以手工测试,也可以用自动化测试工具。如果这些都不想做,可以也可以用一个现成的工具,用可视化的方法生成一个APP,当然APP的风格只能从工具已有的模板中选取。开发者一直在试图用各种办法,降低开发的工作量。

AI开发也是一样的。可以找现成的数据集、找现成的标注好的数据集,现成的算法和模型,用自动部署工具将模型部署到端边云。当然,也可用自动学习功能,只要提供原始数据,由系统帮助开发者完成模型构建、算法选择和自动训练,开发者可以直接看到结果。最简单的办法,就是寻找一个已经训练好的模型,在软件中直接调用。

基于此,一个好的AI开发平台,要从各个维度去提升开发效率,这些功能往往都是很多小细节,算力强、训练快,只是完成了必须的最基本的功能。

 

来源:博客园精华区内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯