Jacky's blog
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)
  • shell

  • tool

  • 网络

  • algo

  • compute_base

  • blog

  • growth

  • java

  • C&C++

  • ai

    • base

    • tools

    • other

      • huggingFace
      • pad_token
      • token
      • rnn
      • 向量
      • BPE算法
  • secure

  • cms

  • english

  • 生活

  • 金融学

  • more

  • other
  • ai
  • other
Jacky
2025-05-19

BPE算法

让我来解释一下BPE (Byte Pair Encoding) 算法。

BPE是一种基于统计的分词算法,主要用于将文本分解成子词单元。它的核心思想是通过迭代合并最频繁出现的字符对来构建词汇表。让我详细解释这个过程:

  1. 初始化阶段
  • 首先将所有文本分解成单个字符
  • 每个字符都作为初始词汇表的一部分
  1. 迭代合并阶段
  • 统计所有相邻字符对的出现频率
  • 选择出现频率最高的字符对
  • 将这个字符对合并成一个新的子词单元
  • 将这个新的子词单元添加到词汇表中
  • 重复这个过程直到达到预定的词汇表大小

让我用一个具体的例子来说明:

假设我们有以下文本:

"low", "lower", "newest", "widest"
1
  1. 第一步:字符分解
l o w
l o w e r
n e w e s t
w i d e s t
1
2
3
4
  1. 第二步:统计字符对频率
lo: 2次
ow: 2次
we: 2次
es: 2次
st: 2次
1
2
3
4
5
  1. 第三步:合并最频繁的字符对 假设"es"是最频繁的,我们合并它:
l o w
l o w e r
n e w es t
w i d es t
1
2
3
4
  1. 继续迭代 继续统计和合并,直到达到目标词汇表大小。

BPE算法的优势:

  1. 处理未知词
  • 由于BPE将词分解成子词单元,即使遇到训练集中没有的词,也能通过子词组合来表示
  • 例如,如果遇到"newer"这个新词,可以通过已知的子词"new"和"er"来表示
  1. 平衡词汇表大小
  • 通过控制合并次数,可以控制词汇表的大小
  • 较小的词汇表可以节省内存,较大的词汇表可以更好地表示语义
  1. 保持语义信息
  • 通过合并频繁出现的字符对,可以捕捉到语言中的常见模式
  • 例如,"ing"、"ed"等常见后缀会被识别为独立的子词单元
  1. 跨语言适用性
  • BPE不依赖于特定语言规则,可以应用于任何语言
  • 这使得它特别适合多语言模型

在GPT等大型语言模型中,BPE被广泛使用,因为它能够:

  • 有效处理未知词
  • 保持合理的词汇表大小
  • 捕捉语言中的常见模式
  • 提供灵活的分词方案

这就是为什么BPE成为了现代大型语言模型中最常用的分词算法之一。

上次更新: 2025/10/09, 23:53:03
向量
逆向

← 向量 逆向→

最近更新
01
npx 使用指南
10-12
02
cursor
09-28
03
inspect
07-20
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式