当前位置: 首页 > article >正文

AGI大模型(3):大模型生成内容

1 大模型是怎么生成内容的

简单来说就是靠"猜"!

虽然⾮常不可思议,但事实就是这样,现阶段所有的 NLP 任务,都不意味着机器真正理解这个世界,它只是在玩⽂字游戏,进⾏⼀次⼜⼀次的概率解谜,本质上和我们玩报纸上的填字游戏是⼀个逻辑。只是我们靠知识和智慧,AI 靠概率计算。

基于LLM演进出最主流的两个⽅向:BERT和GPT

其中 BERT 是之前最流⾏的⽅向,几乎统治了所有 NLP 领域,并在⾃然语⾔理解类任务中发挥出色(例如⽂本分类、情感倾向判断等)

⽽GPT ⽅向则较为薄弱,事实上在 GPT3.0 发布前,GPT ⽅向⼀直是弱于 BERT的(GPT3.0 是 ChatGPT 背后模型 GPT3.5 的前身)

2 GPT和BERT的区别?

3 代码演示

下⾯⽤程序演示「⽣成下⼀个字」。你可以⾃⼰修改 prompt 试试。还可以使⽤相同的 prompt 运⾏多次安装 OpenAI Python 库

3.1 安装python库

pip install openai
pip install python-dotenv

3.2  openai代码

from openai import OpenAI
from dotenv import load_dotenv # pip install python-dotenv
# 新建⼀个.env⽂件 ⽂件中新建⼀个变量 OPENAI_API_KEY OPENAI_BASE_URL 会⾃动从
#环境变量加载 OPENAI_API_KEY 和 OPENAI_BASE_URL
load_dotenv()

client = OpenAI()
prompt = "我今天真" # 改我试试
response = client.completions.create(
 model="gpt-3.5-turbo-instruct",
 prompt=prompt,
 max_tokens=20,
)
print(response.choices[0].text)

3.3 新建.env文件

OPENAI_API_KEY="你们的key"
OPENAI_BASE_URL="openai的url"
client = OpenAI(
 api_key="你们的Key",
 base_url="openai的url"
)

3.4 结果如下

4 大模型的⼯作原理

4.1 ⽤通俗的语⾔描述⼤模型的⼯作原理:

  1. ⼤模型阅读了⼈类曾说过的所有的话。这就是机器学习,这个过程叫训练
  2. 把⼀串 token 后⾯跟着的不同 token 的概率记了下来。记下的就是参数,也叫权重
  3. 当我们给它若⼲ token,⼤模型就能算出概率最⾼的下⼀个 token 是什么。这就是⽣成,也叫推理
  4. ⽤⽣成的 token,再加上上⽂,就能继续⽣成下⼀个 token。以此类推,⽣成更多⽂字

4.2 Token是什么?

Token⼀定表示⼀个汉字么?

下⾯这个例⼦中我让ChatGPT按照Token的划分粒度将"我喜欢⾹蕉"进⾏倒序输出。

这个例⼦说明:Token既可能是⼀个单词,例如“⾹蕉”,也可能是⼀个汉字,例

如:“我”

4.3 Token的定义

在⼤语⾔模型中,Token是模型进⾏语⾔处理的基本信息单元,它可以是⼀个字,⼀个词甚⾄是⼀个短语句⼦。Token并不是⼀成不变的,在不同的上下⽂中,他会有不同的划分粒度。

Tokenizer:https://platform.openai.com/tokenizer

4.3 Token对我们有哪些影响

从官⽅⽂档中我们可以看到每个模型都有⼀个MAX TOKENS的参数,这个参数的意思就是在⼀次会话中,模型能基于整个上下⽂记忆的最⼤的Token数量,这个上下⽂既包含了我们的输⼊,也包含了我们的输出。

在上⾯这个解释中会有两个概念:

  • ⼀次会话:所谓的⼀次会话是指你打开了⼀个和ChatGPT的聊天窗⼝,只要你⼀直在这个窗⼝内和ChatGPT聊天,那么这个窗⼝就是你和ChatGPT的⼀次会话,⽆论你们已经聊了多久
  • 上下⽂:所谓的上下⽂就是指在最新的⼀个提问之前所有的聊天记录

值得注意的是,这⾥的上下⽂记忆的最⼤Token数量,不仅仅是指你单次提问的语句的最⼤Token数量,⽽是整个会话中之前所有的输⼊和输出的Token数量


http://www.kler.cn/a/585135.html

相关文章:

  • Vi/Vim命令详解:高效文本编辑的利器
  • C语言【数据结构】:理解什么是数据结构和算法(启航)
  • 51c大模型~合集7
  • 架构师论文《论云原生架构及其应用》
  • G-Star 公益行起航,挥动开源技术点亮公益!
  • C#中通过Response.Headers设置自定义参数
  • 万字讲清大模型的发展,按时间排序(1950年到2025年)
  • Python - 爬虫;爬虫-网页抓取数据-工具curl
  • 银河麒麟V10ServerSP3中Redis7源码编译与安装详细教程
  • SpringDataRedis存储Redis的数据序列化
  • 【C++标准库类型】深入理解string类型:从基础到实践
  • 【VSCODE 插件 可视化】:SVG 编辑插件 SVG Editor
  • 如何通过折扣话费接口来吸引用户?
  • CTF--Web安全--SQL注入之报错注入
  • 事件总线EventBus原理剖析
  • TCP/IP 协议精讲-精华总结版本
  • 内网穿透的应用-全流程解析如何通过VNC实现Windows与MacOS远程桌面的无缝连接
  • Windows11使用CMD命令行从零开始创建一个Flask项目并使用虚拟环境
  • 工作效率提升的原因
  • 发票实现批量真伪查验的快速途径-发票真伪查验接口-发票识别