手把手教你训练 RNN | Part I
单个 RNN Cell 中的前向传播算法
在之前的文章中,我们介绍了 RNN 的基本结构并将其按时间序列展开成 Cells 循环链,称为 RNN cells。下面,我们将揭示单个 RNN Cell 的内部结构和前向传播计算过程。
将其过程分解成多个步骤:
第一步:cell 接受两个输入:x〈t〉 和 a〈t-1〉。
第二步:接下来,计算矩阵乘积 ⨂,W_xh 乘 x〈t〉,W_ah 乘 a〈t-1〉。然后,通过将以上两项乘积相加,并加上偏置 b_h,计算得出 h〈t〉。
第三步:紧接着上面的步骤,将 h(t) 传给激活函数(比如 tanh 或 relu)计算 a(t)。本例中激活函数使用 tanh 函数。
第四步: cell 输出 a〈t〉 并将其传给下一 cell 做进一步计算。
第五步:然后,计算 o〈t〉; 这是所有输出可能取值的非标准化对数概率。方法是计算矩阵乘积⨂,W_ao 乘 a〈t〉,并与 b_o 相加。
第六步:最后,通过将 o〈t〉 传输给激活函数(例如 sigmoid 或 softmax),得到了一个实际输出的标准化概率向量 ŷ〈t〉。输出的激活函数的选择通常取决于期望的输出类型(sigmoid 用于二元输出,softmax 用于多类别输出)。
前向传播算法
前向传播算法在整个 RNN 网络中运行以上步骤,而不仅仅在单个 RNN cell 中运行。从隐藏层状态 a〈0〉的初始化开始,在所有时间序列 t = 1 to T 中共享权值和偏置向量 W_xh,W_ah, W_ao, b_h, b_o,在每个时间序列中重复上面的每一步。
例如,如果我们拥有一个 8 个序列的输入 x〈1〉,x〈2〉,......x〈8〉,这个网络的前向传播计算过程是步骤 1-6 在循环中重复 8 次。
上面是训练RNN的第一步,在这篇文章的第二部分将介绍后向传播算法(BPTT),以及如何推导梯度。
博客原址 https://medium.com/learn-love-ai/step-by-step-walkthrough-of-rnn-training-part-i-7aee5672dea3
时间:2018-10-09 22:18 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
相关推荐:
网友评论: