長・短期記憶 (LSTM) ネットワークはリカレントニューラルネットワーク (RNN) の一種です。LSTM は、データのタイムステップ間の長期的な依存関係を学習できるため、主にシーケンシャルデータの学習、処理、および分類に使用されます。
LSTM の仕組み
LSTM と RNN
LSTM ネットワークは、RNN アーキテクチャの特殊な形式です。RNN は過去の情報を使用して、現在および将来の入力に対するニューラル ネットワークの性能を向上させます。隠れ状態およびループが含まれているため、ネットワークは過去の情報を隠れ状態で保存し、シーケンスで処理できます。RNN には、隠れ状態ベクトル用と入力用に 1 つずつ、合計 2 つの重みセットがあります。ネットワークは学習中に、入力の重みと隠れ状態の重みの両方を学習します。RNN を実装した場合、出力は現在の入力および隠れ状態に基づき、そしてその隠れ状態は以前の入力に基づきます。
実際には、単純な RNN は長期的な依存関係を学習する能力が限られています。RNN は通常、逆伝播により学習します。その際に勾配消失問題または勾配爆発問題が生じることがあります。これらの問題により、ネットワークの重みが非常に小さく、あるいは非常に大きくなるため、ネットワークで長期的な関係を学習する必要がある用途での有効性が限定されます。
LSTM 層アーキテクチャ
LSTM 層は追加のゲートを使用して、隠れ状態のどの情報を、次の隠れ状態に出力としてエクスポートするかを制御します。こうした追加ゲートにより、長期的な依存関係を学習する際の RNN の一般的な問題を解決します。従来型 RNN の隠れ状態に加えて、LSTM ブロックのアーキテクチャには通常、メモリセル、入力ゲート、出力ゲート、および忘却ゲートが含まれます。追加のゲートにより、ネットワークはデータ内の長期的な関係をより効果的に学習できます。時間ギャップに対する感度が低いため、LSTM ネットワークは単純な RNN よりもシーケンシャルデータの解析に適しています。次の図では、LSTM アーキテクチャおよびタイムステップ t におけるデータフローを確認できます。
入力ゲートへの重みおよびバイアスにより、新しい値が LSTM ユニットに入る度合いを制御します。同様に、忘却ゲートと出力ゲートへの重みおよびバイアスにより、ユニット内に値が留まる度合いと、LSTM ブロックの出力活性化を計算するためにユニット内の値が使用される度合いをそれぞれ制御します。
次の図は、複数のタイムステップをもつ LSTM 層を通るデータフローを示しています。出力のチャネル数は、LSTM 層の隠れユニットの数と一致します。
LSTM ネットワーク アーキテクチャ
LSTM は、分類および回帰のタスクでシーケンスデータと時系列データを処理するのに適しています。動画は本質的に画像シーケンスであるため、LSTM は動画にも適しています。信号の処理と同様に、画像シーケンスを LSTM 層に入力する前の特徴抽出に役立ちます。各フレームの特徴抽出には 畳み込みニューラル ネットワーク (CNN) (GoogLeNet など) を活用します。次の図では、さまざまなタスク用に LSTM ネットワークを設計する方法を示します。
双方向 LSTM
双方向 LSTM (BiLSTM) は、時系列データやシーケンスデータのタイムステップ間の双方向依存関係を学習します。このような依存関係は、各タイムステップで完全な時系列データからネットワークに学習させる場合に役立ちます。BiLSTM ネットワークでは、入力データが LSTM 層を 2 回通過するため、追加の学習が可能です。これにより、ネットワークの性能が向上することがあります。
BiLSTM は、順方向 LSTM と逆方向 LSTM という 2 つの LSTM コンポーネントで構成されます。順方向 LSTM は、最初のタイムステップから最後のタイムステップに向かって演算します。逆方向 LSTM は、最後のタイムステップから最初のタイムステップに向かって演算します。2 つの LSTM コンポーネントにデータを通過させた後、演算により、チャネル次元に沿って出力を連結します。
MATLAB での LSTM の例の紹介
LSTM の用途
LSTM は、長さが可変のシーケンシャルデータを処理し、そのデータのタイムステップ間の長期的な依存関係を学習する場合に特に効果的です。一般的な LSTM の用途には、感情分析、言語モデリング、音声認識、および動画解析があります。
LSTM の広範な用途
RNN は、次のような用途において重要な技術となっています。
- 信号処理。信号は経時的にセンサーから収集される場合が多いため、自然にシーケンシャルデータになっています。大規模な信号データセットに対する自動分類および自動回帰により、リアルタイムでの予測が可能です。生の信号データは、ディープネットワークに入力するか、周波数成分などの特定の特徴に焦点を合わせるための前処理を行うことができます。特徴抽出により、ネットワーク性能を大幅に向上させることができます。
- 自然言語処理 (NLP)。言語は本来逐次的であり、テキストの長さはまちまちです。LSTM は文内の単語を文脈に当てはめて学習できるため、テキスト分類、テキスト生成、機械翻訳、感情分析などの自然言語処理タスクに適したツールです。
次の例を試して、信号処理および自然言語処理への LSTM の応用を始めましょう。
LSTM の特定の用途
ディープラーニングの用途が拡大し続ける中、LSTM は次のような特定の用途で使用されています。
LSTM ネットワークを使用した NOx 排出量の推定
Renault のエンジニアは、ゼロエミッション車 (ZEV) の次世代技術の開発に LSTM を使用しました。
MATLAB を使用した LSTM
MATLAB® を Deep Learning Toolbox™ とともに使用することで、LSTM の設計、学習、および展開を行うことができます。Text Analytics Toolbox™ または Signal Processing Toolbox™ を使用することで、LSTM をテキスト解析や信号解析に応用できます。
ネットワークの設計および学習
数行のコードで、プログラムによる LSTM の設計および学習ができます。LSTM 層、双方向 LSTM 層、および LSTM 投影層を使用して LSTM を構築します。また、ディープ ネットワーク デザイナー アプリを使用して、LSTM を対話的に設計、解析、および変更することもできます。
ネットワークの展開
学習済みの LSTM を組み込みシステム、エンタープライズ システム、またはクラウドに展開します。
- CPU および GPU への展開用に最適化された C/C++ コードおよび CUDA コードを自動生成する。
- FPGA および SoC に展開するために論理合成可能な Verilog® コードおよび VHDL® コードを生成する。
リソース
ドキュメンテーション、例、ビデオなどを通じて知識を広げましょう。
関連するトピック
MATLAB および Simulink 製品がよく使用される類似分野のトピックをご覧ください。
30日間無料トライアル
今すぐ始めるWeb サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)