中国化工网网站建设建议/seo搜索引擎优化薪酬

中国化工网网站建设建议,seo搜索引擎优化薪酬,wordpress页面导航收录,wordpress点播收费大模型词表注入(Vocabulary Injection) 大模型词表注入(Vocabulary Injection)是指在预训练语言模型(如GPT、LLAMA等)的基础上,动态扩展其词表(Vocabulary)的技术&#…

大模型词表注入(Vocabulary Injection)

大模型词表注入(Vocabulary Injection)是指在预训练语言模型(如GPT、LLAMA等)的基础上,动态扩展其词表(Vocabulary)的技术,以适应特定任务或领域的需求。

一、词表注入的「原理」

  1. 词表结构与嵌入层调整
    • 大模型的词表通常由子词(subword)或词片(token)组成(如BPE、WordPiece算法生成),每个词对应一个嵌入向量(Embedding Vector)。
    • 注入新词时,需要扩展模型的嵌入矩阵(Embedding Matrix),新增词对应的向量,并调整模型输入层(Embedding Layer)和输出层(如LM Head)的维度。
  2. 新词向量的初始化
    • 直接随机初始化新词的嵌入向量可能导致训练不稳定。常见策略是:
      • 复用相似词向量:例如,将新词"LLM"初始化为"language"和"model"的平均向量。
      • 对齐预训练语义空间:通过外部词向量(如Word2Vec)映射到模型的嵌入空间。
  3. 参数适配与微调
    • 注入新词后,通常需要在小规模领域数据上对模型进行微调(Fine-tuning),使新词的嵌入向量与原有参数协同工作。
    • 某些方法(如[《Extending Pre-trained Models with Domain-Specific Vocabulary》](https://arxiv.org/abs/2104.08646))会冻结部分参数,仅训练新词相关部分以减少计算量。

二、词表注入的「原因」

  1. 解决未登录词(OOV)问题
    • 预训练模型的词表固定,无法覆盖领域专有名词(如医学术语“EGFR”)、新造词(如网络流行语“栓Q”)或多语言词汇。
  2. 提升领域任务性能
    • 在特定领域(法律、医疗、金融)中,直接使用原始词表可能导致文本被过度切分为子词,丢失语义信息。注入领域词表可保留关键术语的完整性。
  3. 多语言扩展需求
    • 为支持新语言,需注入该语言的词汇(如中文字符、俄文字母),同时调整模型处理多语言的能力。
  4. 避免全模型重训练
    • 从头预训练大模型成本极高,词表注入允许在原有模型基础上低成本扩展,节省计算资源和时间。

三、技术挑战与解决方案

  1. 嵌入空间对齐
    • 问题:新词向量可能破坏原有语义空间的一致性。
    • 方案:使用对比学习(Contrastive Learning)或跨词注意力(Cross-token Attention)对齐新旧词向量。
  2. 模型结构限制
    • 问题:Transformer的参数量与词表大小相关,盲目扩展词表会显著增加模型体积。
    • 方案:动态词表(Dynamic Vocabulary)、参数共享(如ALBERT的跨层参数共享)。
  3. 训练数据偏差
    • 问题:注入新词后,若微调数据不足,模型可能过拟合或遗忘原有知识。
    • 方案:渐进式训练(Progressive Training)或知识蒸馏(Knowledge Distillation)。

四、典型应用场景

  1. 领域适配
    • 例如,向BERT注入法律术语后,在合同解析任务中表现更佳。
  2. 多语言模型扩展
    • 如为英文训练的GPT-2注入中文词表,支持中英混合生成。
  3. 实时更新
    • 快速响应新事件(如疫情术语“奥密克戎”)或网络热词。

五、代码及微调实验

有两种方法:1.词表注入;2.词表训练–>添加词表

  • 导入原始大模型及tokenier
tokenizer = AutoTokenizer.from_pretrained(model_path,trust_remote_code=True,use_fast=False if model_arch == 'llama' else True
)model = AutoModel.from_pretrained(model_path,trust_remote_code=True,torch_dtype=torch_dtype
)
  • 词表注入
all_words = []
with open(file, 'r', encoding='utf-8') as f:lines = f.readlines()
words = [line.strip() for line in lines]
all_words.extend(words)
tokenizer.add_tokens(all_words)
tokenizer.save_pretrained(save_path)
  • 词表训练

使用sentencepiece==4.1.0 训练词表

sp.SentencePieceTrainer.train(# 只支持 txt 和 tsv 格式input=corpus,# 保存的模型前缀名model_prefix='bpe_expand',# 词表大小vocab_size=vocab_size,# 指定模型的字符覆盖率, 中文日文等推荐为 0.9995, 其余可以尝试 1.0character_coverage=character_coverage,# 分词算法model_type='bpe',# 是否将数字划分为单个 token, 在 llama 中是这么做的split_digits=True if model_arch == 'llama' else False,# 指定在遇到未知或很少的字符时将其分解为 UTF-8 字节, 开启后等效于 bbpebyte_fallback=True,# 指定输入句子的最大长度,以字节为单位max_sentence_length=max_sentence_length

参数说明:

参数重要性推荐场景
input必填所有场景
model_prefix必填所有场景
model_type根据需求选择 unigrambpe
vocab_size通常设为 3200050000 或更高
character_coverage多语言数据设为 0.9995,单语言数据默认 1.0
byte_fallback处理未知字符时设为 True
max_sentence_length处理长文本时需调大(如 16384
split_digits需区分数字时设为 True
  • 添加词表

    词表训练之后需要添加词表,并保存:

    #1.加载bpe model
    sp_bpe = sp.SentencePieceProcessor()
    sp_bpe.load(bpe_model)
    #2.处理词汇
    raw_vocab = [sp_bpe.id_to_piece(id) for id in range(sp_bpe.get_piece_size())]
    clean_vocab = list(set(filter(is_chinese, raw_vocab)))
    #添加词汇并保存zz
    tokenizer.add_tokens(clean_vocab)
    tokenizer.save_pretrained(save_path)
    
  • 维度更新

经过词表注入或者词表训练,两种方法其中之一之后,更新模型的维度参数:

model.resize_token_embeddings(new_length)#new_length 为新词表的词汇量
model.save_pretrained(save_path)
微调对比实验(待补充)

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

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

相关文章

在Cesium中使用ThreeJs材质(不是场景融合哦)

在Cesium中使用ThreeJs材质(不是场景融合哦)_哔哩哔哩_bilibili

给Web开发者的HarmonyOS指南02-布局样式

给Web开发者的HarmonyOS指南02-布局样式 本系列教程适合鸿蒙 HarmonyOS 初学者,为那些熟悉用 HTML 与 CSS 语法的 Web 前端开发者准备的。 本系列教程会将 HTML/CSS 代码片段替换为等价的 HarmonyOS/ArkUI 代码。 布局基础对比 在Web开发中,我们使用CS…

京东软件测试岗位经典面试题(附答案)

1、黑盒测试的测试用例常见设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 1)等价类划分:等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假…

3.26[a]paracompute homework

5555 负载不平衡指多个线程的计算量差异显著,导致部分线程空转或等待,降低并行效率。其核心矛盾在于任务划分的静态性与计算动态性不匹配,尤其在处理不规则数据或动态任务时尤为突出。以稀疏矩阵的向量乘法为例,假设其非零元素分…

帕金森患者的生活重塑:从 “嘴” 开启康复之旅

当提到帕金森病,许多人会联想到震颤、僵硬和行动迟缓等症状。这种神经系统退行性疾病,给患者的生活带来了巨大的挑战。然而,你可知道,帕金森患者恢复正常生活,可以从 “嘴” 开始管理? 帕金森病在全球影响着…

Android14 Settings应用添加有线网开关条目实现

Android14 Settings应用添加有线网开关条目 文章目录 Android14 Settings应用添加有线网开关条目一、前言二、适配修改1、network_provider_settings.xml2、NetworkProviderSettings.java3、TurnOnOffEthernetNetworkController.java4、去除有线网提示条目。5、效果UI&#xff…

Axure RP设计软件中的各种函数:包括数字、数学、字符串、时间及中继器函数,详细解释了各函数的用途、参数及其应用场景。

文章目录 引言函数分类数字函数数学函数字符串函数时间函数函数中继器函数引言 在axure交互设计时,函数可以用在条件公式和需要赋值的地方,其基本语法是用双方括号包含,变量值和函数用英文句号连接。 在交互事件编辑器中通过fx按钮插入函数表达式,例如设置文本内容为: …

c#难点整理3

1.静态类的说明 a.静态类里不能定义实例方法,实例属性,所以说非静态类是无法继承静态类的。父类无法拥有实例化的方法和属性,子类可以,这从逻辑上是矛盾的,不符合继承的逻辑。 b.那么静态类与静态类之间能否继承能呢…

Win11+VS2022+CGAL5.6配置

1. CGAL库简介 CGAL(Computational Geometry Algorithms Library)是一个开源的计算几何算法库,主要用于处理几何问题和相关算法的实现。它提供了丰富的几何数据结构和高效算法,覆盖点、线、多边形、曲面等基本几何对象的表示与操…

手搓全自动文章多平台发布系统:5、跨页面接入playwright类,修改ui_components.py,整合到main.py

昨天已经要多上下文,单上下文的模块中测试成功了,今天要想法接入。 整理完成的所有代码如下: 结构如图: main.py import sys from PyQt6 import QtWidgets from modules.ui_components import TableManager # 导入界面类 import asyncio# 在主函数中使用 qasync 整合事…

涨薪技术|使用Dockerfile创建镜像

上次的推文内容中介绍了如何使用docker commit的方法来构建镜像,相反推荐使用被称为Dockerfile的定义文件和docker build命令来构建镜像。Dockerfile使用基本的基于DSL语法的指令来构建一个Docker镜像,之后使用docker build命令基于该Dockerfile中的指令…

成都国际数字影像产业园:打造数字影像产业新高地

成都国际数字影像产业园:打造数字影像产业新高地 成都国际数字影像产业园正致力于构筑数字影像产业的新高地,成为推动区域数字经济发展的重要引擎。 核心定位与目标 该园区精准定位于数字影像文创产业,旨在打造集内容创作、技术研发、人才…

各类神经网络学习:(三)RNN 循环神经网络(中集),同步多对多结构的详细解释

上一篇下一篇RNN(上集)RNN(下集) 同步多对多结构 1)结构详解 ①图解: ②参数含义: x t x_t xt​ :表示每一个时刻的输入; o t o_t ot​ :表示每一个时刻的输…

【嵌入式学习2】C语言 - VScode环境搭建

目录 ## 语言分类 ## c语言编译器 ## VScode相关配置 ## 语言分类 编译型语言:C,C解释型语言:python,JS ## c语言编译器 分类GCC 系列MinGWCygwinMSVC系列一套编程语言编译器将GCC编译器和GNU Binutils移植到Win32平台下的产物…

qt+opengl 加载三维obj文件

1前面我们已经熟悉了opengl自定义顶点生成一个立方体,并且我们实现了立方体的旋转,光照等功能。下面我们来用opengl来加载一个obj文件。准备我们首先准备一个简单的obj文件(head.obj)。资源在本页下载 2 在obj文件里面&#xff0c…

0326-Java 字符串方法

package com.qc.字符串;import java.util.Arrays;public class Test {public static void main(String[] args) { // String x"hello";//字符串 char[] // x x"demo";//字符串拼接 // xx2450; // xxtrue; // System.out.println(x);//hellodemo2450t…

风光互补智慧路灯的灯杆设计有哪些要求?

嘿,朋友们!叁仟风光互补智慧路灯的灯杆设计那可是超级重要的事儿,得全方位综合考量各种因素,就是为了确保咱们的路灯能兼具超棒的功能性、绝对的安全性、无敌的美观性以及超厉害的耐用性!下面就来看看这些超赞的常见要…

06、RAG

LLM的知识仅限于它所接受到的训练数据。如果我们希望让它了解特定领域的专有知识,则可以使用下面的方式操作: 使用RAG使用专有数据对LLM进行微调RAG与数据微调方式结合使用 什么是RAG 简单地说,RAG就是把数据发送给LLM之前从数据中查找相关…

flink 安装与访问 ui

官方文档:First steps | Apache Flink 版本:v2.0.0 下载Flink Flink运行在所有类UNIX环境中,即Linux,Mac OS X和Cygwin(适用于Windows)。您需要安装Java 11。要检查安装的Java版本,请在终端中…

PyTorch实现Transformer模型

首先,我得回顾一下Transformer的基本结构,确保自己没有记错。Transformer由编码器和解码器组成,每个编码器层包含多头自注意力机制和前馈网络,解码器层则还有编码器-解码器注意力。 接下来,用户需要的是手把手的代码解…