リカレント・ニューラル・ネットワーク(RNN)とは

2024年10月4日

著者

Cole Stryker

Editorial Lead, AI Models

リカレント・ニューラル・ネットワークとは

リカレント・ニューラル・ネットワーク(RNN)とは、シーケンシャルデータか時系列データでトレーニングされているディープ・ニューラル・ネットワークであり、シーケンシャルな予測や結論をシーケンシャルなインプットに基づいて導き出せる機械学習モデルを創出します。

RNNは、過去の洪水、潮汐、気象の日次データに基づいて洪水レベルを日毎に予測するために使用されることがあります。一方、RNNは、言語翻訳、自然言語処理(NLP)感情分析音声認識、画像キャプションなどで、順序や時間にまつわる問題を解決するのにも使用されます。

トラック上を転がるボールの3Dデザイン

最新のAIニュース + インサイト 


AIやクラウドなどについて、専門家が厳選したインサイトやニュースを、Thinkニュースレターで毎週お届けします。

RNNの仕組み

フィードフォワード・ニューラル・ネットワークや畳み込みニューラル・ネットワーク(CNN)などの従来のニューラル・ネットワークと同様、リカレント・ニューラル・ネットワークはトレーニング用データを使用して学習します。これらを区別するのは、それぞれの「メモリー」です。以前のインプットから情報を取得して現在のインプット/アウトプットに影響を与えるためです。

従来のディープラーニング・ネットワークはインプットとアウトプットが互いに独立していることを前提としていますが、リカレント・ニューラル・ネットワークのアウトプットはシーケンス内の過去の要素に依存します。将来のイベントも所与のシーケンスのアウトプットを決定するのには役立ちますが、単方向リカレント・ニューラル・ネットワークでは、こうしたイベントを予測にあたって考慮することはできません。

RNNの説明を助けるために、病気のときによく使われる「feeling under the weather(気分が悪い)」などのイディオムを考えてみましょう。イディオムが意味をなすためには、特定の順序で表現する必要があります。そのためリカレント・ネットワークはイディオムに含まれる各単語の位置を考慮する必要があり、その情報を使用してフレーズ内の次の単語を予測します。

「気分が悪い」というフレーズ内の各単語はシーケンスの一部であり、順序が重要です。RNN は、各タイムステップで隠し状態を維持することでコンテキストを追跡します。フィードバック・ループは、隠し状態を1回限りのステップから次のステップに渡すことによって作成されます。隠し状態は、以前の入力に関する情報を保存するメモリーとして機能します。各タイムステップで、RNNは現在の入力(例えば、文中の単語)と、前のタイムステップの隠し状態を処理します。これにより、RNNは以前のデータ・ポイントを「記憶」し、その情報を使用して現在の出力に影響を与えることができます。

リカレント・ネットワークのもう1つの特性は、パラメーターをネットワークの各層で共有することです。フィードフォワード・ネットワークではノードごとに重みが異なりますが、リカレント・ニューラル・ネットワークではネットワーク内の各層で同じ重みパラメーターを共有します。とはいえ、ここでの重みは、強化学習を促進するため、逆伝播法と勾配降下法によるプロセスを通じて調整されます。

リカレント・ニューラル・ネットワークは、順方向伝播と時間経過による逆伝播(BPTT)アルゴリズムを使用して勾配(または導関数)を決定します。これは、シーケンス・データに固有のものであるため、従来の逆伝播とは少し異なります。BPTTの原理は従来の逆伝播法と同じで、アウトプット層からインプット層までの誤差を計算することでモデル自体をトレーニングするものです。このような計算により、モデルのパラメーターを十分に調整し適合させることができます。BPTTでは誤差をタイムステップごとに合計するのに対し、フィードフォワード・ネットワークではパラメーターを各層で共有していないため誤差を合計する必要がないという点で、BPTTは従来のアプローチと異なります。

一般的な活性化関数

活性化関数は、ネットワーク内のニューロンの各層の出力に適用される数学関数であり、非線形性を導入して、ネットワークがデータ内のより複雑なパターンを学習できるようにします。活性化関数がなければ、RNNは入力の線形変換を単純に計算するため、非線形の問題を処理できなくなります。非線形性は、特にNLP、時系列分析、順次データ予測などのタスクにおいて、複雑なパターンを学習およびモデリングする上で非常に重要です。

活性化関数はニューロンの出力の大きさを制御し、値を指定された範囲(例えば、0~1または-1~1)内に維持します。これにより、順方向パスと逆方向パスの間に値が大きくなりすぎたり小さくなりすぎたりするのを防ぐことができます。RNNでは、活性化関数が各タイムステップで隠れ状態に適用され、現在の入力と過去の隠れ状態に基づいてネットワークが内部メモリー(隠れ状態)を更新する方法を管理します。

一般的な活性化関数(下図参照)には次のものがあります。

Sigmoid関数は、出力を確率として解釈し、保持または忘れる情報の量を決定するゲートを管理します。ただし、Sigmoid関数は勾配消失問題(後述)が発生しやすいため、より複雑なネットワークには適していません。

Tanh (双曲正接) 関数は、ゼロを中心とした値を出力するためよく使用され、勾配フローの改善や長期的な依存関係の学習の簡素化に役立ちます。

ReLU(Rectified Linear Unit) は、その無制限の性質により、勾配爆発の問題を引き起こす可能性があります。ただし、これらの問題の一部を軽減するために、Leaky ReLUやParametric ReLUなどのバリエーションが使用されてきました。

RNNの仕組みのついて詳しくは、リカレント・ニューラル・ネットワークの詳細をご覧ください。

RNNの種類

フィードフォワード・ネットワークは入力と出力を1対1でマッピングします。これまでの図ではリカレント・ニューラル・ネットワークをこのように視覚化していましたが、この制約はありません。それよりも、インプットとアウトプットは長さが一様でなく、ユースケース(音楽生成、感情分類、機械翻訳など)が異なれば、使用されるRNNの種類も異なります。一般的なリカレント・ニューラル。ネットワーク・アーキテクチャーのバリエーションには、次のものがあります。

  • 標準のRNN
  • 双方向リカレント・ニューラル・ネットワーク(BRRN)
  • 長短期記憶(LSTM)
  • ゲート付き回帰型ユニット(GNU)
  • エンコーダー/デコーダーRNN

標準のRNN

RNNの最も基本的なバージョンでは、各タイム・ステップの出力が現在の入力と前のタイム・ステップの隠れ状態の両方に依存しますが、勾配消失などの問題があり、長期的な依存関係を学習することが困難になります。これらは、文中の次の単語(短くて単純な文の場合)や単純な時系列の次の値を予測するなど、短期的な依存関係を持つ単純なタスクに優れています。

RNNは、センサー・データを処理して短時間で異常を検知するなど、入力が1つずつ受信され、最新の入力に基づいて即座に予測を行う必要がある場合など、データをリアルタイムで順次処理するタスクに適しています。

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

単方向RNNでは、現在の状態についての予測を行うために引き出すことができるのは以前のインプットのみですが、双方向RNN(BRNN)では、将来のデータを取り込んで正確性を向上させます。「feeling under the weather」の例に戻ると、BRNNに基づくモデルでは、シーケンス内の最後の単語が「weather」であることがわかれば、そのフレーズの2番目の単語が「under」であることをより正確に予測できます。

長短期記憶(LSTM)

LSTMはRNNアーキテクチャーの定番です。勾配消失問題の解決策として、Sepp Hochreiter氏とJuergen Schmidhuber氏によって考案されました。両氏の論文は、長期依存性という問題に対処しようとしています。その問題とは、現在の予測に影響を与える過去の状態が最近のものではない場合、RNNモデルは現在の状態を正確に予測できない可能性があるということです。

例えば、「Alice is allergic to nuts.She can’t eat peanut butter.」という文で、斜体になっている単語を予測しようとしているとします。ナッツアレルギーというコンテキストは、食べられない食品にナッツが含まれていると予想する助けとなります。しかし、そのコンテキストが数文前にあったとしたら、RNNでは情報をつなげるのが困難、あるいはむしろ不可能になります。

これを解決するため、LSTMネットワークではニューラル・ネットワークの隠れ層に「セル」を持たせます。そこには3つのゲート、インプットゲート、アウトプットゲート、フォゲットゲートがあります。これらのゲートにより、ネットワークでのアウトプットを予測するために必要とされる情報のフローが制御されます。例えば、「she」などの性別代名詞が、その前にある複数の文にわたって複数回繰り返されていた場合は、それをセル状態から除外します。

ゲート付きリカレント・ユニット(GRU)

GRUは、RNNモデルが抱える短期記憶の問題を解消できるという点でLSTMと似ています。「セル状態」制御情報を使用する代わりに、隠れ状態を使用します。また3つのゲートの代わりに、リセット・ゲートと更新ゲートの2つを備えています。LSTM内のゲートと同様に、リセット・ゲートと更新ゲートは、どの情報をどれだけ保持するかを管理します。

GRUはアーキテクチャーがシンプルなため、LSTMに比べて計算効率が高く、必要なパラメーターも少なくなります。これにより、トレーニングが高速化され、多くの場合、特定のリアルタイム・アプリケーションやリソースが制限されたアプリケーションに適したものになります。

エンコーダー/デコーダーRNN

これらは通常、機械翻訳などのシーケンス間のタスクに使用されます。エンコーダーは入力シーケンスを固定長のベクトル(コンテキスト)に処理し、デコーダーはそのコンテキストを使用して出力シーケンスを生成します。ただし、固定長のコンテキスト・ベクトルは、特に長い入力シーケンスの場合にボトルネックになる可能性があります。

RNNの限界

人工知能におけるRNNの使用は減少しており、特に Transformerモデル などのアーキテクチャーが好まれていますが、RNNが時代遅れになったわけではありません。RNNは、時間的な依存関係を処理する能力があるため、従来、逐次データ処理(時系列や言語モデリングなど)で人気がありました。

しかし、BERTやGPTなどの変圧器モデルの台頭とともに、勾配の消失と爆発の問題に対するRNNの弱点が、この成果につながりました。Transformerは、長期的な依存関係をより効果的にキャプチャでき、並列化が容易で、NLP、音声認識、時系列予測などのタスクでより優れたパフォーマンスを発揮します。

とはいえ、RNNは、特に小規模でリソースに制約のある環境や、データ処理が段階的な再帰のメリットを受けるタスクなど、そのシーケンシャルな性質とメモリー・メカニズムが役立つ特定のコンテキストで引き続き使用されています。

このようなユースケースを試してみたい人のために、Keras社は人気のあるオープンソース・ライブラリーで、現在はTensorFlowライブラリーに統合されているRNN用のPythonインターフェースを提供しています。このAPIは使いやすくカスタマイズしやすいように設計されており、ユーザーは独自のRNNセル層をカスタム動作で定義することができます。

Mixture of Experts | ポッドキャスト

AIを解読する:1週間のニュースのまとめ

エンジニア、研究者、製品リーダーなど、世界をリードするパネリストがAIに関する最新のニュースとインサイトをお届けします。

関連ソリューション
IBM watsonx.ai

AI開発者向けの次世代エンタープライズ・スタジオであるIBM watsonx.aiを使用して、生成AI、基盤モデル、機械学習機能をトレーニング、検証、チューニング、導入しましょう。わずかなデータとわずかな時間でAIアプリケーションを構築できます。

watsonx.aiをご覧ください。
人工知能ソリューション

業界をリードするIBMのAI専門知識とソリューション製品群を使用すれば、ビジネスにAIを活用できます。

AIソリューションはこちら
AIコンサルティングとサービス

AIの導入で重要なワークフローと業務を再構築し、エクスペリエンス、リアルタイムの意思決定とビジネス価値を最大化します。

AIサービスはこちら
次のステップ

AI開発ライフサイクル全体にわたる機能にワンストップでアクセスできます。使いやすいインターフェース、ワークフロー、業界標準のAPIやSDKを利用して、強力なAIソリューションを構築できます。

watsonx.aiの詳細はこちら デモを予約