ディープ学習 - リカレントニューラルネットワークノート

  唯一のリカレントニューラルネットワークのためのリカレントニューラルネットワーク(リカレントニューラルネットワーク、RNN)とリカレントニューラルネットワーク(再帰ニューラルネットワーク、RNN)速記で同じである、このノート、私はこれらの二つのニューラルネットワークのために、前にこのについてお話しましょういくつかのブログはちょうどその中国の検索をたくさんした後、具体的な詳細はありません、名前から分離、まだ慎重にそれらを伝える熱心な偉大な神がたくさんある見つけ、我々は一時的にお勧めします。https:// zybuluo。 COM / hanbingtao /ノート/ 541458この説明。これのほとんどは、ノートに記事を切り替えます。

  完全に接続されたニューラルネットワークとニューラルネットワーク重畳処理前の入力および入力は完全に無関係です後、彼らは、個別に一つずつのみ入力することができます。しかし、いくつかのタスクシーケンスを処理することができ、より良い情報、すなわち、入力と関係があり、後者の入力フロントする必要があります。私たちは、文の意味を理解するとき、例えば、この文のすべての単語を理解して孤立十分ではありません、我々はこれらの言葉の全配列に対処する必要が一緒に接続されており、私たちはビデオを扱うとき、私たちは一人で行くことができません各フレームを解析し、フレームのシーケンス全体が一緒に接続されて分析します。リカレントニューラルネットワーク(リカレントニューラルネットワーク):この時点では、研究の被写界深度は、ニューラルネットワークの別のタイプで重要である使用する必要があります。

  以下、このような入力層、隠れ層とからなる出力層からなるニューラルネットワーク、などの単純なループがあります。

      

  その上にWが取り除か矢印と円がある場合は、それが最も一般的に完全に接続されているニューラルネットワークになります。xは(ニューロンノードを表すが塗らNOである円)入力層の値を表すベクトルであり、sは隠された層の値を表すベクトルである(ここではノードの隠れ層を集め、これを想像することができ一つは、実際に複数のノード、同じノードの数とベクトルs寸法)であり、隠れ層の重み行列に右入力層Uは、であり; Oは出力層を表すベクトルであり、Vは、出力層の重みに隠された層の重量であります行列。ニューラルネットワークサイクルの値の中間層は、現在の入力xだけでなく依存し、S時間も隠れ層の値に依存します。Wは、この時間を再入力する右側の値として隠された層の重み行列です。

  開発のトップ場合は、リカレントニューラルネットワークはまた、このような外観を塗装することができます。

       

ネットワーク入力は一度に受信されるT X T 次に、隠れ層の値がSであり、T は、出力値O tは重要な点はSであり、Tの値だけでなく、Xに依存T 、さらにSに依存T-。1 私たちは、リカレントニューラルネットワークの計算方法を表現するために、次の式を使用することができます。

         

式1式は出力層であり、出力層は、すなわち、そのノードの各々 、完全に接続された層であり、各ノードは、隠された層に接続されています。Vは、出力層の重み行列であり、Gは、活性化関数です。式2は、層が環状である隠された層、で計算されます。Uは、入力X重量重み行列であり、Wが最後の値SであるT-。1 右入力このとき重み行列として、Fは、活性化関数です。

私たちは、Sを置くことができ、T-1が可能フォワードループがあります。

 Sについての出力値OT Tの前述の前回値Xによって入力された表現、T-は。1、X T-2、X T-。3、...エフェクト、任意のサイクルニューラルネットワークが期待できる理由です入力値の理由複数の。

双方向リカレントニューラルネットワーク

図双方向ループネットワーク:

 最初の図を考える。Y 2が算出は、図から分かるように、2つの値を格納するための双方向畳み込みニューラルネットワークの隠れ層は、ポジティブAを算出参加し、別の値A「参加逆算。最終出力値Y 2は Aに依存する2及びA ' 2、以下のように計算することができます。

          

          

見ることができる一般的なルール:フォワード計算、S隠れ層の値T とS T -1-。関連する;逆演算、S隠れ層「の値T とS」T -1-。関連する、最終的な出力が依存前方と算出された添加剤を逆転。モデル化された式1及び式2、双方向の書き込みサイクル計算ニューラルネットワーク。

          

私たちは、UおよびU「WおよびW」を言うことです体重を、共有しない、VおよびV「の異なる重み行列です。正逆計算を計算するために3つ以上の式から見ることができます

深リカレントニューラルネットワーク

  リカレントニューラルネットワークは、以前のみ1つの隠れ層を記載し、もちろん、このようリカレントニューラルネットワークの深さを得る、二つ以上の隠れ層を積層します。下図のように:

      

リカレントニューラルネットワークのトレーニング

 ニューラルネットワークの学習アルゴリズムサイクル:BPTT

学習アルゴリズムの循環層、その基本的な原則とBPアルゴリズムのBPTTアルゴリズムは、同じ3つのステップを含んでも、同じです。

  1. 各ニューロンは、出力値の前に計算されます。
  2. 各ニューロンのΔ逆演算誤差項j個の値、NETの重み付けされた入力ニューロンjは誤差関数E jの部分誘導体;
  3. 各重み勾配の重みを計算します。

最後に、その後、確率的勾配降下アルゴリズムが重みを更新します。以降https://zybuluo.com/hanbingtao/note/541458マトリクス演算アプローチ内部数値計算のこの使用、少し忘れて長い時間、多くの検索が見つかった後https://www.jianshu.com/pを/ 87aa03352eb9この数式理解しやすいです。以下のようにループをレイヤ:

       

上图表明了RNN网络的完整拓扑结构,从图中我们可以看到RNN网络中的参数情况。在这里我们只分析t时刻网络的行为与数学推导。t时刻网络迎来一个输入xt,网络此时刻的神经元状态st用如下式子表达:

          

为了方便做了如下变换:

          

RNN的损失函数选用交叉熵(Cross Entropy),这是机器学习中使用最广泛的损失函数之一了,其通常的表达式如下所示:

           

上面式子是交叉熵的标量形式,y i是真实的标签值,y * i是模型给出的预测值,最外面之所以有一个累加符号是因为模型输出的一般都是一个多维的向量,只有把n维损失都加和才能得到真实的损失值。交叉熵在应用于RNN时需要做一些改变:首先,RNN的输出是向量形式,没有必要将所有维度都加在一起,直接把损失值用向量表达就可以了;其次,由于RNN模型处理的是序列问题,因此其模型损失不能只是一个时刻的损失,应该包含全部N个时刻的损失。
故RNN模型在 t时刻的损失函数写成:
      
全部N个时刻的损失函数(全局损失)表达为如下形式:

     

需要说明的是:yt是t时刻输入的真实标签值,ot为模型的预测值,N代表全部N个时刻。下文中为了书写方便,将Loss简记为L。在结束本小节之前,最后补充一个softmax函数的求导公式:

         

BPTT算法

由于RNN模型与时间序列有关,因此不能直接使用BP(back propagation)算法。针对RNN问题的特殊情况,提出了BPTT算法。BPTT的全称是“随时间变化的反向传播算法”(back propagation through time)。这个方法的基础仍然是常规的链式求导法则,接下来开始具体推导。虽然RNN的全局损失是与全部N个时刻有关的,但为了简单笔者在推导时只关注t时刻的损失函数。

首先求出t时刻下损失函数关于ot*的微分:

求出损失函数关于参数V的微分:

因此,全局损失关于参数V的微分为:

 
求出t时刻的损失函数关于关于s t*的微分:
求出t时刻的损失函数关于s* t-1的微分:
求出t时刻损失函数关于参数U的偏微分。注意:由于是时间序列模型,因此t时刻关于U的微分与前t-1个时刻都有关,在具体计算时可以限定最远回溯到前n个时刻,但在推导时需要将前t-1个时刻全部带入:
因此,全局损失关于U的偏微分为:
求t时刻损失函数关于参数W的偏微分,和上面相同的道理,在这里仍然要计算全部前t-1时刻的情况:
 

因此,全局损失关于参数W的微分结果为:

至此,全局损失函数关于三个主要参数的微分都已经得到了。整理如下:

接下来进一步化简上述微分表达式,化简的主要方向为t时刻的损失函数关于ot的微分以及关于st*的微分。已知t时刻损失函数的表达式,求关于ot的微分:

softmax函数求导:

因此:

又因为:

且:

有了上面的数学推导,我们可以得到全局损失关于U,V,W三个参数的梯度公式:

由于参数U和W的微分公式不仅仅与t时刻有关,还与前面的t-1个时刻都有关,因此无法写出直接的计算公式。不过上面已经给出了t时刻的损失函数关于st-1的微分递推公式,想来求解这个式子也是十分简单的,在这里就不赘述了。

以上就是关于BPTT算法的全部数学推导。从最终结果可以看出三个公式的偏微分结果非常简单,在具体的优化过程中可以直接带入进行计算。对于这种优化问题来说,最常用的方法就是梯度下降法。针对本文涉及的RNN问题,可以构造出三个参数的梯度更新公式:

 
依靠上述梯度更新公式就能够迭代求解三个参数,直到三个参数的值发生收敛。

おすすめ

転載: www.cnblogs.com/yang901112/p/11896525.html