七月算法深度学习笔记7--RNN

这套笔记是跟着七月算法五月深度学习班的学习而记录的,主要记一下我再学习机器学习的时候一些概念比较模糊的地方,具体课程参考七月算法官网:
http://www.julyedu.com/

RNN:利用神经网络处理序列问题

状态和模型

之前,我们处理的模型叫做IID数据;网络用sample A 做一次forward,无论是分类还是回归,接下来用B做一次forward,A和B没有关系。
这类网络学习到的是一个函数,输入x,得到y.
IID:独立同分布。样本与样本之间是独立的。

更多的数据不满足IID
如序列数据:语音,视频,图像,文本等。
序列数据由两种:时间序列:语音,空间序列:图像
序列生成,如语言翻译,自动文本生成
内容提取,如图像描述
这里写图片描述

序列样本

序列问题可以简单分为五种
这里写图片描述

第一种:函数问题(不是序列)
第二种:一到多
第三种: 多到一
第四种:间隔多到多
第五种:多到多
RNN不仅能够处理序列的输入,也能得到序列的输出,这里的序列指的是向量序列。
RNN学习出来的是程序(状态机),不是函数

典型应用

这里写图片描述
https://github.com/karpathy/neuraltalk2
一到多 输入是一张图片,而输出一个文本序列(输入和输出至少由一个是序列)

这里写图片描述
http://vlg.cs.dartmouth.edu/c3d/
多到一: 输入一个文本,对文本分类(文本是变长的);
视屏中event的检测问题:(在一组视屏中找到投篮的视屏)

这里写图片描述
间隔多到多: 语言翻译

这里写图片描述
http://research.microsoft.com/apps/pubs/default.aspx?
id=264836
多到多:视屏的描述,自动给出视屏的解说文字。

序列预测

输入是序列,输出也是序列,output是下一个序列。用于做生成模型。(音乐生成器)
这里写图片描述
f通常很难建模;为了模拟f,设计g模型,也是依赖以前的输入和以前的状态(引入状态变量)
如何来解释这个问题呢?

序列预测模型

RNN不对样本进行结构化的描述,用神经元的规模和乘数拟合。好处:end to end的问题。
这里写图片描述
左图:前向:x输入,经过运算(sigmoid)得到h(x),再经过运算得到输出,把前一次的状态(h(t-1))参与到运算中。
最后的输出根据新的联合的结果,做一次全连接得到y;
也可以表示为右图:
这里写图片描述

h0和x0可以随意定义,预测值可以作为下一次的输入。

RNN训练

这里写图片描述

这里写图片描述
每一步定义的损失值相加。(不加权)
可以看到,下图中红框里的式子的求导
这里写图片描述

使用链式规则,形成连乘的展开,连乘可能会出现一些问题,如果W小于1,则连乘可能会趋近于0,如果W非常大,连乘的结果可能越来越大。
这就是梯度的消失和爆炸
这里写图片描述
这里的消失和弥散的原因与之前的不同,这里消失和弥散是由与序列展开造成的,而不是因为网络空间上的乘积很多造成的。如果网络由多个隐层,就会加剧消失和弥散。

BPTT算法:解决方案

这里写图片描述
但是实际中用的很少,因为W的连乘是不可避免的。
同常使用RNN的改进形态:
通过输入输入设一些门限:
这里写图片描述
应用最为广泛,成功的RNN
这里写图片描述
一个block由两个输出,加入了新的变量C_cell, cell的state的值有的神经元是长期的,有的是短期的。h是立即用来的到输出的,c一直在step中传递。可能是两步以前的值,也可能是100步以前的值,即c中有的维度是很久以前的状态,有的是很近的状态. 每个A block叫做一层
这里写图片描述

LSTM: forget / input unit
这里写图片描述
h(t-1)和x作为两个输入 【】表示相乘再相加。f控制遗忘多少,

LSTM: update cell
这里写图片描述
ft:控制保留状态的百分比。体现了使用long memory 还是 short memory.
it: 保证Ct可调整。由多少更新。

LSTM: output
这里写图片描述
ht根据ot更新

整体过程
这里写图片描述
加入的节点阻断了求导的路径,使得有一些求导的路径断开。

LSTM其他变形

这里写图片描述

使用LSTM

复杂度高,难以训练
这里写图片描述

参考资料:
七月算法:http://www.julyedu.com/
图片来自于课程PPT

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于心脏病预测的问题,使用循环神经网络(RNN)是一种常见的方法。RNN适用于处理序列数据,而心电图信号就是一种序列数据。在使用RNN进行心脏病预测时,你可以将心电图信号作为输入序列,然后通过训练RNN模型来预测患者是否患有心脏病。 首先,你需要准备一个合适的数据集,其中包含心电图信号和相应的心脏病标签。可以使用公开的心电图数据集,如PTB数据库或MIT-BIH数据库。然后,你可以对数据进行预处理和特征工程,如数据清洗、滤波、降采样等。 接下来,你可以构建一个RNN模型。RNN模型由一系列循环层组成,每个循环层都会处理一个时间步的输入数据。你可以选择不同类型的RNN单元,如简单循环单元(SimpleRNN)、长短期记忆网络(LSTM)或门控循环单元(GRU)。通过添加适当的全连接层和激活函数,你可以将RNN模型输出映射到二分类问题(有或无心脏病)的结果。 然后,你可以使用训练集对RNN模型进行训练,并使用验证集进行模型调优。在训练过程中,你可以使用适当的损失函数(如交叉熵)和优化算法(如随机梯度下降)来最小化模型的预测误差。 最后,你可以使用测试集对训练好的模型进行评估,并计算模型的性能指标,如准确率、精确率、召回率等。这些指标可以帮助你评估模型的预测能力和泛化能力。 需要注意的是,心脏病预测是一个复杂的医学问题,仅仅使用心电图信号可能不能得到准确的预测结果。通常情况下,还需要结合其他患者的临床信息和医学知识来进行综合评估。因此,在进行心脏病预测时,建议与专业医生合作,并遵循相关的医学准则和规范。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值