ディープラーニング (深層学習)

ディープラーニング (深層学習) とは、ニューラル ネットワークを使用する機械学習の一分野であり、例から学ぶという人間の自然な行動をコンピューターに学習させるための手法です。ディープラーニングでは、モデルが画像、テキスト、音声などのデータから分類タスクまたは回帰タスクを直接実行するよう学習を行います。ディープラーニング モデルは極めて高い精度を誇り、しばしば人間の認識精度を超えることがあります。

ディープラーニングの仕組み

ディープラーニング モデルは、ニューラル ネットワーク アーキテクチャに基づいています。人間の脳にヒントを得たニューラル ネットワークは、層構造内で相互接続されたノード、すなわちニューロンで構成されており、これらのニューロンが入力を望ましい出力に関連付けます。ニューラル ネットワークの入力層と出力層の間のニューロンは、隠れ層と呼ばれています。「ディープ」という言葉は通常、ニューラル ネットワーク内の隠れ層の数を指しています。ディープラーニング モデルは、数百または数千にもなる隠れ層を持つ場合があります。

ディープラーニング ネットワークは、相互接続された一連のニューロンからなる複数の層で構成されています。

一般的なニューラル ネットワーク アーキテクチャの表示。

ディープラーニング モデルでは、大規模な一連のラベルデータを使用して学習が行われ、手動での特徴抽出を必要とせずにデータから特徴量を直接学習できる場合が多くあります。1958 年に初めて理論化された人工ニューラル ネットワークですが、ディープラーニングには高い計算能力が求められ、2000 年代まで利用することができませんでした。現在では、研究者は数百もの結合やニューロンを持つネットワークの構築および学習を行える計算リソースを利用できます。

高性能 GPU は、ディープラーニングの計算を効率化する並列アーキテクチャを有しています。クラスターまたはクラウド コンピューティングと組み合わせると、開発チームは、ディープラーニング ネットワークの学習時間を数週間から数時間以内に削減できるようになります。

ディープラーニング モデルの種類

ディープラーニング モデルには、畳み込みニューラル ネットワーク (CNN)、リカレント ニューラル ネットワーク (RNN)、および トランスフォーマー モデルの 3 種類があります。

CNN: CNN では入力データを使用して学習済みの特徴を畳み込み、2D の畳み込み層を使用するため、画像などの 2D データの処理に特に適したアーキテクチャです。CNN では、画像から直接特徴量を抽出します。ネットワークが一連の画像で学習を行う間に関連する特徴量が学習されます。この自動化された特徴抽出により、画像分類タスクにおいてディープラーニング モデルは高い精度を実現しています。また、CNN は、時系列やテキストなど他のタイプのデータの分類に使用することもできます。

畳み込みニューラル ネットワークによるディープラーニングでは、特徴量を入力画像から自動的に学習し、クラスごとに確率を計算します。

畳み込みニューラル ネットワークの例の可視化。

RNN: リカレントニューラルネットワーク (RNN) は、時系列データまたはシーケンシャルデータを用いた予測を行うディープラーニングのネットワーク アーキテクチャです。RNN は、さまざまな長さのシーケンシャルデータを使用して、自然信号の分類、言語処理、動画解析などの問題を解く場合に特に効果的です。長・短期記憶 (LSTM) ネットワークは特別なタイプの RNN で、より長期的な依存関係の学習において単純な RNN よりも優れています。

トランスフォーマー: トランスフォーマーは、シーケンシャルデータの関係を追跡するよう設計されています。トランスフォーマーは、入力と出力の間の大域的な依存関係を取得するために自己注意機構を使用します。自然言語処理で使用されることが多く、BERT や ChatGPT™ などの大規模言語モデル (LLM) の基礎となっています。

ディープラーニング モデルの作成方法

ディープラーニング モデルはゼロから作成するか、または事前学習済みのディープラーニング モデルを使用して始めることで、タスクに適用または導入できます。

ゼロからの学習: ディープラーニング モデルの学習をゼロから行うには、大規模なラベルデータセットを収集し、特徴量とモデルを学習するネットワーク アーキテクチャを設計します。これは、新しい用途や特定の用途、もしくはより一般的に、既存のモデルが存在しない用途に適したアプローチです。このアプローチの主なデメリットは、(グラウンド トゥルースのアノテーション付きの) 大規模なデータセットが必要となることや、タスクと計算リソースによっては学習に数時間から数週間かかる場合があることです。

転移学習: 画像分類、コンピューター ビジョン、音声処理、自然言語処理などのディープラーニングの用途では、転移学習のアプローチが広く使用されています。このアプローチでは、事前学習済みのディープラーニング モデルを微調整します。画像分類では SqueezeNet や GoogLeNet などの既存のモデルで始めて、未知のクラスを含む新しいデータを与えて学習させます。ネットワークに微調整を加えた後は、「1000 種類のオブジェクトの分類」ではなく「犬か猫かの分類」といった新しいタスクを行えるようになります。また、少ないデータ量で済むというメリットもあるため、学習時間を大幅に削減できます。

事前学習済みのディープラーニング モデルは、特徴抽出器としても使用できます。層の活性化状態を特徴として使用し、別の機械学習モデル (サポート ベクター マシン (SVM) など) の学習を行うことができます。または、事前学習済みのモデルを、別のディープラーニング モデルの基本構成として使用することも可能です。たとえば、画像分類の CNN をオブジェクト検出器の特徴抽出器として使用できます。

ディープラーニングと機械学習の比較

ディープラーニングは機械学習の特殊な一形態であり、両者はいずれも人工知能 (AI) 分野の一部です。機械学習ではさまざまな手法やモデルが提供されており、アプリケーション、処理するデータのサイズ、解決したい問題のタイプに応じて選択できます。

AI、機械学習、およびディープラーニングの 3 つすべてを示したイラストによる定義。

AI アプリケーションのアルゴリズムとして、ディープラーニングと機械学習のどちらを選択するかは、システムの目標と要件によって異なります。

機械学習ではなくディープラーニングを選択する理由はなんでしょうか? 一言で言えば、精度です。一般的にディープラーニングでは、機械学習よりも高い精度が得られ、拡張ワークフローをより自動化できます。ディープラーニング モデルの主な短所は、より複雑であり、大規模な学習データセットが必要なことから、学習により長い時間がかかることです。これらの短所については、完全に対処する手法や影響を軽減する手法があります。

特徴量エンジニアリングの自動化

機械学習のワークフローは、データから関連する特徴量を手動で抽出することから始まります。次に、その特徴量を使用して、新しいデータに対して予測を行えるモデルを作成します。ディープラーニングのワークフローを使用すると、画像認識コンピューター ビジョンなどの用途では、関連する特徴量が画像データから自動的に抽出されます。信号またはテキストデータを扱う場合、ディープラーニングにより必要なデータ前処理を減らすことができます。

車両の分類における機械学習手法 (左) とディープラーニング(右) の比較。

学習データと学習時間

ディープラーニングの精度は、データ量に比例します。つまり、ディープラーニングのパフォーマンスは、学習データのサイズが大きくなるにつれ改善されていきます。一般的にディープラーニングでは、モデルの学習を行うために極めて膨大なデータが必要となります (画像分類に何千もの画像が必要になるなど)。高性能の GPU を利用することで、学習時間を大幅に削減できます。また代案として、転移学習により事前学習済みのネットワークを変更して再学習を行うと、一般により高速化でき、ネットワークの学習をゼロから行うよりも少ないラベルデータで済ませることができます。

利用できる学習データが十分にない場合は、既存のデータを合成データで補完できます。合成データは、敵対的生成ネットワーク (GAN) を使用するか、または物理システムのモデルを作成およびシミュレーションすることで生成できます。

モデルのサイズと複雑度

機械学習モデルと比較すると、ディープラーニング モデルは何百もの相互接続された層で構築されているため、より複雑で大規模なものとなります。ディープラーニングの技術が進歩するにつれ、ディープラーニング ネットワーク アーキテクチャは複雑度を増していきます。モデルの複雑度とサイズは、ディープラーニングの精度に寄与します。

その複雑さのために、ディープラーニング モデルは解釈可能性を欠く「ブラックボックス」と見なされることがよくあります。説明可能な AI として知られる新しい分野では、ディープラーニング モデルの動作を人間の言葉で説明する手法を提供しています。たとえば、Grad-CAM および LIME を使用して、画像分類タスクにおけるディープラーニング モデルの予測を説明することができます。

ディープラーニング モデルは、もはやデスクトップにのみ存在するものではありません。大規模化と複雑化が進むディープラーニング モデルをリソースに制約のあるデバイスに展開することは、多くのディープラーニング実務者が直面する大きな課題となっています。ディープラーニング モデルを圧縮する手法は数多くあり、それらを使用することで、高い精度を維持しながら、ディープラーニング モデルのディスク上のサイズ、ランタイムメモリ、および推論時間を削減できます。

射影の使用による全結合層の圧縮。層の演算は図の下に記述。

全結合層の射影。射影はネットワーク圧縮の一手法。

ディープラーニングが重要な理由

ディープラーニングは、無人自動車の実現を支える主要技術であり、一時停止標識の認識や歩行者と街灯の識別を可能にします。電話、タブレット、テレビ、ハンズフリー スピーカーなどの消費者向けデバイスの音声制御にも不可欠な技術です。ディープラーニングは、最近多くの注目を集めていますが、それにはもっともな理由があります。ディープラーニングを使用すると、コンピューターやシステムは複雑なタスクをより高精度かつ高度に自動化して実行できるようになります。

ディープラーニングの用途

ディープラーニングは、コンピューター ビジョン、画像処理、自動運転、信号処理、その他の多くの領域で応用されています。ディープラーニングの用途の各領域には、副次的な用途領域が含まれることがあります。たとえば、画像分類、オブジェクト検出、およびセマンティック セグメンテーションは、コンピューター ビジョンの副次的な用途です。ディープラーニングの手法や技術が新たに開発されるにしたがい、ディープラーニングの用途も拡大を続け、ディープラーニングの精度向上につながる副次的な用途が見いだされます。

業務におけるディープラーニングの活用例

外観検査とは、画像を使用して部品の外観をチェックする検査です。カメラでテスト対象の部品をスキャンして、故障や品質上の欠陥がないかを確認します。ディープラーニングとコンピューター ビジョンの手法を使用することで、生命工学、自動車、半導体など多くの産業分野において、製造上の欠陥を検出する外観検査を自動化できます。

脳波 (EEG) 信号は、最も入手しやすく、当然のことながら最も調査されている脳信号です。ディープラーニングを使用すると、EEG 信号でてんかんを自動的に診断し、てんかん発作を予測できます。

リアルタイムの監視と制御が求められるシステムや、物理センサーの使用が現実的でなかったり費用が高くなったりするシステムでは、バーチャルセンサーを使用できます。ディープラーニングとモデルベースデザイン (MBD、モデルベース開発) を組み合わせて、バーチャルセンサーを設計することができます。

ディープラーニングをがん研究に応用

Moffit Cancer Center が、ディープラーニングを使用して科学的発見を加速させ、治療計画をパーソナライズした方法をご覧ください。

MATLAB® には、画像処理およびラジオミクスへの AI 適用に必要なすべてのツールが用意されていました。MATLAB を使用して、データ前処理、ノイズ除去 (デノイズ)、画像セグメンテーションなどのタスクを行いました。

MATLAB によるディープラーニング

MATLABDeep Learning Toolbox™ とともに使用すると、ディープラーニング ネットワークの設計、解析、シミュレーションを行えます。ディープラーニングのワークフローは、他のツールボックス (Computer Vision Toolbox™Signal Processing Toolbox™Text Analytics Toolbox™ など) を使用することで、多くの用途 (コンピューター ビジョン、信号処理、自然言語処理など) に拡張できます。

ディープラーニングのワークフローには、データの前処理やラベル付け、AI モデルの構築、モデルの判断の可視化、AI システムのシミュレーション、ターゲットへの展開があります。

データ準備から展開に至るまでのディープラーニングのワークフローの可視化。

ディープラーニング用のデータ

ディープラーニングには膨大な量の良質なデータが必要です。データストアを使用すると、大きすぎて一度ではメモリに収まらないデータコレクションを簡単に管理できます。ローコードアプリと組み込み関数を使用して、データ品質を向上させ、グラウンド トゥルースに自動的にラベル付けできます。

ディープラーニング モデルの設計

 

ゼロから構築するネットワーク

  • わずか数行のコードで、CNN、LSTM、GAN、およびトランスフォーマーなどのディープラーニング ネットワークを作成できます。
  • 複数の GPU、クラウド、クラスターを使用して学習を高速化します。ディープラーニング モデルの学習において、MATLAB は GPU を使用します (利用可能な場合)。それらの GPU を明示的にプログラムする必要はありません。
わずか数行の MATLAB コードで、LSTM ディープラーニング ネットワークを作成します。

プログラムによる LSTM ネットワークの作成。

事前学習済みのネットワーク

  • 事前学習済みのモデルをタスクに直接適用したり、転移学習を実行して適応させたり、特徴抽出器として使用します。
  • MATLAB Deep Learning Model Hub から、カテゴリごとの最新モデルにアクセスし、事前学習済みのモデルをコマンドラインで読み込みます。
  • インポート関数を使用して TensorFlow™、PyTorch®、ONNX™ モデルを MATLAB ネットワークに変換します。学習済みのネットワークと学習していないネットワークを Deep Learning Toolbox から TensorFlow および ONNX にエクスポートします。
  • 再学習用に層の置き換えと学習率の調整を行う組み込み関数を使用して、転移学習の実行を簡素化します。

ディープラーニングのタスクに適応させる事前学習済みのモデルの入手。

ローコードアプリ

  • ディープ ネットワーク デザイナー アプリを使用すると、ネットワークを対話的に設計、分析、変更することができます。また、事前学習済みのネットワークを Deep Learning Toolbox、TensorFlow、PyTorch からインポートすることもできます。
  • 実験マネージャーアプリでは、複数のディープラーニングの実験の管理、学習パラメーターの追跡、結果の解析、およびさまざまな実験のコードの比較を行うことができます。
CNN ディープラーニング ネットワークの層を示すディープ ネットワーク デザイナー アプリのスクリーンショット。

ディープ ネットワーク デザイナーを使用してディープラーニング ネットワークをグラフィカルに設計、分析、変更。

エンジニアのためのディープラーニング

説明可能で堅牢性の高いディープラーニング

MATLAB を使用すると、ディープラーニング モデルおよびモデルによる予測結果を可視化して検証できます。

  • ディープラーニング モデルの学習プロセスを監視し、パフォーマンス メトリクスをプロットします。
  • Grad-CAM、オクルージョン感度、LIME、ディープドリームなどの説明可能性の手法を適用して、ディープラーニング モデルの出力を可視化します。これにより、ディープラーニング モデルがどのように予測を行うかを把握できます。
  • 堅牢性の高いディープラーニング モデルの学習を行い、モデルの堅牢性を検証します。ネットワークのロバスト特性の検証、ネットワークの出力境界の計算、敵対的サンプルの発見、分布外のデータの検出、および業界標準への準拠の検証を行うことができます。

システムレベル シミュレーション

Deep Learning Toolbox のブロックを使用して、学習済みのネットワークと Simulink® システムを統合します。これにより、ディープラーニング モデルとシステムの他の部分との統合をテストできます。

ターゲットへの展開

ディープラーニング モデルは、エッジデバイス、組み込みシステム、またはクラウドに展開できます。展開する前に、量子化、射影、または枝刈りを実行することにより、モデルを圧縮できます。