【王树森】RNN模型与NLP应用(4/9):LSTM模型(个人向笔记)

news2024/9/23 23:24:07

前言

LSTM是对Simple RNN的改进,可以避免梯度消失的问题,能够有更长的记忆力。


LSTM

在这里插入图片描述

1. LSTM:Conveyor Belt

过去的信息 C t − 1 C_{t-1} Ct1 通过一个传输带直接输送到下一个状态 C t C_t Ct,不会发生太大的变化,由此来避免梯度消失的问题。
在这里插入图片描述

2. LSTM:Forget Gate

  • 上一次的特征向量 h t − 1 h_{t-1} ht1 和 本次输入的向量 x t x_t xt 经过与 W f W_f Wf 的变换后输入sigmoid函数进行激活(输出在0到1)得到 f t f_t ft f t f_t ft 即为遗忘门的向量。其中 W t W_t Wt 是需要被训练的参数
    在这里插入图片描述
  • 遗忘门向量再与上一个 c t − 1 c_{t-1} ct1 进行点乘,其中遗忘门向量为0表示彻底遗忘,遗忘门向量为1则为完全保留
    在这里插入图片描述

3. LSTM:Input Gate

  • i t : i_t: it i t i_t it 的计算方法和 f t f_t ft 一样,但是参数矩阵 W i W_i Wi 不一样,这个参数矩阵也是需要被训练的, i t i_t it 决定了下面的 C t ~ \tilde{C_t} Ct~ 有多少会被作用到传送带
    在这里插入图片描述
  • c t ~ : \tilde{c_t}: ct~ 把上面的激活函数换成了 tanh,输出范围变为 [ − 1 , 1 ] [-1,1] [1,1] ,其中 W c W_c Wc 是需要被训练的矩阵, c t ~ \tilde{c_t} ct~ 是在和 i t i_t it 点乘后加到传送带的向量
    在这里插入图片描述

4. LSTM:Update the Conveyor Belt

将上面算出的三个向量都用来更新 c t c_t ct
在这里插入图片描述

5. LSTM:Output Gate

  • o t o_t ot:决定 c t c_{t} ct 有多少作用到 h t h_t ht
    在这里插入图片描述

6. LSTM: Update State

c t c_t ct 丢进双曲正切函数进行激活,将元素的数值压到 [ − 1 , 1 ] [-1,1] [1,1],将激活过的数值与 o t o_t ot 点乘得到 h t h_t ht
这里有两份 h t h_t ht ,一份传到了下一步,另一份作为输出
在这里插入图片描述

7. LSTM:Number of Parameters

一共有4个参数据矩阵,其中参数矩阵的计算方法和上节课 Simple RNN 一样。

  • 行数:状态向量 h 的维度
  • 列数:状态向量 h 的维度 + 输入 x 的维度
  • 总参数:4 * (状态向量 h 的维度 + 输入 x 的维度)* 状态向量 h 的维度
    在这里插入图片描述

LSTM for IMDB Review

代码与上节课的 Simple RNN 几乎完全一致,只需要把 RNN 的模型改成 LSTM即可:
在这里插入图片描述
结构和参数量如下:
在这里插入图片描述
模型的效果:比 Simple RNN 有提升
在这里插入图片描述
使用Dropout 并不能提升准确率,为什么?

  • 虽然过拟合在LSTM中存在,但是LSTM只有八千多个参数
  • 而Embedding层有32W个参数,固在这里对LSTM用Dropout没啥用,应该对Embedding层用Dropout

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

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

相关文章

激活函数 Sigmod 及其导数

文章目录 1. Sigmod 函数2. 取值3. 图像4. 导数 1. Sigmod 函数 Sigmod 函数是神经网络中最常用的激活函数之一,其形式如下: sigmod ( x ) f ( x ) 1 1 e − x . \text{sigmod}(x) f(x) \frac{1}{1 e^{-x}}. sigmod(x)f(x)1e−x1​. 2. 取值 分…

大模型理论基础

大模型理论基础与学习路径 1.大模型的理论基础,包括深度学习、预训练语言模型和大语言模型。 2.学习大模型开发的路径,包括理论学习、实践操作和项目应用。 3.如何通过理论学习提升上限,为深入学习大模型奠定基础。 GPT模型家族技术发展 1.GP…

数据结构——堆排序

目录 引言 堆排序 1.算法思想 2.算法步骤 3.代码实现 3.1 构建堆 (1)小堆 (2)大堆 3.2 交换与调整 3.3 重复上述过程 4.复杂度分析 5.完整代码 5.1算法实现代码 5.2 示例 6.堆排序的优势 结束语 引言 本篇博客,我们将利用堆结构实现的高效排序算法…

版本控制的核心:Git中的哈希与默克尔树解析

Git是最常用的代码版本控制工具。它帮助我们跟踪代码的更改、管理代码版本,同时保证代码库的完整性和安全性。我们知道 Git 中有一些基本的操作,比如commit、merge、rebase等,但这些操作的底层机制是如何实现的呢?哈希函数和默克尔…

深度学习|模型推理:端到端任务处理

文章目录 引言端到端的能力任务与模型简介手写数字识别数据准备训练集与测试集模型介绍 推理过程前向传播权重参数推理与评估 结语 引言 通过前文「深度学习|感知机:神经网络之始」中 XOR Gate 的示例,我们知道叠加层可以增强感知机的表达能…

单向链表排序及双向链表

单向链表的优缺点 优点:存储空间没有上限,插入删除效率高 缺点:修改和查找效率低,只能单向的向后遍历后续节点,不能向前遍历前驱节点 单向链表快慢指针法查找: 链表的排序 双向链表 由于单向链表只能通…

Linux 性能调优:策略与实践

引言 随着云计算和虚拟化技术的发展,Linux 已经成为企业和个人用户的首选操作系统。Linux 性能调优不仅有助于提高系统资源利用率,还能确保应用程序的高效运行。本文将探讨 Linux 性能调优的基本原则、常用工具和方法,以及实际案例分析。 一…

go中的并发处理

. Goroutines 概念: Goroutines 是 Go 的核心并发机制。它们是由 Go 运行时管理的轻量级线程,具有比操作系统线程更少的开销。每个 goroutine 只需少量的内存(大约 2KB),并且由 Go 运行时负责调度和管理,哪怕是java发…

哈希表与统计——594、350、554、609、454(2简3中)

594. 最长和谐子序列(简单) 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。 数组的子序列是一个由数组派生出来的序列&a…

华大HC32F460移植FreeRTOS

参考: 关于MCU M4内核移植FreeRTOS的笔记 主要参考这位大佬的,照做就行了,用的也是IAR HC32F460 freeRTOS移植 这位是用Keil的 MCU:华大HC32F460 库版本:hc32f460_ddl_Rev2.2.0 IDE: IAR FreeRTOS版本&…

【多线程】概述

进程与线程 概述 一个正在运行过程中的程序,就是一个进程,也称一个任务。进程是一个重要的软件资源,是由操作系统内核管理和组织的。 并行:微观上同一个时刻,两个核心上的进程,就是同时进行的。 并发&…

遗传算法Github初学

遗传算法的理论是根据达尔文进化论而设计出来的算法:人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因 遗传算法(genetic algorithm——GA)是计算数学中…

【JavaScript】LeetCode:11-15

文章目录 11 最长连续序列12 移动零13 盛最多水的容器14 三数之和15 接雨水 11 最长连续序列 数组排序、去重遍历数组中的元素,当元素连续时,长度加1,当不连续时,长度设置为1。 /*** param {number[]} nums* return {number}*/ v…

AI科学家:自动化科研的未来之路

随着人工智能(AI)技术的不断进步,AI已经在众多领域中展现了强大的潜力,尤其是在科研方面的应用正在引起广泛关注。最近,Sakana AI与牛津大学和不列颠哥伦比亚大学联合推出了一款被称为“AI科学家”的自动化科研工具&am…

第4章-01-学会从Chrome浏览器中Network

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…

【Canvas与纹饰】环形小蜜蜂纹饰

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>环形小蜜蜂纹饰</title><style type"text/css"&g…

Mysql基础练习题 1378.使用唯一标识符替换员工ID (力扣)

1378. 展示每位用户的 唯一标识码&#xff08;unique ID &#xff09;&#xff1b;如果某位员工没有唯一标识码&#xff0c;使用 null 填充即可。 你可以以任意顺序返回结果表。 题目链接&#xff1a; https://leetcode.cn/problems/replace-employee-id-with-the-unique-i…

k8s调度、污点、容忍、不可调度、排水、数据卷挂载

一、Kubernetes的list-watch机制 1、List-watch K8S集群中&#xff0c;通过List-watch机制进行每个组件的协作&#xff0c;保持数据同步。这种设计可以实现每个组件之间的解耦 kubectl配置文件&#xff0c;统一向集群内部apiserver发送命令——通过apiserver把命令发送到各个…

C# 不安全代码

当一个代码块使用 unsafe 修饰符标记时&#xff0c;C# 允许在函数中使用指针变量。不安全代码或非托管代码是指使用了指针变量的代码块。 指针变量 指针 是值为另一个变量的地址的变量&#xff0c;即&#xff0c;内存位置的直接地址。就像其他变量或常量&#xff0c;您必须在…

【系统架构设计师-2022年】综合知识-答案及详解

文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6~7题】【第8题】【第9题】【第10题】【第11~12题】【第13题】【第14题】【第15题】【第16题】【第17~18题】【第19题】【第20题】【第21题】【第22题】【第23题】【第24题】【第25题】【第26题】【第27题】【第28题…