理解循环神经网络RNN的作用
首先看一个简单案例,在某宝的好评/差评检测中,系统要能够分析用户的评价是好评还是差评,那怎样处理这样的评价数据呢,例如有一条评价“I hate this boring movie”
机器怎样解决这样的问题呢
首先我们在之前的时间序列表示中已经知道了怎样对一个单词进行表示。如果使用glove的话,整句话会表示成一个[5,100]的tensor
(100是glove规定的)
我们最简单的方式是,将这个100维的tensor和一个线性层相连接来提取其特征
通过线性层最后汇总起来生成一个值,用于判断其二分类是好的评论还是差的
但这种方式有明显的缺陷
①如果句子的单词过长,或者是小说这样的,那么需要的[w,b]参数量就会非常大
②更为致命的是,我们人类说话是由上下语境信息的,上一句话说的什么,下一句话说的什么,需要联合起来做一个语句的推断。比如“我不喜欢你”,如果只是看到喜欢的话还以为是喜欢呢,所以肯定不能一个单词一个单词得去分析。所以我们相当于是需要一个consistent memory
解决长句子参数量过大的问题
改用权值共享的方式
这是使用了卷积神经网络的weigth sharing的思路,所有单词的[w,b]都是相同的,来尝试减少网络的参数量
这代表着我这个线性层的抽取特征的能力是针对于所有单词的
这在一定程度上解决了长句子参数量过大的问题
解决consistent memory的问题
用一个持续的单元贯穿整个网络,能保存语境信息
h单元的功能就是类似memory
折叠形式的表示形式
非折叠形式
这两种方式是等价的
最后的输出到底是用哪个h完全由自己决定,可以只采用最后时间的ht,也可以把每个时间的ht综合起来做一个聚合
下面我们来比较规范地书写一下RNN的公式
RNN和CNN的区别
CNN就是一股脑地往前传,RNN会不停地自我更新
RNN的激活函数是tanh,而CNN是ReLu/sigmoid
Whh和Wxh整个过程都是一样的,权值共享
深度学习与神经网络(八)——循环神经网络RNN
最新推荐文章于 2023-11-15 16:17:43 发布