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

02.Embedding:数字变矩阵

参考视频:数字变矩阵


上一节课,我们已经把训练样本文字转成的数字,也就是Token化

 
那么在下一步之前,我们要把我们转成的数字,做一次嵌入向量的变换


上一节课,我们知道我们用的的词汇表整体的量是100256,那么每一个数字,分别代表了一个文字。0代表了感叹号,一是冒号,二是引号,然后我们的1000是“好”,还有其他的代表更多的,最后一个100255呢,代表是个英文单词叫Conveyor。

那么,我们实际上并不是把这些数字丢给模型去训练,而我们要找到一些代替这些数字的、一些更小的数字,为什么呢?因为在今后的训练当中,我们要做很多这种乘法,那么如果是数字很小、或者很大的时候,它们乘完之后,小的变得更小,大的变得更大,特别分散。所以我们要初始化一些非常小、非常集中的这些数字,来代表我们的这个token。

看到这个图之后,这个时候你就要问了,为什么你要有这么多列呢?第一列不就行了吗?找一个单独的数字代表一个单独的token,是不是就可以呢?实际上是可以的。

但是语言的魅力在于语境和语义有多种不同的关系。比如我们说意思的”思“字,比如这个1001就是意思的“思”字。那么在中文里,它有很多的不同语义,这个字,比如说“你是什么意思”、“这个没什么意思”、“那我不好意思”、“你意思意思”、“这什么意思?”... 有很多不同的语境,有的时候它是主语、有时候谓语、有的时候宾语、有的时候介词、有的时候动词、有的时候甚至是个形容词。

因为有不同的语义关系,所以我们每一个token要通过不同的多个子token、或者数字来代表它们在不同语义当中的这个意思。所以呢,我们定义了模型,定义了一个叫做d model这样的一个参数,它是一个超参数。在模型训练的时候,我们可以定义,要学习每一个文字在多少重不同的语境下的这种语义关系。那么在这里,我定义的是64。在ChatGPT当中定义的是512,现在越来越更大了,你可以定义成更多的维度,比如说1024。

那好,我们现在就用64个维度的d model来做我们的训练的超参数。也就是说我们现在有100255个不同的token,代表了不同的文字,那么每一个文字它有64个不同的语义关系。这样我们就有了一张非常巨大的表格,是一个100256个行和64列这样的一个表格,那么它也叫做一个矩阵。

这个表,是在训练之前,我们只建立一次就可以了。在每一次抽样训练的时候,是可以复用的表格,那这个也叫向量查找表embedding lookup table。使用方法是,当我们每一次抽取样本训练的时候,比如说我们抽取了10个文字,那么10个文字可能对应了十几个不同的token。比如说0的话,我们就把这一行抽出来,我们有十几个字,那就把这十几字对应的token的行都抽出来。

回到例子当中,那我们的input训练的样本数据是“小沈阳江西演唱会邀请了,”这几个字。那么它转换成token之后,一共是有16个token,这个就是我们所谓的context length=16。也就是说,我们在刚才的那个向量查找表里面,把31809的那一行给抽出来,然后把31106那行也给抽出来,一共我们抽了16行,那我们把这个16行给它拼成了一张表,那么它的维度呢,或者说它的列数呢,仍然是我们向量查找表里面的d model是64列,也就是说现在我们这个样本文字,已经转换成了一个16乘以64的一个矩阵,16行每一行都代表了一个token,64列每一列都代表了这个token在一个不同语义下的语境学习的数字。那么也叫做context_length by d_model这样的一个矩阵

其实我们在做什么呢?其实我们就是把样本文字数字化之后,把我们的token向量转换成了一个矩阵,那么这个就叫做embedding vector。之后,我们要把这个矩阵里面这些数字,丢给我模型去做计算,那么有的人会问,那你这些数字是哪来的?那我可以告诉大家,这些数字都是随机初始化的。在我们有了这个input embedding vector矩阵之后,我们就要把它丢到模型训练了。

那么在扔进模型之前,我们还要做一步,就是加入位置信息编码。请看下一节!!!
 

相关文章:

  • 【C语言】共享内存
  • fastadmin后台管理员角色组控制是否显示导出数据按钮
  • 【windows】终端/命令行显示中文乱码
  • 自用git记录
  • java数组,ArrayList,LinkedList
  • 机器学习——支持向量机SVM
  • Android学习之登录界面(包含忘记密码 记住密码)(java + 详细注释 + 源码)
  • 基于大模型的大肠癌全流程预测与诊疗方案研究报告
  • Github 2025-05-25 php开源项目日报 Top10
  • 最好用的wordpress外贸主题
  • 反序列化之Wakeup方法绕过
  • Flink流水线集成Gravitino
  • Java反射详解
  • JVM 的内存模型
  • MySQL#秘籍#一条SQL语句执行时间以及资源分析
  • 超简单Translation翻译模型部署
  • 信奥赛CSP小学五年级动态规划入门
  • 【docker】--compose介绍
  • 高级特性实战:死信队列、延迟队列与优先级队列(二)
  • Go 语言基础 2 Func,流程控制
  • 西安北郊网站建设/女生学网络营销这个专业好吗
  • 动物自己做的网站/网站底部友情链接代码
  • spring boot做网站/第一接单网app地推和拉新
  • 推广网站企业/网络营销方法
  • 广西电商网站/百度seo排名优化费用
  • 自己电脑做服务器搭网站/seo关键词优化排名软件