RNN 梯度消失梯度爆炸 变体

Linux系统上pytorch环境的配置
  1. 需要GPU的时候,在具备GPU硬件的前提下,首先需要下载GPU相应版本的驱动程序(diver)以及CUDA。CUDA可以理解为GPU相关的API,pytorch能够自动调用这些接口来应用GPU。cat /usr/local/cuda/version.txt可以查看已安装CUDA的版本。
  2. 安装torch、torchvision、torchaudio库。这一步在pytorch的官网会提供不同版本相应的命令,主页默认为最新的版本,如果需要旧版本,可以再旧版本的链接里边找到相关的命令。
  • attention:
    在实际配置环境的过程中,我遇到一个问题,服务器在重启后显卡并没有被自动的驱动起来。
    NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
    nvidia命令不存在,说明显卡并没有被正常的驱动起来,故需要手动的去驱动显卡。
    step1: sudo apt-get install dkms
    step2:sudo dkms install -m nvidia -v 410.79(这里-v后边跟的是diver程序的版本,必须是已经下载在服务器上的,驱动程序的源码下载在路径/usr/src/nvidia-***.**下,可以查看版本号)
RNN的梯度消失以及梯度爆炸
  1. 首先要明确一个问题,梯度消失以及梯度爆炸不仅仅在RNN框架中出现,在很多的网络框架下都会出现。
  2. 对于出现梯度消失以及梯度爆炸的原因,根据链式求导法则,在求相应参数的偏导数时,中间会出现很多偏导的连乘,而这些由于L2范数有关,牵扯到一个不等式,它会呈指数增长也会呈指数缩减。
  3. 梯度消失会导致,参数更新时更新值非常的小,越远的输入梯度越小,对输出的影响力也就越小。这就是长依赖问题,我们可能会丢失对结果影响力较大的输入,应有可能学习的梯度不准确。
  4. 梯度爆炸会导致,在参数更新的时候,每一步都迈的非常大,很有可能直接更新到了损失最大的位置,也很可能离最优解非常的远。可以通过梯度切片来解决梯度爆炸的问题,就是在梯度超过某一阈值的时候,适当的将其缩小。
  5. 为了解决梯度消失的问题,两种新型的RNN出现了:LSTM & GRU。相比之下,LSTM参数规模更大,比较适合训练数据量较大的任务;GRU相对简单,训练速度相对更快。
多种多样的RNN
  1. LSTM & GRU
  2. Bi-RNN,双向的循环神经网络,既可以考虑到前向传播的信息,又可以考虑到后向传播的信息。
  3. 多层循环神经网络,这是一个非常powerful的神经网路框架,参数规模很大。
Neural Machine Translation
  1. seq2seq模型
  2. Encoder - Decoder模型,其中Encoder负责将输入的源语言编码,是一个Bi-LSTM。Encoder最后时刻的输出是Decoder的输入,两个方向最后时刻的隐状态的结合,以及同样细胞状态的结合。
  3. Decoder引入Attention机制。
  4. 损失函数为交叉熵 Cross Entropy。
遗留问题
  1. 学习seq2seq + attention的NMT模型并实现。
  2. 图神经网络源码的熟悉。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值