大语言模型(LLM)token解读

1. 什么是token?

人们经常在谈论大模型时候,经常会谈到模型很大,我们也常常会看到一种说法:

参数会让我们了解神经网络的结构有多复杂,而token的大小会让我们知道有多少数据用于训练参数。

什么是token?比较官方的token解释:

Token是对输入文本进行分割和编码时的最小单位。它可以是单词、子词、字符或其他形式的文本片段。

看完是不是一脸懵逼?为此我们先补充点知识。

2. 大模型工作原理

本质上就是神经网络。但是训练这么大的神经网络,肯定不能是监督学习,如果使用监督学习,必然需要大量的人类标记数据,这几乎是不可能的。那么,如何学习?

当然,可以不用标记数据,直接训练,这种学习方法称为自监督学习。引用学术点的描述:

自监督学习主要是利用辅助任务(pretext)从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息训练模型,从而学习到对下游任务有价值的表征。

自监督学习无标签数据和辅助信息,这是定义自监督学习的两个关键依据。它会通过构造辅助任务来获取监督信息,这个过程中有学习到新的知识;而无监督学习不会从数据中挖掘新任务的标签信息。

例如,在英语考试中,通过刷题可以提高自己的能力,其中的选项就相当于标签。当然,也可以通过听英文音频、阅读英文文章、进行英文对话交流等方式来间接提高英语水平,这些都可以视为辅助性任务(pretext),而这些数据本身并不包含标签信息。

那么,GPT是如何在人类的文本数据上实现自监督学习的呢?那就是用文本的前文来预测后文

此处引用知乎大佬的案例,例如在下面这段文本中:

我买了一台苹果,然后坐地铁回家。

GPT 模型会将回家两个字掩盖住。将我买了一台苹果,然后坐地铁视为数据,将回家。视为待预测的内容。 GPT 要做的就是根据前文我买了一台苹果,然后坐地铁来预测后文回家。

这个过程依靠神经网络进行,简单操作过程如图:
在这里插入图片描述

3. 谈谈语言模型中的token

GPT 不是适用于某一门语言的大型语言模型,它适用于几乎所有流行的自然语言。所以这告诉我们 GPT 实际的输入和输出并不是像上面那个图中那个样子。计算机要有通用适配或者理解能力,因此,我们需要引入 token 的概念。token 是自然语言处理的最细粒度。简单点说就是,GPT 的输入是一个个的 token,输出也是一个个的 token。
在这里插入图片描述

GPT 不是适用于某一门语言的大型语言模型,它适用于几乎所有流行的自然语言。所以 GPT 的 token 需要兼容几乎人类的所有自然语言,那意味着 GPT 有一个非常全的 token 词汇表,它能表达出所有人类的自然语言。如何实现这个目的呢?

答案是通过 unicode 编码。

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

例如,我们在输入,对应的unicode 编码为:\u4f60,转换成16进制为0100 1111 0110 0000,转换成10进制对应20320。直接将 unicode 的编码作为 GPT 中 token 的词表,会存在一些问题。 一方面直接使用 unicode 作为词汇表太大了,另一方面 unicode 自身的粒度有时候太细了,例如 unicode 中的英文编码是以字母粒度进行的。

于是我们会将 unicode 的2进制结果以8个二进制位为单位进行拆分。用0100 11110110 0000表示8个二进制位只有256种可能,换句话说,只需要256个 token 的词汇表就能表示所有 unicode。

然而这种方法的词汇表又太小了,编码方法太粗糙了。实际上 GPT 是使用一种称为 BPE (Byte Pair Encoding)的算法,在上面的基础上进一步生成更大的词汇表。

它的基本思想如下,将上述的基础 token (256种可能)做组合,然后统计文本数据中这些组合出现的频率,将频率最大的那些保留下来,形成新的 token 词汇表。因此,通过此方法得到的 token 和文字的映射不一定是一对一的关系。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/547275d11b7b4ac5b51125674054cc17.png

具体细节参考OpenAI的GPT在线测试token划分的地址:https://platform.openai.com/tokenizer,最下面部分有token划分思路,感兴趣可以深入研究。

总而言之,GPT 实际上是把我们输入的文本转换成一个个的token作为输入,通过 GPT 模型预测这些 token,然后再把这些 token 转换回文本,最终输出给我们。 如图:
在这里插入图片描述

4.再深入理解一下什么是token

Token是LLM处理文本数据的基石,它们是将自然语言转换成机器可理解格式的关键步骤。几个基本概念:

  1. 标记化过程(Tokenization):这是将自然语言文本分解成token的过程。在这个过程中,文本被分割成小片段,每个片段是一个token,它可以代表一个词、一个字符或一个词组等。
  2. 变体形式:根据不同的标记化方案,一个token可以是一个单词,单词的一部分(如子词),甚至是一个字符。例如,单词"transformer"可能被分成"trans-", “form-”, "er"等几个子词token。
  3. 模型模型限制:大型语言模型通常有输入输出token数量的限制,比如2K、4K或最多32K token。这是因为基于Transformer的模型其计算复杂度和空间复杂度随序列长度的增长而呈二次方增长,这限制了模型能够有效处理的文本长度。
  4. token可以作为数值标识符:Token在LLM内部被赋予数值或标识符,并以序列的形式输入或从模型输出。这些数值标识符是模型处理和生成文本时实际使用的表示形式,说白了可以理解成一种索引,索引本身又是一种标识符。

5. 为什么token会有长度限制?

有以下3方面的相互制约:文本长短、注意力、算力,这3方面不可能同时满足。也就是说:上下文文本越长,越难聚焦充分注意力,难以完整理解;注意力限制下,短文本无法完整解读复杂信息;处理长文本需要大量算力,从而提高了成本。(这是因为GPT底层基于Transformer的模型,Transformer模型的Attention机制会导致计算量会随着上下文长度的增加呈平方级增长)

参考

  1. 自监督学习(Self-supervised Learning)
  2. ChatGPT实用指南(一)
  3. 大型语言模型(LLM)中的token
  4. LLM 大模型为什么会有上下文 tokens 的限制?

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

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

相关文章

阿里云 -- 连接云服务器ECS、管理云服务器ECS、WordPress 页面配置

连接云服务器ECS 1. 远程连接云服务器ECS,点击实例最右侧操作列的远程连接按钮,并在弹出的对话框中点击立即登录 2. 登录云服务器ECS,通过密码认证方式,输入用户名和密码 提示:新创建的ECS实例状态即使为运行中&#…

校园app开发流程-uniapp开发-支持APP小程序H5-源码交付-跑腿-二手市场-交友论坛等功能,学校自由选择!

随着科技的不断发展,智慧校园系统和跑腿外卖小程序已经成为当今社会的热门话题。作为未来的重要趋势之一,科技在教育领域中的应用越来越广泛。本文将探讨智慧校园系统和跑腿外卖小程序的开发过程,并阐述如何利用科技“育”见未来 一、智慧校…

vue组件如何使用?

今天我随便试两个组件 第一个轮播图 在minn.js 引入 import { createApp } from vue; import { Swipe, SwipeItem } from vant; const app createApp(); app.use(Swipe); app.use(SwipeItem); <van-swipe class"my-swipe" :autoplay"3000" indica…

STM32学习笔记(6_8)- TIM定时器的编码器接口代码

无人问津也好&#xff0c;技不如人也罢&#xff0c;都应静下心来&#xff0c;去做该做的事。 最近在学STM32&#xff0c;所以也开贴记录一下主要内容&#xff0c;省的过目即忘。视频教程为江科大&#xff08;改名江协科技&#xff09;&#xff0c;网站jiangxiekeji.com 现在开…

os.walk()寻找指定文件

#T2 dcm文件从原位置批量复制到新文件夹F:/467289/ import os import numpy as np path /Users/yxk/Desktop/Debug_test/file# for root, dirs, files in os.walk(path): # for file in files: # if file.endswith(.dcm): # print(file)# def findPa…

微信小程序的页面交互练习——实现比较两数大小功能

前提&#xff1a;配置好页面后 一、在wxml里面搭建好框架&#xff1a; <navigation-bar title"Weixin" back"{{false}}" color"black" background"#FFF"></navigation-bar> <scroll-view class"scrollarea"…

Win11电脑cpu温度过高怎么办呢

Win11电脑cpu温度过高怎么办呢&#xff1f;有时候我们感觉电脑发烫&#xff0c;担心电脑过烫会不会损坏。正常情况下&#xff0c;cpu的温度在45~65度之间&#xff0c;但不排除电脑同时开了太多软件&#xff0c;或者在玩吃鸡、英雄联盟等的大型游戏而导致温度超过85度。只要最高…

设计模式——行为型——策略模式Strategy

Q&#xff1a;策略模式的特点 A&#xff1a; 具体算法从具体的业务方法中独立出来策略模式是同行为的不同实现 Q&#xff1a;什么时候使用策略模式 A&#xff1a;多个if-else使用策略模式 收费对象类 public class CashContext {private CashStrategy cashStrategy;public…

Mysql---安全值守常用语句

文章目录 目录 文章目录 一.用户权限设置 用户设置 元数据查询 Union联合查询 分组查询 字符串函数 总结 一.用户权限设置 用户设置 #用户创建 create user "用户名""%主机名" identified by "密码" #用户删除 drop user 用户名 #用户查询…

LVS负载均衡-DR模式配置

LVS&#xff1a;Linux virtual server ,即Linux虚拟服务器 LVS自身是一个负载均衡器&#xff08;Director&#xff09;&#xff0c;不直接处理请求&#xff0c;而是将请求转发至位于它后端的真实服务器real server上。 LVS是四层&#xff08;传输层 tcp/udp&#xff09;负载均衡…

多维数组和交错数组笔记

1.) 关于数据的几个概念&#xff1a; Rank&#xff0c;即数组的维数&#xff0c;其值是数组类型的方括号之间逗号个数加上1。 Demo&#xff1a;利用一维数组显示斐波那契数列F(n) F(n-1) F(n-2) (n >2 ),每行显示5项,20项. static void Main(string[] args){int[] F n…

uniapp流浪动物救助小程序Java宠物领养小程序springboot

uniapp流浪动物救助小程序Java宠物领养小程序springboot 代码40块&#xff0c;需要的私聊 前台基于uniapp小程序 后台管理基于springbootvue前后端分离项目 开发语言&#xff1a;Java 框架&#xff1a;springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xf…