Main Content

MATLAB による深層学習

深層学習とは

"深層学習" とは、人間が生まれながらに身に付けている、経験から学ぶという行動をするようにコンピューターに学習させる機械学習の一分野です。深層学習はニューラル ネットワークを使用して、有用な特徴表現をデータから直接学習します。ニューラル ネットワークとは、複数の非線形処理層を組み合わせであり、生物の神経系からヒントを得た並列実行するシンプルな要素を使用します。深層学習モデルは、オブジェクトの分類において最先端の精度を達成でき、しばしば人間の能力を超えることがあります。

Deep Learning Toolbox™ には、深層ニューラル ネットワークの層の作成と相互結合を行うためのシンプルな MATLAB® コマンドが用意されています。例と事前学習済みのネットワークを利用すると、高度なコンピューター ビジョン アルゴリズムやニューラル ネットワークの知識がなくても、MATLAB を使用して簡単に深層学習を行うことができます。

実際の深層学習の各種手法を無料でお試しいただくには、ディープ ラーニング入門をご覧ください。深層学習をすぐに開始するには、10 行の MATLAB コードによる深層学習の例を参照してください。

転移学習を使用した短時間での深層学習の開始

転移学習は、深層学習アプリケーションでよく使用されています。事前学習済みのネットワークを取得して、新しいタスクの学習の開始点として使用できます。転移学習によってネットワークを微調整する方が、ゼロから学習させるよりもはるかに簡単で時間がかかりません。少ない数の学習イメージを使用して、ネットワークに新しいタスクを高速に学習させることができます。転移学習の利点は、事前学習済みのネットワークが既に特徴を多数学習しており、これらの特徴を他のさまざまな類似タスクに適用できることです。対話形式での例については、ディープ ネットワーク デザイナーを使用した転移学習を参照してください。プログラムによる例については、新しいイメージを分類するための深層学習ネットワークの学習を参照してください。

事前学習済みのネットワークを使用するか、新しい深いネットワークを作成するか、この表のシナリオを検討して選択してください。

 転移学習に事前学習済みのネットワークを使用新しい深いネットワークを作成
学習データラベル付けされた数百個から数千個のデータ (小規模)ラベル付けされた数千枚個から数百万個のデータ
計算計算量が中程度 (GPU はオプション)計算量が多い (速度のために GPU 必須)
学習時間数秒から数分実際の問題で数日から数週間
モデルの精度良い (事前学習済みのモデルによる)高い (ただし、小規模なデータセットには過適合する場合がある)

さまざまな事前学習済みのネットワークを検討するには、ディープ ネットワーク デザイナーを使用します。

深層学習のワークフロー

深層学習の応用分野の詳細については、深層学習の応用を参照してください。

分野ワークフローの例詳細

イメージの分類、回帰、および処理

Image data example

イメージ データのタスクに深層学習を適用します。

たとえば、深層学習を使用してイメージの分類や回帰を行います。

転移学習入門

事前学習済みの深層ニューラル ネットワーク

分類用のシンプルな深層学習ネットワークの作成

回帰用の畳み込みニューラル ネットワークの学習

イメージの深層学習向け前処理

シーケンスおよび時系列

Time series data example

シーケンスや時系列のタスクに深層学習を適用します。

たとえば、深層学習を使用してシーケンスの分類や時系列の予測を行います。

深層学習を使用したシーケンスの分類

深層学習を使用した時系列予測

コンピューター ビジョン

Semantic segmentation data example

コンピューター ビジョン アプリケーションに深層学習を適用します。

たとえば、深層学習を使用してセマンティック セグメンテーションやオブジェクト検出を行います。

深層学習を使用したセマンティック セグメンテーション入門 (Computer Vision Toolbox)

認識、オブジェクト検出、およびセマンティック セグメンテーション (Computer Vision Toolbox)

オーディオ処理

Audio data example

オーディオ処理や音声処理のアプリケーションに深層学習を適用します。

たとえば、深層学習を使用して、話者認識、音声コマンド認識、および音響シーン認識を行います。

深層学習を使用したオーディオ処理

Introduction to Deep Learning for Audio Applications (Audio Toolbox)

自動運転

Automated driving data example

自動運転アプリケーションに深層学習を適用します。

たとえば、深層学習を使用して、車両検出やセマンティック セグメンテーションを行います。

深層学習を使用した自動運転

深層学習車両検出器の学習

信号処理

Signal processing data example

信号処理アプリケーションに深層学習を適用します。

たとえば、深層学習を使用して、波形セグメンテーション、信号分類、および音声信号のノイズ除去を行います。

深層学習を使用した信号処理

ウェーブレット解析と深層学習を使用した時系列の分類

ワイヤレス通信

Wireless communications data example

ワイヤレス通信システムに深層学習を適用します。

たとえば、深層学習を使用して、位置測位、スペクトル センシング、自己符号化器の設計、およびデジタル プリディストーション (DPD) を行います。

深層学習を使用した無線通信

Spectrum Sensing with Deep Learning to Identify 5G and LTE Signals

Three-Dimensional Indoor Positioning with 802.11az Fingerprinting and Deep Learning (WLAN Toolbox)

強化学習

Reinforcement learning data example

未知の動的環境とやり取りし、深層ニューラル ネットワーク エージェントの学習を行います。

たとえば、強化学習を使用してポリシーに学習させ、リソース割り当て、ロボティクス、自律システムといった複雑なアプリケーションのコントローラーや意思決定アルゴリズムを実装します。

深層ニューラル ネットワークを使用した強化学習

金融工学

Computational finance data example

金融のワークフローに深層学習を適用します。

たとえば、金融商品の価格設定、取引、リスク管理などのアプリケーションに深層学習を使用します。

深層学習を使用した金融工学

Compare Deep Learning Networks for Credit Default Prediction

LIDAR 処理

Lidar processing data example

LIDAR 点群データの処理に深層学習アルゴリズムを適用します。

たとえば、深層学習を使用して、整理された 3 次元 LIDAR 点群データのセマンティック セグメンテーションやオブジェクト検出を行います。

深層学習を使用した LIDAR 処理

Aerial Lidar Semantic Segmentation Using PointNet++ Deep Learning

PointPillars 深層学習を使用した 3 次元 LIDAR オブジェクトの検出

テキスト分析

Text analytics data example

テキスト分析アプリケーションに深層学習アルゴリズムを適用します。

たとえば、深層学習を使用して、テキスト分類、言語翻訳、およびテキスト生成を行います。

深層学習を使用したテキスト分析

深層学習を使用したテキスト データの分類

予知保全

Predictive maintenance data example

予知保全アプリケーションに深層学習を適用します。

たとえば、深層学習を使用して、故障検出や残存耐用期間の推定を行います。

深層学習を使用した予知保全

深層学習を使用した化学的プロセスの故障検出

深層学習アプリ

アプリを使用して、データの処理、ネットワークの可視化と学習、実験の追跡、およびネットワークの量子化を対話的に行います。

グラウンド トゥルース データにラベルを付けるアプリを使用して、学習を行う前にデータを処理できます。ラベル付けアプリの選択に関する詳細については、グラウンド トゥルース データにラベルを付けるためのアプリの選択を参照してください。

名前説明詳細
ディープ ネットワーク デザイナー

Deep Network Designer

深層学習ネットワークの構築、可視化、編集、および学習を行います。

ディープ ネットワーク デザイナーを使用した転移学習

ディープ ネットワーク デザイナーを使用して時系列予測をネットワークに学習させる

実験マネージャー

Experiment Manager

複数の初期状態でネットワークに学習させて結果を比較する深層学習実験を作成します。

分類用の深層学習実験の作成

回帰用の深層学習実験の作成

ディープ ネットワーク量子化器

Deep Network Quantizer

畳み込み層の重み、バイアス、および活性化を、8 ビットにスケーリングされた整数データ型に量子化することで、深層ニューラル ネットワークのメモリ要件を削減します。

深層ニュートラル ネットワークの量子化

強化学習デザイナー (Reinforcement Learning Toolbox)

Reinforcement Learning Designer

強化学習エージェントの設計、学習、シミュレーションを行います。Design and Train Agent Using Reinforcement Learning Designer (Reinforcement Learning Toolbox)
イメージ ラベラー (Computer Vision Toolbox)

Image Labeler

イメージ コレクションに含まれるグラウンド トゥルース データにラベルを付けます。

イメージ ラベラー入門 (Computer Vision Toolbox)

ビデオ ラベラー (Computer Vision Toolbox)

Video Labeler

ビデオやイメージ シーケンスに含まれるグラウンド トゥルース データ、またはカスタム データ ソース リーダーから取得したグラウンド トゥルース データにラベルを付けます。

ビデオ ラベラー入門 (Computer Vision Toolbox)

グラウンド トゥルース ラベラー (Automated Driving Toolbox)

Ground Truth Labeler

複数のビデオ、イメージ シーケンス、または LIDAR 点群に含まれるグラウンド トゥルース データにラベルを付けます。

Get Started with the Ground Truth Labeler (Automated Driving Toolbox)

LIDAR ラベラー (Lidar Toolbox)

Lidar Labeler

点群または点群シーケンスに含まれるオブジェクトにラベルを付けます。このアプリは、PLY、PCAP、LAS、LAZ、ROS、PCD のファイルから点群データを読み取ります。

Get Started with the Lidar Labeler (Lidar Toolbox)

信号ラベラー (Signal Processing Toolbox)

Signal Labeler

機械学習アプリケーションおよび深層学習アプリケーションで分析または使用する信号にラベルを付けます。

信号ラベラー アプリの使用 (Signal Processing Toolbox)

事前学習済みのネットワークから抽出された特徴を使用した分類器の学習

特徴抽出では、学習に時間や手間をかけずに事前学習済みのネットワークの能力を活用できます。特徴抽出は、最も早く深層学習を使用できる方法と言えます。事前学習済みのネットワークから学習済みの特徴を抽出し、これらの特徴をサポート ベクター マシン (SVM — Statistics and Machine Learning Toolbox™ が必要) などの分類器の学習に使用することができます。たとえば、alexnet を使用して学習させた SVM が、学習セットと検証セットで 90% を超える精度を達成できる場合、それ以上の精度を実現するために転移学習を使用して微調整することに労力に見合う価値はないかもしれません。小規模なデータセットで微調整を行うと、過適合のリスクも生じます。SVM の適用によって十分な精度を達成できない場合は、精度を向上させる微調整を行うだけの価値があります。

例については、事前学習済みのネットワークを使用したイメージの特徴の抽出を参照してください。

CPU、GPU、並列、およびクラウドでのビッグ データを使用した深層学習

深層ネットワークの学習は計算量が多いため、計算に何時間もかかる可能性があります。しかし、ニューラル ネットワークは本質的に並列アルゴリズムです。Parallel Computing Toolbox™ を使用し、高性能の GPU やコンピューター クラスターで並列実行することで、この並列性の利点を活かすことができます。クラウドまたは GPU を使用した深層学習の並列実行の詳細については、Scale Up Deep Learning in Parallel, on GPUs, and in the Cloudを参照してください。

Accelerating training in the cloud with Parallel Computing Toolbox.

MATLAB® のデータストアは、大きすぎて一度にメモリに収まらないデータの集合を処理および表現する便利な方法です。大規模なデータ セットを使用した深層学習層の詳細については、ビッグ データを使用した深層学習を参照してください。

Simulink を使用した深層学習

Deep Learning Toolbox™ に含まれている Deep Neural Networks ブロック ライブラリのブロックを使用するか、Computer Vision Toolbox™ に含まれている Analysis & Enhancement ブロック ライブラリの Deep Learning Object Detector ブロックを使用して、Simulink® モデルの深層学習機能を実装します。

詳細については、Simulink を使用した深層学習を参照してください。

ブロック説明

Image Classifier

学習済み深層学習ニューラル ネットワークを使用したデータの分類

Predict

学習済み深層学習ニューラル ネットワークを使用した応答の予測

Stateful Classify

学習済み深層学習再帰型ニューラル ネットワークを使用したデータの分類

Stateful Predict

学習済み再帰型ニューラル ネットワークを使用した応答の予測

Deep Learning Object Detector (Computer Vision Toolbox)

学習済み深層学習オブジェクト検出器を使用したオブジェクトの検出

深層学習の解釈可能性

深層学習ネットワークが特定の判断をする理由は必ずしも明確ではないため、多くの場合、このネットワークは "ブラック ボックス" で表されます。解釈可能性の手法を使用することで、ネットワークの動作を人間が解釈できる出力に変換できます。さらに、この解釈可能な出力を使用すると、ネットワークの予測に関する質問に答えることができます。

Deep Learning Toolbox には、ネットワークの動作の調査と理解に役立つ深層学習の可視化手段がいくつか用意されています。たとえば、gradCAMocclusionSensitivity、および imageLIME などがあります。詳細については、Deep Learning Visualization Methodsを参照してください。

Deep learning interpretability and visualization methods applied to an image of a dog.

深層学習のカスタマイズ

さまざまな方法で深層学習モデルの学習とカスタマイズを行うことができます。たとえば、ネットワークを構築するために、組み込みの層を使用する方法や、カスタム層を定義する方法があります。また、ネットワークに学習させるために、組み込みの学習関数 trainNetwork を使用する方法や、深層学習モデルを関数として定義してカスタム学習ループを使用する方法があります。どの手法を使用したらよいかについては、次の表を参考にしてください。

手法ユース ケース詳細
組み込みの学習と層ほとんどの深層学習タスクに適しています。

カスタム層タスクに必要な層が Deep Learning Toolbox に用意されていない場合、カスタム層を作成できます。
カスタム学習ループ詳細なカスタマイズが必要な場合は、カスタム学習ループを使用してネットワークの構築と学習を行うことができます。

詳細については、MATLAB による深層学習モデルの学習を参照してください。

深層学習のインポートとエクスポート

TensorFlow™-Keras、TensorFlow 2、ONNX™ (Open Neural Network Exchange) モデル形式、および Caffe から、ネットワークとネットワーク アーキテクチャをインポートできます。学習済みのネットワークを ONNX モデル形式でエクスポートすることもできます。

インポート関数

外部の深層学習プラットフォームとモデルの形式ネットワークとしてのモデルのインポート層グラフとしてのモデルのインポート
ONNX モデル形式のネットワークimportONNXNetworkimportONNXLayers
SavedModel 形式の TensorFlow ネットワークimportTensorFlowNetworkimportTensorFlowLayers
HDF5 形式または JSON 形式の TensorFlow-Keras ネットワークimportKerasNetworkimportKerasLayers
.prototxt ファイルのアーキテクチャと .caffemodel ファイルの重みを使用する Caffe ネットワークimportCaffeNetworkimportCaffeLayers

関数 importTensorFlowNetwork および関数 importTensorFlowLayers は、関数 importKerasNetwork および関数 importKerasLayers よりも推奨されます。

  • 関数 importTensorFlowNetwork および関数 importTensorFlowLayers は TensorFlow 2 をサポートします。サポートされる TensorFlow のバージョンの詳細についてはLimitationsを参照してください。TensorFlow 1 から TensorFlow 2 に移行する利点の詳細については、https://www.tensorflow.org/guide/migrateを参照してください。

  • 関数 importTensorFlowNetwork と関数 importTensorFlowLayers は SavedModel 形式をサポートしますが、importKerasNetworkimportKerasLayers は HDF5 形式をサポートします。TensorFlow は、SavedModel モデル形式を推奨します。ネットワークを MATLAB にインポートする前に、TensorFlow ネットワークを SavedModel 形式に変換することを検討してください。

  • 関数 importTensorFlowNetwork と関数 importTensorFlowLayers は、カスタム TensorFlow 層をインポートするとき、またはソフトウェアが TensorFlow 層を同等の組み込み MATLAB 層に変換できないときに、カスタム層を自動的に生成できます。例については、Import TensorFlow Network with Autogenerated Custom Layersを参照してください。

関数 importONNXNetwork と関数 importONNXLayers は、ソフトウェアが ONNX 演算子を同等の組み込み MATLAB 層に変換できないときに、カスタム層を生成することもできます。例については、ONNX ネットワークのインポートとカスタム層の自動生成を参照してください。まれなケースとして、importONNXNetwork および importONNXLayers が ONNX モデルを層にインポートできないときは、importONNXFunction を使用してモデルを関数としてインポートできます。ONNX インポート関数を選択する方法の詳細については、事前学習済みの ONNX ネットワークをインポートする関数の選択を参照してください。

ONNX を中間形式として使用することで、TensorFlow、PyTorch、Caffe2、Microsoft® Cognitive Toolkit (CNTK)、Core ML、Apache MXNet™ など、ONNX モデルのエクスポートまたはインポートをサポートしている他の深層学習フレームワークと相互運用できます。関数 exportONNXNetwork を使用して、学習済みの Deep Learning Toolbox ネットワークまたはネットワーク層のグラフを ONNX モデル形式にエクスポートします。

関連するトピック