循环神经网络实质为递归式的网络,它在处理时序任务表现出优良的效果,毕竟递归本来就是一步套一步的向下进行,而自然语言处理任务中涉及的文本天然满足这种时序性,比如我们写字就是从左到右一步步来的鸭,刚接触深度学习的友友们,可能或多或少也听说过循环神经网络的大名;感觉是个很高大上,高深莫测的东西。搜搜网上的博客,大多数都是直接列出几个公式,简单的复制粘贴一段话术;把初入茅庐的小白看的云里雾里,直接劝退。因此本文尽可能把各个阶段的步骤描述的详尽一些!话不多说,直接先附上公式:
实质公式其实就这两条,全剧终,网上的教程都是这么说的!显然不能让读者有所信服,好歹也说说各个符号字母都表示什么意思吧。表示了在t时间步,编码器当前的状态,可以理解为截至到当前时间步,信息的聚合状况。比如我们要记忆“今天天气不错”这段信息,当我们从左到右读到“气”的时候,显然我们的大脑已经记忆到当前字为止的所有信息; RNN 通过这种形式便模拟了这一过程。具体来说的话,我们知道其实深度学习往往都是在优化一组参数,而这组参数记忆了我们通过数据学习到的通用信息;后续我们可以直接利用这组参数来进行泛化的表示。在RNN中,包含的参数其实在上述公式都描述了。
:描述了与当前时刻输入信息相关的参数; 描述了与历史信息相关的参数;描述了偏置信息。
这一系列参数要做的事情就是把数据中蕴含的信息存起来。我们再来一次,把公式细致的描述一下,忽略公式中的参数不看,我们知道与和有关。其中为当前时间步的输入信息,在“今天天气不错”中指示的是“气”这一信息,描述了历史信息,指示的是“今天天”这一信息。通过对当前时刻信息和历史信息两部分的聚合,我们便可以得到“今天天气”这一最终信息。在RNN中便是通过各部分向量矩阵的运算得到结果。刚接触的朋友可能回想为什么要通过向量矩阵运算来描述这一过程?其实我们要计算机描述这件记忆的过程,我们总需要一种方式来做吧!再联合数学这种形式,这种形式也水到渠成了。我好像没有解释哈哈!!不过就像是说“井盖为什么是圆的?”如果是方的话,你会问“井盖为什么是方的?”。笔者想说的是,我们不需要对某种形式的描述太钻牛角;我们要做的是记住这种形式,然后去接受它,最后去理解各部分的表述原理;那就满足了我们初阶段的学习咯。
其实到这里RNN的关键点真说完了,同学们可能还会说还在那摆着咧,其实它描述的是当前阶段我们要做点什么事,专业描述的话就是下游任务;就是对当前的状态信息做个全连接层完成一个预测的任务;如果想做序列标注,那最后的向量维度就是序列的标注数目;如果想做文本生成,那最后的向量维度就是词表大小。RNN的整体内容其实就这个公式的展示。
以上就是RNN的理论介绍,细心的伙伴可能发现,我并没有放RNN的那张图,因为我感觉对于初步的学习,那张图描述的信息流有点乱,不过我最后也放下面了,锦上添花(*^_^*)
+