入门自然语言处理(二):GRU

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 入门自然语言处理(二):GRU

本文是对GRU的精简介绍,对于初学者可以看详细介绍:https://zh.d2l.ai/chapter_recurrent-modern/gru.html

简介

GRU (Gate Recurrent Unit ) 背后的原理与 LSTM 非常相似,即用门控机制控制输入、记忆等信息而在当前时间步做出预测。

GRU 有两个门,即一个重置门(reset gate)和一个更新门(update gate)。从直观上来说,重置门决定了如何将新的输入信息与前面的记忆相结合,更新门定义了前面记忆保存到当前时间步的量。如果我们将重置门设置为 1,更新门设置为 0,那么我们将再次获得标准 RNN 模型。

GRU 原论文:https://arxiv.org/pdf/1406.1078v3.pdf

Why

  • 解决长期记忆和反向传播中的梯度等问题
  • LSTM能够解决循环神经网络因长期依赖带来的梯度消失和梯度爆炸问题,但是LSTM有三个不同的门,参数较多,训练起来比较困难。GRU只含有两个门控结构,且在超参数全部调优的情况下,二者性能相当,但是GRU结构更为简单,训练样本较少,易实现。R-NET: MACHINE READING COMPREHENSION WITH SELF-MATCHING NETWORKS(2017)

Model

整体结构

⊙ 是Hadamard Product,也就是操作矩阵中对应的元素相乘,因此要求两个相乘矩阵是同型的。 ⊕ 则代表进行矩阵加法操作。

输入与输出

  • 当前输入:$X_t$
  • 上一个节点传递下来的隐状态(hidden state):$h_{t-1}$ 这个隐状态包含了之前节点的相关信息。
  • 输出:$y_t$
  • 传递给下一个节点的隐状态 :$h_t$

门控结构

根据输入获取重置的门控(reset gate)和 控制更新的门控(update gate)

$\sigma$ 为sigmoid函数,通过这个函数可以将数据变换为0-1范围内的数值,从而来充当门控信号。

重置数据

如何根据门控重置数据

其中的 $h_{t-1'}$ 根据下面的公式获取:

$h{t-1'} = h{t-1}$ ⊙ $r$

Code

class testGRU(nn.Module):
    def __init__(self, input_size=input_size, hidden_size=hidden_size, num_layers=num_layers, num_classes=num_classes, sequence_length=sequence_length):
        super(SimpleGRU, self).__init__()
        self.hidden_size  = hidden_size
        self.num_layers = num_layers

        self.gru = nn.GRU(input_size, hidden_size, num_layers, batch_first=True)
        self.fc1 = nn.Linear(hidden_size * sequence_length, num_classes)

    def forward(self, x):
        h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(device)

        out,_ = self.gru(x, h0)
        out = out.reshape(out.shape[0], -1)
        out = self.fc1(out)
        return out

References

  1. https://zhuanlan.zhihu.com/p/32481747
  2. https://www.jiqizhixin.com/articles/2017-12-24
  3. https://paddlepedia.readthedocs.io/en/latest/tutorials/sequence_model/gru.html
  4. https://www.kaggle.com/code/fanbyprinciple/learning-pytorch-3-coding-an-rnn-gru-lstm
相关文章
|
存储 自然语言处理 数据可视化
自然语言入门:NLP数据读取与数据分析
本章主要内容为数据读取和数据分析,具体使用`Pandas`库完成数据读取操作,并对赛题数据进行分析构成。
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
124 0
|
机器学习/深度学习 自然语言处理 数据处理
文本数据处理的终极指南-[NLP入门](三)
在这篇文章中,我们将要讨论不同的特征提取方法,从一些基本技巧逐步深入学习高级自然语言处理技术。我们也将会学习如何预处理文本数据,以便可以从“干净”数据中提取更好的特征。
449 0
文本数据处理的终极指南-[NLP入门](三)
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理(NLP)技术入门指南
【5月更文挑战第3天】本文是自然语言处理(NLP)技术的入门指南,介绍了NLP的基本概念、关键技术和学习建议。NLP旨在实现人机自然语言交互,应用于机器翻译、文本分类等领域。核心技术包括词法分析、句法分析、语义分析及深度学习模型。入门学习需掌握基础知识,动手实践,关注前沿技术并持续学习。通过学习NLP,可为人工智能发展贡献力量。
|
数据采集 机器学习/深度学习 自然语言处理
nlp入门之基于贝叶斯算法的拼写错误检测器
基于贝叶斯思想简单的实现了一个拼写错误检测器
|
自然语言处理 Python
nlp入门之正则表达式
本文作为nlp开山第二篇,简要介绍了python的re模块及正则表达式的用法
|
自然语言处理 算法
nlp入门之隐马尔科夫模型
本文简述了隐马尔科夫模型的原理,并且使用hmmlearn库进行隐马尔科夫模型的实验
|
自然语言处理 算法 数据可视化
nlp入门之商品信息可视化与文本分析实战
本文主要演示了在爬取信息后如何将信息可视化及如何进行文本分析
|
自然语言处理 Python
入门NLTK:Python自然语言处理库初级教程
NLTK(Natural Language Toolkit)是一个Python库,用于实现自然语言处理(NLP)的许多任务。NLTK包括一些有用的工具和资源,如文本语料库、词性标注器、语法分析器等。在这篇初级教程中,我们将了解NLTK的基础功能。
|
机器学习/深度学习 人工智能 自然语言处理
【Python入门系列】第十八篇:Python自然语言处理和文本挖掘
Python自然语言处理(Natural Language Processing,简称NLP)和文本挖掘是一门涉及处理和分析人类语言的学科。它结合了计算机科学、人工智能和语言学的知识,旨在使计算机能够理解、解释和生成人类语言。
221 0

热门文章

最新文章