NLP 主要语言模型分类

文章目录

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 embeddings
        		2. 每句话对应的矩阵 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]

相关推荐
sp_fyf_202416 分钟前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
多吃轻食20 分钟前
大模型微调技术 --> 脉络
人工智能·深度学习·神经网络·自然语言处理·embedding
charles_vaez44 分钟前
开源模型应用落地-glm模型小试-glm-4-9b-chat-快速体验(一)
深度学习·语言模型·自然语言处理
知来者逆1 小时前
研究大语言模型在心理保健智能顾问的有效性和挑战
人工智能·神经网络·机器学习·语言模型·自然语言处理
云起无垠1 小时前
技术分享 | 大语言模型赋能软件测试:开启智能软件安全新时代
人工智能·安全·语言模型
学术头条3 小时前
AI 的「phone use」竟是这样练成的,清华、智谱团队发布 AutoGLM 技术报告
人工智能·科技·深度学习·语言模型
忘梓.8 小时前
划界与分类的艺术:支持向量机(SVM)的深度解析
机器学习·支持向量机·分类
光芒再现dev9 小时前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理
Yawesh_best10 小时前
思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!
笔记·语言模型·ai写作
人工智能培训咨询叶梓10 小时前
探索开放资源上指令微调语言模型的现状
人工智能·语言模型·自然语言处理·性能优化·调优·大模型微调·指令微调