【LLM_04】自然语言处理基础_2

  • 一、神经网络
    • 1、循环神经网络(RNN)
    • 2、门控循环单元(GRU)
    • 3、长短期记忆网络(LSTM)
    • 4、双向RNN
    • 5、卷积神经网络(CNN)
  • 二、注意力机制
    • 1、注意力机制原理介绍
    • 2、注意力机制的各种变式
    • 3、注意力机制的特点

一、神经网络

1、循环神经网络(RNN)

  • RNN的一个关键点在于它在处理序列数据的期间会进行一个顺序记忆。
  • 序列数据:一段话或者一个音频都可以理解为序列数据。
  • 顺序记忆是一种会使大脑更容易识别这个序列模式的数据的一个机制。而RNN可以很好的利用这个机制,来递归地进行更新我们这个生命记忆,以此来对我们这些序列数据进行一个很好的建模。

在这里插入图片描述
在这里插入图片描述

  • RNN是顺序记忆的原因:因为其每一个时间步下的隐藏状态变量计算都包含了我们过去的一个时间,是一个一个计算,按照顺序来的。

在这里插入图片描述

  • 最终会经过softmax,然后输出词表上每个词的概率,我们选择概率最大的词来做我们的最终预测词。
  • 整个RNN的结构就是每一个RNN单元的不断复制,因此每个RNN单元的功能都是一样的。所以 W i , W h W_i,W_h Wi,Wh都是相同的,代表输入的矩阵。这里面的权重
  • RNN的优点:(1)可以处理变量的数据(2)模型的大小不会随着输入的增加而增大,因为这里的权重基本是共享的,有很好的参数共享。
  • RNN的缺点:(1)由于我们是顺序的计算,因此我们需要计算前一个单元的学习结果,才能得到后面的这个结果,因此时间上较慢。(2)实际应用当中,随着时间步不停地往后进行推移,后面信息单元的计算就较难获取到之前信息单元的计算。
  • 下面介绍两种RNN的变体:GRU和LSTM

2、门控循环单元(GRU)

在这里插入图片描述

  • 门控机制:对当前的信息进行筛选,像阀门一样。GRU有两个门控:(1)更新门:update gate。(2)重置门:reset gate。它们的作用在于权衡我们过去的信息和当前的输入信息之间的比重问题。

3、长短期记忆网络(LSTM)

在这里插入图片描述

  • 黄色方块:神经网络层。
  • 粉色圈圈:元素之间的操作。
  • 箭头:向量的传递。向量的合并与复制。

在这里插入图片描述

  • LSTM关键在于加了一个新的值,cell state。用它来学习长期的依赖关系。

在这里插入图片描述

  • 第一个门称之为:遗忘门。它的作用主要来决定我们当前上一个状态,有哪些信息可以从cell状态中进行移除。
  • 如果 f t = 0 f_t=0 ft=0,即遗忘门的最终计算结果为0,则表示过去的某些信息我们可以直接进行丢弃。

在这里插入图片描述

  • 输入门是决定有哪些信息可以存入cell状态里面去的,其计算方法与遗忘门叫类似。

在这里插入图片描述

在这里插入图片描述

  • 最后是输出门,决定了哪些信息可以输出。
  • 综上,LSTM很强大,因为我们每个隐藏层都是已经有一个内部的神经单元网络已经计算好了,所以在我们做堆叠或者我们做的很深的时候,LSTM会表现的性能很好。并且,由于我们引入了门控机制,它会对神经网络的输入和输出进行一个动态的控制,会增强我们对信息的利用能力。最后,LSTM可以有效的缓解梯度的问题。

4、双向RNN

  • 前面提到的RNN都有一个特点,就是每一个时间步下的状态里面的隐藏状态变量都是从我们过去序列,以及当前输入来捕获信息的。或者允许过去的值来影响我们当前的状态。
  • 但是在有些时候,我们计算当前的时候,不仅是依赖过去,还会依赖未来的输入,相当于我们会依赖整个输入序列。
    在这里插入图片描述
  • 例如:我们对手写体进行识别的时候,不仅会取决于过去,还会取决于未来的几个字,还有语音识别。
    在这里插入图片描述

5、卷积神经网络(CNN)

在这里插入图片描述

  • CNN刚出现的时候,是运用在计算机视觉领域。但是由于其结构的特殊性,也可以运用在NLP领域。例如:情感分类、心态分类当中都有较好的运用。【这是归功于CNN比较擅长提取局部和位置不变的模式。】

在这里插入图片描述

  • CNN提取局部模式的步骤主要是用来计算一个句子当中所有可能的N元组短语的一个表示。
  • N元组:表示我们选取几个相邻的词作为短语。
  • CNN的运用领域:目标检测、语音识别、文本分类、视频分类等。

在这里插入图片描述

在这里插入图片描述

  • CNN比较擅长提取局部的特征。RNN可以很好的处理变长的文本。来对变长的文本依赖进行很好的建模。
  • 模型机制不同导致RNN参数更多一些。
  • CNN主要是使用卷积核,卷积核在计算的时候是没有相互依赖的,因此可以很好的并行计算。RNN则依赖于过去的数据。

二、注意力机制

1、注意力机制原理介绍

  • Encoder将可变长度的输入序列编码成一个固定长度的向量;
  • Decoder将固定长度的向量解码成一个可变长度的输出序列;
  • Encoder-Decoder阶段的编码与解码的方式可以是CNN、RNN、LSTM、GRU等;

首先,以RNN模型为例,这个模型当中存在一个信息瓶颈的问题。

decoder端需要输出一个完整的句子,这要求encoder端得到的最后一个向量表示需要包含它输入句子的所有信息。但是这样的向量无法表达所有句子的多种多样的信息。
研究人员也发现这样的向量容量会限制模型encoder端的表示。因为在encoder端的每一个位置的隐向量都包含有丰富的信息,而其实最后的向量是整个encoder和decoder模型之间的一个信息瓶颈。
在这里插入图片描述
注:上图当中写的Seq2Seq其实是一个抽象的理论,只要满足输入序列生成输出序列的模式,都可以归类为Seq2Seq的模型。

而注意力机制就是为了解决信息瓶颈的问题提出的。

在这里插入图片描述

  • encoder端得到的每一个隐藏向量用h1到h7来表示,在decoder端得到的第一个隐向量用s1来表示。
  • 与之前RNN模型不同的是,我们不用s1直接来计算这一步生成单词的概率,而是利用s1来选择关注输入句子中的哪些部分,并计算得到一个新的隐向量,来得到生成单词的一个概率。

那么这样一个decoder端如何根据s1来对encoder端的向量进行选择呢?

  • 首先需要计算注意力分数,将s1与h1进行点积得到标量,称其为 e 1 1 e_{1}^{1} e11 ,之后将s1与h1进行点积得到 e 2 1 e_{2}^{1} e21 ,将这个过程一直重复直到这个句子的末尾。

在这里插入图片描述
最后我们就可以得到一个长度为7的向量,其中每个元素都是s1和对应位置的隐向量点积得到的。
我们将这样一个长度为7的向量,称为encoder端隐向量的一个注意力分数。

而这分数其实就表示s1与每一个encoder端隐向量hi的一个相似程度。值越高,表示s1与对应的隐向量相似程度越高。

在这里插入图片描述
之后,使用softmax函数将其变成概率分布。概率越接近于1,则decoder端就会越关注这些位置的向量。

  • 如上图所示,前两个位置的概率分布值较高,说明会更加关注前两个位置的隐向量。

在第三步,我们利用之前得到的注意力分布,对encoder端的隐向量进行加权求和,然后可以得到一个与隐向量维度相同的输出向量o1。

在这里插入图片描述

o1向量也就包含了decoder端当前所需要的encoder端的所有信息。

在这里插入图片描述
最后,将o1与RNN得到的隐向量s1进行拼接,可以得到一个新的表示,来表示decoder端这一步的一个状态。用这样一个向量来预测下一步需要生成的单词。

  • 在这个例子当中,我们输出的是many这个词,对应的就是汉语当中的多个,这也可以从注意力分布的高低看出对应关系。

在这里插入图片描述

  • s1输出的是many,而many就作为下一轮的输入。

接下来就是不断重复,之后我们对于decoder端的每一步,都可以自主的关注到encoder不同位置的隐向量。并且预测出一个新的单词。最后得到整个的输出句子。

在这里插入图片描述

2、注意力机制的各种变式

变体一:加上权重矩阵

如果两个向量的维度不一样,我们就需要在中间加上一个权重矩阵,来实现两者的相乘,最后得到一个标量。
在这里插入图片描述

变体二:additive attention

additive attention使用了一层的前馈神经网络,来将两个向量变成一个标量,从而得到注意力分数。

在这里插入图片描述

在这里插入图片描述

3、注意力机制的特点

  • 注意力机制的出发点是解决信息瓶颈的问题存在的。
  • 注意力机制可以缓解RNN当中梯度消失的问题。通过在encoder和decoder之间提供了一种直接连接的方式,防止梯度在RNN当中会传播过长,进而导致梯度消失。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构)

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,…

leetCode 1080.根到叶路径上的不足节点 + 递归 + 图解

给你二叉树的根节点 root 和一个整数 limit ,请你同时删除树中所有 不足节点 ,并返回最终二叉树的根节点。假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 limit,则该节点被称之为 不足节点 ,需要被删除…

目录树自动生成器 golang+fyne

go tree 代码实现请看 gitee 仓库链接 有很多生成目录树的工具,比如windows自带的tree命令,nodejs的treer,tree-cli等等。这些工具都很成熟、很好用,有较完善的功能。 但是,这些工具全部是命令式的,如果…

vs2019中出现Debug Error的原因

一般出现这种错误表示你的某个变量没有正确赋值&#xff0c;或者说本身在你的C程序中加了assert断言&#xff0c;assert的作用是先计算表达式expression,如果其值为假&#xff0c;那么它会打印一条错误信息 #include<assert.h> void assert(int expression); 例子&…

01、copilot+pycharm

之——free for student 目录 之——free for student 杂谈 正文 1.for student 2.pycharm 3.使用 杂谈 copilot是github推出的AI程序员&#xff0c;将chatgpt搬到了私人终端且无token限制&#xff0c;下面是使用方法。 GitHub Copilot 是由 GitHub 与 OpenAI 合作开发的…

网络篇---第一篇

系列文章目录 文章目录 系列文章目录前言一、HTTP 响应码有哪些?分别代表什么含义?二、Forward 和 Redirect 的区别?三、Get 和 Post 请求有哪些区别?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男…

【ArcGIS Pro微课1000例】0037:ArcGIS Pro中模型构建器的使用---以shp批量转kml/kmz为例

文章目录 一、ArcGIS Pro模型构建器介绍二、shp批量转kml/kmz1. 打开模型构建器2. 添加工作空间4. 添加【创建要素图层】工具5. 添加【图层转kml】工具6. 输出文件命名7. 运行模型三、模型另存为1.py文件2. 保存为工具一、ArcGIS Pro模型构建器介绍 模型构建器是一种可视化编程…

项目去除git版本控制

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; &#x1f383; 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 ✈️已经旅游的地点 | 新疆-乌鲁木齐、新疆-吐鲁番、广东-广州…

C++连接MySQL失败解决

通过localhost连接&#xff0c;错误 遂改用127.0.0.1&#xff0c;协议不匹配&#xff0c;错误 在my.conf添加skip–sslon&#xff0c;重启mysql&#xff0c;连接成功 ref: https://www.cnblogs.com/walkersss/p/17037086.html

从前序与中序遍历序列构造二叉树(C++实现)

从前序与中序遍历序列构造二叉树 题目思路分析代码代码讲解 题目 思路分析 我们可以通过递归实现的二叉树构建函数。它根据给定的先序遍历序列和中序遍历序列构建一棵二叉树&#xff0c;并返回根节点。可以创建一个_build 函数&#xff0c;该函数负责构建二叉树的节点&#xff…

【深入剖析K8s】容器技术基础(三):深入理解容器镜像 文件角度

容器里的进程‘看到’’的文件系统 可能你立刻就能想到,这应该是&#xff3f;个关于MountNamespace的问题:容器里的应用进程理应‘看到”一套完全独立的文件系统这样它就可以在自己的容器目录&#xff08;比如&#xff0f;tmp&#xff09;下进行操作’而完全不会受宿主机以及其…

DataGrip 2023.2.3(IDE数据库开发)

DataGrip是一款数据库集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于数据库管理和开发。 DataGrip提供了许多强大的功能&#xff0c;如SQL语句编辑、数据库连接管理、数据导入和导出、数据库比较和同步等等。它支持多种数据库&#xff0c;如MySQL、PostgreSQL、Ora…

CSDN动态发了但是主页面看不见已发的动态

问题描述&#xff1a; 今天在写csdn动态的时候&#xff0c;发了五个动态&#xff0c;但是主页面的“最近”看不到我发的动态&#xff0c;我还以为是csdn动态每天的发送量有数量限制。去这个地方点我的发现 右上角全是“审核中”的字样 按理说是不可能审核这么久的&#xff08…

Arduino驱动温湿度气压光照传感器模块

目录 一、简介二、原理图三、使用方法四、实验现象 一、简介 点击图片购买 HTU21D特性&#xff1a;HTU21D基于法国Humirel公司高性能的湿度感应元件制成&#xff0c;传感器输出标准IIC格式。同时具有很高的温度精度和湿度精度。HTU21专为低功耗小体积应用设计&#xff0c;具有很…

【挑战业余一周拿证】CSDN官方课程目录

一、亚马逊云科技简介 二、在云中计算 三、全球基础设施和可靠性 四、联网 五、存储和数据库 六、安全性 七、监控和分析 八、定价和支持 九、迁移和创新 十、云之旅 关注订阅号 CSDN 官方中文视频&#xff08;免费&#xff09;&#xff1a;点击进入 一、亚马逊云科…

90. 打家劫舍II (房子围成一圈)

题目 题解 class Solution:def rob(self, nums: List[int]) -> int:def dp(nums: List[int]) -> int:N len(nums)# 定义状态&#xff1a;dp[i]表示从第i个房屋开始偷窃&#xff0c;能够偷到的最高金额dp [0 for i in range(N)]for i in range(N-1, -1, -1):if i N-1:…

【二叉树】oj题

在处理oj题之前我们需要先处理一下之前遗留的问题 在二叉树中寻找为x的节点 BTNode* BinaryTreeFind(BTNode* root, int x) {if (root NULL)return NULL;if (root->data x)return root;BTNode* ret1 BinaryTreeFind(root->left, x);BTNode* ret2 BinaryTreeFind(ro…

Alfred v5.1.4(mac快速启动)

Mac效率办公软件哪个好&#xff1f;Alfred是一款Mac电脑上的快速启动和工作流自动化工具&#xff0c;它可以帮助用户快速访问文件、应用程序、web搜索和系统工具&#xff0c;提高工作效率。以下是Alfred的特点&#xff1a; 快速启动&#xff1a;用户可以通过Alfred快速启动应用…

scipy 笔记:scipy.spatial.distance

1 pdist 计算n维空间中观测点之间的成对距离。 scipy.spatial.distance.pdist(X, metriceuclidean, *, outNone, **kwargs) 1.1 主要参数 X一个m行n列的数组&#xff0c;表示n维空间中的m个原始观测点metric使用的距离度量out输出数组。如果非空&#xff0c;压缩的距离矩阵…

Dempster-Shafer(D-S)证据理论的基本定义和详细分析,优点,缺点,应用!!(系列1)

文章目录 前言一、D-S证据理论的应用&#xff1a;二、D-S证据理论的优点&#xff1a;三、D-S证据理论的缺陷&#xff1a;四、D-S组合规则&#xff1a;总结 前言 Dempster-Shafer&#xff08;D-S&#xff09;证据理论是一种不精确推理理论&#xff0c;也称为Dempster/Shafer证据…