首页 > 其他分享 >4.3 Recurrent Neural Network (RNN) II

4.3 Recurrent Neural Network (RNN) II

时间:2023-07-05 21:12:25浏览次数:34  
标签:loss network 4.3 Neural gradient neural Network RNN

1. RNN 怎么学习

1.1 Loss Function

  如果要做learning的话,你要定义一个cost function来evaluate你的model是好还是不好,选一个parameter要让你的loss 最小.那在Recurrent Neural Network里面,你会怎么定义这个loss呢,下面我们先不写算式,先直接举个例子.
  如下图所示,这是一个Slot Filling的例子,我们要将输出的y与映射到slot的reference vector做cross entropy.例如,Taipei对应到的slot是dest,那reference vector在dest上的值为1,其余的值都为0.RNN的输出与reference vector的cross entropy的和就是要minimize的对象.注意:句子里面的词语必须按照语序输入,不能打乱语序!
image

1.2 Training

  有了这个loss function以后,对于training,也是用梯度下降来做.也就是说我们现在定义出了loss function(L).我要update这个neural network里面的某个参数w,就是计算对w的偏微分,偏微分计算出来以后,就用GD的方法去update里面的参数。在讲feedforward neural network的时候,我们说GD用在feedforward neural network里面你要用一个有效率的算法叫做Backpropagation.那Recurrent Neural Network里面,为了要计算方便,所以也有开发一套算法是Backpropagation的进阶版,叫做BPTT.它跟Backpropagation其实是很类似的,只是Recurrent Neural Network它是在time sequence上运作,所以BPTT它要考虑时间上的information.
image
  如下图所示,RNN的Training是比较困难的,我们希望随着Epoch地增加,loss跟图中蓝色线一样慢慢下降,但是很不幸的是我们在训练过程中会出现绿色线的结果.
image
  为什么会这样呢?如下图所示,RNN的error surface(Total Loss对参数变化)是非常崎岖的,这里的意思就是loss在某些地方比较平坦,在某些地方又比较陡峭。假如把橙色点当作起始点,用Gradient Descent调整参数,然后更新参数,可能会得到loss猛增的结果。最坏的情况是一脚踩在悬崖上,由于之前一直处在平坦区域,gradient很小,那么就会把learning rate调的比较大,因此踩在悬崖上时gradient变得很大,就会整个飞出去,可能会变成\(NaN\).
image
  这种问题怎么解决的呢?RNN的创作者使用了Clipping来解决这个问题.Clipping就是当gradient大于某个threshold时,就让\(gradient = threshold\).

1.2.1 Why RNN has the trait?

  那么,为什么RNN会有这种奇特的特性?我们用一个直观方法来了解.把某一个参数做小小的变化,看它对network output的变化有多大,你就可以测出这个参数的gradient的大小.
  举一个简单的例子.只有一个neuron,这个neuron是linear.input没有bias,input的weight是1,output的weight也是1,transition的weight是w.也就是说从memory接到neuron的input的weight是w.
  现在我假设给neural network的输入是(1,0,0,0),那这个neural network的output会长什么样子呢?比如说,neural network在最后一个时间点(1000个output值是\(w^{999}\))
image
  当w从1变到1.01后,y^1000从1变到了20000,此时L对w的微分值很大,所以需要较小的Learning rate;当w从0.99变到0.01后,y^1000从0变到了0,此时L对w的微分值很小,所以需要较大的Learning rate.这样导致设置learning rate很麻烦,你的error surface很崎岖,你的gardient是时大时小的,在非常小的区域内,gradient有很多的变化.
  从这个例子你可以看出来说,为什么RNN会有问题.RNN training的问题其实来自它把同样的东西在transition的时候反复使用.所以这个w只要一有变化,它完全由可能没有造成任何影响,一旦造成影响,影响都是天崩地裂的(所以gradient会很大,gradient会很小).

1.2.2 How can RNN solve the problem?

image

标签:loss,network,4.3,Neural,gradient,neural,Network,RNN
From: https://www.cnblogs.com/newblg/p/17529797.html

相关文章

  • Spike timing reshapes robustness against attacks in spiking neural networks
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!同大组工作......
  • 4.3 多层感知机的简洁实现
    importtorchfromtorchimportnnfromd2limporttorchasd2lbatch_size=256train_iter,test_iter=d2l.load_data_fashion_mnist(batch_size)num_inputs=28*28num_outputs=10num_hiddens=256#注意从数据集train_iter中拿到的小批量X维度是batch_size*......
  • kubernetes安装实战->稳定版本v1.14.3
    kubernetes安装方式有很多种,这里kubeadm方式安装,一主两从形式部署。1、集群信息a、集群节点规划主机名   节点ip    角色  部署组件k8s-master192.168.1.203masteretcd、proxy、apiserver、controller-manage、scheduler、coredns、pausek8s-node1 192.16......
  • RNN预测模型做多输入单输出预测模型,直接替换数据就可以用
    RNN预测模型做多输入单输出预测模型,直接替换数据就可以用。程序语言是matlab,需求最低版本为2021及以上。程序可以出真实值和预测值对比图,线性拟合图,可打印多种评价指标。PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据......
  • 【五期邹昱夫】CCF-B(IEEE Access'19)Badnets: Evaluating backdooring attacks on deep
    "Gu,Tianyu,etal."Badnets:Evaluatingbackdooringattacksondeepneuralnetworks."IEEEAccess7(2019):47230-47244."  本文提出了外包机器学习时选择值得信赖的提供商的重要性,以及确保神经网络模型安全地托管和从在线存储库下载的重要性。并展示了迁移学习场......
  • 【五期邹昱夫】CCF-B(RAID'18)Fine-Pruning: Defending Against Backdooring Attacks on
    "Liu,Kang,BrendanDolan-Gavitt,andSiddharthGarg."Fine-pruning:Defendingagainstbackdooringattacksondeepneuralnetworks."ResearchinAttacks,Intrusions,andDefenses:21stInternationalSymposium,RAID2018,Heraklion,Crete,......
  • TensorFlow11.5 循环神经网络RNN-LSTM、LSTM实战
    LSTM的产生我们之前在求RNN的loss的时候很容易出现梯度弥散或者梯度爆炸。这个LSTM的出现很大程度上减少了梯度弥散的情况。还有一个很重要的就是RNN只能够记住一个比较短的序列,如果一个句子单词很多的话,它学到最后一个的时候可能它的前面的就忘记了。而这个LSTM能够改善这问题......
  • TensorFlow11.3 循环神经网络RNN-情感分类实战
    这个就是好评和差评的一个分类。这个输入一般\(h_0\)全为0.要想实现这个结构有两种方案:SimpleRNNCell(这个更接近原理)singlelayermulti-layersRNNCell(这个方便使用)1.加载数据(x_train,y_train),(x_test,y_test)=keras.datasets.imdb.load_data(num_words=1000)#......
  • 探索Oracle之数据库升级四 11.2.0.4.0 PSU 11.2.0.4.3
    探索Oracle之数据库升级四11.2.0.4.0PSU11.2.0.4.3一、 检查当前数据库PSU号:[oracle@db01~]$cd/DBSoft/Product/11.2.4/db_1/OPatch/[oracle@db01OPatch]$lscrsdocsemdpatch.pljlibocmopatchopatch.batopatchdiagopatchdiag.batopatch.iniopatch.p......
  • TensorFlow11.2 循环神经网络RNN-循环神经网络、RNN-layer实现
    循环神经网络SentimentAnalysis(情感分析)类似于淘宝的好评还是差评,我们比较直观的一个方法就是:这里不好的是:Downsides:1.Longsentence100+wordstoomuchparameters[w,b]。就是比如说我们有100个单词,会产生很多个w,b,参数太多了。2.Nocontextinformation(没有语......