系列データのためのリカレントニューラルネットワーク(RNN)のパワーをご覧ください。NLPから時系列分析まで。今日の主要な概念と応用事例を学びましょう。
リカレント・ニューラル・ネットワーク(RNN)は、以下のように特別に設計されたニューラルネットワーク(NN)の一種である。 ニューラル・ネットワーク(NN)の特殊なクラスである。 入力の順序が全体の意味を決定する。従来のフィードフォワード 各入力を独立して処理する従来のフィードフォワードネットワークとは異なり、RNNは内部記憶状態を持ち、シーケンスの前のステップの情報を保持することができる。 を保持することができる。このユニークなアーキテクチャにより、RNNは次のようなアプリケーションの基礎となる。 ディープラーニング(DL)アプリケーションの基礎となっている。 またはシーケンシャルなパターンを含む 自然言語処理(NLP) 音声合成、時系列分析などである。これにより 新しいデータが処理されるにつれて進化する「隠れた状態」を維持することで、RNNは文脈を把握し、文中の次の単語や将来の株価を予測することができる。 文中の次の単語や株価の将来価値を予測することができる。
RNNの特徴は、ループメカニズムにある。標準的なニューラルネットワークでは、データは一方向に流れる。 入力から出力へ。RNNでは、ニューロンの出力は次の時間ステップの入力としてそれ自身にフィードバックされる。このプロセスは このプロセスは、時間経過に伴うネットワークの「展開」として視覚化されることが多い。 ネットワークは、その内部状態(これまでに見たことに関する情報を含む)を次のステップに渡す。
学習プロセスにおいて、RNNは以下のアルゴリズムを利用する。 BPTT(Backpropagation Through Time)と呼ばれるアルゴリズムを使用する。これは標準的な によって勾配を計算する。 これは標準的なバックプロパゲーションの拡張であり、シーケンスの時間ステップにわたってネットワークを展開することで勾配を計算する。BPTTは、以前の入力が後の出力にどのように影響するかをネットワークに学習させる。 が後の出力にどのように影響するかを学習し、誤差を最小化するように モデルの重みを効果的に調整し、誤差を最小化する。詳細な このプロセスの詳細な説明は、次のような教育リソースで見ることができる。 Stanford's CS224n NLP course.
RNNは、データを正しく解釈するためにコンテキストが必要な場面で特に効果を発揮する。
強力な反面、標準的なRNNは 勾配が消失するという問題がある。 ネットワークが長いシーケンスにわたって情報を保持するのに苦労する。勾配は多くの時間ステップを経て後方に伝搬するため、勾配が限りなく小さくなる可能性がある。 ネットワークが初期の入力を「忘れて」しまうのだ。
これに対処するため、研究者たちは高度な改良型を開発した:
また、RNNと以下のものを区別することも重要である。 畳み込みニューラルネットワーク(CNN).RNNが時間的(タイムベース)なシーケンスを得意とするのに対し、CNNは画像のような空間的(グリッドベース)なデータ向けに設計されている。 例えば Ultralytics YOLO11は、CNN アーキテクチャをリアルタイム物体検出に使用している、 一方、RNNは、YOLO 処理するビデオフレームにキャプションを付けるのに適している。
最新のフレームワーク PyTorchのような最新のフレームワークは リカレント層を実装する。一方 YOLO11のようなUltralyticsモデルは主にCNNベースであるが のようなUltralytics モデルは、主にCNNベースであるが、カスタムソリューションのために今後のUltralytics プラットフォームを活用するユーザーは、マルチモーダルデータを扱う際にRNNに遭遇する可能性がある。 データに遭遇するかもしれない。
以下は、PyTorch基本的なRNNレイヤーを定義する簡潔な例です:
import torch
import torch.nn as nn
# Define an RNN layer: Input size 10, Hidden state size 20, 2 stacked layers
rnn = nn.RNN(input_size=10, hidden_size=20, num_layers=2)
# Create a dummy input sequence: (sequence_length=5, batch_size=1, input_features=10)
input_seq = torch.randn(5, 1, 10)
# Forward pass: Returns the output for each step and the final hidden state
output, hidden = rnn(input_seq)
print(f"Output shape: {output.shape}") # torch.Size([5, 1, 20])
より高度なシーケンス・モデリングのために、最近のアプリケーションの多くは、次のようなものに移行しつつある。 トランスフォーマーアーキテクチャに移行している。 に移行している。しかし、RNN は、人工知能(AI)の進化を理解する上で不可欠な概念であり 人工知能(AI)の進化を理解する上で不可欠な概念であり 特定の低レイテンシー・ストリーミング・タスクでは依然として効率的である。


