原视频地址
配音很有意思,建议看原视频
循环神经网络 你只需
展开它们
bam
statquest
你好,我是乔什·斯塔默,欢迎来到
statquest 今天我们将
讨论循环神经网络,
它们将被清楚地解释
闪电和网格非常酷
当你检查它们时 有一些时间
注意这个统计任务假设你
已经熟悉
神经网络反向传播
和 rel u 激活函数背后的主要思想,如果没有
检查任务
也请注意,虽然基本或普通的
循环神经网络很棒,但
它们通常是 被认为是
理解
长短期记忆
网络和变压器等更奇特事物的垫脚石,我们将
在未来的统计任务中讨论这些东西,
换句话说,每个值得采取的任务都需要
采取步骤,这是第一步,
所以说让我们打个招呼 向
statsquatch 打招呼,
statsquatch 打招呼,
有一天我买了一家
名为“快速致富”的公司的股票,
但第二天他们的股价
下跌了,我赔了钱,
所以
我想也许我们可以创建一个
神经网络来预测股价
不会 不幸的是,
实际的股票市场非常
复杂,
如果我们提供
如何利用它赚钱的建议,我们可能都会遇到很多麻烦,
但如果我们去那个叫做的神秘地方
斯塔特兰的事情要简单得多
,律师也少得多,
所以让我们建立一个神经网络来
预测斯塔特兰的股票价格,
但是首先让我们谈谈
一般的股票市场数据,
当我们观察股票价格时,它们往往会随着
时间的推移而变化,例如
这只股票的价格
在下跌之前上涨了四天,
而且公司
在股票市场上交易的时间越长,我们获得的数据就越多,
例如,我们对蓝线代表的公司有更多的时间点
对于红线代表的公司来说,
这意味着如果我们想使用
神经网络来预测股票价格,
那么我们需要一个能够处理
不同数量的连续
数据的神经网络,
换句话说,如果我们想预测
股票 蓝线公司在第
10 天的股价,
那么我们可能需要使用之前
所有 9 天的数据,
相比之下,如果我们想预测
红线公司在第
10 天的股价,
那么我们只需要以下数据:
前五天,
所以我们需要神经网络在
我们使用多少顺序数据进行预测方面具有灵活性,
这与
我们在本系列中看到的其他神经网络(
例如在神经网络中)相比有很大的不同
解释说,我们检查了一个神经网络,
它使用一个输入值进行预测,
如果您看到
具有多个输入和
输出的神经网络上的统计任务,您就会看到这个神经网络
使用两个输入值进行预测
在深度学习
图像分类的 stackquest 中,您看到了一个神经
网络,它使用
6 像素 x 6 像素大小的图像进行预测,
但现在我们需要一个神经网络,
它可以使用
我们的九个值进行预测。 蓝色公司的
数据并使用红色公司的五个值进行预测
好消息是,处理
输入值数量不同问题的一种方法是使用
循环神经网络,
就像其他神经网络一样
我们之前见过的循环神经
网络具有权重偏差
层和激活函数,
最大的区别在于循环
神经网络也具有反馈循环,
尽管该神经网络可能
看起来只需要单个输入
值,但
反馈循环使其成为可能
使用随时间收集的股票市场价格等连续输入值
进行预测,
以了解该循环
神经网络究竟如何使用
连续输入值进行预测,
如果股票价格较低,让我们在 Statland 中通过它运行一些 Statland 的股票市场数据 连续
两天,
那么第二天的价格通常会
保持在低位,
换句话说,如果昨天和今天的
股价都处于低位,那么明天的价格
也应该处于低位,
相反,如果昨天的价格处于低位,
今天的价格处于中等水平,那么明天的价格也应该处于低位
明天的价格应该会
更高
,当价格从高位下降
到中位
时,明天的价格会更低。
最后,如果价格连续两天保持高位,
那么明天的价格就会很高,
因为我们看到了股票的总体趋势
Statland 的价格
我们可以讨论如何
通过循环神经网络运行昨天和今天的数据来
预测明天的
价格,
我们要做的第一件事就是调整
价格,使低等于
0,中等于 0.5
,高等于 1。
现在让我们运行
通过这个循环神经网络计算昨天和今天的值,
看看它现在是否可以正确预测
明天的值,
因为循环神经网络
有一个反馈循环,我们可以将
昨天和今天的值依次输入到输入中,
我们将首先将昨天的
值插入到输入中 输入
现在我们可以像
对任何其他神经网络一样进行数学计算
激活函数的输出
我们称之为 y sub 1 的 y 轴坐标可以
首先移动两个位置 y sub 1 可以移动 输出
,如果我们按照这种方式进行数学计算,
那么输出就是今天的预测值,
但是我们对今天的
预测值不感兴趣,因为我们
已经有了今天的实际值,
而不是我们想使用昨天
和 今天的值来预测明天的
值,
所以现在我们将忽略这个输出,
而是关注
这个反馈循环会发生什么
理解
反馈循环如何工作的关键是这个求和
求和允许我们将 y sub 1 乘以
w sub 2 这是基于
昨天的值
到今天的值乘以 w sub 1。
换句话说,反馈循环允许
昨天和今天的值
影响预测,
嘿这个反馈循环让我完全
扭转了
有没有一种更简单的方法来看看如何 这是
有效的,
是的,
有一种更简单的方法来查看
正在发生的事情,
而不必记住
循环中的哪个值以及输入中的哪个值,
我们现在可以通过
为每个输入值创建神经网络的副本来展开反馈循环
将反馈
循环指向第一个副本中的总和,
我们可以
通过展开循环神经
网络将其指向第二个副本中的总和,我们最终得到一个
具有两个输入
和两个输出的新网络,
第一个输入是昨天的值
如果我们
像之前那样直接对第一个输出进行数学计算,
我们就会得到今天的预测值,
但是正如我们之前看到的,我们可以忽略
这个输出,
第二个输入是今天的值
以及第一个
激活函数和 第二个
求和
允许昨天和今天的值
影响最终输出,
当我们将昨天的值放入
第一个输入时,
我们可以像之前一样进行数学计算,然后
我们遵循从
第一个激活函数到
神经网络的第二个副本中的求和
现在我们将今天的值放入第二个
输入
并继续进行数学计算
[音乐],
这为我们提供了明天零的预测值,
这与原始
观察结果一致,
换句话说,循环神经网络
网络正确预测了明天的
值
bam
同样,当我们通过循环神经网络运行
其他场景的昨天和今天的值时,
我们
预测明天的正确值
double bam
这个循环神经网络在
两天的数据下表现很好,但是
如果我们有三天的数据怎么办
当我们想要使用三天的数据
来预测明天的
价格时,
我们只需不断展开
循环神经网络,直到我们获得
每天数据的输入,
然后我们将值始终插入输入中
在这种情况下,从最旧到最新,这意味着我们首先
插入前天的值,
然后插入昨天的值
,然后插入今天的值
,当我们进行数学计算时,最后的输出为
我们提供了明天的预测
bam 请
注意,无论我们
展开循环神经网络多少次,
权重和偏差都会在每个输入之间共享,
换句话说,即使该展开的
网络具有三个输入,
权重 w sub 1 对于所有三个输入来说都是相同的,
并且偏差 b sub 1
对于所有三个输入也是相同的,
同样,所有其他权重和
偏差都是共享的,
因此无论我们展开
循环神经网络多少次,我们都不会
增加
我们必须训练
三重 bam 的权重和偏差的数量,
现在可以了 我们已经讨论了
基本循环网络如此酷的原因,让我们
简单谈谈为什么它们
不经常使用的
一个大问题是,我们
展开循环神经网络的次数越多,
训练就越困难,
这个问题称为消失
斜线爆炸 梯度问题,
也称为“
嘿等等,梯度去哪儿了”,
在我们的示例中,
梯度消失爆炸问题与
我们
每次展开网络
注释时复制的波形曲线上的权重有关,以便更容易 理解
消失爆炸梯度问题,
我们将忽略
该网络中的其他权重和偏差,只
关注 w sub 2。
同时提醒您,当我们使用
反向传播优化神经网络时,我们
首先找到每个的导数或梯度
然后,我们将这些梯度插入
梯度上升算法中,以找到
最小化损失
函数(如残差平方和)的参数值
bam
现在,即使消失斜线
爆炸梯度问题从
消失
开始,我们将首先展示如何
梯度会爆炸
kaboom
在我们的示例中,
当我们将 w sub 2 设置为任何大于 1 的值时,梯度就会爆炸。
因此,让我们将 w sub 2 设置为等于 2。
现在,第一个输入值 input sub 1
将乘以 2 第一个
波形图,
然后在下一个
波形图上乘以 2
,在下一个波形图上再次乘以 2,在
最后一个波形图上再次乘以
换句话说,因为我们展开
循环神经网络 4 次,所以
我们将输入值乘以 w sub 2,
即 2 的乘积
我们展开的次数为 4,
这意味着第一个输入值在到达网络的最终副本
之前会被放大 16 倍,
如果我们有连续 50 天的
股市数据,说实话,这并
没有那么多
然后我们将网络展开 50
次
,2 的 50 次方是一个巨大的
数字,
这个巨大的数字就是为什么他们称之为
梯度爆炸问题
kaboom 如果我们尝试用反向传播来训练这个
循环神经网络,
这个巨大的数字将 找到
进入某些梯度的方式,
这将使得很难采取
小步骤来找到最佳权重
和偏差,
换句话说,以便找到为
我们通常想要采用的损失函数提供最低值的参数值
相对较小的步骤
bam
然而,当梯度包含
大量数字时,我们最终会采取
相对较大的步骤,而不是
找到最佳参数,我们只会
四处跳动
[音乐]
防止梯度爆炸问题的一种方法
是 将 w sub
2 限制为小于 1 的值,
但这会导致
梯度消失问题 嘿
等等,梯度去哪里了
为了说明梯度消失
问题 让我们现在将 w sub 2 设置为 0.5,
就像我们将
第一个输入乘以 w 之前一样 sub 2 提高到
我们展开网络的次数,
因此如果我们有 50 个连续输入值,
这意味着将输入 sub 1
乘以 0.5 的 50 次方,
而 0.5 的 50 次方是一个
非常接近于零的数字,
因为这个数字 非常接近于
零,这被称为消失
梯度问题,
现在当优化参数时,
我们不是采取太大的步骤,而是
采取太小的步骤
,结果我们最终达到了
我们所设定的最大步骤数 在
找到最佳值之前允许采取
这些消失的斜线爆炸
梯度真是太糟糕了
我们能做些什么吗
是的,我们将在下一个统计任务中讨论一种
称为长短期记忆网络的流行解决方案
kabam
现在是时候进行一些
无耻的自我推销了,
如果你想离线查看统计数据和
机器学习,请查看我的
书《stackquest
机器学习图解指南》,位于 stackquest.org,这本书总共有
300 多页,
太棒了,万岁,我们已经成功了
另一个令人兴奋的统计任务结束如果您喜欢
这个统计任务并且想看到更多,
请订阅,如果您想
支持统计任务,请考虑
为我的 patreon 活动做出贡献,成为
频道会员,购买我的一两首
原创歌曲或一件 T 恤或 连帽衫
或只是捐赠链接在
下面的描述中,好吧,直到下次
任务