20240331-1-基于深度学习的模型

基于深度学习的模型

知识体系

主要包括深度学习相关的特征抽取模型,包括卷积网络、循环网络、注意力机制、预训练模型等。

CNN

TextCNN 是 CNN 的 NLP 版本,来自 Kim 的 [1408.5882] Convolutional Neural Networks for Sentence Classification

结构如下:

大致原理是使用多个不同大小的 filter(也叫 kernel) 对文本进行特征提取,如上图所示:

  • 首先通过 Embedding 将输入的句子映射为一个 n_seq * embed_size 大小的张量(实际中一般还会有 batch_size)
  • 使用 (filter_size, embed_size) 大小的 filter 在输入句子序列上平滑移动,这里使用不同的 padding 策略,会得到不同 size 的输出
  • 由于有 num_filters 个输出通道,所以上面的输出会有 num_filters
  • 使用 Max PoolingAverage Pooling,沿着序列方向得到结果,最终每个 filter 的输出 size 为 num_filters
  • 将不同 filter 的输出拼接后展开,作为句子的表征

RNN

RNN 的历史比 CNN 要悠久的多,常见的类型包括:

  • 一对一(单个 Cell):给定单个 Token 输出单个结果
  • 一对多:给定单个字符,在时间步向前时同时输出结果序列
  • 多对一:给定文本序列,在时间步向前执行完后输出单个结果
  • 多对多1:给定文本序列,在时间步向前时同时输出结果序列
  • 多对多2:给定文本序列,在时间步向前执行完后才开始输出结果序列

由于 RNN 在长文本上有梯度消失和梯度爆炸的问题,它的两个变种在实际中使用的更多。当然,它们本身也是有一些变种的,这里我们只介绍主要的模型。

  • LSTM:全称 Long Short-Term Memory,一篇 Sepp Hochreiter 等早在 1997 年的论文《LONG SHORT-TERM MEMORY》中被提出。主要通过对原始的 RNN 添加三个门(遗忘门、更新门、输出门)和一个记忆层使其在长文本上表现更佳。

    [外链图片转存中…(img-jNNwraHK-1713793228695)]

  • GRU:全称 Gated Recurrent Units,由 Kyunghyun Cho 等人 2014 年在论文《Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation》 中首次被提出。主要将 LSTM 的三个门调整为两个门(更新门和重置门),同时将记忆状态和输出状态合二为一,在效果没有明显下降的同时,极大地提升了计算效率。

    [外链图片转存中…(img-vxmAzwM8-1713793228695)]

Questions

CNN相关

CNN 有什么好处?
  • 稀疏(局部)连接:卷积核尺寸远小于输入特征尺寸,输出层的每个节点都只与部分输入层连接
  • 参数共享:卷积核的滑动窗在不同位置的权值是一样的
  • 等价表示(输入/输出数据的结构化):输入和输出在结构上保持对应关系(长文本处理容易)
CNN 有什么不足?
  • 只有局部语义,无法从整体获取句子语义
  • 没有位置信息,丢失了前后顺序信息
卷积层输出 size?

给定 n×n 输入,f×f 卷积核,padding p,stride s,输出的尺寸为:

⌊ n + 2 p − f s + 1 ⌋ × ⌊ n + 2 p − f s + 1 ⌋ \lfloor \frac{n+2p-f}{s} + 1 \rfloor \times \lfloor \frac{n+2p-f}{s} + 1 \rfloor sn+2pf+1×sn+2pf+1

RNN

LSTM 网络结构?

LSTM 即长短时记忆网络,包括三个门:更新门(输入门)、遗忘门和输出门。公式如下:

c ^ < t > = tanh ⁡ ( W c [ a < t − 1 > , x < t > ] + b c ) Γ u = σ ( W u [ a < t − 1 > , x < t > ] + b u ) Γ f = σ ( W f [ a < t − 1 > , x < t > ] + b f ) Γ o = σ ( W o [ a < t − 1 > , x < t > ] + b o ) c < t > = Γ u ∗ c ^ < t > + Γ f ∗ c < t − 1 > a < t > = Γ o ∗ c < t > \hat{c}^{<t>} = \tanh (W_c [a^{<t-1}>, x^{<t>}] + b_c) \\ \Gamma_u = \sigma(W_u [a^{<t-1}>, x^{<t>}] + b_u) \\ \Gamma_f = \sigma(W_f [a^{<t-1}>, x^{<t>}] + b_f) \\ \Gamma_o = \sigma(W_o [a^{<t-1}>, x^{<t>}] + b_o) \\ c^{<t>} = \Gamma_u * \hat{c}^{<t>} + \Gamma_f*c^{<t-1>} \\ a^{<t>} = \Gamma_o * c^{<t>} c^<t>=tanh(Wc[a<t1>,x<t>]+bc)Γu=σ(Wu[a<t1>,x<t>]+bu)Γf=σ(Wf[a<t1>,x<t>]+bf)Γo=σ(Wo[a<t1>,x<t>]+bo)c<t>=Γuc^<t>+Γfc<t1>a<t>=Γoc<t>

如何解决 RNN 中的梯度消失或梯度爆炸问题?
  • 梯度截断
  • ReLU、LeakReLU、Elu 等激活函数
  • Batch Normalization
  • 残差连接
  • LSTM、GRU 等架构
假设输入维度为 m,输出为 n,求 GRU 参数?

输入 W:3nm,隐层 W:3nn,隐层 b:3n,合计共:3*(nn+nm+n)。当然,也有的实现会把前一时刻的隐层和当前时刻的输入分开,使用两个 bias,此时需要再增加 3n 个参数。

LSTM 和 GRU 的区别?
  • GRU 将 LSTM 的更新门、遗忘门和输出门替换为更新门和重置门
  • GRU 将记忆状态和输出状态合并为一个状态
  • GRU 参数更少,更容易收敛,但数据量大时,LSTM 效果更好

Attention

Attention 机制

Attention 核心是从输入中有选择地聚焦到特定重要信息上的一种机制。有三种不同用法:

  • 在 encoder-decoder attention 层,query 来自上一个 decoder layer,memory keys 和 values 来自 encoder 的 output
  • encoder 包含 self-attention,key value 和 query 来自相同的位置,即前一层的输出。encoder 的每个位置都可以注意到前一层的所有位置
  • decoder 与 encoder 类似,通过将所有不合法连接 mask 以防止信息溢出
自注意力中为何要缩放?

维度较大时,向量内积容易使得 SoftMax 将概率全部分配给最大值对应的 Label,其他 Label 的概率几乎为 0,反向传播时这些梯度会变得很小甚至为 0,导致无法更新参数。因此,一般会对其进行缩放,缩放值一般使用维度 dk 开根号,是因为点积的方差是 dk,缩放后点积的方差为常数 1,这样就可以避免梯度消失问题。

另外,Hinton 等人的研究发现,在知识蒸馏过程中,学生网络以一种略微不同的方式从教师模型中抽取知识,它使用大模型在现有标记数据上生成软标签,而不是硬的二分类。直觉是软标签捕获了不同类之间的关系,这是大模型所没有的。这里的软标签就是缩放的 SoftMax。

至于为啥最后一层为啥一般不需要缩放,因为最后输出的一般是分类结果,参数更新不需要继续传播,自然也就不会有梯度消失的问题。

Transformer

Transformer 中为什么用 Add 而不是 Concat?

在 Embedding 中,Add 等价于 Concat,三个 Embedding 相加与分别 One-Hot Concat 效果相同。

ELMO

简单介绍下ELMO

使用双向语言模型建模,两层 LSTM 分别学习语法和语义特征。首次使用两阶段训练方法,训练后可以在下游任务微调。

Feature-Based 微调,预训练模型作为纯粹的表征抽取器,表征依赖微调任务网络结构适配(任务缩放因子 γ)。

ELMO的缺点

ELMO 的缺点主要包括:不完全的双向预训练(Bi 是分开的,仅在 Loss 合并);需要进行任务相关的网络设计(每种下游任务都要特定的设计);仅有词向量无句向量(没有句向量任务)。

GPT

简单介绍下GPT

使用 Transformer 的 Decoder 替换 LSTM 作为特征提取器。

Model-Based 微调,预训练模型作为任务网络的一部分参与任务学习,简化了下游任务架构设计。

GPT的缺点

GPT 的缺点包括:单项预训练模型;仅有词向量无句向量(仅学习语言模型)。

BERT

简单介绍下BERT

使用 Transformer Encoder 作为特征提取器,交互式双向语言建模(MLM),Token 级别+句子级别任务(MLM+NSP),两阶段预训练。

Feature-Based 和 Model-Based,实际一般使用 Model-Based。

BERT缺点

BERT 的缺点是:字粒度难以学到词、短语、实体的完整语义。

ERNIE

ERNIE对BERT进行了哪些优化?

对 BERT 的缺点进行了优化,Mask 从字粒度的 Token 修改为完整的词或实体。ERNIE2.0 引入更多的预训练任务以捕捉更丰富的语义知识。

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

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

相关文章

hadoop安装记录

零、版本说明 centos [rootnode1 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)jdk [rootnode1 ~]# java -version java version "1.8.0_311" Java(TM) SE Runtime Environment (build 1.8.0_311-b11) Java HotSpot(TM) 64-Bit Server VM (…

编写一款2D CAD/CAM软件(十六)交互绘制图形

绘制步骤 以交互绘制圆形为例&#xff1a; 点击鼠标左键&#xff0c;确定圆心位置&#xff1b;抬起鼠标&#xff0c;移动鼠标&#xff0c;半径随鼠标位置变化&#xff1b;点击左键确定半径&#xff0c;完成圆的绘制。 绘制结果 Code /// j-operator-create-circle.h#pragma…

Facebook的区块链应用深度分析

去中心化身份验证的意义 在当今数字化社会中&#xff0c;身份验证的重要性不言而喻。对于Facebook这样的大型社交媒体平台来说&#xff0c;确保用户的身份真实性和数据的安全性是至关重要的。传统的中心化身份验证方式存在一定的安全风险和可信性问题&#xff0c;而去中心化身…

verilog中赋值运算符(=和<=)的用法

目录 原理 RTL 图 运算符优先级 原理 “”阻塞赋值&#xff0c;”<”非阻塞赋值。阻塞赋值为执行完一条赋值语句&#xff0c;再执行下一条&#xff0c;可理解为顺序执行&#xff0c;而且赋值是立即执行&#xff1b;非阻塞赋值可理解为并行执行&#xff0c;不考虑顺序&am…

Qt绘制边框有阴影兼容性问题

在Qt开发过程中&#xff0c;有时候我们要显示一个有阴影的对话框&#xff0c;这时一般采用自定义实现&#xff0c;然而最近在开发时软件时&#xff0c;Win11上显示正常&#xff0c;Win10或其他Win11电脑显示不正常&#xff0c;存在兼容性问题吗&#xff1f; 下面是具体的源码 …

【PhpStorm的环境配置与应用的简单介绍】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

Hive架构原理

Hive Hive 的架构是设计用于在大数据环境下进行数据仓库操作和分析的系统。它建立在 Hadoop 生态系统之上&#xff0c;利用 Hadoop 的存储&#xff08;HDFS&#xff09;和计算&#xff08;MapReduce、Tez、Spark 等&#xff09;能力。 1. 元数据存储&#xff08;Metastore&am…

Flutter开发之--初识Flutter

文章目录 概述Flutter整体架构嵌入层引擎层框架层 跑通demo尝鲜Flutter项目的目录介绍Flutter demo项目的运行 总结 概述 Flutter 是由Google公司研发的一种跨端开发技术&#xff0c;在2018年正式推出。Flutter自带Skia图形绘制引擎&#xff0c;采用自绘制的方式&#xff0c;不…

【Hadoop3.3.6】数据块副本放置策略及解析EditLog和FsImage

目录 一、摘要二、正文2.1 环境说明2.2 网络拓扑2.3 Hadoop副本放置策略介绍2.4 解析EditLog和Fsimage镜像文件三、小结一、摘要 通过解析存储于NameNode节点上的日志文件EditLog和镜像文件(元数据)Fsimage来反向验证HDFS的数据块副本存放策略,其目的是希望加深对Hadoop的数…

Tensorflow AutoGraph 的作用和功能

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ TensorFlow AutoGraph 是 TensorFlow 中的一个重要特性&#xff0c;它允许开发者使用普通的 Python 语法编写高效的 TensorFlow 图&#xff08;graph&#xff09;。这意味着开发者可以利用 Python 的易…

【电机控制】滑模观测器PMSM无感控制波形图

【电机控制】滑模观测器PMSM无感控制波形图 文章目录 前言一、FOC控制1.三相电流2.Clark变换静止坐标系iαiβ3.park变换旋转坐标系idiq4.电流环PI控制输出UdUq5.UdUq 反park变换UαUβ 二、反电动势观测器BEMF1.静止坐标系iαiβ提取反电动势EaEb2.反电动势EaEb提取位置信息、…

物联网通信中NB-IoT、Cat.1、Cat.M该如何选择?

物联网通信中NB-IoT、Cat.1、Cat.M该如何选择? 参考链接:物联网通信中NB-IoT、Cat.1、Cat.M该如何选择?​​ 在我们准备设计用于大规模联网的物联网设备时,选择到适合的LTE IoT标准将是我们遇到的难点。这是我们一开始设计产品方案就需要解决的一个问题,其决定我们设备需…

前端框架技术调研

目前程序员使用前端框架最多的是哪一个&#xff1f;

3D MINS 多模态影像导航系统

3D MINS多模态影像导航系统&#xff08;Multimodal Image Navigation System&#xff09;是SunyaTech研发的建立在DICOM&#xff08;Digital Imaging and Communications in Medicine&#xff09;图像基础之上的多模态影像导航系统&#xff0c;集二维影像PACS管理、三维影像层级…

vscode ssh远程连接服务器,一直正在下载vscode服务器的解决办法

前言 为方便描述&#xff0c;在本教程中&#xff0c;发起远程连接的叫“主机”&#xff0c;被远程连接的叫“服务器”。 正文 如果主机是首次用vscode远程连接服务器&#xff0c;会在服务器上自动下载vscode服务器&#xff0c;但有时候因为网络问题&#xff0c;会卡在&#xff…

STL Array、ForwardList源码剖析

STL Array、ForwardList源码剖析 参考文章: https://blog.csdn.net/weixin_45389639/article/details/121618243 array 源代码 template<typename _Tp,std::size_t _Nm> struct array {typedef _Tp value_type;typedef _Tp* pointer;typedef value_type* iterator;// Su…

【函数式接口使用✈️✈️】配合策略模式实现文件处理的案例

目录 &#x1f378;前言 &#x1f37b;一、功能描述 &#x1f37a;二、面向对象设计模式 &#x1f379;三、策略模式 &#x1f366;四、策略 VS 面向对象 &#x1f368;章末 &#x1f378;前言 小伙伴们大家好&#xff0c;上周初步了解了下函数式接口&#xff0c;Consume…

Azure AD统一认证及用户数据同步开发指导

本文主要目的为&#xff1a;指导开发者进行自有服务与Azure AD统一认证的集成&#xff0c;以及阐述云端用户数据同步的实现方案。本文除了会介绍必要的概念、原理、流程外&#xff0c;还会包含Azure门户设置说明&#xff0c;以及使用Fiddler进行全流程的实操验证&#xff0c;同…

HarmonyOS ArkUI实战开发-页面跳转(Router、Ability)

页面跳转可以分为页面内跳转和页面间跳转&#xff0c;页面内跳转是指所跳转的页面在同一个 Ability 内部&#xff0c;它们之间的跳转可以使用 Router 或者 Navigator 的方式&#xff1b;页面间跳转是指所跳转的页面属与不同的 Ability &#xff0c;这种跳转需要借助 featureAbi…