语言模型理论基础-持续更新-思路清晰

1.预训练

相似的任务A、B,任务A已经用大数据完成了训练,得到模型A。

我们利用-特征提取模型的-“浅层参数通用”的特性,使用模型A的浅层参数,其他参数再通过任务B去训练(微调)。

2.统计语言模型

通过条件概率,解决“完型填空”问题和“预测句子出现概率”问题。

3.神经网络语言模型 -- 为了预测next

就是通过mlp,利用已有的词库将单词编码为onehot * Q矩阵(可学习),拟合一个预测下一个单词的模型。最后输出的softmax维度是词库的维度大小。

softmax(w2(tanh((w1x+b1)))+b2)

x是输入的词编码

缺点:onehot的维度==词库的大小,容易出现维度爆炸。我们希望去训练一个Q去控制词embedding大小。

得出:onehot * Q = V,V向量就能表示一个单词的词向量。且能调整大小、能计算词的余弦相似度。

但是:一个Q矩阵,所有的词都在用?

4.Word2Vec类模型 -- 为了得到词vec

· CBOW

给出一个词的上下文,预测这个词。--完形填空

· Skip-gram

给出词预测上下文。--没啥用

w2v是一种预训练模型,因为这个模型可以预训练好一个Q矩阵,供别的下游任务直接使用,无需重新训练。

而onehot不是预训练,是一一对应的表查询。

但是:词向量不能进行多义词表示。

5.ELMo--解决上述问题

注意双向双层

输入:很普通的w2v词向量E;

输出:融合上下文信息的新词向量T。对于一个同一词,T的编码也会不一样了,而且相关性应该是负的。

但是:lstm不能并行,长期依赖。

6.attention

理解:“Query,Key,Value的概念取自于信息检索系统,举个简单的搜索的例子来说。当你在某电商平台搜索某件商品(年轻女士冬季穿的红色薄款羽绒服)时,你在搜索引擎上输入的内容便是Query。 然后搜索引擎根据Query为你匹配Key(例如商品的种类,颜色,描述等)。 然后根据Query和Key的相似度得到匹配的内容(Value)。”

理解:Q,K,V是三个矩阵。 是 X 输入与 Wq,Wk,Wv 点积的结果。 最开始Wq,Wk,Wv 是随机生成的, 后面通过训练 Wq,Wk,Wv 会不断调整,通过loss 函数进行。 Wq,Wk,Wv 就是需要训练的参数。

理解:每个token都会发出一个Q去询问其他token,点乘他们的K,得到相对的重要性,为了消除较大的K对softmax的影响除以根号dk,再做softmax得到概率后,点乘V,得到具体需要注意多少

  !!从分布的角度解释。

7.self-attention

经典

8.67的区别

· 注意力机制没有规定QKV的来源

· 自注意力规定QKV必须是源于X,只是乘了不同的矩阵,在空间上做了不同的伸缩旋转。

9.self和rnn lstm的比较

rnn:

,x0的信息传的远了就消失了。

lstm:

,通过门,选择性记忆/增强前文的信息。

二者都不能并行,存在长序列依赖问题。

10.mask attention

生成模型是一个单词一个单词的生成,所以对已生成的单词想要做attention的话,attention map会像是下阶梯形矩阵。

11.多头自注意

就是将X分成8块,每个头有自己的QKV,同样得到一个Z,拼接后再经过一个线性变换得到原来大小的Z。

12.位置编码

· 由于attention可以并行计算,导致它不能像rnn一样完全顺序进行计算。

· 而且如果没有位置编码,即使话的顺序是乱的,也不影响attention的计算。所以应该有位置编码来表示语序。加到原来的词向量中。

计算方式:

 对于每个pos的编码,偶数位置用sin奇数位置用cos。2i的目的仅是为了转换为对应的三角函数。

再根据三角函数和差化积:

得到:PE = sin(将posi分为两数之和) = 这两个数的PE的线性组合。

理解为:较大posi的编码中蕴含了较小posi的PE信息。即,相当于递归的意思,后面的pos必须依赖之前的值。

13.transformer框架

seq2seq模型

encode:将输入变成词向量

decode:输入词向量,生成下步预测

· Encoder层

N层encoder,代表输入经过了N个encoder逐步增强词向量表示。

每层中,初始化X的embedding--position encode--self att--Z score--laynorm(X+Z)--Z1--FFN做非线性变换--laynorm(Z1+Z2)

· Decoder层

将encode的输出作为KV,那decode层的输入是啥?

训练阶段的输入是生成的target目标值,然后用它经过mask self att求Q,再和之前的KV做交叉att。

预测阶段的输入是之前生成过的所有值,根据这些内容去预测下一个可能的词。

14.为什么decoder做mask?

为了解决训练阶段和测试阶段的输入不匹配。即:训练阶段decoder输入了完整的target序列, 而测试阶段只有已生成的序列。所以,使用了mask后,可以让训练阶段也看不到序列后文。

15.为什么decoder产生Q,encoder产生KV?

一句话来讲:输出的内容是要参考你输入序列的上下文。

16.关于最初始化的词向量,无所谓是onehot还是别的,最后都会得到更新。但是越高效的初始化能对应更少的更新次数。模型会把一个词向量对应到一个空间位置。 

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

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

相关文章

IDEA的基础快捷键

文章目录 1、书写main函数2、书写输出函数println3、书写for循环4、输出变量的值或者输出函数求的值5、代码注释7、主题、字体设置8、自动生成使用信息9、关闭启动IDEA默认打开上次的项目10、字体放大放小11、代码缩进12、快速复制/删除一行13、回退14、字母大小写转换15、调试…

音视频 二 看书的笔记 MediaPlayer

此类是用于播放声音和视频的主要 API 对方不想多说向你丢了一个链接 MediaPlayer Idle 空闲状态Initialized 初始化状态 调用 setDataSource() 时会进入此状态 setDataSource必须在Idle 状态下调用,否则就抛出异常了了了了了。Prepared 准备状态 回调监听setOnPrep…

Linux笔记---动静态库(使用篇)

目录 1. 库的概念 2. 静态库(Static Libraries) 2.1 静态库的制作 2.2 静态库的使用 2.2.1 显式指定库文件及头文件路径 2.2.2 将库文件安装到系统目录 2.2.3 将头文件安装到系统目录 3. 动态库 3.1 动态库的制作 3.2 动态库的使用 3.2.1 显式…

CAS(Compare And Swap)

CAS核心原理 操作流程 CAS 包含三个参数:内存值(V)、预期值(E)和新值(N)。执行步骤如下: 比较:检查当前内存值 V 是否等于预期值 E。 交换:如果相等&#…

宝塔面板安装docker flarum失败,请先安装依赖应用: [‘mysql‘]:5/8

安装失败的解决方案 提示错误请先安装依赖应用: [mysql]:5/8 解决方案:不要使用最新的docker mysql,使用5.7.44版本docker mysql,等安装完毕再安装docker flarum就不会报错了。 如果安装完成你不知道默认的账号密码可以看这里 宝塔docker f…

c#的.Net Framework 的console 项目找不到System.Window.Forms 引用

首先确保是建立的.Net Framework 的console 项目,然后天健reference 应用找不到System.Windows.Forms 引用 打开对应的csproj 文件 在第一个PropertyGroup下添加 <UseWindowsForms>true</UseWindowsForms> 然后在第一个ItemGroup 下添加 <Reference Incl…

基于 mxgraph 实现流程图

mxgraph 可以实现复杂的流程图绘制。mxGraph里的Graph指的是图论(Graph Theory)里的图而不是柱状图、饼图和甘特图等图(chart)&#xff0c;因此想找这些图的读者可以结束阅读了。 作为图论的图&#xff0c;它包含点和边&#xff0c;如下图所示。 交通图 横道图 架构图 mxGrap…

21.Excel自动化:如何使用 xlwings 进行编程

一 将Excel用作数据查看器 使用 xlwings 中的 view 函数。 1.导包 import datetime as dt import xlwings as xw import pandas as pd import numpy as np 2.view 函数 创建一个基于伪随机数的DataFrame&#xff0c;它有足够多的行&#xff0c;使得只有首尾几行会被显示。 df …

STL之空间配置器

1. 什么是空间配置器 空间配置器&#xff0c;顾名思义就是为各个容器高效的管理空间(空间的申请与回收)的&#xff0c;在默默地工作。虽然在常规使用STL时&#xff0c;可能用不到它&#xff0c;但站在学习研究的角度&#xff0c;学习它的实现原理对我们有很大的帮助。 2. 为什…

Axure项目实战:智慧城市APP(三)教育查询(显示与隐藏交互)

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;教育查询 主要内容&#xff1a;教育公告信息&#xff0c;小升初、初升高、高考成绩查询&#xff1b;教育公告信息为传统的信息页面&#xff0c;小升…

最大字段和问题 C++(穷举、分治法、动态规划)

问题描述 给定由n个整数&#xff08;包含负整数&#xff09;组成的序列a1,a2,…,an&#xff0c;求该序列子段和的最大值。规定当所有整数均为负值时定义其最大子段和为0 穷举法 最简单的方法就是穷举法&#xff0c;用一个变量指示求和的开始位置&#xff0c;一个变量指示结束…

【数据转换】- Halcon<->Mat

背景介绍 最近在写C#联合Haclon调用C的.dll文件进行联合编程。大致需求就是C#设计界面&#xff0c;然后调用Haclon的图像处理库&#xff0c;C把目标检测的模型进行TensorRT部署生成动态链接库&#xff0c;之后界面操作加载模型、对图像进行检测等功能。 设计界面如下&#xf…

MFC中如何判断一个窗口当前状态是显示还是隐藏

文章目录 一、核心方法&#xff1a;使用 CWnd::IsWindowVisible函数原型示例代码 二、注意事项1. 父窗口的影响2. 窗口最小化/最大化状态3. 窗口尚未创建 三、扩展&#xff1a;通过窗口样式直接判断四、完整示例代码五、总结 在MFC中&#xff0c;判断窗口当前是显示还是隐藏状态…

Java 大视界 -- 基于 Java 的大数据分布式系统的监控与运维实践(155)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

消息队列性能比拼: Kafka vs RabbitMQ

本内容是对知名性能评测博主 Anton Putra Kafka vs RabbitMQ Performance 内容的翻译与整理, 有适当删减, 相关数据和结论以原作结论为准。 简介 在本视频中&#xff0c;我们将首先比较 Apache Kafka 和传统的 RabbitMQ。然后&#xff0c;在第二轮测试中&#xff0c;会将 Kaf…

[ComfyUI] SDXL Prompt Styler 自定义节点的作用解析

1. SDXL Prompt Styler 的位置与基本功能 在 ComfyUI 的 “新建节点” → “实用工具” 下,可以找到 Style 节点(SDXL Prompt Styler)。该节点的主要作用是对输入的描述进行结构化处理,并在转换为 Stable Diffusion XL (SDXL) 提示词时,自动补充风格相关的内容,使提示词…

【JavaScript】金丹期功法

目录 数组声明数组数组的基本使用遍历数组案例&#xff1a;求数组中的最值数组操作查询数据修改数据新增数据案例&#xff1a;数组筛选删除数据 案例&#xff1a;渲染柱形图 数组 数组&#xff08;Array&#xff09;是一种可以按顺序保存数据的数据类型 场景&#xff1a;如果…

学习本地部署DeepSeek的过程(基于LM Studio)

除了使用Ollama部署DeepSeek&#xff0c;还可以使用LM Studio部署DeepSeek&#xff0c;后者是一款允许用户在本地计算机上运行大型语言模型&#xff08;LLMs&#xff09;的桌面应用程序&#xff0c;旨在简化本地模型的使用&#xff0c;无需云端连接或复杂配置即可体验 AI 功能。…

AOA与TOA混合定位,MATLAB例程,自适应基站数量,三维空间下的运动轨迹,滤波使用EKF

本代码实现了一个基于 到达角(AOA) 和 到达时间(TOA) 的混合定位算法,结合 扩展卡尔曼滤波(EKF) 对三维运动目标的轨迹进行滤波优化。代码通过模拟动态目标与基站网络,展示了从信号测量、定位解算到轨迹滤波的全流程,适用于城市峡谷、室内等复杂环境下的定位研究。 文…

C++:函数(通识版)

一、函数的基础 1.什么是函数&#xff1f;&#xff08;独立的功能单位&#xff09; 函数是C中封装代码逻辑的基本单元&#xff0c;用于执行特定任务。 作用&#xff1a;代码复用、模块化、提高可读性。 2、函数的基本结构 返回类型 函数名(参数列表) {// 函数体return 返回值…