0
点赞
收藏
分享

微信扫一扫

LTSM 学习笔记

忆北文学摄影爱好员 2022-04-27 阅读 50
深度学习

学习路线

首先配置python虚拟环境,安装框架和包

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch_小宋是呢的博客-CSDN博客_m1芯片深度学习

查了一下lstm后,从最基本的神经网络入手,发现需要一点一点从前往后补

首先是优化算法,梯度下降法,包括批量梯度和随机梯度,后来又了解到一种叫Adam

深入浅出--梯度下降法及其实现 - 简书

优化算法是为了实现反向传播,这个大致懂了后,就开始看最简单的神经网络

零基础入门深度学习(3) - 神经网络和反向传播算法 - 作业部落 Cmd Markdown 编辑阅读器

LTSM是一种RNN,所以接着了解RNN

如何从RNN起步,一步一步通俗理解LSTM_v_JULY_v的博客-CSDN博客_从rnn到lstm

最后理解LTSM

理解 LSTM 网络 - 简书

找了一个实例,在上面学习过程中找了很多源码,都是不利用框架来实现算法,都很厉害,这样有助于深层的理解,下面这个用了pytorch

[干货]深入浅出LSTM及其Python代码实现 - 知乎

可以说,我的学习路线是顺着过来的,现在也是似懂非懂那种,我想把我的经验反过来写,这样可能看起来更好理解

神经网络

首先什么是神经网络?

人的所有系统,由无数的神经链接起来,才能让我们理解各种各样的事物

如果我们把理解事物抽象为给一个函数一个输入,得到一个输出

这就是神经网络算法的内涵

就像是回归问题一样,我们拟合数据,总结出一个函数

最简单的神经网络,针对的只是一帧

当我们处理视频的时候,不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列

所以就需要RNN

但是RNN在处理长队列的时候,会出现梯度消失或者梯度爆炸的问题

所以我们学习LTSM

RNN有了记忆性

LTSM有了更加针对的记忆性,他可以分辨什么该留下,什么该扔掉,并且对于不同的帧该保留怎样的输出

这种更加符合现实,也就是更聪明

这样说很抽象,我们从一个例子出发,我们把sin函数当作输入,cos函数当作输出

我们知道他们之间的关系是导数,但是机器并不知道,我们把sin和cos的值一一对应起来,当机器从当中学习,总结规律,生成结论

如果是传统的神经网络,它仅仅基于当前的输入来预测输出,对于这种同一个输入可能对应多个输出的情况不再适用。

 我们主要分析RNN和LTSM

对于RNN来说,因为它并不会去选择遗忘信息,所以之前的输入会一直对后面有所影响,但是我们知道对于三角函数来说是有周期性的,对于两个不同的x来说,sinx可以相等,但是cosx并不相等

RNN利用了神经网络的“内部循环”来保留时间序列的上下文信息,可以使用过去的信号数据来推测对当前信号的理解

那么三角函数的周期性,会导致一个比较大的时间间隔,RNN是没有办法记住间隔太久的信息,可以理解为他只会考虑第二个点的值,忘记第一个,也就忽略了周期性,那么这样拟合出来的结果肯定是不正确的

也就是梯度爆炸或者梯度消失(学习到一定程度无法再学习)

 但是LTSM的原生机制,可以让他记住很久之前的信息(其实是选择遗忘一些,保留一些,这样就可以涉及到间隔较久的信息),那么他就可以完美解决RNN的问题

我就是通过这个例子

理解了LTSM的记忆到底是怎么在现实体现的

举报

相关推荐

0 条评论