AI测试入门(1):认识AI大语言模型(LLM)

AI测试入门(1):认识AI大语言模型(LLM)

    • 前言
        • 一、大语言模型的概述
          • 1. 什么是大语言模型?
          • 2. 大语言模型的历史发展
        • 二、大语言模型的工作原理
          • 1. Transformer架构
            • 自注意力机制
          • 2. 预训练与微调
            • 预训练
            • 微调
        • 三、大语言模型的应用场景
          • 1. 文本生成
          • 2. 机器翻译
          • 3. 问答系统
          • 4. 情感分析
        • 四、大语言模型的挑战与未来
          • 1. 计算资源消耗
          • 2. 数据偏见
          • 3. 未来发展方向
      • 结论

前言

人工智能(AI)的迅猛发展使得自然语言处理(NLP)领域取得了显著的进展。在这些进展中,大语言模型(Large Language Models, LLM)无疑是其中的佼佼者。本文将详细介绍什么是大语言模型,它们的工作原理,常见的应用场景,并通过具体的示例来展示它们的强大功能。

一、大语言模型的概述
1. 什么是大语言模型?

大语言模型是基于深度学习技术的自然语言处理模型,旨在理解和生成类似人类的文本。

这些模型通常经过海量文本数据的训练,能够捕捉语言中的复杂结构和语义关系,从而在多种语言任务中表现出色。著名的大语言模型包括OpenAI的GPT系列(如GPT-3)、Google的BERT、Transformer等。

2. 大语言模型的历史发展

大语言模型的发展可以追溯到早期的NLP模型,如Word2Vec和GloVe,这些模型通过将单词嵌入到向量空间中,捕捉单词之间的语义关系。然而,这些早期模型的局限性在于它们无法处理长距离依赖关系和上下文信息。

Transformer架构的引入改变了这一局面。Transformer模型通过自注意力机制(Self-Attention Mechanism)能够高效处理长距离依赖关系,显著提高了NLP任务的性能。基于Transformer架构的BERT和GPT模型进一步推动了大语言模型的发展。

二、大语言模型的工作原理
1. Transformer架构

Transformer架构是大语言模型的核心。

它由编码器(Encoder)和解码器(Decoder)组成,其中编码器负责将输入序列转换为内部表示,解码器则将内部表示转换为输出序列。

自注意力机制

自注意力机制是Transformer架构的关键组件。

它通过计算输入序列中每个位置与其他位置的相关性来捕捉上下文信息。这种机制使得Transformer模型能够并行处理输入序列,大大提高了训练效率。

import torch
import torch.nn as nnclass SelfAttention(nn.Module):def __init__(self, embed_size, heads):super(SelfAttention, self).__init__()self.embed_size = embed_sizeself.heads = headsself.head_dim = embed_size // headsassert (self.head_dim * heads == embed_size), "Embedding size needs to be divisible by heads"self.values = nn.Linear(self.head_dim, self.head_dim, bias=False)self.keys = nn.Linear(self.head_dim, self.head_dim, bias=False)self.queries = nn.Linear(self.head_dim, self.head_dim, bias=False)self.fc_out = nn.Linear(heads * self.head_dim, embed_size)def forward(self, values, keys, query, mask):N = query.shape[0]value_len, key_len, query_len = values.shape[1], keys.shape[1], query.shape[1]# Split the embedding into self.heads different piecesvalues = values.reshape(N, value_len, self.heads, self.head_dim)keys = keys.reshape(N, key_len, self.heads, self.head_dim)queries = query.reshape(N, query_len, self.heads, self.head_dim)values = self.values(values)keys = self.keys(keys)queries = self.queries(queries)# (N, heads, query_len, head_dim) * (N, heads, head_dim, key_len) --> (N, heads, query_len, key_len)energy = torch.einsum("nqhd,nkhd->nhqk", [queries, keys])if mask is not None:energy = energy.masked_fill(mask == 0, float("-1e20"))attention = torch.softmax(energy / (self.embed_size ** (1 / 2)), dim=3)out = torch.einsum("nhql,nlhd->nqhd", [attention, values]).reshape(N, query_len, self.heads * self.head_dim)out = self.fc_out(out)return out
2. 预训练与微调

大语言模型通常采用“预训练-微调”的训练范式。

在预训练阶段,模型通过无监督学习从海量文本数据中学习语言表示。在微调阶段,模型根据具体的下游任务(如文本分类、翻译等)进行有监督学习,以提高特定任务的性能。

预训练

预训练阶段的目标是让模型学习语言的结构和语义信息。

常见的预训练任务包括语言模型任务和掩码语言模型任务。

from transformers import GPT2Tokenizer, GPT2LMHeadModel
import torchtokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained("gpt2")text = "The quick brown fox"
inputs = tokenizer(text, return_tensors="pt")
outputs = model(**inputs, labels=inputs["input_ids"])
loss = outputs.loss
logits = outputs.logits
微调

在微调阶段,模型根据具体任务的数据进行进一步训练。

例如,对于文本分类任务,模型会在标注的分类数据集上进行微调。

from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArgumentstokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
model = BertForSequenceClassification.from_pretrained("bert-base-uncased")train_texts = ["I love programming", "I hate bugs"]
train_labels = [1, 0]
train_encodings = tokenizer(train_texts, truncation=True, padding=True)
train_dataset = torch.utils.data.Dataset(train_encodings, train_labels)training_args = TrainingArguments(output_dir='./results', num_train_epochs=3, per_device_train_batch_size=4, per_device_eval_batch_size=4, warmup_steps=500, weight_decay=0.01, logging_dir='./logs',
)trainer = Trainer(model=model, args=training_args, train_dataset=train_dataset
)trainer.train()
三、大语言模型的应用场景
1. 文本生成

大语言模型在文本生成任务中表现尤为突出。

它们可以生成高质量的新闻文章、故事、对话等文本内容。例如,GPT-3可以根据输入的提示生成一篇连贯的文章。

from transformers import GPT2LMHeadModel, GPT2Tokenizertokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained("gpt2")input_text = "Once upon a time"
input_ids = tokenizer.encode(input_text, return_tensors='pt')sample_output = model.generate(input_ids, max_length=50)
print(tokenizer.decode(sample_output[0], skip_special_tokens=True))
2. 机器翻译

大语言模型在机器翻译任务中也取得了显著的成果。

基于Transformer的模型如Google的T5在多个翻译任务中达到了领先的性能。

3. 问答系统

大语言模型能够理解复杂的问题,并提供准确的答案。

例如,BERT在阅读理解任务中表现出色,能够根据提供的文档回答问题。

from transformers import pipelinequestion_answerer = pipeline("question-answering")context = "Transformers are models that process sequences in parallel, rather than sequentially."
question = "What do Transformers do?"result = question_answerer(question=question, context=context)
print(f"Answer: '{result['answer']}'")
4. 情感分析

大语言模型可以用于情感分析任务,通过分析文本的情感倾向来判断其正面、负面或中性的情感状态。

from transformers import pipelineclassifier = pipeline('sentiment-analysis')result = classifier("I love using Transformers for NLP tasks!")
print(result)
四、大语言模型的挑战与未来
1. 计算资源消耗

大语言模型的训练和推理过程需要大量的计算资源。

尤其是在预训练阶段,需要耗费大量的GPU计算能力和时间。

2. 数据偏见

大语言模型依赖于大规模的训练数据,这些数据中可能存在偏见。

如果训练数据不平衡或含有偏见,模型在生成文本时可能会反映这些偏见。

3. 未来发展方向

未来,大语言模型将继续向更大规模、更高性能的方向发展。

同时,研究人员也在探索更高效的模型训练方法和更公平的数据处理技术,以解决当前面临的挑战。

结论

大语言模型的出现和发展极大地推动了自然语言处理技术的进步。通过详细了解大语言模型的工作原理、应用场景和面临的挑战,我们可以更好地理解和利用这些强大的工具,为实际应用带来更多的创新和可能性。随着技术的不断进步,大语言模型将在更多领域展现其潜力,带来更智能、更人性化的解决方案。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超声波清洗机哪款好用?保姆级教学,教你手把手挑选适合自己的超声波清洗机

提及超声波清洗机,大家都不陌生,尤其是佩戴眼镜的小伙伴,眼镜的镜片长时间不清洁容易模糊不清,而超声波清洗机的出现,可以轻松清洗还不会损坏镜片,备受眼镜党喜爱。但由于现在市面上的超声波清洗机的款式太…

pyqt/pyside QTableWidget失去焦点后,选中的行仍高亮的显示

正常情况下pyqt/pyside的QTableWidget,点击input或者按钮失去焦点后 行的颜色消失了 如何在失去焦点时保持行的选中颜色,增加下面的代码: # 获取当前表格部件的调色板 p tableWidget.palette()# 获取活跃状态下的高亮颜色和高亮文本颜色&a…

排序系列 之 插入排序

!!!排序仅针对于数组哦本次排序是按照升序来的哦 介绍 插入排序英文名为InsertSort 基本思路 1、认为数组当中的第一个数值已经排好序了2、定义一个游标从第二个数值开始不断地向后进行遍历3、游标指向的数据插入已经排好序的数组中 代码…

安卓自带camera hal3 实例README.md翻译

最近,遇到一个这样的问题,临时了解下这个驱动实现架构和特点,翻译如下 V4L2相机HALv3 camera.v4l2库使用视频Linux 2(V4L2)接口实现了camera HAL v3。这使得它在理论上可以与各种设备配合使用,尽管V4L2的…

Windows server漏洞解决

Windows server漏洞解决 一、SSL/TLS问题1、问题2、建议3、方法1)、winR运行:regedit,进入注册表。2)、找到注册表3)、在Ciphers新建五个项4)、在每个新建文件加入值 二、Apache Tomcat问题1、问题2、下载 好家伙&…

国内从事双臂机器人的团队

一、背景 随着人形机器人的发展,双臂协同操作得到了越来越多研究人员的关注。我自己也是做双臂机器人方向的,虽然通过看论文或刷知乎了解到国内有许多团队在做双臂机器人方向,但还没有系统的整理过,因此趁这次机会,好…

Stripe web 支付语言设置

在两个地方都可以设置 VALUELOCALEELEMENTSCHECKOUTautoStripe detects the locale of the browser✔✔arArabic✔bgBulgarian (Bulgaria)✔✔csCzech (Czech Republic)✔✔daDanish (Denmark)✔✔deGerman (Germany)✔✔elGreek (Greece)✔✔enEnglish✔✔en-GBEnglish (Unit…

python的mixin设计模式

1.介绍 在 Python 中,mixin 是一种设计模式,它是一个包含了特定功能单元的类,这些功能可以被其他类组合利用,这些功能可以被其他类组合利用,以实现代码的复用和功能扩展。 mixin 类通常不被单独实例化,也不…

agv叉车slam定位精度测试标准化流程

相对定位精度 条件:1.5m/s最高速度;基于普通直行任务 数据采集(3个不同位置的直行任务,每个任务直行约10m,每个10次) 测量每次走过的实际距离,与每次根据定位结果算得的相对距离,两…

Python_封装和继承

封装 Python的封装是一种将数据(属性)和行为(方法)捆绑在一起的操作,以实现数据隐藏和抽象。 封装的目的是保护对象内部的数据不被外部直接访问和修改,同时提供接口与外界交互。 私有属性:在…

ES6 数组的扩展(十六)

1. Array.from() 特性:从类数组对象或可迭代对象中创建一个新的数组实例。 用法:将类数组对象或可迭代对象转换为数组。 const likeArray { 0: a, 1: b, length: 2 }; const arr Array.from(likeArray); console.log(arr); // 输出:[a, b…

C#数字医学影像系统(RIS/PACS)源码,Oracle数据库,C/S架构,运行稳定

数字医学影像系统(RIS/PACS)源码,三甲以下的医院都能满足。PACS 系统全套成品源码。 开发技术:C/S架构,C#开发语言,数据库服务器采用Oracle数据库。 医学影像存储与传输系统,融合了医学信息化…

算法-经典递归解决排列组合

文章目录 前言1. 获取字符串的所有字串2. 数组的子集(无重复)3. 数组的子集(有重复)4. 字符大小写全排列5. 全排列(无重复)6. 全排列(有重复) 前言 如何正确的处理递归 所有的递归都分为带路径的递归和不带路径的递归, 我们之前学二叉树的时候基本上都是带路径的递归, 所有的递…

HBuilder x 使用Git管理项目,配合easy-git插件管理项目代码配置git和推送/拉取使用教程

文章目录 目录 文章目录 使用流程 小结 概要安装流程技术细节小结 概要 克隆/拉取项目代码到本地电脑教程 HBuilder x 使用Git管理项目,配合easy-git插件 克隆项目代码到本地教程-CSDN博客 电脑环境已安装好Hbuilder x工具 如果没有安装可以参考以下先安装好Hbui…

MATLAB6:M文件和控制流

文章目录 一、实验目的二、实验内容三、仿真结果四、实践中遇到的问题及解决方法 一、实验目的 1. 熟悉运用MATLAB的控制指令。   2. 理解M脚本文件和函数文件的本质区别。   3. 能够运用所学知识,编制程序解决一般的计算问题。 二、实验内容 1.for循环结构及注…

银发经济发展需要什么支持

随着社会老龄化的加剧,“银发经济”应运而生,成为社会发展的新动向。银发经济指的是针对老年人群体的经济活动,包括健康护理、休闲旅游、教育文化等多方面内容。这一现象不仅体现了社会对老年群体的关注和尊重,同时也为经济发展提…

python selenium4 EdgeDriver动态页面爬取

截止至2024.7.16 chrome浏览器最新版本为126.0.6478.127 但对应的chromeDriver版本都低于此版本,因此,转用Edge浏览器 说明:仅记录自己使用过程中用到的一些代码和感受,看具体情况不定期更新。 selenium官方文档 1、安装selen…

qt 6.7 版本 ,QStackedLayout布局中添两个QWidget,每个QWidget都有一个按钮,点击后分别显示另一个布局

1.代码 在Qt 6.7中,如果你想要将QStackedLayout布局中包含两个QWidget,并且每个QWidget都有一个按钮,点击按钮后显示另一个布局,同时希望将头文件(.h)和源文件(.cpp)分开&#xff0…

Python基础:register buffer

模型保存下来的参数有两种:需要更新的 Parameter ,与是不需要更新的 buffer 。 在模型中,利用backward反向传播,可以通讨requires_grad来得到 buffer 和 parameter 的梯度信息,但是利用 optimizer 进行更新的是 parame…

Apache httpd-vhosts.conf 配置详解(附Demo)

目录 前言1. 基本配置2. http和https3. 重定向和代理配置4. 实战前言 Nginx的相关配置推荐阅读:Nginx将https重定向为http进行访问的配置(附Demo) 1. 基本配置 httpd-vhosts.conf 是 Apache HTTP Server 配置虚拟主机(Virtual Hosts)的文件 虚拟主机允许在一台服务器上…