LLM学习记录DAY11

news/2025/10/24 20:44:25/文章来源:https://www.cnblogs.com/szhAC/p/19164190

📘今日学习总结

tokenization分词算法

BPE分词(Byte-Pair Encoding)

  • BPE 算法从一组基本符号(例如字母和边界字符)开始,迭代地寻找语料库中的两个相邻词元,并将它们替换为新的词元,这一过程被称为合并。
  • 合并的选择标准是计算两个连续词元的共现频率,也就是每次迭代中,最频繁出现的一对词元会被选择与合并。
  • 合并过程将一直持续达到预定义的词表大小。

例子:

  • 单词列表: "{“l o w </w>”: 3, “l o w l y </w>”: 1, “l o w e r </w>”: 1, “n e w e r </w>”: 2}"
  • 词汇表: {l, o, w, </w>, y, e, r, n}
子词对 总频率
(l,o) 3+1+1=5
(o,w) 3+1+1=5
(w,e) 1+2=3
(e,r) 1+2=3
(r,</w>) 1+2=3
... ...
  • 选择频率最高的对(若有并列,任选其一,此处选(l,o)),将其合并为新子词lo,加入词汇表。
  • 此时词汇表更新为:{l, o, w, </w>, y, e, r, n, lo}
  • 单词列表: "{“lo w </w>”: 3, “lo w l y </w>”: 1, “lo w e r </w>”: 1, “n e w e r </w>”: 2}"
  • 重复迭代,直到满足终止条件

Byte-level BPE分词

  • 2019年12月,论文:Neural Machine Translation with Byte-Level Subwords在基于BPE基础上提出以Byte-level为粒度的分词算法Byte-level BPE
  • 改进的UTF-8编码是一个变长的编码,有1~4个范围的字节(bytes)长度。对于不同语言中字符采用不同长度的字节编码,例如英文字符基本都是1个字节(byte),中文汉字通常需要2~3个字节

WordPiece分词

  • 与 BPE 类似,WordPiece 分词算法也是从一个小的词汇表开始,其中包括模型使用的特殊词元和初始词汇表。
  • 与 BPE 方法的不同点在于,WordPiece 分词算法并不选择最频繁的词对,而是使用下面的公式为每个词对计算分数:

\[\text{得分}=\frac{\text{词对出现的频率}}{\text{第一个词出现的频率} \times \text{第二个词出现的频率}} \]

例子:

  • 单词列表: "l o w </w>", "l o w e s t </w>", "n e w e r </w>", "w i d e r </w>"
  • 词汇表: {l, o, w, e, s, t, n, r, i, d, </w>}
  • 比如(e, s)freq=1freq(e)=3freq(s)=1 -> score = 1/(3*1) = 0.33
  • 选择得分最大的合并
  • 重复迭代,直到满足终止条件

Unigram 分词算法

  • 与 BPE 分词和 WordPiece 分词不同,Unigram 分词方法从语料库的一组足够大的字符串或词元初始集合开始,迭代地删除其中的词元,直到达到预期的词表大小。
  • 它假设从当前词表中删除某个词元,并计算训练语料的似然增加情况,以此来作为选择标准。这个步骤是基于一个训练好的一元语言模型来进行的。
  • 为估计一元语言模型,它采用期望最大化(Expectation–Maximization, EM)算法:在每次迭代中,首先基于旧的语言模型找到当前最优的分词方式,然后重新估计一元概率从而更新语言模型。
  • 这个过程中一般使用动态规划算法(即维特比算法,Viterbi Algorithm)来高效地找到语言模型对词汇的最优分词方式。
  • UniLM算法步骤
输入:训练语料;词表大小V; 保留阈值X;1.准备基础词表:初始化一个很大的词表,比如所有字符+高频Ngram,也可以通过BPE算法初始化;
2.针对当前词表,用语言模型(unigram lm)估计每个子词在语料上的概率;
3.计算删除每个Subword后对总loss的影响及Score得分,作为该Subword排序的Score得分;
4.将子词按照Score大小进行排序,保留前X%的Subword;注意,建议单字符的Subword不能被丢弃,以免OOV;
5.重复步骤2到4,直到词表大小减少到设定值

Word2Vec算法

Word2Vec如何捕捉词义关系

词向量的生成

  • Word2vec通过训练过程学习到每个词的向量表示,这些向量能够捕捉到词与词之间的语义和句法关系。
  • 具体来说,模型通过最大化某个单词与其上下文单词之间的联合概率来学习词向量。这样,词向量不仅包含了单词本身的含义,还包含了它在不同上下文中的使用情况。
  • 在训练过程中,模型通过反向传播算法调整词向量,使得模型的预测结果尽可能接近实际的上下文词或中心词。
  • 具体步骤如下:
    • 1.初始化:为词汇表中的每个词随机初始化一个向量。
    • 2.前向传播:根据模型的结构(CBOW或Skip-gram),计算每个词的条件概率。
    • 3.计算损失:使用损失函数(如交叉熵损失)计算模型的预测误差。
    • 4.反向传播:计算损失函数关于词向量的梯度,并通过梯度下降算法更新词向量

词义关系的捕捉

  • 上下文信息:在训练过程中,模型会根据单词在句子中的上下文来调整词向量。
  • 例如,在句子 "The king is a man" 和 "The queen is a woman" 中,"king" 和 "man" 经常一起出现,"queen" 和"woman"也经常一起出现。
  • 因此,模型会学习到"king” 和"man” 之间的关系,以及"queen” 和"woman"之间的关系。
  • 向量空间中的关系:在高维向量空间中,相似的单词会靠近彼此,而相关的单词也会表现出特定的向量关系。例如,“king-man +woman ≈ queen" 表明 "king" 和 "man" 之间的关系类似于"queen" 和"woman"之间的关系。

词向量的作用

  • 语义相似性:词向量可以捕捉到单词之间的语义相似性。例如,"quick" 和 "fast” 的向量在高维空间中距离较近
  • 词义关系:词向量可以捕捉到单词之间的关系。例如,"king -man + woman≈queen”,这表明词向量可以捕捉到性别、角色等关系。
  • 作为特征:词向量可以作为特征输入到其他机器学习模型中,用于各种自然语言处理任务,如情感分析、机器翻译、命名实体识别等。

线性层的权重

CBOW模型

  • 输入:上下文词的向量\(v_{w_{t-n}}, \dots, v_{w_{t-1}}, v_{w_{t+1}}, \dots, v_{w_{t+n}}\)
  • 输出:中心词\(w_t\)的概率分布\(P(w_t|w_{t-n},\dots, w_{t-1}, w_{t+1}, \dots, w_{t+n})\)
  • 在CBOW模型中,词向量是输入层的权重\(W\)的列向量。
  • 具体来说,假设\(W\)是一个\(V \times d\)的矩阵,其中\(V\)是词汇表的大小,\(d\)是词向量的维度。
  • 矩阵\(W\)的第 \(i\)\(W_i\)。就是词汇表中第 \(i\) 个词的词向量
  • CBOW模型的损失函数通常使用交叉熵损失(Cross-EntropyLoss)。
  • 假设我们有一个词汇表\(V\),中心词的真实标签是\(w_t\)
  • 模型的预测概率分布是\(P(w_t|w_{t-n},\dots, w_{t-1}, w_{t+1}, \dots, w_{t+n})\)
  • 那么损失函数可以表示为:\(J(\theta) = - \log P(w_{t}|w_{t-n}, \dots, w_{t-1}, w_{t+1}, \dots, w_{t+n})\)
  • 假设\(y\)是一个one-hot编码的向量,表示中心词\(w_t\),那么损失函数可以写成:
  • \(J(\theta) = - \sum_{i=1}^{V} y_{i} \log P(w_{i}|w_{t-n},..., w_{t-1}, w_{t+1},...)\)
  • 其中,\(y_i\)是一个one-hot 向量,只有在\(i=w_t\)时为1,其他位置为0

SKip-gram模型

  • 输入:中心词的向量\(v_{w_t}\)
  • 输出:上下文词\(w_{t-n}, \dots, w_{t-1}, w_{t+1}, \dots, w_{t+n}\) 的概率分布\(P(w_{t+j}|w_t)\)
  • 在 SKip-gram 模型,词向量是输入层的权重\(W\)的列向量。
  • 具体来说,假设\(W\)是一个\(V \times d\)的矩阵,其中\(V\)是词汇表的大小,\(d\)是词向量的维度。
  • 矩阵\(W\)的第 \(i\)\(W_i\)。就是词汇表中第 \(i\) 个词的词向量
  • Skip-gram模型的损失函数同样使用交叉熵损失。
  • 假设我们有一个词汇表\(V\),上下文词的真实标签是\(w_{t+j}\)
  • 模型的预测概率分布是\(P(w_{t+j}|w_t)\)
  • 那么损失函数可以表示为:\(J(\theta) = - \sum_{-n \leq j \leq n, j \neq 0} \log P(w_{t+j}|w_t)\)
  • 假设\(y_j\)是一个one-hot编码的向量,表示中心词\(w_{t+j}\),那么损失函数可以写成:
  • \(J(\theta) = - \sum_{-n \leq j \leq n, j \neq 0} \sum_{i=1}^{V} y_{j,i} \log P(w_i|w_t)\)
  • 其中,\(y_{j,i}\)是一个one-hot 向量,只有在\(i=w_{t+j}\)时为1,其他位置为0

优化技巧

  • 为了提高训练效率,通常会使用一些优化技巧,如负采样(Negative Sampling)和层次Softmax(Hierarchical Softmax)。

负采样

  • 负采样通过在每次训练时只考虑一小部分负样本,而不是所有词汇表中的词,来减少计算量。
  • 具体来说,对于每个正样本(实际的上下文词),随机选择一些负样本(不在上下文中的词),并只计算这些样本的损失。

层次Softmax

  • 层次Softmax通过构建一个二叉树结构,将词汇表中的词组织起来,从而减少计算量。
  • 在计算损失时,只需要沿着树的路径计算,而不是计算所有词的概率。

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

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

相关文章

ABP - 当前用户 [ICurrentUser、CurrentUser]

当前用户(Current User) 核心辅助类:ICurrentUser:获取当前登录用户信息(ID、用户名、角色等)。 CurrentUser:静态快捷访问(需在请求上下文内)。在ABP框架中,ICurrentUser和CurrentUser用于获取当前登录用户…

轮次检测模型 VoTurn-80M 开源,多模态融合架构;OpenAI 收购桌面助手 Sky:实时识别屏幕自然语言交互丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的技术」、「有亮点的产品」、「有思考的文章」、「有态度…

ABP - 依赖注入和属性注入

一、依赖注入(Dependency Injection) 核心辅助类:IServiceCollection:扩展方法(如AddTransient、AddScoped)。 DependencyAttribute:标记注入生命周期(Transient/Scoped/Singleton)。 IIocResolver:手动解析…

ABP vNext 框架功能模块 - 依赖注入和属性注入

一、依赖注入(Dependency Injection) 核心辅助类:IServiceCollection:扩展方法(如AddTransient、AddScoped)。 DependencyAttribute:标记注入生命周期(Transient/Scoped/Singleton)。 IIocResolver:手动解析…

SAP维护汇率的关键Tcode

Tcode: OB08 维护汇率Tcode:OBBS 维护汇率的折算比率☆ No matter how much you change, you still have to pay the price for the things youve done.

幂函数

观察幂函数图像结论: 所有的幂函数都过1,1点,幂函数在第一象限必有图像。 a为负数时,不过0,0点,其余都有0,0点。 一、画函数用结论,a<0,单调递减,a>0,单调递增。 二、0<a<1之间,增的缓,a>1,…

ABP vNext 框架功能模块 - 动态API(Dynamic API)[RemoteServiceAttribute | DynamicApiControllerBuilder]

动态API(Dynamic API) 核心辅助类:DynamicApiControllerBuilder:动态生成API控制器。 RemoteServiceAttribute:标记类/方法为远程服务(自动暴露API)。在ABP框架中,DynamicApiControllerBuilder和RemoteService…

第4天(中等题 滑动窗口、哈希表)

打卡第四天 两道中等题哈希表记录元素频率:哈希表程序表示:滑动窗口+哈希表优化算法耗时≈一小时 明天继续 小tips:不小心删除可以用 Ctrl+Z 撤回刚刚消除的代码/文字

ABP vNext 框架功能模块 - 动态API(Dynamic API)

** 动态API(Dynamic API)** 核心辅助类:DynamicApiControllerBuilder:动态生成API控制器。 RemoteServiceAttribute:标记类/方法为远程服务(自动暴露API)。在ABP框架中,DynamicApiControllerBuilder和RemoteSe…

ABP vNext 框架功能模块 - 模块化(Modularity)

模块化(Modularity) 核心辅助类:AbpModule:所有模块的基类,定义模块生命周期方法。 DependsOnAttribute:声明模块依赖关系。 ModuleInitializer:模块初始化器(自动生成)。 IModuleContainer:模块容器,用于运…

ABP vNext 框架功能模块

以下是ABP框架中各核心功能的辅助类及示例说明,涵盖模块化、依赖注入、ORM集成等关键特性: 一. 模块化(Modularity) 核心辅助类:AbpModule:所有模块的基类,定义模块生命周期方法。 DependsOnAttribute:声明模块…

题解:P14299 [JOI2023 预选赛 R2] 填充 / Painting

\(\displaystyle \large {题目传送门}\) 题面 给定一个一个 H*W 的矩形 , 每个坐标上有一个颜色 , 上下左右相邻的同颜色节点可以形成连通块 。 你可以对任意一个连通块 , 进行一次并仅有一次的染色 , 求新形成的连…

Devolutions Server权限提升漏洞分析与修复指南

本文详细分析了CVE-2025-11957漏洞,该漏洞存在于Devolutions Server 2025.2.12.0及更早版本中,由于临时访问工作流程的授权机制存在缺陷,允许经过身份验证的基本用户通过精心构造的API请求自我批准或批准其他用户的…

AI股票预测分析报告 - 2025年10月24日 - 20:08:50

AI股票预测分析报告 - 2025年10月24日body { font-family: "Microsoft YaHei", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: rgba(51, 51, 51, 1); max-width: 1…

在 Astro 博客中优雅使用 51.la 统计数据

在 Astro 博客中使用 51.la 免费流量统计,通过解析 widget JS 自行渲染访问数据,既保留统计功能,又可自定义展示,让你直观了解博客访客情况作为老牌网站流量统计服务商,51.la 提供每月高达 1000 万次的免费统计额…

申威服务器安装Java11(swjdk-11u-9.ky10.sw_64.rpm)详细操作步骤(附安装包)

申威服务器安装Java11(swjdk-11u-9.ky10.sw_64.rpm)详细操作步骤(附安装包)​这是申威架构(国产芯片,常见于Kylin V10等国产系统)专用的 ​Java 11 版本(RPM安装包)​,包名为 java-11.0.7-swjdk-11u-9.ky10.…

str.endswith() 类似的方法

在Python中,与str.endswith()类似的方法(主要涉及字符串的开头/结尾检查、子串搜索等)有很多,以下是核心方法及其功能对比: 1. 开头检查:str.startswith()功能:检查字符串是否以指定前缀开头,返回True/False。…

深度剖析OpenHarmony AI Engine:开发板端侧大模型推理插件机制全链路拆解 - 实践

深度剖析OpenHarmony AI Engine:开发板端侧大模型推理插件机制全链路拆解 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font…

Linux下的拼音输入法 (3)

此贴简介libgooglepinyin-0.1.2,刚看了几分钟(持续更新中): data/下: 730 2012年 2月 3日 CMakeLists.txt227 2012年 2月 3日 googlepinyin.pc.in3.5M 2012年 2月 3日 rawdict_utf16_65105_freq.be.txt3.5M 2012年…