初学者——从NN到RNN,深刻理解以softmax为激活函数的反向传播,有代码

本文适合有一定神经网络基础的初学者,通过讲解如何从神经网络过渡到RNN,特别是深入理解以softmax为激活函数的反向传播过程。文章建议结合相关教程进行学习,并提供了部分代码,帮助读者手动推导关键公式。重点讨论了RNN网络结构、输入输出的处理方式以及损失函数和梯度计算,特别强调在计算偏导数时的注意事项。
摘要由CSDN通过智能技术生成

看这篇文章首先你要懂NN,也就是神经网络,我也是只懂神经网络,RNN是我学的第二个神经网络。如果你以前啥都不懂的话,推荐去这个网站

http://neuralnetworksanddeeplearning.com/

真的贼J8好,笔者是这样看的,看完第一章,Using neural nets to recognize handwritten digits,我大概明白了什么叫神经网络,然后它还有代码,我就直接看代码了,然后我就理解了反向传播,我觉得这个是最主要的吧,然后第二章我就没看了,因为懂了反向传播,然后我又看了第三章和第六章,知道了一点CNN(卷积神经网络)的事,里面是用theano实现的,然后我又开始学习theano,觉得光学没有什么用,得找个项目做一做,于是就找到了这个用theano写的RNN,上面的网站我真的极力推荐,里面的公式最好全部手推一遍,如果你不想看英文版的话,我们实验室翻译了这个网站,你可以在微信里搜“哈工大SCIR”,然后在文章目录里找到《NN&DL》连载,然后你就可以看了。说实话,那本书废话贼J8多,你们最好和我一样跳着看。


好了说我要讲的RNN,看这篇文章请结合http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-2-implementing-a-language-model-rnn-with-python-numpy-and-theano/里面的文章来看,我会把代码里面的公式给你们推一遍,你们先看看这篇文章到底要做什么

我不会讲全部内容,我只讲到反向传播,其他的你们自己可以推

RNN网络结构如下


你们看了上面的网站应该知道,输入Xt是一个句子中的一个单词的one-hot-vector(不明白的同学百度一下),这个向量就是这个词在词表中的下标(id),比如“I like you”

中的“I”,它在词表中的id可能是5,那么它就是[0,0,0,0,0,1,.....0],然后当前隐层的状态与当前输入Xt和上一个隐层状态St-1有关,

通过与U和W的线性变换相加后做tanh得到。输出Ot是预测的下一个词在词表里的下标,比如输入是“I”,我们希望输出是“like”在词表里的下标(id)。为了减小计算范围,

我们限定词表大小为8000,即只包含了8000个词,所以Xt与Ot维度也是8000,隐层为100层,Ot的每一维对应词表的8000个单词,其中一维的概率越大(softmax会把输入压缩到0和1之间,因此可以把它当作一个不同分类的概率)则表示单词下标越有可能就是这个维度。Loss函数是输出每维×Yk的总和取负,Yk只能为0或者1,1表示是这个单词,0表示不

是这个单词。接下来介绍用softmax函数作为激活函数的反向传播

Softmax完整函数形式如下

对于Zt的每一维度Zti,softmax为


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值