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

AI测试入门:认识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/diannao/50119.shtml

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

相关文章

LabVIEW 实现用户授权与管理多项测试项目

在使用 LabVIEW 开发测试软件时,用户授权和项目管理是一个重要的功能。为了确保系统安全性、灵活性和可扩展性,可以设计一个用户管理系统,允许管理员增加或减少用户的测试项目权限。以下是一个详细的实现方案,包括用户授权管理、项…

Modbus RTU协议 与 Modbus TCP/IP协议的区别

前面讲解Modbus协议时提到了多种协议类型,今天来讲讲Modbus RTU和Modbus TCP/IP协议的区别。 Modbus RTU和Modbus TCP/IP协议的本质都是Modbus协议,都是通过Modbus寄存器地址来交换数据的,那么它们之间有什么区别呢?今天我们从以…

buu做题(7)

[BJDCTF2020]Mark loves cat 开始的界面没啥东西, 看了下源码好像也没啥东西 用dirsearch扫描一下 有git 泄露 用工具githack下载源码 <?phpinclude flag.php;$yds "dog"; $is "cat"; $handsome yds;foreach($_POST as $x > $y){$$x $y; }f…

前端静态资源的动态访问

静态资源打包规则 Vite脚手架在打包代码的时候&#xff0c;会把源代码里对于静态资源的访问路径转换为打包后静态资源文件的路径。主要的区别是文件指纹&#xff0c;即打包后的文件会带上一个hash值&#xff0c;用于区分不同版本的文件。 文件指纹的作用 当前端项目更新之后&…

el7升级Apache修复漏洞

1、Apache安全漏洞 Apache HTTP Server拒绝服务漏洞&#xff08;CVE-2018-1303&#xff09;Apache HTTP Server 安全漏洞&#xff08;CVE-2018-17199&#xff09;Apache HTTP Server 内存破坏漏洞&#xff08;CVE-2017-9788&#xff09;Apache httpd 信息泄露漏洞&#xff08;C…

GNSS相关资料

常识 GNSS(二)&#xff0c;自动驾驶定位团队的“保护伞”&#xff1a;https://owwjm7oycuv.feishu.cn/docx/BAfsdC34zoN6htx4uUycbvknnub#CiWXdRZfWoqrzmxRptJcH7MYnug GNSS伪距差分和RTK&#xff1a;https://zhuanlan.zhihu.com/p/680687517 关于GNSS技术介绍&#xff08;一&…

江科大/江协科技 STM32学习笔记P6

文章目录 LED闪烁&LE流水&蜂鸣器一、操作STM32的GPIO步骤二、RCC库函数什么是AHB与APB&#xff1f; 三、GPIO库函数GPIO初始化选择IO接口工作方式 四、四种方法实现LED闪灯 LED闪烁&LE流水&蜂鸣器 一、操作STM32的GPIO步骤 1、使用RCC开启GPIO的时钟 2、使用…

CV Method:YOLOv10 vs YOLOv8

文章目录 前言一、介绍二、YOLOv8 and YOLOv10 Comparison1.模型结构YOLOv8&#xff1a;YOLOv10&#xff1a; 2. 推理和时延3. 检测表现4. 参数利用5. 关键比较 总结 前言 YOLOv10已经开源一段时间了&#xff0c;经过我实际使用测试&#xff0c;也确实性能更好一些&#xff0c…

静态IP地址在网络安全中的角色解析与实测分析

在这个网络边界日益模糊的时代&#xff0c;每一次点击、每一次数据传输都有着安全问题。作为网络安全体系中的基石&#xff0c;静态IP地址的角色显得尤为重要而复杂。今天&#xff0c;我们的测评团队将带您深入剖析静态IP地址在网络安全中的多重角色&#xff0c;并通过两家代理…

背单词工具(C++)

功能分析 生词本管理&#xff1a; 创建生词本文件&#xff1a;在构造函数中创建了“生词本.txt”“背词历史.log”“历史记录.txt”三个文件。添加单词&#xff1a;用户可以输入单词、词性和解释&#xff0c;将其添加到生词本中。查询所有单词&#xff1a;展示生词本中所有的单…

AWS免费层之后:了解和管理您的云服务成本

Amazon Web Services (AWS) 为新用户提供了12个月的免费层服务&#xff0c;这是许多人开始使用云服务的绝佳方式。但是&#xff0c;当这一年结束后&#xff0c;您的AWS使用会如何变化&#xff1f;我们九河云通过本文将探讨免费层结束后的AWS成本情况&#xff0c;以及如何有效管…

JavaScript(16)——定时器-间歇函数

开启定时器 setInterval(函数,间隔时间) 作用&#xff1a;每隔一段时间调用这个函数&#xff0c;时间单位是毫秒 例如&#xff1a;每一秒打印一个hello setInterval(function () { document.write(hello ) }, 1000) 注&#xff1a;如果是具名函数的话不能加小括号&#xf…

THC/THC.h: No such file or directory 问题原因及一系列解决方案

问题原因 出现THC/THC.h: No such file or directory 这个问题的原因主要是&#xff1a;pytorch在1.11版本之后&#xff0c;THC/THC.h就被移除了&#xff0c;所以出现这个问题的原因是因为pytorch版本太高的原因。所以&#xff0c;解决这个问题一个最直观的方法就是降版本&…

面试题:简单介绍一下快速失败和安全失败。简单介绍一下快速失败和安全失败和集合类的关联。

一. 简单介绍一下快速失败和安全失败 Java 中的快速失败&#xff08;Fast-fail&#xff09;和安全失败&#xff08;Safe-fail&#xff09;是两种异常处理机制&#xff0c;它们在处理程序运行过程中出现的错误或异常时有所不同。 1. 快速失败&#xff08;Fast-fail&#xff09…

【图像标签转换】XML转为TXT图像数据集标签

引言 该脚本用于将包含对象标注的 XML 文件转换为 YOLO&#xff08;You Only Look Once&#xff09;对象检测格式的 TXT 文件。脚本读取 XML 文件&#xff0c;提取对象信息&#xff0c;规范化边界框坐标&#xff0c;并将数据写入相应的 TXT 文件。此外&#xff0c;它还生成一个…

做视频混剪都是去哪里找高清素材的?分享10个高清视频素材库

提升视频混剪质感的10个高清素材库推荐 在这个视觉体验至上的时代&#xff0c;视频的视觉质量对吸引观众至关重要。如果你正在寻找高清素材以提升视频混剪作品的层次&#xff0c;那么你来对地方了。今天&#xff0c;我将为你揭秘10个视频混剪达人常用的高清素材库&#xff0c;…

ABAP:成本中心计划批量KP06导入BAPI

KP06需要传入成本要素,这里就比较麻烦,目前找了很多BAPI都没有合适的,经过两天的查找资料才找到,下面详细见代码:一个批量导入程序: *&---------------------------------------------------------------------* *& 包含 *&----------------…

Kylin Cube资源使用限制:优化大数据查询性能的策略

Kylin Cube资源使用限制&#xff1a;优化大数据查询性能的策略 Apache Kylin作为一个高效的大数据分析平台&#xff0c;其核心功能之一是构建Cube来预计算和存储多维数据集。随着数据量的增长&#xff0c;合理地管理和限制Cube的资源使用变得尤为重要。本文将探讨Kylin是否支持…

学习笔记-系统框图传递函数公式推导

目录 *待了解 现代控制理论和自动控制理论区别 自动控制系统的组成 信号流图 1、系统框图 1.1、信号线、分支点、相加点 1.2、系统各环节间的连接 1.3、 相加点和分支点的等效移动&#xff08;比较点、引出点&#xff09; 2、反馈连接公式推导 2.1、前向通路传递函数…

YOLO训练触发早停

YOLO训练触发早停 日志&#xff1a; Stopping training early as no improvement observed in last 100 epochs. Best results observed at epoch 0, best model saved as best.pt. To update EarlyStopping(patience100) pass a new patience value, i.e. python train.py -…