NLP 主要语言模型分类

文章目录

    • ngram
    • 自回归语言模型
    • Transformer
    • GPT
    • BERT(2018年提出)
      • 基于 Transformer 架构的预训练模型
      • 特点
      • 应用
      • 基于 transformer(2017年提出,attention is all you need)
        • 堆叠层数
        • 与原transformer 的差异
        • bert transformer 层
      • 输出形状

ngram

在这里插入图片描述

  • N一般取 3-5
  • 马尔可夫假设
    • 假设第 n 个词出现的概率,仅收前面有限个词影响
    • 处理未出现语料的概率
      • 平滑方法:回退
        • 谷歌给出的回退建议值:0.4
        • 试用二元组代替三元组,做惩罚
        • P(c | ab) = P(c | b) * Bow(ab)

自回归语言模型

  • RNN

    • 循环神经网络
      自带激活函数 tanh
      在这里插入图片描述
      在这里插入图片描述
    • 特点
      • 一种经典的序列模型,能够处理变长输入序列。
      • 对输入内容串行处理,处理后面的内容,必须要等前面内容顺序先处理完毕,有效率问题。
    • 应用
      语言建模、机器翻译和情感分析。
    • 变体
      1. LSTM
        • 长短期记忆网络
          • 神经语言模型
          • 选择性遗忘
            通过多个 RNN 来实现
          • 三个门
            在这里插入图片描述 - Gate 机制(门限机制)
            • ft、it、ot 中用的是 sigmod 做激活函数
              Sigmod 输出的结果范围(0, 1),无限接近 0 的结果会被忽略
            • 通过数据筛选,做记忆更新
            • 生成候选记忆时用tanh
        • 特点
          • RNN 的一种扩展,通过引入门控机制来解决传统 RNN 中的梯度消失问题。
          • 双向 LSTM
            文本分别正向和反向输入得到两个 LSTM 输出
            • LSTM 是时序模型
            • 双倍参数得到更好的训练效果
        • 输出形状
          • batch_first=True
            [batch_size, sentence_length, hidden_size], [sentence_length, hidden_size]
          • batch_first=False
            [sentence_length, batch_size,, hidden_size], [sentence_length, hidden_size]
        • 应用
          • 处理长序列任务
          • 语言建模、机器翻译和情感分析
      2. GRU
        门控循环单元
        • 神经语言模型
        • 和 LSTM 相比,只有两个门
          1. 重置门
          2. 更新门
            • 控制信息的保留和更新
            • 将短期和长期记忆信息融合在一个隐藏状态中
        • 特点
          也是一种带有门控机制的 RNN 变体,但它拥有更简单的结构。在某些情况下,GRU 的性能与 LSTM 相当。
        • 应用
          • 处理长序列任务。
          • 语言建模、机器翻译和情感分析。
  • CNN
    卷积神经网络
    在这里插入图片描述
    按照文本长度卷积,需要先转置,卷积结束再转置回原形状。

    • 特点

      • 可以捕获局部特征并将它们组合成全局特征。
      • 有语序信息
      • 可以并行计算
    • 应用
      文本分类和文本表示学习

    • 变体
      Gated-CNN
      在这里插入图片描述
      卷积 A 与卷积 B 对位相乘,过滤 AB 相乘后为 0 部分,放缩 B 中在 0-1 的部分。

Transformer

  • 预训练语言模型
    基于自注意力机制 self attention。
  • 特点
    完全摒弃了 RNN 和 CNN,取得了在各种 NLP 任务上的显著性能提升。

GPT

  • 基于Transformer架构的生成式模型
    能够生成与训练数据类似的新样本的模型
  • 应用
    生成文本
    回答问题
    完成对话
    文本摘要
    语言翻译

BERT(2018年提出)

基于 Transformer 架构的预训练模型

  • 下载预训练模型
    hugging face
  • 预训练方式
    • 完形填空 MLM(mask language model)
    • 句子关系预测 NSP(next sentence pretraining)
      判断两句话是不是挨着的

特点

1. 通过大规模无监督预训练学习出通用的语言表示,通过微调(fine-tuning)在各种 NLP 任务上取得了令人瞩目的性能。- 预训练方法 pre-train + fine-tune- fine-tune可以理解为通过反向传播中对 bert 参数的再训练- Pre-train- 预训练会提前收集海量无标注文本数据- 进行预训练,在任务模型中使用- 预训练方式- 完形填空mask Language model `(预测 mask 对应字符)`- 句子关系预测两句话同时送入模型判断上下文关系`(二分类任务)`				- 在预训练过程中,BERT 被训练来预测给定句子中的缺失单词,这种预测任务被称为掩码语言模型(MLM)。
2. 是一种动态的,词义结合语境判断
3. 通过预训练利用了海量无标注文本数据
4. 相比词向量,bert 的文本标识结合了语境- 本质是一种文本表征- 词义是动态的,可以结合语境判断
5. Transformer 模型结构有很强的拟合能力,词与词之间的距离不会造成关系计算上的损失
6. 训练的效果得到大幅提升
  • 核心思想
    • 本质是一种动态的文本表征
    • 通过双向(bidirectional)的训练方式,在预训练阶段学习出语言的上下文相关表示,从而在下游任务中更好地理解语言。

应用

  • 常用于各种自然语言处理的判别式任务
  • 具体分类
    文本分类
    命名实体识别
    文本相似度计算
    语义理解

基于 transformer(2017年提出,attention is all you need)

堆叠层数
  • base 版本
    共堆叠 12 层 transformer encoder 层
  • large 版本
    共堆叠 24 层 transformer encoder 层
与原transformer 的差异
  1. 仅使用了transformer 的encoder 层
    通用 transformer 层
  2. position encoding
    位置编码最多512个
    原先是正余弦位置编码,是固定的,不可训练
  3. feed forward 两个线性层之间的激活函数
    使用了 Gelu
    原先是 Relu
bert transformer 层

在这里插入图片描述

  • 前提
    • embedding
      Embedding 层由三部分加和组成
      在这里插入图片描述

        		1. 每个词对应的矩阵 token embeddings2. 每句话对应的矩阵 segment embeddings判断来源语句3. 每个词位置矩阵 position embeddings带入语序信息4. 加入 [CLS] [SEP] 标记文本起始位置
      
    • 矩阵维度 embedding_dim

      • 768
        bert base 版本
        多头机制切分12份64维度矩阵
      • 1024
        bert large 版本
    • embedding 层加和后会做 layer normalization
      做一次归一化操作(提高模型稳定性)
      在这里插入图片描述

        		公式注解:减均值,除以标准差,乘以可训练系数。其中:U 是均值σ 是标准差
      
    • 总参数量
      vocab * embedding_dim + max_sequence_length * embedding_dim + n * embedding_dim + embedding_dim + embedding_dim

      • 词表embedding 参数
        vocab * embedding_dim
      • 句子参数
        n * embedding_dim
      • layer_norm层参数
        embedding_dim + embedding_dim
      • 位置参数
        max_sequence_length * embedding_dim
        允许最大长度 * embedding_size
    • 最终形状
      [seq_len, embedding_dim]

  1. multi-head self attention
    • 结构梳理在这里插入图片描述

      1. embedding 的输出,作为 self attention 的输入
        Q、K、V 是三个形状相同的矩阵
        • 三个线性层权重不同
        • 实现对 X 的不同变化
        • 线性层不改变 x 的形状
      2. 公式解释与作用
      • Q * K的转置
        • 得到 文本长度 * 文本长度的矩阵
          会得到每个字和整句话中任何一个字的相关性
      • Softmax 对矩阵中每个向量做归一化(逐行softmax)
        • 得到每个字对整句话的注意力
          可以很好的捕捉长距离的关系。
        • 分值越高,注意力越高,相关性越强,字之间相关性与注意力成正比
      • 根号 dk
        • 根号下(神经元个数(768) / 总头数)
        • 除以根号 dk
          可以拉低矩阵数值分布,提高 softmax 计算后每个维度数值在 0-1 的分布情况
      1. 最终形状
        • X * Q 、X * K、X * V
          [seq_len * embedding_dim]
        • Z
          [seq_len * embedding_dim]
    • 多头自注意力机制

      • 多头机制 muti-head
        • 每一份都执行一次 2 的计算流程
          最后把所有的计算结果拼起来
        • 相当于模型集成
          • 可以认为在同时训练相同大小的多个模型
          • 可以提升模型拟合效果
            集成模型比单模型效果好
    • self attention 最终输出
      经过 QKV 计算之后的结果,再经过一层线性层

    • 总参数量
      self_attention_parameters = embedding_dim * embedding_dim + embedding_dim + embedding_dim + embedding_dim

      • self_attention_out
        embedding_dim * embedding_dim + embedding_dim
      • 残差机制
        • embedding_dim + embedding_dim
          layerNorm(原始信息 x + self attention 输出)
        • 深层次网络结构下,保留更多的原始信息
  • feedforward
    𝑜𝑢𝑡𝑝𝑢𝑡=𝐿𝑖𝑛𝑒𝑟(𝑔𝑒𝑙𝑢(𝐿𝑖𝑛𝑒𝑟(𝑥)))
    结构
    1. 线性映射到原来矩阵的 4 倍矩阵
    2. 4倍矩阵先经过 gelu
    3. 从 4 倍矩阵再映射回原矩阵大小
    为了增加高维数据的数据表征
    • 总参数量
      ([1, embedding_dim] * [embedding_dim, hide_size] + hide_size) + ([1, hide_size]* [hide_size, embedding_dim] + embedding_dim) + embedding_dim + embedding_dim
      • 第一个线性层
        [1, embedding_dim] * [embedding_dim, hide_size]
      • 第二个线性层
        [1, hide_size] * [hide_size, embedding_dim] + embedding_dim
      • 残差机制
        embedding_dim + embedding_dim
        layerNorm(原始信息 z + feed forward 输出)
  • pooler层
    • 将[CLS]这个token过一下全连接层,再过一下 tanh 激活函数,作为该句子的特征向量:在这里插入图片描述
    • 这里的 pooler 层是一个线性变换,得到一个固定维度的池化表示,不是传统的池化
    • 参数总量
      embedding_dim * embedding_dim + embedding_dim

输出形状

[batch_size, sentence_length, hidden_size], [sentence_length, hidden_size]

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈穷举法

穷举法 穷举法是一种通过逐一列举所有可能情况来寻找解决方案的方法。就像找到一把钥匙打开一把锁,我们会尝试每一把钥匙直到找到正确的那一把。比如,如果你忘记了自己的密码,可以尝试每一种可能的组合直到找到正确的密码为止 穷举法的结构 …

【Python】快速判断两个commit 是否存在cherry-pick 关系

判断两个提交是否有 cherry-pick 关系的 Python 脚本,可以基于以下三种常见情况进行优化: Commit Hash 一致:如果两个提交的 hash 完全相同,那么它们是相同的提交。 Commit Title 存在关联:如果两个提交的 commit mes…

如何下载ComfyUI开发版

看B站视频,见用绘世可以下载ComfyUI开发版,而我又不想在电脑里放太多东西,于是研究了一下,如何直接从GitHub网站下载。具体步骤看图示。 看压缩包内容,应该直接解压覆盖就可以了,暂未有时间测试。

科研绘图系列:R语言散点图和小提琴图(scatter plot violin plot)

文章目录 介绍加载R包导入数据数据预处理函数画图系统信息介绍 提取模型的结果并对模型的结果进行可视化。 加载R包 library(ggplot2) library(ggridges) library(patchwork) library(party) library(caret) library(dplyr

堆的向下调整算法和TOPK问题

目录 1.什么是堆? 1.1 向下调整建堆的时间复杂度计算 1.2 堆的结构体设计 2.堆的功能实现: 2.1 堆的插入: 2.2 堆的删除: 2.3 堆排序: 2.4 向下调整建堆: 2.5 TOPK问题: 2.6 向上调整算…

【Unity踩坑】UI Image的fillAmount不起作用

在游戏场景中,我们经常在界面上展示进度条,当然有各种形状的,线性的,长方形的,圆形,环形等等。 Unity中实现这种效果的话,最基本的方法说是改变Image的fillAmout属性。 如果你是初次使用UI Ima…

ubuntu安装SFML库+QT使用SFML库播放声音

(1)ubuntu安装SFML库 sudo apt-get install libsfml-dev (2)QT使用SFML库播放声音 在.pro文件中添加头文件路径和库文件路径 INCLUDEPATH /usr/include/SFML LIBS /usr/lib/x86_64-linux-gnu/libsfml*.so UI界面中创建一个pushbutton按钮,并且创建槽函数 加载…

国外大带宽服务器怎么连接

随着互联网技术的发展,企业和个人用户越来越依赖于高速的数据传输服务。国外的大带宽服务器因其高速度、稳定性及较低延迟等优势,成为了许多跨国公司、网站托管商以及数据密集型应用的选择。以下是连接国外大带宽服务器的一些常见方法及其注意事项。 选择…

STL-常用算法 遍历/查找/排序/拷贝和替换/算数生成/集合算法

STL常用算法 常用的遍历算法 for_each #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include<vector> #include<algorithm>void myPrint(int v) {cout << v << " "; }class MyPrint { public:void op…

切换到WDDM模式,Tesla M4可以用于本地显示输出了!

正文共&#xff1a;1333 字 21 图&#xff0c;预估阅读时间&#xff1a;2 分钟 上次安装完Tesla M4显卡之后&#xff08;HPE服务器通过显卡直通安装Tesla M4&#xff0c;这算亮机成功了吗&#xff1f;&#xff09;&#xff0c;系统识别正常&#xff0c;但是不能用于显示&#x…

C语言的文件基础知识

一、文件存在的意义 ① 文件的定义是什么&#xff1f; 文件是以单个名称在计算机上存储的信息集合。文件可以是文本文档、图片、程序等等。文件通常具有三个字母的文件扩展名&#xff0c;用于指示文件类型&#xff08;例如&#xff0c;图片文件常常以 JPEG 格式保存并且文件扩…

Hive企业级调优[4]——HQL语法优化之分组聚合优化

HQL语法优化之分组聚合优化 优化说明 在 Hive 中&#xff0c;未经优化的分组聚合通常通过一个 MapReduce Job 实现。Map 端负责读取数据&#xff0c;并按分组字段进行分区&#xff0c;通过 Shuffle 将数据发送至 Reduce 端&#xff0c;在 Reduce 端完成最终的聚合运算。 Hiv…

网页交互模拟:模拟用户输入、点击、选择、滚动等交互操作

目录 一、理论基础 1.1 网页交互模拟的重要性 1.2 网页交互的基本原理 二、常用工具介绍 2.1 Selenium 2.2 Puppeteer 2.3 Cypress 2.4 TestCafe 三、实战案例 3.1 模拟用户输入 3.2 模拟用户点击 3.3 模拟用户选择 3.4 模拟滚动操作 四、最佳实践与优化 4.1 代…

用 Pygame 实现一个乒乓球游戏

用 Pygame 实现一个乒乓球游戏 伸手需要一瞬间&#xff0c;牵手却要很多年&#xff0c;无论你遇见谁&#xff0c;他都是你生命该出现的人&#xff0c;绝非偶然。若无相欠&#xff0c;怎会相见。 引言 在这篇文章中&#xff0c;我将带领大家使用 Pygame 库开发一个简单的乒乓球…

系统优化工具 | Windows Manager v2.0.5 便携版

Windows Manager 是一款专为Microsoft Windows 10/11设计的系统优化和管理软件。它集成了多种实用程序&#xff0c;旨在帮助用户更好地管理和优化Windows操作系统。该软件的功能包括系统清理、系统优化、系统修复、硬件信息查看和系统设置调整等。 系统清理&#xff1a;Window…

Qt Creator项目模板介绍

在Qt Creator中创建项目时&#xff0c;用户可以从多个模板类别中进行选择&#xff0c;以满足不同的开发需求。 Application(Qt) 在Application(Qt)类别下&#xff0c;Qt Creator提供了多种用于创建不同类型Qt应用程序的模板。这些模板主要包括&#xff1a; Qt Widgets Applic…

前缀和与差分(二维)

二维前缀和 下面是一个二维数组&#xff0c;我们要求&#xff08;1&#xff0c;1&#xff09;到&#xff08;2&#xff0c;2&#xff09;区间内的所有元素的和&#xff0c;最原始的方法就是遍历每个元素然后一个一个加起来&#xff0c;此时时间复杂度为O(n*m)。 我们之前学过…

【计算机网络篇】电路交换,报文交换,分组交换

本文主要介绍计算机网络中的电路交换&#xff0c;报文交换&#xff0c;分组交换&#xff0c;文中的内容是我认为的重点内容&#xff0c;并非所有。参考的教材是谢希仁老师编著的《计算机网络》第8版。跟学视频课为河南科技大学郑瑞娟老师所讲计网。 目录 &#x1f3af;一.划分…

【实战篇】MySQL是怎么保证主备一致的?

MySQL 主备的基本原理 如图 1 所示就是基本的主备切换流程。 在状态 1 中&#xff0c;客户端的读写都直接访问节点 A&#xff0c;而节点 B 是 A 的备库&#xff0c;只是将 A 的更新都同步过来&#xff0c;到本地执行。这样可以保持节点 B 和 A 的数据是相同的。 当需要切换的…

PostgreSQL JAVA与SQL集成之PL/Java

PostgreSQL pljava PL/Java 作为 PostgreSQL 的编程语言扩展之一&#xff0c;与 PL/pgSQL&#xff08;PostgreSQL 原生的存储过程语言&#xff09;相比&#xff0c;提供了 Java 语言特有的面向对象功能&#xff0c;并支持 Java 的标准库和第三方库。由于 Java 是一种跨平台的语…