首页 > 其他分享 >umich cv-6-1 循环神经网络基本知识

umich cv-6-1 循环神经网络基本知识

时间:2023-10-30 17:14:04浏览次数:26  
标签:架构 RNN vanilla 基本知识 cv umich LSTM 我们 输入

这节课中介绍了循环神经网络的第一部分,主要介绍了循环神经网络的基本概念,vanilla循环网络架构,RNN的一些应用,vanilla架构的问题,更先进的rnn架构比如GRU和LSTM

vanilla循环网络架构

在之前的讨论中,我们往往以图像分类问题为基础然后展开,训练网络,输入图像,然后我们可以得到相应的图像标签,但在实际中,我们可能还会需要处理一些序列问题,比如说输入一个图像,我们希望能得到一组单词,表示图像的内容,或者说输入一个视频也就是输入一系列的图像,得到一个标签,或者说输入一组单词,我们能够将其翻译为另一种语言的单词:
img

img
循环网络的核心概念大致如上图,简单来说,我们依次使用不同的输入向量和上一个状态,经过一个权重矩阵,实现更新得到新的状态,然会不断重复上述过程直至输入向量全部输入,注意这里我们采用的权重矩阵每一步循环都是相同的,我们以many to many计算图为例:
img
我们可以看到首先初始化w与h0,然后x1,h0一起与fw作用得到h1之后,重复上述操作,一直得到h2,h3等等,同时每个隐藏层都会输出一个y,用于表示对下一个x的预测结果,然后我们可以利用这个预测结果与实际的下一个输入向量之间的差距,作为损失,反向传播对权重矩阵进行更新。

最常用最简单的循环神经网络就是vanilla RNN:
img
可以看到它给出了h与y的计算方式,其余结构就和我们之前提到的一样,下面是一个具体的例子,可以看到我们使用了“hello”这个单词来训练我们的循环神经网络。
img

应用与理解

我们实际上可以使用上述循环网络实现很多有意思的事情,比如说我们可以将莎士比亚的作品作为训练集,然后让ai来以莎士比亚的风格来自己创作:
img

img
我们可以看到经过不断不断的训练,ai逐渐能输出更加像样的结果了,尽管从具体内容上来说还是狗屁不通

同样,我们也可以让神经网络去模仿写数学证明或者一些代码,它也能模仿的有模有样:
img
img

如果我们将隐藏层可视化,并且选取其中可理解的一些结果观察,我们可以发现一些有意思的一些事情:
img
img
img
实际上隐藏层特定地学习了我们输入的文字序列中的某些信息,比如句子的长度信息,if语句信息以及注释信息等等

我们可以将RNN与CNN结合起来,使用CNN来提取特征向量,然后我们使用RNN来将特征向量作为新的信息加入,这样能够更好地训练我们的网络,为特征向量创建新的权重矩阵:
img
然后我们可以得到一些非常好的结果:
img

vanilla架构的问题

vanilla架构最大的问题就是反向传播过程中,有的路径太长,需要经过许多权重矩阵以及tanh(而我们知道tanh存在着杀死梯度的问题),如果矩阵的奇异值大于1,会导致在这个过程中梯度不断增大,直到爆炸,如果奇异值小于1,则会出现梯度消失的现象,这两种情况都会导致vanilla架构只有短期记忆,不能很好地学习,对于第一种,我们可以将梯度缩小,虽然这样已经不是原本的梯度,但还是可以得到不错的效果,对于第二种情况,我们则需要改变RNN网络的架构,这就有了LSTM架构:
img

LSTM

LSTM采取如下的架构:
img
把h层放大为4h,然后分成4个小h,每个h分别经过sigmoid,sigmoid,sigmoid以及tanh,分别得到输入门,遗忘门,输出门以及门门,其中输入门表示我们是否向神经元中输入信息,是一个介于0-1之间的值,遗忘门表示是否要遗忘上一次输入的信息,也是一个0-1之间的值,门门表示我们要向神经元中输入多少信息,输出门表述我们最终要输出多少信息
从\(c_{t}\)的推导式中我们也可以看出,首先f遗忘门与前一个c值哈达马积(两个矩阵对应位置元素相乘),表述我们要忘记多少上一层的信息,然后再加上i与g的哈达马积,表示我们要输入多少信息。

img
img
通过这样的方法,我们实际上设计了一条新的反向传播路径,只需要先经过一个+号(我们知道反向传播梯度与上游梯度相同),然后再经过一个对应元素相乘的反向传播而不是和矩阵W相乘
实际上这种设计与残差网络的设计有着相同的直觉,它们都提供了一条求解梯度的高速公路,来防止太长的反向传播路径
至于LSTM这种具体结构式怎么想出来的,“it is called reasearch trial and error”hhh

最后介绍几种不同的RNN结构的变体:
多层RNN架构(层数一般不会太深):
img

GRU(与LSTM思想大致相同,只是构建了不同的高速公路)
以及使用进化搜索研究了10000种不同的RNN架构:
img
实践证明我们使用LSTM架构一般就能得到较好的效果

标签:架构,RNN,vanilla,基本知识,cv,umich,LSTM,我们,输入
From: https://www.cnblogs.com/dyccyber/p/17798282.html

相关文章

  • 视频汇聚平台EasyCVR分发的流如何进行token鉴权?具体步骤是什么?
    视频监控EasyCVR平台能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支持视频定时轮播。视频监控汇聚平台EasyCVR支持多种播放协议,包括:HLS、HTT......
  • opencv wasm 试用
    基于webassembly的opencvnodejs开发是一个很不错的体验,不用考虑nodeaddon的各种问题,而且性能也不错以下是基于echamudi/opencv-wasm构建的4.8.1版本的试用,代码来自opencv-wasm的示例demo试用pacakge.json {"name":"opencv-wasm","version":......
  • opencv 4.8.1 wsam 构建&问题说明
    opencv-wasm使用的opencv版本是4.3的,为了使用最新版本的,所以自己基于opencv-wasm提供的脚本构建了一个,同时记录下一些问题以及解决方法构建脚本修改原始使用的是4.3.0版本的,直接修改分支就可以了 gitclone--branch4.8.1--depth1https://github.com/open......
  • CVer从0入门NLP(一)———词向量与RNN模型
    ......
  • EDA工具使用+GIT操作+python编程+C语言编程+Riscv相关+TCL操作
    EDA工具使用Verdi覆盖率转网页urg-full64-dirsimv.vdbVerdi加载sessionverdi-ssrsessionFileVcs分部编译额外选项-partcomp:自动分块编译。-fastpartcomp:使用多核计算系统并行部分编译。-pcmakeprof:查看每部分编译占用的时间,方便对时间更久的进行拆分。-partc......
  • 读取一个cvs文件,一行一行输出出来
    importcsvfile='D:\\1.csv'withopen(file,encoding="UTF8")asf: reader=csv.reader(f)#创建读取器 header_row=next(reader)#获取表的第一行(一般是列名) print(header_row)#打印 first_row=next(reader)......
  • python 安装包时 ERROR: Failed building wheel for webrtcvad
    报错信息:error:subprocess-exited-with-error×Buildingwheelforwebrtcvad(pyproject.toml)didnotrunsuccessfully.│exitcode:1╰─>[9linesofoutput]runningbdist_wheelrunningbuildrunningbuild_pycreatingbuildcre......
  • ICCV 2023 | 通用数据增强技术,随机量化适用于任意数据模态
    前言 本文提出了一种适用于任意数据模态的自监督学习数据增强技术。本文转载自机器之心仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV各大方向专栏与各个部署框架最全教程整理【CV技术指......
  • umich cv-5-2 神经网络训练2
    这节课中介绍了训练神经网络的第二部分,包括学习率曲线,超参数优化,模型集成,迁移学习训练神经网络2学习率曲线超参数优化模型集成迁移学习学习率曲线在训练神经网络时,一个常见的思路就是刚开始迭代的时候学习率较大,然后随着迭代次数的增加,学习率逐渐下降,下面我们就来介绍......
  • OpenCV介绍与GUI特征(一)
    @TOC编辑者:廿瓶鲸(和鲸社区Siby团队成员)IT科程FREE0.1OpenCV-Python教程简介OpenCVOpenCV于1999年由GaryBradsky在英特尔创建,第一个版本于2000年问世。VadimPisarevsky加入GaryBradsky,管理英特尔的俄罗斯软件OpenCV团队。2005年,OpenCV被用在Stanley上,该车赢得了2005年的DARPA大......