人工智能(三)AI是怎么学习的

一、引言

    通过之前的人工智能架构分析和Transformer模型的原理介绍,读者应该对人工智能有了一个初步的了解。

    但是很多读者不是很想知道那么多软件方面的专业知识,通过大家的问题,大家关心的主要是三个方面:

  • ai是怎么学习的,不停的搜网上的信息进行学习,然后人工再问他一些问题,根据答案进行正确错误提示调整吗?

  • 在线跟ai的对话会让ai实时学习进步吗?

  • 怎么在ai时代下保持自己的竞争力?

    作者在这里用一些简单的示例来说说自己的理解和摸索

二、AI怎么学习

    以我们学生的时候怎么学习进行类比,首先需要有知识载体也就是书,对ai来说就是数据集。

    其次需要大脑记忆和逻辑分析,这就是ai使用大量的硬件资源的原因,但是以前的硬件资源也很多,为什么就达不到现在ai的效果?这是多方面结合的原因,神经网络和深度学习框架的不断迭代让ai对于数据的存储和结合非常类似于人脑,transformer架构的演进对神经网络、卷积等等的应用远超之前。但是这些偏向于技术层,有兴趣的可以看作者之前分析transformer的文章。

    还有很重要的,分词断句,学生从小也是学123,再学古诗词的,首先得知道这个字什么意思、这个逻辑公式是什么(比如1+1=2),大家才能继续往下学,所以分词就是一个很重要的事情,对于ai来说也是一样。

    所以在作者看来最基础的就是书籍=数据集、大脑=神经网络+深度学习、识字断句=分词器

    还有一个很重要的就是考试、考试是为了熟练记忆和知道对错,ai记忆比人狠多了,但是他是不知道对错的,对错都是在数据集里面定好的

图片

    作者在这一章主要通过数据集和分词的剖析来说明ai是怎么学习的!

1、数据集

    首先要明确的是,目前的ai不具备实时学习的能力,也就是说你对他的提问和对问题的修正反馈只会被记录,但是不会被ai更新,这也是为什么目前的ai都会有个截止时间,表示他收录了什么时间段的数据。

    为什么会这样呢?那就要看他收录的数据了,训练所用的数据集是很严苛的,举个例子:来自零一万物、中科院深圳先进技术研究院,和M-A-P等机构的研究者们制作的一个数据集COIG-CQIA是这样的

图片

    每个列的含义,都有严格的把控,其他数据集也差不多,各种语言、领域的,比如评论电影、感情分析等等,要给出一份合格的数据集不是一个简单的事情:

instruction:指示或指导,描述了给定任务的具体要求或指导。
input:输入,表示用户或系统提供给模型的问题或查询。
output:输出,表示模型对于给定输入的预测或生成的答案。
task_type:任务类型,描述了数据集中的问题类型,例如问答、分类、生成等。
dict:字典,表示数据集中可能包含的词典或知识库,用于支持模型的答案生成或推理。
domain:领域,表示数据集中问题和答案所涉及的特定领域或主题。
metadata:元数据,包含与数据集相关的其他信息,例如数据来源、创建日期、数据格式等。
answer_from:答案来源,表示答案是从哪里获取的,例如从知识库、专家、互联网等。
human_verified:人工验证,表示答案是否经过人工验证或审核,以确保其准确性和质量。
copyright:版权信息,表示数据集中的内容是否受版权保护,以及使用数据集时需要遵守的版权规定。

    所以你在提问的时候那些不知道是否正确、不知道是否积极的反馈,大模型是不会信的,这是数据集方面的高要求导致。但不仅仅是这个问题。

     加载数据集很简单,几行代码加上数据集的路径就可以,​​​​​​​

from datasets import load_dataset
raw_datasets = load_dataset("glue", "mrpc")raw_datasets

    然后可以获得一个DatasetDict对象,其中包含训练集、验证集和测试集。每一个集合都包含几个列(sentence1, sentence2, label, and idx)以及一个代表行数的变量,即每个集合中的行的个数(因此,训练集中有3668对句子,验证集中有408对,测试集中有1725对)。​​​​​​​

DatasetDict({    train: Dataset({        features: ['sentence1', 'sentence2', 'label', 'idx'],        num_rows: 3668    })    validation: Dataset({        features: ['sentence1', 'sentence2', 'label', 'idx'],        num_rows: 408    })    test: Dataset({        features: ['sentence1', 'sentence2', 'label', 'idx'],        num_rows: 1725    })})

    麻烦的在于后面的训练转换,时间很长,cpu、内存资源消耗很大,甚至普通cpu都不行,要gpu

2、训练

    模型训练是一个非常复杂的过程,上一章说过他在把大量的数据集转换成多维向量,预训练即使是十几亿参数的小模型都可能要几周,微调时间少得多,但是几天也是至少的

    预训练是训练模型前的一个操作:随机初始化权重,在没有任何先验知识的情况下开始训练。它需要大量的数据,而且训练可能需要几周的时间。

图片

    微调只需要有限的数据量:预训练模型获得的知识可以“迁移”到目标任务上,因此被称为迁移学习。

图片

    所以在线学习不可能重新训练数据集,只可能微调,那么他会微调吗?不会,有这些问题:

  • 数据隐私和安全性:在线对话数据通常包含用户的个人信息和敏感数据,直接将这些数据用于模型微调可能涉及隐私和安全问题。保护用户数据的隐私和安全是非常重要的,因此需要谨慎处理和使用用户数据。

  • 数据分布的变化:在线对话数据通常具有特定的领域和上下文,与预训练模型的数据分布可能存在差异。直接使用在线对话数据进行微调可能导致模型在其他领域或场景下的性能下降,因为模型过度适应了特定的对话数据。

  • 训练效率和成本:大模型的微调通常需要大量的计算资源和时间。在线微调需要实时收集和处理大量的对话数据,并进行模型更新和重新训练,这对于实时应用来说可能是不可行的。此外,在线微调还需要额外的成本来维护和管理在线训练系统。

  • 模型稳定性和可控性:大模型的微调可能会引入不稳定性和不可控性。在线微调可能导致模型在不同的对话场景下产生不一致的行为,难以控制和调试。预训练模型经过离线训练和验证,具有较好的稳定性和可控性,更适合用于大规模应用。

3、分词

    我们学习的时候是从字开始,慢慢学更难的字,更长的句子,但是我们看作文、聊天的时候其实还是不断再拆分然后理解的。

    而ai只认识数字,因此分词器(也称标记器)需要将我们的文字转换为数字数据。拆分不是一个简单的事情,比如按照符号拆分、按照空格拆分?但是不应将常用词拆分为更小的子词

图片

    举个例子,jieba是一种常用的中文分词工具,它将中文文本按照词语进行切分,给他“我是胖当当技术,喜欢吃西瓜”,他的分词过程是什么呢。

分词器的原理和过程如下:

  1. 文本预处理:首先,jieba会对输入的文本进行预处理,包括去除空格、标点符号等无关字符,以及处理特殊字符和数字。

  2. 正向最大匹配:jieba采用正向最大匹配算法来进行分词。该算法从左到右遍历文本,根据词典中最长的词语长度,尝试匹配最长的词语。如果匹配成功,则将该词语作为一个分词结果,并从文本中去除该词语。如果匹配失败,则将当前字符作为一个分词结果,并从文本中去除该字符。重复这个过程,直到文本被完全分词。

  3. 逆向最大匹配:为了解决正向最大匹配算法可能导致的歧义问题,jieba还采用了逆向最大匹配算法。该算法从右到左遍历文本,根据词典中最长的词语长度,尝试匹配最长的词语。如果匹配成功,则将该词语作为一个分词结果,并从文本中去除该词语。如果匹配失败,则将当前字符作为一个分词结果,并从文本中去除该字符。重复这个过程,直到文本被完全分词。

  4. 双向最大匹配:jieba还提供了双向最大匹配算法,结合了正向最大匹配和逆向最大匹配的结果。该算法会比较正向最大匹配和逆向最大匹配的结果,选择词数更少的作为最终的分词结果。

  5. HMM模型处理:对于一些未在词典中出现的词语,jieba会使用隐马尔可夫模型(HMM)来进行处理。HMM模型会根据已有的词典和语料库中的统计信息,对未登录词进行分词。

  6. 输出结果:最后,分词器将最终的分词结果输出。在我们的例子中,输出结果为:['我', '是', '胖', '当当', '技术', ',', '喜欢', '吃', '西瓜']。

    通过以上的原理和过程,分词器可以将中文句子切分成一个个词语,然后就到了下一步,把词语映射成数字,让机器可以认识他。​​​​​​​

from transformers import AutoTokenizer;tokenizer = AutoTokenizer.from_pretrained("jieba");tokenizer("我是胖当当技术,喜欢吃西瓜")

    就会得到,input_ids是将文本分词后的整数索引序列,token_type_ids用于区分不同句子的token,attention_mask用于指示哪些token是真实的输入:​​​​​​​

{  'input_ids': [2, 4, 6, 8, 10, 12, 14, 16, 18],  'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0],  'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1]}

    分词器有不同的倾向性:

英文分词器:空格分词器:适用于简单的英文文本,其中单词之间由空格分隔。NLTK分词器:适用于英文文本的常规分词任务,提供了多种分词算法和功能。spaCy分词器:适用于英文文本的高性能分词任务,具有较快的速度和准确性。
中文分词器:jieba分词器:适用于中文文本的常规分词任务,具有较好的性能和广泛的应用。THULAC分词器:适用于中文文本的分词和词性标注任务,具有较高的准确性和速度。HanLP分词器:适用于中文文本的多种自然语言处理任务,提供了多种分词算法和功能。
字符级分词器:Character-based CNN分词器:适用于处理没有明确分词边界的语言,如中文、日文等,可以将文本切分成字符级别的表示。Byte-Pair Encoding (BPE)分词器:适用于处理未知词汇和复杂语言结构的任务,可以将文本切分成子词级别的表示。

4、小结

    综合高质量数据、隐私、耗时、不确定好坏这些原因,目前大模型不会在线收集数据用于微调,更加不可能重新进行预训练,所以他的学习目前还是来自于制作各种数据集进行训练,也是因此,大模型一般都有自己的擅长领域

    比如:

  1. GPT适合用于文本生成、机器翻译、对话系统等任务。GPT-3具有强大的语言生成能力,可以生成连贯的文章、对话和答案。

  2. BERT擅长在自然语言处理领域。它可以用于文本分类、命名实体识别、问答系统等任务。

  3. ResNet适合用于图像分类、目标检测、图像分割等任务。

    结合分词器,数据就会变为带有特征的数字向量,多维数组。

    这里就解释了这两个问题:

  • ai是怎么学习的,不停的搜网上的信息进行学习,然后人工再问他一些问题,根据答案进行正确错误提示调整吗?

  • 在线跟ai的对话会让ai实时学习进步吗?

三、怎么在AI时代下保持竞争力

    目前大多数人在考虑的是ai会不会取代自己,导致失业,老实说不提ai了,后面的学生越来越多,自己没什么特长,一样容易失业。

    在作者看来ai是帮助人们学习和工作的,主要是提高效率和降低时间成本,所以对于初级人员替代的确非常大,关键是这个时期发展会很迅速,不知道后面是什么样子。

    作者这里也没什么建议,只是说一说自己在做什么,希望对读者有所启发。

    1、了解最新的ai动态:

    技术大会、国外ai社区、国内ai公司,这三个方面是作者了解ai最新动态的路径。通过这些消息途径,作者可以提取到一堆关于ai的信息,虽然有点杂乱无章,而且大家讲的各有不同,总感觉都是说不到点子上。一方面是能暴露出来的知识很少是核心人员写的,另外一方面很多技术人员表达有问题,很难说清楚一些技术点。还有就是做过研究生的都知道,很多东西光顾着吹了,写的很不实在,就是专门让人看的很懵懂。

图片

    但是和以前的技术一样的,从大量的文章和ppt里面提炼信息,自己判断对错,能拿出来的ppt和文章就算再绕也是有点东西的,不然不好意思给外界看到。

    有问题的要去问,问不到也给自己一个答案,错了不要紧,你造不成什么后果,但是你的认知必须成体系,就算中间有一些错误的分叉,也可以在后面通过应用去修正。就算修正不了,有自己的理解没有问题,所以很多技术理论大家争来争去,但是没有标准答案!

    2、了解公司的使用

    比如作者公司有拿来做文档问答的,有拿来做ai代码评审的,还有拿来做ai测试用例评审的。

图片

    公司里面这些是真实使用的项目案例,而且环境、目的、踩坑很多都是一样的,拿来看文档和代码学习非常好,在应用层是非常典型的。

    修改算法、模型参数的在整个业界都是很少的,大家的方向是要知道怎么去用模型、怎么清洗得到有价值的数据、怎么通过api组织ai的答案给用户看、怎么微调让答案更加准确、怎么调整问题让ai更清晰的理解你的问题(也就是调整输入,适应模型的算法,这基本都是大量测试出来的,没有一个算法是一定很好的适应所有方面的问题)

    后面作者还会写具体的使用文章,对这些问题会有解说

3、实践

    这个可能大多数人不太想做,因为比较麻烦,但是搭建部署、预训练、微调这些实践是必须的,调参或者更换比较不同模型、分词器之间的区别就不是很有必要了。

    说白了就是要实践怎么用,不需要太关心怎么用得好,业界的那些报道自然会不断的更新迭代,宣传自己的突出点

    4yue的全球机器学习技术大会上,许多人就提出尽快研发像docker一样简单易用的ai模型,所以后面的搭建部署、预训练、微调这些实践会越来越简单

图片

    

四、总结

    ai的学习使用目前是一股风潮,虽然大家对他未来的盈利点在哪里还在摸索中,但是对打工人影响非常明显。

    作者也是在摸索前行,有兴趣的读者欢迎交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/703914.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字政府与大模型

1. 什么是数字政府? 数字政府是指运用信息技术,如互联网、大数据、云计算等,来改革政府的服务提供方式、决策过程和内部管理,以提升效率、透明度和公众参与度的新型政府形态。 2. 大模型在数字政府中的作用是什么? …

htb_Blurry

端口扫描 8 按照教程注册安装clear ml 加载configuration的时候会报错 将json里的API,File Store的host都添加到/etc/hosts中 即可成功初始化 查找clear ml漏洞 发现一个cve-2024-24590 下面是一个利用脚本,但不能直接用 ClearML-vulnerability-e…

partially initialized module ‘charset_normalizer‘ has no attribute ‘md__mypyc‘

django项目运行报错: partially initialized module ‘charset_normalizer‘ has no attribute ‘md__mypyc‘…… 解决办法 pip install --force-reinstall charset-normalizer3.1.0

OpenCV 的模板匹配

OpenCV中的模板匹配 模板匹配(Template Matching)是计算机视觉中的一种技术,用于在大图像中找到与小图像(模板)相匹配的部分。OpenCV提供了多种模板匹配的方法,主要包括基于相关性和基于平方差的匹配方法。…

【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】线性分类模型损失函数对比

本节均以二分类问题为例进行展开&#xff0c;统一定义类别标签 y ∈ { 1 , − 1 } y\in\{1,-1\} y∈{1,−1}&#xff0c;则分类正确时 y f ( x ; w ) > 0 yf(x;w)>0 yf(x;w)>0&#xff0c;且值越大越正确&#xff1b;错误时 y f ( x ; w ) < 0 yf(x;w)<0 yf(x;…

Anime Girls Pack

动漫女孩包 35个动画&#xff08;就地&#xff09;支持人形。 8情绪。 角色列表&#xff1a;原艾艾琪惠美子惠理文子星薰和子佳子奈子理子凛老师小樱老师津雨僵尸女孩01 下载&#xff1a;​​Unity资源商店链接资源下载链接 效果图&#xff1a;

Python 中浅拷贝(copy)和深拷贝(deepcopy)

1. 浅拷贝&#xff1a; 它创建一个新的对象&#xff0c;但对于原始对象内的子对象&#xff08;如列表中的嵌套列表&#xff09;&#xff0c;只是复制了引用。例如&#xff1a; import copy original_list [1, 2, 3] shallow_copied_list copy.copy(original_list) original_…

【stable diffusion】ComfyUI扩展安装以及点开后页面空白问题解决办法

扩展安装 虽然大家都推荐将扩展包直接放到extension文件夹的方式&#xff0c;但我还是推荐直接在sd webui的扩展处下载&#xff0c;酱紫比较好维护一点&#xff0c;我个人感觉。 按照上图顺序点击会出现”URLError: <urlopen error [Errno 11004] getaddrinfo failed>”…

排序

排序的概念及引用 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#…

采用创新的FPGA 器件来实现更经济且更高能效的大模型推理解决方案

作者&#xff1a;Bob Siller&#xff0c;Achronix半导体产品营销总监 摘要&#xff1a;本文根据完整的基准测试&#xff0c;将Achronix Semiconductor公司推出的Speedster7t FPGA与GPU解决方案进行比较&#xff0c;在运行同一个Llama2 70B参数模型时&#xff0c;该项基于FPGA的…

作业8:信息存储的层次与并行技术

作业8&#xff1a;信息存储的层次与并行技术 一. 单选题&#xff08;共7题&#xff0c;70分&#xff09; (单选题) 考虑为以下表达式生成代码 A&#xff1d;B&#xff0b;C &#xff1b; D&#xff1d;E&#xff0d;F &#xff1b; 在执行过程中不需要插入任何停顿周期就能够消…

【机器学习】支持向量机(个人笔记)

文章目录 SVM 分类器的误差函数分类误差函数距离误差函数C 参数 非线性边界的 SVM 分类器&#xff08;内核方法&#xff09;多项式内核径向基函数&#xff08;RBF&#xff09;内核 源代码文件请点击此处&#xff01; SVM 分类器的误差函数 SVM 使用两条平行线&#xff0c;使用…

探索Edge

目录 1.概述 1.1.什么是浏览器 1.2.浏览器的作用 2.Edge 2.1.什么是Edge 2.2.诞生背景 2.3.历史版本 2.4.作用 2.5.优缺点 2.5.1.优点 2.5.2.缺点 3.对比 3.1.和360浏览器的对比 3.2.和谷歌浏览器&#xff08;Chrome&#xff09;的对比 4.未来展望 5.总结 1.概…

构建稳定高效的消息传递中间件:消息队列系统的设计与实现

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 一、引言 二、设计目标 2.1、高可用性 1. 集群搭建 1.1 …

【ai】blender4.1 安装插件

开源软件,所以资料充足插件及配置 下载插件插件是python开发的 编辑中的偏好设置 点击选中 点击一键切换中文英文 切换主题 插件源码

R语言统计分析——图形文本、自定义坐标轴和图例

参考资料&#xff1a;R语言实战【第2版】 我们可以在图形上添加标题&#xff08;main&#xff09;、副标题&#xff08;sub&#xff09;、坐标轴标签&#xff08;xlab、ylab&#xff09;并指定标轴范围&#xff08;xlim、ylim&#xff09;。 # 录入数据 dose<-c(20,30,40,4…

Go API

Go语言提供了大量的标准库&#xff0c;因此 google 公司也为这些标准库提供了相应的API文档&#xff0c;用于告诉开发者如何使用这些标准库&#xff0c;以及标准库包含的方法。官方位置&#xff1a;https://golang.org Golang中文网在线标准库文档: https://studygolang.com/p…

函数递归(C语言)(详细过程!)

函数递归 一. 递归是什么1.1 递归的思想1.2 递归的限制条件 二. 递归举例2.1 求n的阶乘2.2 按顺序打印一个整数的每一位 三. 递归与迭代3.1 求第n个斐波那契数 一. 递归是什么 递归是学习C语言很重要的一个知识&#xff0c;递归就是函数自己调用自己&#xff0c;是一种解决问题…

与浪涌保护器相关的8/20μs和10/350μs波形

8/20μs和10/350μ是到底是什么&#xff1f; 浪涌保护器中有个极为重要的参数&#xff0c;8/20μs或10/350μs。浪涌保护器的作用主要是保护电子设备免受电源浪涌或瞬态电压影响的重要装置。主要应对雷击&#xff0c;包括直击雷和感应雷。由于直击雷和感应雷的能量不一样&…

RabbitMQ实践——在Ubuntu上安装并启用管理后台

大纲 环境安装启动管理后台 RabbitMQ是一款功能强大、灵活可靠的消息代理软件&#xff0c;为分布式系统中的通信问题提供了优秀的解决方案。无论是在大规模数据处理、实时分析还是微服务架构中&#xff0c;RabbitMQ都能发挥出色的性能&#xff0c;帮助开发者构建高效、稳定的系…