NLP入門 (4) RNN

NLP 入門チュートリアル シリーズ

第 1 章 自然言語と単語の分散表現

第2章 カウント方法に基づく改良版

第 3 章 word2vec の簡単な紹介



序文

RNN は NLP において非常に古典的なモデルであり、RNN はこのようなループ (またはループ) を持つことが特徴です。このループにより、データが継続的に循環することが可能になります。データの循環により、RNN は過去のデータを記憶しながら最新のデータに更新します


1. RNN 構造の基本的な紹介

rnn のネットワーク構造は実は cnn よりも単純で、下図のように
rnn構造図
入力が x で、ネットワークを通った後の出力の一部が h となり、h のコピーが返されます。 rnn を入力として使用します。上の図を拡張すると、次の図が得られます
rnn構造図
。時間 0 の出力が時間 1 の入力として使用され、時間 1 で x とともにネットワークに入力されることがわかります。
ここで
ht = Tanh ( ht − 1 W h + xt W x + b ) h_t = Tanh(h_{t−1}W_h + x_tW_x + b)h=あなたht 1W+バツW×+b )
RNN には 2 つの重みがあります。入力 x を出力 h に変換する重み Wx と、前の RNN 層の出力を現時点の出力に変換するW hWさらに、バイアス b があります。ここで、ht − 1 h_{t−1}ht 1そしてxt x_tバツは行ベクトルです

多くの文献では、RNN ht h_tの出力はh隠れ状態 (hidden state) または隠れ状態ベクトル (hidden state Vector) と呼ばれます。

2. バックプロパゲーション

1.時間によるバックプロパゲーション

RNN層を拡張すると、横方向に伸びたニューラルネットワークとみなすことができるため、RNNの学習は通常のニューラルネットワークの学習と同様に行うことができます。同様に、バックプロパゲーションも通常の方法で実行できます。しかし、時系列データのタイムスパンが長くなると、多くのリソースが消費され、傾きも不安定になります。

2.切り捨てられたBPTT

長い時系列データを扱う場合、ネットワーク接続を適切な長さに切り詰めるのが一般的です。具体的には、時間軸方向に長すぎるネットワークを適当な位置で切り詰めて複数の小さなネットワークを作成し、切り詰めた小さなネットワークに対して誤差逆伝播法を実行する方法をTruncated BPTTと呼びます。長さ1000の時系列データを扱う場合、RNNの層を拡張すると横方向に1000層並んだネットワークになります。もちろん、何層配置しても誤差逆伝播法により傾きを計算することができる。ただし、シーケンスが長すぎると、計算またはメモリ使用量の問題が発生します。また、レイヤーが長くなると、勾配が小さくなり、前のレイヤーに勾配が伝わらなくなります。そこで、図に示すように、
ネットワークのバックプロパゲーション接続を水平方向に適切な長さで切り詰めることを考え
切り落とす
、RNN 10 層単位で学習できるようにバックプロパゲーション接続を切り詰めます。このように、バックプロパゲーション接続が切り詰められていれば、ブロック範囲外のデータを考慮する必要がないため、誤差バックプロパゲーション手法はブロック単位で完了することができます(他のブロックと関連付けられません)。

3. Truncated BPTT のミニバッチ学習

Truncated BPTT について議論する場合、ミニバッチ学習は考慮されません。つまり、これまでの説明はバッチ サイズ 1 に相当します。したがって、入力データの先頭で、各バッチで「オフセット」を作成する必要があります。長さ1000の時系列データの場合、時間長10単位で切り捨てられます。この時点で、学習のバッチサイズを 2 に設定するにはどうすればよいでしょうか? この場合、RNN層の入力データとして、先頭から順に1番目のサンプルデータが入力され、500番目のデータから順に2番目のデータが入力される。つまり、開始位置を 500 ずらします
ミニバッチ


要約する

以上が今日の内容の概要ですが、この記事ではrnnについて簡単に紹介するだけで、具体的なサンプルコードは後ほど紹介します。

おすすめ

転載: blog.csdn.net/weixin_39524208/article/details/131692340