著者 Johanna Pingel
このコラムシリーズでは、毎回 1 つのトピックを取り上げて、その背景について解説します。また、MATLAB コミュニティからのいくつかの質問に回答します。
今回のトピックは、ディープラーニングのネットワーク アーキテクチャです。学術的な事例ではなく、一般的な使用事例を反映した質問を選びました。トピックの概要を説明し、その後、次の 4 つの質問にお答えします。
ネットワーク アーキテクチャでは、ディープラーニング モデルの構造や、より重要な点としてそのモデルの目的を定義します。ネットワーク アーキテクチャにより決定される事項は次のとおりです。
- モデルの精度 (ネットワーク アーキテクチャは精度に影響を及ぼす多くの要因のひとつです)
- モデルが予測できる事項
- モデルの入出力値
- 層の組み合わせと層を介したデータの流れ
ほとんどの方が最初は既存の層の組み合わせを使って、学習を始めます。初めて何かを行うときは、専門家の力を借りることをお勧めします。ディープラーニングの研究者は、さまざまなネットワーク アーキテクチャや層の組み合わせについて、長年研究を重ねてきました。これにより、GoogLeNet、ResNet、SqueezeNet (これらはごく一部の例です) などのアーキテクチャで、目覚ましい成果が得られています。最初は、ゼロから始めるのではなく、類似の問題を扱う公開されているアーキテクチャの成功例を利用してみてください。
Deep Learning Toolbox™は、多くの事前学習済みネットワークをサポートしています。詳細なリストについては、事前学習済みのディープ ニューラル ネットワーク を参照してください。
ネットワーク アーキテクチャを選択する前に、ご自身のユースケースや、利用できる一般的なネットワークを理解しておくことが重要です。
ディープラーニングを開始する際によく利用される、一般的なアーキテクチャを以下に示します。
- 畳み込みニューラル ネットワーク (CNN): CNN は一般的に、入力データとして画像に関連付けられますが、それ以外の入力データにも利用できます。質問 1 では、その詳細について説明します。
- 再帰型ニューラル ネットワーク (RNN): RNN では、過去の情報を記録することにより未来の事象を予測できます。各入力が独立したイベントであると仮定される CNN とは異なり、RNN では、互いに影響を及ぼす可能性のあるシーケンスデータを処理できます。一例として、自然言語処理では、前の単語が、次に来る単語の尤度に影響します。
- 長期短期記憶 (LSTM): LSTM ネットワークは、シーケンスデータや信号データによく使用される RNN です。質問 3 で詳しく見ていきます。
- 敵対的生成ネットワーク (GAN): 以下の質問では取り上げていませんが、最近は GAN への注目が高まってきています。GAN では、既存のデータをもとに、新しいデータを生成できます (実在しない人物の画像など)。この技術は、刺激的で先進的だといえます。GAN の詳細については 敵対的生成ネットワーク (GAN) の学習の例を参照してください。
質問 1
画像を分類するモデルの構築を考えています。どのアーキテクチャを使用するべきでしょうか。
とても良い質問です。ひと言で言うと、画像の分類には、CNN を使用するとよいのではないでしょうか。
理由は次のとおりです。
まず、CNN と LSTM のネットワークの概要について説明してから、その一般的な用途についてお話しします。
CNN
畳み込みニューラル ネットワークは「ConvNet」とも呼ばれます。「ConvNet」という響きは、少し気取った感じに聞こえるでしょうか。
CNN は、多くの層で構成されていますが、畳み込み| ReLU |プーリングのようなパターンに基づいており、何度も (何度も何度も) 繰り返されます。局所的な空間パターンマッチングに非常に適しているため、画像分類に役立つだけでなく、通常、画像特徴抽出に使用される他の方法よりも優れています。ここでは CNN の核心が畳み込みである点に留意してください。入力画像を一連のフィルタ-で畳み込むことで、隣接するピクセル間の空間的な相互作用を失うことなく、画像内の特徴を強調します。
ディープラーニング入門: 畳み込みニューラル ネットワークとは (4:44)
このテーマには多くのバリエーションがありますが、CNN に共通する構成は以下のとおりです。
系列ネットワーク
DAG ネットワーク
LSTM(長期短期記憶ネットワーク)
長期短期記憶ネットワークは、主に時系列データやシーケンスデータに関連付けられています。LSTM ネットワークは、判定を行う時点より前のデータを部分的に記憶しています。また、文脈を考慮してデータを扱うため、データのより適切な関連付けに役立ちます。
一般的に、時系列データは多くの場合、LSTM ネットワークに最適であり、画像データは間違いなく CNN でうまく機能します。信号データは、この原則の例外です。一般的に、CNN ネットワークと LSTM ネットワークはいずれも、信号データに利用されています。私は、ディープラーニングの非画像アプリケーションに関する記事を投稿していますが、その中に CNN を音声認識に使用する例があります。
質問 2
分類用に学習されたネットワーク アーキテクチャを回帰アプリケーションに再利用できますか。
できます。ただし、出力層を classificationOutputLayer から regressionOutputLayer に変更する必要があります。ドキュメンテーションの例 で、このプロセスの概要を説明しています。
このようなご質問に役立つ便利な資料として、Deep Learning Toolbox のクイック スタート ガイドもご活用ください。
質問 3
時系列回帰には非常に多くの選択肢がありますが、どのアーキテクチャを選択すればよいのでしょうか。
私がいつもお勧めしているのは、LSTM ネットワークです。ただし、利用できる手法は多く存在し、シナリオによっては、他のいくつかの手法の方がうまく機能します。詳細な情報をいただかないとこのご質問に具体的に回答するのは難しいため、代わりに考えられるシナリオをいくつかご紹介します。
時系列回帰シナリオ #1:入力が複雑度の低い時系列データで、一連のデータポイントを将来のイベント予測に使用したい場合。
この状況では、機械学習を利用するのが最もよいかもしれません。機械学習を使ったビットコインのボラティリティの予測について説明している短いビデオ (5:56) をご覧ください。また、この例のソースコードも利用できます。
リスク管理における機械学習の応用: 回帰学習アプリを使ったビットコインのボラティリティ予測 (5:56)
時系列回帰シナリオ #2 : 複数のセンサーからのデータがあり、残存耐用年数 (機械の修理または交換が必要になるまでの時間) を予測したい場合。
私と同僚が担当する産業オートメーションのお客様が、この状況に置かれていました。このお客様は、問題が危険レベルになったり、修正に多額の費用がかかる状況になったりする前に問題を特定しなければなりませんでした。このような状況では、機械学習の回帰よりも LSTM ネットワークを使用した方がよいかもしれません。この方法では、特徴を手動により識別する手間を減らすことができます。これは、複数のセンサーを使用している場合に重要なタスクとなります。
こちらの例で、LSTM ネットワークで残存耐用年数を予測する方法を確認することができます。
時系列回帰シナリオ #3 : 音声データのノイズを除去したい場合。
この場合、CNN を使用できます。この方法で重要なことは、信号をネットワークに渡す前に画像に変換することです。これは、フーリエ変換、その他の時間周波数操作によって信号が画像表現になることを意味します。画像を使用することで、元の信号では可視化できないような特徴を見分けることができます。フーリエ変換は本質的に画像であるため、画像用に設計された事前学習済みのネットワークを使用できます。
こちらの例で、CNN を使用して音声のノイズを除去する方法を説明しています。
シナリオ 3 を検討している場合は、時系列データから情報を抽出し、それを CNN の入力として使用するウェーブレットという方法が使用される場合もあります。ウェーブレットとディープラーニングを使用して脳の信号を単語やフレーズに変換する方法について、テキサス大学オースティン校の研究者が素晴らしい記事を寄稿しています。
繰り返しますが、ここでは好きな方法を選んで差し支えありません。シナリオ 1 で LSTM ネットワーク、シナリオ 2 で CNN を使用することも可能です。1 つの出発点として、これらのシナリオをご参照ください。
質問 4
画像を認識する分類器を構築したいのですが、限られた数のデータしかありません。小規模なデータセットでも問題なく機能するネットワーク アーキテクチャはありますか。
ネットワーク アーキテクチャと事前学習済みのネットワークは関連しています。事前学習済みのモデルとは、すでに学習されたニューラル ネットワークのことです。ネットワークの重みとバイアスは入力データに合わせて調整されているため、新たなタスク用にネットワークを素早く再学習させることができます。このプロセスは転移学習と呼ばれ、場合によっては必要な画像が少なくなるだけでなく、作業に使用するデータセットも小さくて済みます。また、シミュレーションや水増しによって、より多くのデータを「作成」することもできます。
特定のネットワーク アーキテクチャを使用するケースの詳細については、事前学習済みのネットワークに関する情報が記載された、ヒントやコツ もご覧ください。
現時点では、データセットのサイズに関係なく、任意のネットワークを使用してください。ただし、少ない入力データで済むように事前学習済みのネットワークの使用を検討するか、データセットを水増しする方法を検討することをお勧めします。次回のコラムでは、事前学習済みのネットワークとモデルについて取り上げます。是非ご覧ください。