NLP基础(RNN,LSTM,GRU)
参考https://www.rethink.fun/RNN 循环神经网络RNN是最早的NLP任务SOTA。核心思想是循环文本数据的一个重要特征是有序性也就是token出现的顺序会影响语义的理解对于这种具有时序的数据经典处理方法都是RNN。经典的时序任务有NLP语音识别时序预测比如股票视频理解RNN的关键是会在隐藏层传递记忆单看隐藏层的话是一个循环的过程这也是循环神经网络名字的由来。为了处理下游任务在隐藏层基础上加任务层比如分类任务就加个线性层分类。如图所示这是一个NER实体识别任务也就是对每个token要把他归类为某一类实体一个token进入RNN后的过程是经过嵌入层映射为词向量经过隐藏层输出为RNN最关键的内容隐藏层状态也可以称为记忆记忆一方面接入下游的线性分类层输出NER结果记忆同时还和下一个token的词向量拼接作为下一步的RNN输入这样下一次就不仅有当时的token还能看到前一步的记忆可以理解上下文。详细公式则为httanh([ht−1∣xt]whbh)h_ttanh([h_{t-1}|x_t]w_hb_h)ht​tanh([ht−1​∣xt​]wh​bh​)ytsoftmax(htwyby)y_tsoftmax(h_tw_yb_y)yt​softmax(ht​wy​by​)其中hth_tht​是ttt时刻的隐藏层输出wh,bhw_h,b_hwh​,bh​是隐藏层的参数xtx_txt​是输入yty_tyt​是输出wy,byw_y,b_ywy​,by​是任务层的参数RNN的应用RNN实际上能解决我们前一节讲的所有NLP任务这也是RNN及其变种在很长时间内是NLP SOTA的原因多对一任务输入一个文本序列只输出一个值比如文本分类文本回归。在最后一个token再加上任务层或者只允许最后一个token的输出有效即可一对多输入一个文本类型直接输出一整段文本。这是文本生成任务只有第一次的输入是真实输入后面每一次的输入都是隐藏层模型生成的上一个token多对多如果输入输出长度一致类似前面的NER任务每一步的输入都是前一步记忆当前输入如果长度不一致比如翻译摘要问题。则引入一个重要的思想编码器-解码器架构先用多次循环读入全部输入这被称为编码阶段这个阶段没有输出再把编码阶段的记忆传递下去每一步都输出一个token然后新的输入为上一步的记忆上一步的输出token。这样能实现变长输出的同时还参考了输入的记忆。RNN的缺点和LSTM序列长时前面的token信息被压缩了很多次加上隐状态本身维度不大跟token大小是一个数量级的一般也就512,256不足以保存全部信息于是长文本时对前面的信息记忆会逐渐下降。这个问题的本质是隐状态是短期记忆越远的信息保存的越少越近的信息保存的越多。那么为了记住远处信息一个解决方法就是再设置一个长期记忆。这就是LSTM(Long Short-Term Memory)名字的由来既有短期记忆也有长期记忆。具体架构如下图对每一轮的输入xtx_txt​做线性层和激活。同时输入也传入一个输入门经过线性层和sigmoid激活得到一个激活向量和输入相乘相当于对这一轮的输入选择性接受输入用类似的方式再产生一个遗忘向量和旧的长期记忆ct−1c_{t-1}ct−1​相乘相当于把旧的长期记忆遗忘一部分。再加上这一轮选择性接受的输入信息作为新的长期记忆ctc_tct​输入再产生一个输出向量输出向量和长期记忆乘起来得到这一轮的短期记忆也就是隐状态输出hth_tht​hth_tht​可以直接传到下一轮也可以接上任务层做这一轮的输出ctc_tct​直接传到下一轮这里的W−h,Wi,Wf,WoW-h,W_i,W_f,W_oW−h,Wi​,Wf​,Wo​都是可训练的矩阵把多个这样的网络拼起来就是处理一个序列的LSTM结构如下图。这样的优点是长期记忆实际上没有经过任何线性层和激活层类似resnet的残差链连接更容易把长期记忆传递下去。这个网络略复杂但确实是transformer之前最好的NLP模型可见注意力机制诞生之前为了让模型保持长期记忆有多困难GRULSTM效果虽然好但是网络太复杂推理慢GRU是一个基于LSTM思想但是实现更简单的RNN变体。GRU推理更快效果接近LSTM网络如下去掉了长期记忆ctc_tct​但是对短期记忆hth_tht​增加了LSTM中的更新门和重置门类似于遗忘门。这里的思想是既然短期记忆的容量有限与其在循环中被动压缩不如用可训练的Wr,WuW_r,W_uWr​,Wu​模块来决定每一轮遗忘什么记住什么学习什么双向RNN(BiRNN)前面的RNN很容易发现一个问题推理都是从前往后读的也就是生成第i个token的隐状态时只能看到前i个token但现实文本很容易出现的情况是一个词的含义不仅要看上文还要看下文比如“我喜欢苹果味的汽水。”“我喜欢苹果手机。”这里苹果的含义需要看下文的被修饰词是什么才能确定。但RNN本身必须是单向的像同时看到上下文只能用一个正序RNN一个逆序RNN来实现如下图两个RNN看到前iii个的正向RNN和看到后n−i1n-i1n−i1个逆向RNN的隐状态拼接就是看到全文时第i个token的隐状态。深度RNN提高模型性能的一个无脑办法就是堆参数于是一个优化是增加多层RNN如下图把第一个隐藏层的隐状态作为第二个隐藏层的输入。这样的优点是增加了模型的抽象能力可以类比生产一个工艺品时增加工序可以实现更精细的加工只有一个工序的话这个工序做的再好也是有上限的。当然普通的线性层也是可以增加的

相关新闻

OpenBoxes数据迁移策略:从Excel到专业库存管理系统的平滑过渡终极指南

OpenBoxes数据迁移策略:从Excel到专业库存管理系统的平滑过渡终极指南

OpenBoxes数据迁移策略:从Excel到专业库存管理系统的平滑过渡终极指南 【免费下载链接】openboxes OpenBoxes is a supply chain management system designed to manage inventory and track stock movements for healthcare facilities. 项目地址: https://gitco…

2026/6/23 7:52:39阅读更多 →
C/C++、网络协议、网络安全类文章汇总

C/C++、网络协议、网络安全类文章汇总

🛸 文章简介 本文章主要对本博客的所有文章进行了汇总,方便查找。并且记录了一些其他博主的优秀文章。内容涉及C/C编程,CMake、Makefile、Shell脚本,GUI编程框架MFC和QT,Git版本控制工具,网络协议基础知识…

2026/6/23 7:52:39阅读更多 →
FastStream常见问题解答:YouTube播放问题、安装错误、功能异常排查

FastStream常见问题解答:YouTube播放问题、安装错误、功能异常排查

FastStream常见问题解答:YouTube播放问题、安装错误、功能异常排查 【免费下载链接】FastStream Stream videos without buffering in the browser. An extension that gives you a better, accessible video player designed for your needs. 项目地址: https://…

2026/6/23 7:47:39阅读更多 →
GitHub Actions + OIDC + Vault 实现开发者优先的密钥管理

GitHub Actions + OIDC + Vault 实现开发者优先的密钥管理

1. 项目概述:为什么“开发者优先”的密钥管理不是一句口号,而是工程效能的分水岭 “Enabling Engineering Teams Through Developer-First Secrets Management”——这个标题里没有一个生僻词,但组合在一起,却直击当下所有中大型技…

2026/6/23 9:17:55阅读更多 →
Python http.server 深度解析:从命令行到HTTPS生产级实践

Python http.server 深度解析:从命令行到HTTPS生产级实践

1. 项目概述:为什么一个“简单HTTP服务器”值得你花20分钟认真读完“How to Create a Simple HTTP Server in Python”——这个标题看起来像教科书里的入门小节,甚至可能被当成“Python安装完后第一个Hello World”的附属练习。但我在带过37个不同行业&a…

2026/6/23 9:17:55阅读更多 →
Ubuntu 20.04 安装 Composer 2.5 全流程深度解析

Ubuntu 20.04 安装 Composer 2.5 全流程深度解析

1. 这不是“装个工具”那么简单:为什么 Ubuntu 20.04 上的 Composer 安装必须讲透 你搜“Cmo instalar Composer en Ubuntu 20.04”,页面上跳出来的几乎全是三步走: curl -sS https://getcomposer.org/installer | php ,然后 s…

2026/6/23 9:17:55阅读更多 →
Dify与企业微信机器人集成:打造智能办公自动化中枢

Dify与企业微信机器人集成:打造智能办公自动化中枢

1. 项目概述:为什么需要Dify与企业微信机器人的强强联合? 在当前的办公环境中,我们常常面临这样的困境:一个关键的业务数据需要从某个内部系统查询,你得先登录那个系统,找到报表,导出数据&#…

2026/6/23 9:17:55阅读更多 →
嵌入式开发进阶:CodeWarrior编译器扩展与LCF链接器配置实战

嵌入式开发进阶:CodeWarrior编译器扩展与LCF链接器配置实战

1. 项目概述:嵌入式开发中的编译与链接基石在嵌入式开发这个领域里,尤其是面对飞思卡尔(Freescale)的ColdFire这类微控制器,我们打交道最多的工具链之一就是CodeWarrior。很多刚入行的朋友可能会觉得,写代码…

2026/6/23 9:17:55阅读更多 →
GLM-5.1+万界方舟:构建高可用MaaS服务的工程实践

GLM-5.1+万界方舟:构建高可用MaaS服务的工程实践

1. 项目概述:当“排队”和“退款”成为生产力的隐形杀手“别让排队、退款影响生产力”——这句看似轻描淡写的标题,背后是成千上万开发者、AI产品经理、SaaS工具创业者在真实业务场景中反复踩坑后凝练出的血泪经验。它不是一句营销口号,而是一…

2026/6/23 9:12:54阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/23 7:04:52阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/23 1:55:32阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/23 5:55:37阅读更多 →
2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南

2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南

2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流…

2026/6/23 0:00:38阅读更多 →
2026年北京电子沙盘制作公司深度评测:从技术选型到落地效果,谁在真正定义“数字+实体”的融合边界?

2026年北京电子沙盘制作公司深度评测:从技术选型到落地效果,谁在真正定义“数字+实体”的融合边界?

模块一:行业背景——百亿赛道爆发,北京市场的特殊性与选型困局2026年,电子沙盘行业已走过“要不要做”的讨论,进入“找谁做、怎么做”的深水区。据行业研究机构数据,2025年国内电子沙盘市场规模已突破85亿元&#xff0…

2026/6/23 0:00:38阅读更多 →
音视频场景下的 Java 开发者面试:技术与挑战

音视频场景下的 Java 开发者面试:技术与挑战

面试互联网大厂:从音视频场景看 Java 开发者的技能与挑战 在互联网大厂求职的面试中,Java 开发者往往需要面对严苛的技术问题。今天,我们将通过一位名叫燕双非的搞笑程序员与严肃的面试官之间的对话,看看在音视频场景下&#xff0…

2026/6/23 0:00:38阅读更多 →