2022.12.18 学习周报

news2024/11/14 17:22:12

文章目录

  • 摘要
  • 文献阅读
    • 1.题目
    • 2.摘要
    • 3.介绍
    • 4.RNN
      • Conventional Recurrent Neural Networks
    • 5.Deep Recurrent Neural Networks
      • 5.1 Deep Transition RNN
      • 5.2 Deep Output
      • 5.3 Stacked RNN
    • 6.实验
      • 6.1 训练
      • 6.2 结果与分析
    • 7.讨论
  • 深度学习
    • GRU公式推导
      • 1.GRU前向传播
      • 2.GRU反向传播
    • GRU代码实现
  • 总结


摘要

This week, I read a paper on recurrent neural networks that explores different ways to extend RNN to deep RNN. Through the understanding and analysis of RNN structure, the paper finds that the network can be deepened from three aspects: input to hidden function, hidden to hidden transformation function and hidden to output function. Based on these observations, several novel deep RNN structures are proposed in this paper, and the results show that the deep RNN is superior to the traditional shallow RNN. In the study of recurrent neural network, I continue to learn the GRU principle, complete the mathematical derivation of GRU formula, and build a simple GRU network model with codes.

本周,我阅读了一篇关于循环神经网络的论文,论文旨在探索将RNN扩展到深度RNN的不同方法。论文通过对RNN结构的理解和分析,发现从三个方面入手可以使网络变得更深, 输入到隐含函数,隐含到隐含转换函数以及隐含到输出函数。基于此类观察结果,论文提出了几种新颖的深度RNN结构,并通过实验验证了深度RNN优于传统的浅层RNN。在循环神经网络的学习中,我继续学习了GRU原理,完成了对GRU公式的数学推导,以及用代码搭建了一个简单的GRU网络模型。


文献阅读

1.题目

文献链接:How to Construct Deep Recurrent Neural Networks

2.摘要

In this paper, we explore different ways to extend a recurrent neural network (RNN) to a deep RNN. We start by arguing that the concept of depth in an RNN is not as clear as it is in feedforward neural networks. By carefully analyzing and understanding the architecture of an RNN, however, we find three points of an RNN which may be made deeper; (1) input-to-hidden function, (2) hidden-to-hidden transition and (3) hidden-to-output function. Based on this observation, we propose two novel architectures of a deep RNN which are orthogonal to an earlier attempt of stacking multiple recurrent layers to build a deep RNN (Schmidhuber, 1992; El Hihi and Bengio, 1996). We provide an alternative interpretation of these deep RNNs using a novel framework based on neural operators. The proposed deep RNNs are empirically evaluated on the tasks of polyphonic music prediction and language modeling. The experimental result supports our claim that the proposed deep RNNs benefit from the depth and outperform the conventional, shallow RNNs.

3.介绍

背景:论文中提到RNN和前馈神经网络一样去堆叠网络深度,可以产生具有影响力的模型,但不一样的是RNN的深度是比较模糊的,因为RNN的隐藏层在时间上展开时,可以表示为多个非线性层的组合,因此RNN已经足够深了。

思路:作者研究了将RNN扩展到深层RNN的方法,首先研究了RNN的哪些部分可能被认为是浅层的,然后对每一个浅层部分,提出一种可以替代的更深层的设计,这会导致RNN出现很多更深的变体。

4.RNN

RNN是模拟具有输入xt,输出yt和隐含状态ht的离散时间动态系统,动态系统被定义为:
在这里插入图片描述
其中:下标t表示时间,fh表示状态转换函数,fo表示输出函数,每个函数由一组参数(θh和θo)进行优化。

给定一组有N个参数的训练序列,通过最小化代价函数去更新RNN的参数:
在这里插入图片描述
其中d(a, b)是a和b之间的预定义散度测度,例如欧式距离或者交叉熵。

Conventional Recurrent Neural Networks

将转换函数和输出函数定义为:
在这里插入图片描述
其中:W,U和V分别为转换矩阵,输入矩阵和输出矩阵,Φh和Φo是逐元素的非线性函数。通常,对于Φh使用饱和非线性函数,例如sigmoid函数或tanh函数。

5.Deep Recurrent Neural Networks

在前馈神经网络中,深度被定义为在输入和输出之间具有的多个非线性层。但不幸的是,由于RNN的时间结构,该定义不适用在RNN中。如下图所示,在时间上展开的RNN都很深,因为在时间k<t的输入到时间t的输出之间的传播路径跨越了几个非线性层。
在这里插入图片描述
然而,对于RNN在每个时间步上的分析表明,某些转换并不深,而仅仅是线性投影的结果。因此,在没有中间非线性隐含层的情况下,隐含-隐含(ht-1 → ht),隐含-输出(ht → yt)和输入-隐含(xt → ht)函数都是浅的。
在这里插入图片描述
论文中提到可以通过这些转换来思考RNN深度的不同类型,通过在两个连续的隐含状态(ht-1和ht)之间具有一个或多个中间非线性层,可以使隐含-隐含的转换更深。同时,通过在隐含状态ht和输出yt之间插入多个中间非线性层,可以使隐含-输出函数更深。

5.1 Deep Transition RNN

从RNN模拟的动态系统的状态转移方程中可以发现,fh的形式没有限制。因此,论文中建议使用多层感知器来代替fh。
在这里插入图片描述
其中:Φl表示第l层的单元非线性函数,Wl表示第l层的权重矩阵。

5.2 Deep Output

与上述类似,论文中提出可以使用具有L个中间层的多层感知器来建立下图中的输出函数fo:
在这里插入图片描述
其中:Φl表示第l层的单元非线性函数,Vl表示第l层的权重矩阵。

5.3 Stacked RNN

堆叠式RNN具有多个层次的转换函数,其定义为:
在这里插入图片描述
其中:ht,l表示在时间t时,第l层的隐含状态。当l = 1时,使用xt代替ht,l来计算状态。

6.实验

论文实验比较了RNN、DT(S)-RNN、DOT(S)-RNN和sRNN 2 layers这4种模型,其中每个模型的大小的选择都给定了范围,以保证实验结果的准确性。

6.1 训练

本实验使用了随机梯度下降法和裁剪梯度的策略,当代价函数停止降低时,训练结束。

在Polyphonic Music Prediction实验中,为了正则化模型,论文在每次计算梯度时,将标准偏差0.075的高斯白噪声添加到每个权重参数中。

在Language Modeling实验中,学习率从初始值开始,每次代价函数没有显著降低时,学习率减半。实验中不使用任何正则化来进行字符级建模,但对于单词级建模,实验会添加权重噪声。

6.2 结果与分析

如下图所示,展示了四种不同模型在同一数据集上的表现结果。
在这里插入图片描述
从上图的数据可以表明,深度RNN的表现都优于传统的浅层RNN,但每个深度RNN的适用性取决于其所训练的数据。

7.讨论

论文中提到在实验中遇到了一个实际问题是训练深度RNN的难度。训练传统的RNN是比较容易的,但训练深度RNN是比较困难的,因此论文中提出使用short connection以及常规RNN对它们进行预处理。然而,作者认为随着模型的大小和深度的增加,训练可能会变得更加困难。因此,在未来发现这一困难的根本原因和探索潜在的解决方案将非常重要,论文中提出可以使用advanced regularization methods和advanced optimization algorithms等有效的方法。

深度学习

GRU公式推导

GRU神经网络的整体结构与RNN神经网络的整体结构基本相同,区别是GRU在隐藏层中引入了门控单元。

1.GRU前向传播

1)将上一时刻神经单元的输出St-1和当前时刻的输入Xt合并输入到r(t)中去。
2)将上一时刻神经单元的输出St-1和当前时刻的输入Xt合并输入到z(t)中。
3)将上面计算出来的r(t)和St−1进行对位相乘,再将计算结果与Xt进行加法合并。
4)将上面三个步骤计算出来的结果结合起来更新St,最后计算出输出值。
在这里插入图片描述

2.GRU反向传播

误差函数选用交叉熵函数,交叉熵函数公式为:
在这里插入图片描述
其中:yri表示真实标签值的第i个属性,yi表示预测值的第i个属性。

1)偏导计算
在这里插入图片描述
2)权重矩阵参数梯度
在这里插入图片描述

GRU代码实现

1)GRU代码逐行实现

import torch
from torch import nn
import torch.nn.functional as F


class GRU(nn.Module):
    def __init__(self, indim, hidim, outdim):
        super(GRU, self).__init__()

        # 输入层维度 隐藏层维度 输出层维度
        self.indim = indim
        self.hidim = hidim
        self.outdim = outdim

        # 权重矩阵初始化
        self.w_zh, self.w_zx, self.b_z = self.get_three_parameters()
        self.w_rh, self.w_rx, self.b_r = self.get_three_parameters()
        self.w_hh, self.w_hx, self.b_h = self.get_three_parameters()

        self.Linear = nn.Linear(hidim, outdim)

    def get_three_parameters(self):
        return nn.Parameter(torch.FloatTensor(self.hidim, self.hidim)), \
               nn.Parameter(torch.FloatTensor(self.indim, self.hidim)), \
               nn.Parameter(torch.FloatTensor(self.hidim))

    def forward(self, input, state):
        input = input.type(torch.float32)
        Y = []
        h = state
        for x in input:
            z = F.sigmoid(h @ self.w_zh + x @ self.w_zx + self.b_z)
            r = F.sigmoid(h @ self.w_rh + x @ self.w_rx + self.b_r)
            ht = F.tanh((h * r) @ self.w_hh + x @ self.w_hx + self.b_h)
            h = (1 - z) * h + z * ht
            y = self.Linear(h)
            Y.append(y)
        return torch.cat(Y, dim=0), h

2)GRU API实现

import torch
from torch import nn


class GRU(nn.Module):
    def __init__(self, indim, hidim, outdim):
        super(GRU, self).__init__()
        self.GRU = nn.GRU(indim, hidim)
        self.Linear = nn.Linear(hidim, outdim)

    def forward(self, input, state):
        input = input.type(torch.float32)
        h = state.unsqueeze(0)
        y, state = self.GRU(input, h)
        output = self.Linear(y.reshape(-1, y.shape[-1]))
        return output, state

总结

本周,我继续学习了循环神经网络相关内容,完成了对GRU的公式推导和代码实现,认识到GRU比上周学到的LSTM简单,参数量更少,训练速度更快,因此适用于构建较大的网络。而且GRU只有两个门控,从计算角度上来看,它的效率更高,它的可扩展性有利于构建较大的模型,但是LSTM因为有三个门控,更加的强大和灵活,表达能力更强,同时训练速度会比GRU慢一些。

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

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

相关文章

关于数学中“函数(function)”的含义

目录 1. 问题 2. “function”是如何翻译成“函数”的&#xff1f; 3. “function”是谁引入数学中的&#xff0c;其意义何在&#xff1f; 3.1 “function”的词源 3.2 “function”引入数学中 3.3 “function”的含义 4. 常见的函数(Common Functions) 4.1 线性函数(L…

word页码如何设置为章节加页码,例如第一章第一页1-1、第二章章第一页2-1

由于用到word页码分章节页码的形式&#xff0c;从网上查了一下&#xff0c;质量真的很差&#xff0c;没有一篇文章讲清楚的&#xff0c;有的所答非所问&#xff0c;一怒之下&#xff0c;利用几个小时的时间解决问题并写下这篇文章&#xff0c;以供大家学习参考&#xff01;&…

【JSP】

文章目录简介Scriptlet脚本小程序JSP的指令标签include静态包含include动态包含不传参传参JSP的四大域对象四种属性范围验证属性范围的特点EL表达式操作字符串操作集合emptyJSTL条件动作标签if标签choose、when 和 otherwise 标签迭代标签foreach格式化动作标签formatNumber标签…

NProgress 进度条的使用方法

安装NProgress 进度条 npm install nprogress --save-dev 在vue项目中mian.js中或router.js或axios.js&#xff1a; import NProgress from nprogress import nprogress/nprogress.css 使用NProgress进度条 NProgress.start(); &#xff1a;进度条开始&#xff1b; NProgr…

GCD和LCM

目录 一 整除 定义 性质 二 GCD 1&#xff09;定义 2&#xff09;性质 3&#xff09;GCD编程 ①暴力法 ②欧几里得算法 ③更相减损术 ④Stein算法 三 LCM ①暴力法 ②最大公约数法 四 裴蜀定理 例题&#xff1a;裴蜀定理 一 整除 定义 a 能整除b,记为 a|b。其…

你还会想起这道题吗

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 原神是由米哈游自主研发的一款全新开放世界冒险游戏。游戏发生在一个被称作「提瓦特」的幻想世界&#xff0c;在这里&#xff0c;被神选中的人将被授予「神之眼」&#xff0c;导引元…

m基于神经网络的气候预测matlab仿真,气候数据采用的BoM气候数据,神经网络为matlab编程实现不使用工具箱函数

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 人工神经网络&#xff08;Artificial Neural Networks&#xff0c;简写为ANNs&#xff09;也简称为神经网络&#xff08;NNs&#xff09;或称作连接模型&#xff08;Connection Model&#xff09…

UICollectionView 实际使用

一. 使用UICollectionView制作书架 我想的书架是那种每一排都可以滑动的。暂时的想法是使用两个collectionView&#xff0c;第一个collectionView布置书架的每一排&#xff0c;第二个布置每一排内部的书。 布置外部的colletionView&#xff0c;这部分很简单&#xff0c;item的…

[ 数据结构 -- 手撕排序算法第五篇 ] 堆排序

文章目录前言一、常见的排序算法二、堆的概念及结构三、堆的实现3.1 堆的插入3.2 堆的删除四、堆排序4.1 向上调整建堆4.2 向下调整建堆4.3 建堆的时间复杂度4.4 堆排序五、堆排序的特性前言 手撕排序算法第五篇&#xff1a;堆排序&#xff01; 从本篇文章开始&#xff0c;我会…

Java+JSP超市管理系统(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用的技术后台框架&#xff1a;Servlet、JSP、JDBC、UI界面&#xff1a;BootStrap、jQuery、数据库&#xff1a;MySQL 系统功能 该系统共包含两种角色&#xff1a;员工和管理员。系统的主要功能模块如下&#xff1a; 1.系统管理 系统登陆、系统退出、修改…

《Mysql是怎样运行的》补充

19 第19章 从猫爷被杀说起-事务简介 19.1 事务的起源 19.1.1 原子性&#xff08;Atomicity&#xff09; 19.1.2 隔离性&#xff08;Isolation&#xff09; 其它的状态转换不会影响到本次状态转换&#xff0c;这个规则被称之为 隔离性 19.1.3 一致性&#xff08;Consisten…

[ISITDTU 2019]EasyPHP rce替换字母

<?php highlight_file(__FILE__);$_ $_GET[_]; if ( preg_match(/[\x00- 0-9\"$&.,|[{_defgops\x7F]/i, $_) )die(ros will not do it);if ( strlen(count_chars(strtolower($_), 0x3)) > 0xd )die(you are so close, omg);eval($_); ?> 打开界面有两个i…

Mysql分布式锁(四)乐观锁实现并发

文章目录CAS - Compare And Swap业务改造1. 表结构新增version列2. 修改代码3. 测试问题1. 高并发情况下&#xff0c;性能极低2. ABA问题3. 读写分离情况下导致乐观锁不可靠CAS - Compare And Swap 先比较再交换&#xff0c;一般通过时间戳或者version版本号。 举例&#xff1…

【审计思路】如何快速定位SQLMS注入漏洞?

0x00 前言 MCMS是政府、教育等其他行业常用的CMS&#xff0c;应用广泛&#xff0c;但是底层的代码中仍然遗留不少的问题。这篇文章主要针对SQL注入进行审计并探讨如何快速定位SQL注入漏洞&#xff0c;以及其他工具的应用。 MCMS&#xff0c;是完整开源的Java CMS&#xff01;基…

[ vulhub漏洞复现篇 ] Apache Airflow Celery 消息中间件命令执行漏洞复现 CVE-2020-11981

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

基于asp.net企业网上办公自动化系统-计算机毕业设计

企业网上办公自动化通过对各办公自动化要素的闭环整合&#xff0c;实现了工作流、信息流、知识流和办公自动化系统的整合管理&#xff0c;提供了一个科学、开放、先进的信息化办公平台&#xff0c;实现办公自动化&#xff0c;并进行远程办公或在家办公。企业网上办公自动化将人…

redis开启二级缓存

目录 1. redis集成 2. pom.xml加入redis缓存支持 3. 在项目配置文件中加入cache配置 4. 在启动类开发缓存功能 5. 需要缓存的实体对象实现序列化接口 6. 缓存的使用 7. 测试 今天与大家分享&#xff0c;redis二级缓存实现案例。如有问题&#xff0c;望指教。 1. redis集…

计算机毕业设计springboot+vue基本微信小程序的校园二手物品交易平台系统

项目介绍 目的:设计一个同学们能自由发布和浏览求购或卖出商品信息的校园二手交易小程序,解决信息的不流通以及传统二手商品信息交流方式的笨拙等问题。 意义:在大学校园里,存在着很多的二手商品,但是由于信息资源的不流通以及传统二手商品信息交流方式的笨拙,导致了很多仍然具…

十年阿里测试工程师浅谈UnitTest单元测试框架

一、UnitTest单元测试框架提供了那些功能 1.提供用例组织和执行 如何定义一条“测试用例”? 如何灵活地控制这些“测试用例”的执行? 2.提供丰定的断言方法 当测试用例的执行结果与预期结果不一致时&#xff0c;判定测试用例失败。在自动化测试中&#xff0c;通过“断言”…

2022 软件测试简答题【太原理工大学】

四、简答题 1. 比较自顶向下集成测试方法和自底向上集成测试方法各自的优缺点。 ① 自顶向下集成 优点&#xff1a;较早地验证了主要控制和判断点:按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实&#xff0c;带来信心;只需一个驱动&#xff0c;减少驱动器开发…