您的位置:首页 > 游戏 > 手游 > 网络平台推广公司_微信多开软件代理平台_淘宝搜索排名_免费网络推广平台有哪些

网络平台推广公司_微信多开软件代理平台_淘宝搜索排名_免费网络推广平台有哪些

2024/11/13 8:13:28 来源:https://blog.csdn.net/m0_64531791/article/details/142643629  浏览:    关键词:网络平台推广公司_微信多开软件代理平台_淘宝搜索排名_免费网络推广平台有哪些
网络平台推广公司_微信多开软件代理平台_淘宝搜索排名_免费网络推广平台有哪些

BPE算法

  • 1. 引子
    • 1.1 词表构成问题
    • 1.2 bpe压缩算法
    • 1.3 bpe在NLP中使用
  • 2. 大语言模型-Tokenization
    • 2.1 为什么不直接用Unicode
      • 2.1.1UTF-8
    • 2.2 bpe的使用
      • 2.2.1 拓展

1. 引子

1.1 词表构成问题

由于在NLP模型训练中, 词表(字表)是必要的;传统做法是统计训练语料中的所有字符或词,但有以下问题:

  1. 使用或者测试数据中,出现训练时没有出现的词
  2. 词表过大
  3. 对于不同的语种,需要统计大多并且,不同的语种怎么去划分词、字存在很大的差异。也不灵活,成本较大。

1.2 bpe压缩算法

简介: bpe算法是数据压缩的一种方案,即byte pair encodeing。
原理: 一串长的文本或者图像中,几乎必然会找到重复的词或者组合,通过设定一个新的字来代替这个组合,就可以减少原有数据的长度,代价仅仅是记录下这个组合与代替的字之间的关系。并且bpe的窗口一般都是2个

举例:

  1. 字符串: “aaabdaaabac”
  2. 重复的aaa可以替代,这里为了示范,取aa;使得Z = aa
  3. 字符串: “ZabdZabac”
  4. 重复ab,使用Y= ab
  5. 字符串: “ZYdZYac”
  6. 重复ZY; 使的 W =ZY
  7. 字符串: “WdWac”
    这里可以看到,相对原有字符串,缩减了;对于大的文件来说,这种相同的内容是非常多,从而能够做到压缩。

1.3 bpe在NLP中使用

  1. 假设现在又语料:”he had a cat“,“the cat is sitting on the mat”
  2. 拆分上述语料的词,则有:
    [“h”,“e”,“a”,“d”,“c”,“t”,“i”,"s’,“n”,“g”,“o”,“m”]
  3. 统计相邻出现的两个字符的频率,中间有空格不算相邻;则有:

he : 3 (the* 2 ;he)
at: 3 (cat * 2, mat)

  1. 将统计得到的频率最大的组合,组合成一个新的词;则有新词组合:[“h”,“e”,“a”,“d”,“c”,“t”,“i”,"s’,“n”,“g”,“o”,“m”,“he”,“at”]
  2. 在上面的基础上词带入语料中,还可以进行新的统计,得到新的词。

优点: 上面的找新的词的做法,可以不断的循环,直到最后整个语料作为一个新的词;所以,通过这种方法,可以控制,产生的词表的大小。

2. 大语言模型-Tokenization

前言: 在大语言模型中,需要兼容多种格式的语言,那么必定有一种方式可以表示几乎所有的语言,即Unicode。

简介: Unicode 是一种全球通用的字符编码标准,旨在解决不同语言和字符集的兼容性问题。存储在计算机中的是2进制数,需要通过Unicode转换成能够让人类识别使用的字符。即相当于计算机数字和人类字体之间对应的字典。计算机只认数字,人只认识字体,Unicode记录了那个数字是那个字。

2.1 为什么不直接用Unicode

方案: 如果使用Unicode就可以表示不同语种的字符,将语料转换成Unicode,当成训练模型的语料,就可以解决上述多语种的问题。

原因:

  1. Unicode码表太大,14万+,这样会导致模型的词表过于庞大,增大计算量。
  2. 英文一个字符是一个Unicode码,”hello“就需要5个,这样一句话占用的序列长度就太大了,也不利于机器学习训练、使得模型训练难度较大。
  3. Unicode在不断的添加变化。

2.1.1UTF-8

简介: UTF-8是对Unicode的再编码,简单来说,就是用1-4个16进制数,即[0,255]之间的数字,组合表示一个Unicode码。

UTF-8也不能作为训练大模型的词表
原因: 一个字符由一个Unicode组成,一个Unicode由四个数字的UTF-8表示,这样相当于1个字符需要1-4个token,这样的序列太长了,训练难度很大。

2.2 bpe的使用

原理步骤:

  1. 将一串文本字符转换成Unicode码,
  2. 将每一个Unicode码转换成1-4个0-255之间的数字。
  3. 使用bpe去统计相邻两个数字的在语料中出现的次数,比如: 178,245
  4. 将这种组合,用新的token表示,即从256开始;前0-255个token,则表示实际的0-255的数字。
  5. 在4的基础上,会出现:278,988 这样组合的次数也特别高的情况,就将它作为一个新的词,使用更大的数字去代表token,比如:10001;
  6. 通过上述的方式,就可以设置一个30000的数字,最后词把token序号用完了即结束
  7. 上述方式就会导致模型的token,有可能是表示的1个成语:自强不息 通过两两数字组合不断叠加形成的token。也有可能表示一个字符: a

通过上述步骤,则实现了一个大预言模型的tokenizer的词表内容

2.2.1 拓展

由上面的词表构建的方案,可以解释某些现象

  1. 大模型不擅长去数,一个单词中有几个字符,模型没有办法很好的回答,这是因为,这个草莓的单词strawberry经过转化后,是一个token,即一个向量,模型没法去数举例:strawberry有几个r
  2. 大模型不擅长处理数字的运算,也有这个原因,因为在大模型接收到的信息中,可能3.14是一个token、3.1是一个token。所以不太好计算。
  3. 比如让大模型将某个英文单词的顺序倒过来写,就无法完成,因为这个单词在大模型里面是一个token,比如:maybe
  4. 存在大模型输出固定组合的情况,比如: 某个token对应着==》”自强不息“ 会导致,输出这个token得到的就是四个字,固定搭配,导致一些语义上的笑话或者现象。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com