博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RNN的通俗讲解(初级篇)
阅读量:4119 次
发布时间:2019-05-25

本文共 1724 字,大约阅读时间需要 5 分钟。

导师前阵子提到要写技术博客。想想可以记录自己的学习历程,还能认识同行大神一起讨论什么的,就决定开始写了。很遗憾大学没有写技术博客,不过大学的信息安全专业相关的知识我也不会丢下(希望是这样=_=),会慢慢边学边写。现在应该会以语音和机器学习的方向为主了。    作为CSDN的处女作,就先把我的本科毕业设计和大家分享吧。    其实当时我学习RNN的时候,只读一篇Mikolov的介绍RNN的博士毕业论文的时候是比较晕的,因为他的公式都只给了最后的结论公式。但是概念什么的讲的非常清楚了,所以我就按照我所记得的当时理解上的难点,简单强调一下吧。
假设我的读者已经理解了什么是语言模型,以及什么是RNN的基础上面。     RNN是最近很火的语言模型,因为有一个循环的隐藏层,因此可以比n-gram算法记录更多的历史信息,从而效果更好。
优点:PPL低,模型鲁棒性更强,最终模型体积小,可以作为本地模型使用缺点:速度慢!速度慢!速度慢!
关于训练方式:RNN是一个一个单词训练的,每一次把当前训练单词的单词输入到RNN中去。关于输入:RNN的输入是一个1 of n的n维向量表示,n等于词表大小,其中有一个1,表示当前单词位词表中的某一个,其它位置都是0。
关于输出:RNN的输出层表示概率发射。 举个例子,假设当前要训练的句子是【我 想  吃  糖】,当前训练的单词是吃,词表大小为100,那么当吃这个字训练完毕之后,【我 想 吃】都变成了历史, 输出层的含义是在历史为【我 想 吃】的情况下,词表中100个单词各自出现在后面的概率是多少。  这就是概率发射概率, 和当前训练的单词其实是没什么关系的啦,因为它已训练完后就已经变成历史了哦~ 
关于语言模型:很多人看了论文之后还不知道,RNN中我们要训练的语言模型到底是啥呀,是隐藏层么? 当然不是啦,我们要训练的其实是那三个权值矩阵。(如图,盗了mikolov大神论文里的图:输入层到隐藏层也就是vocab_vector,隐藏层到隐藏层,隐藏层到输出层)。隐藏层和输出层其实可以理解成计算单元,分别是sigmoid函数和softmax函数。  另外s(t-1)表示的是上一时刻隐藏层的【输出】关于BPTT(back propagation/反向传播):	这个地方有两个名词:梯度,和梯度误差特别容易晕(+_+),根据我的理解,梯度误差是一个vector,从输出层反向传到隐层s(t)->s(t-1)->s(t-2)酱一直往前传bptt+1次。 而梯度呢,是由梯度误差和前一层的输出vector进行矩阵相乘得到的matrix。 梯度乘以学习率alpha就可以用来更新权值矩阵辣(也就是我们的语言模型要学习的东西)
然后梯度是输出层通过求导得到的,求导过程有点麻烦就像酱:    但是碰巧得到了很简单很整齐的结果就像酱 :     所以最后输出层的error就是用当前单词的one_of_k向量减去概率发射函数啦, ps我当时傻乎乎的觉得这么减好对好对啊,完全不知道是数学推导得出的,因为当时mikolov的论文也并没有讲这个e0求得的过程。然后呢就向前传,一边传一边求梯度。 由y的error和s(t)的输出这两个vector相乘得到的梯度就用来更新v,error传到s(t),s(t)的error和s(t-1)的输出相乘得到了w的梯度用来更新w,依次类推)    梯度怎么向前传呢?    公式太多打起来好累我就直接截图贴论文辣 ><      总之呢error的传递也是用数学求导求得的。  数学不太好的我也是推的累累的QAQ。     然后我觉得RNN中比较困惑比较难的就是上面这么多啦 ,  我感觉这些都是对那些已有的大牛的论文的补充,单独看我的可能比较模糊,如果读了论文之后还有疑惑看这些就比较清楚。   (直接看论文就能看很懂的大神们就54我的话吧)
总之还是希望能帮到大家,顺便记录下来当时自己学习的心路历程。     当然我的毕设是在这基础上做了其他信息加入的融合训练,并不是直接的RNN 。  以后再开一篇写吧。     现在在做RNN多GPU并行加速,完成之后再和大家分享^_^。

转载地址:http://ainpi.baihongyu.com/

你可能感兴趣的文章
X-Code 报错 ld: library not found for -lAFNetworking
查看>>
Bitcode
查看>>
If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
查看>>
宝石塔防3心得
查看>>
宝石塔防:如果还有人过不去1337,俺来发个详细点儿的攻略吧
查看>>
太经典的笑话
查看>>
男人不成熟十个标志
查看>>
IaaS PaaS SaaS三者之间界限正趋于模糊
查看>>
IaaS, PaaS和SaaS 区别
查看>>
2012年华为还将发布78款园区交换机,15款AR路由器,18款WLAN产品,7款数据中心交换
查看>>
数据中心融合下的SAN通信
查看>>
云计算数据中心网络的关键技术
查看>>
Wiki - OpenFlow
查看>>
Nginx ngx_http_referer_module模块根据referer屏蔽或禁止访问
查看>>
Nginx缓存的两种方式
查看>>
Nginx浏览器缓存设置
查看>>
Nginx禁用缓存、禁止客户端保存文件
查看>>
入口是BAT的,但归根结底是属于社交的
查看>>
漫威十年,好莱坞的转型焦虑
查看>>
办公室的“批发转零售”
查看>>