MATLAB による深層学習
深層学習とは
"深層学習" とは、人間が生まれながらに身に付けている、経験から学ぶという行動をするようにコンピューターに学習させる機械学習の一分野です。深層学習はニューラル ネットワークを使用して、有用な特徴表現をデータから直接学習します。ニューラル ネットワークとは、複数の非線形処理層を組み合わせであり、生物の神経系からヒントを得た並列実行するシンプルな要素を使用します。深層学習モデルは、オブジェクトの分類において最先端の精度を達成でき、しばしば人間の能力を超えることがあります。
Deep Learning Toolbox™ には、深層ニューラル ネットワークの層の作成と相互結合を行うためのシンプルな MATLAB® コマンドが用意されています。例と事前学習済みのネットワークを利用すると、高度なコンピューター ビジョン アルゴリズムやニューラル ネットワークの知識がなくても、MATLAB を使用して簡単に深層学習を行うことができます。
実際の深層学習の各種手法を無料でお試しいただくには、ディープ ラーニング入門をご覧ください。深層学習をすぐに開始するには、10 行の MATLAB コードによる深層学習の例を参照してください。
転移学習を使用した短時間での深層学習の開始
転移学習は、深層学習アプリケーションでよく使用されています。事前学習済みのネットワークを取得して、新しいタスクの学習の開始点として使用できます。転移学習によってネットワークを微調整する方が、ゼロから学習させるよりもはるかに簡単で時間がかかりません。少ない数の学習イメージを使用して、ネットワークに新しいタスクを高速に学習させることができます。転移学習の利点は、事前学習済みのネットワークが既に特徴を多数学習しており、これらの特徴を他のさまざまな類似タスクに適用できることです。対話形式での例については、ディープ ネットワーク デザイナーを使用した転移学習を参照してください。プログラムによる例については、新しいイメージを分類するための深層学習ネットワークの学習を参照してください。
事前学習済みのネットワークを使用するか、新しい深いネットワークを作成するか、この表のシナリオを検討して選択してください。
転移学習に事前学習済みのネットワークを使用 | 新しい深いネットワークを作成 | |
---|---|---|
学習データ | ラベル付けされた数百個から数千個のデータ (小規模) | ラベル付けされた数千枚個から数百万個のデータ |
計算 | 計算量が中程度 (GPU はオプション) | 計算量が多い (速度のために GPU 必須) |
学習時間 | 数秒から数分 | 実際の問題で数日から数週間 |
モデルの精度 | 良い (事前学習済みのモデルによる) | 高い (ただし、小規模なデータセットには過適合する場合がある) |
さまざまな事前学習済みのネットワークを検討するには、ディープ ネットワーク デザイナーを使用します。
深層学習のワークフロー
深層学習の応用分野の詳細については、深層学習の応用を参照してください。
分野 | ワークフローの例 | 詳細 | |
---|---|---|---|
イメージの分類、回帰、および処理 |
| イメージ データのタスクに深層学習を適用します。 たとえば、深層学習を使用してイメージの分類や回帰を行います。 | |
シーケンスおよび時系列 |
| シーケンスや時系列のタスクに深層学習を適用します。 たとえば、深層学習を使用してシーケンスの分類や時系列の予測を行います。 | |
コンピューター ビジョン |
| コンピューター ビジョン アプリケーションに深層学習を適用します。 たとえば、深層学習を使用してセマンティック セグメンテーションやオブジェクト検出を行います。 | 深層学習を使用したセマンティック セグメンテーション入門 (Computer Vision Toolbox) 認識、オブジェクト検出、およびセマンティック セグメンテーション (Computer Vision Toolbox) |
オーディオ処理 |
| オーディオ処理や音声処理のアプリケーションに深層学習を適用します。 たとえば、深層学習を使用して、話者認識、音声コマンド認識、および音響シーン認識を行います。 | Introduction to Deep Learning for Audio Applications (Audio Toolbox) |
自動運転 |
| 自動運転アプリケーションに深層学習を適用します。 たとえば、深層学習を使用して、車両検出やセマンティック セグメンテーションを行います。 | |
信号処理 |
| 信号処理アプリケーションに深層学習を適用します。 たとえば、深層学習を使用して、波形セグメンテーション、信号分類、および音声信号のノイズ除去を行います。 | |
ワイヤレス通信 |
| ワイヤレス通信システムに深層学習を適用します。 たとえば、深層学習を使用して、位置測位、スペクトル センシング、自己符号化器の設計、およびデジタル プリディストーション (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) |
強化学習 |
| 未知の動的環境とやり取りし、深層ニューラル ネットワーク エージェントの学習を行います。 たとえば、強化学習を使用してポリシーに学習させ、リソース割り当て、ロボティクス、自律システムといった複雑なアプリケーションのコントローラーや意思決定アルゴリズムを実装します。 | |
金融工学 |
| 金融のワークフローに深層学習を適用します。 たとえば、金融商品の価格設定、取引、リスク管理などのアプリケーションに深層学習を使用します。 | Compare Deep Learning Networks for Credit Default Prediction |
LIDAR 処理 |
| LIDAR 点群データの処理に深層学習アルゴリズムを適用します。 たとえば、深層学習を使用して、整理された 3 次元 LIDAR 点群データのセマンティック セグメンテーションやオブジェクト検出を行います。 | Aerial Lidar Semantic Segmentation Using PointNet++ Deep Learning |
テキスト分析 |
| テキスト分析アプリケーションに深層学習アルゴリズムを適用します。 たとえば、深層学習を使用して、テキスト分類、言語翻訳、およびテキスト生成を行います。 | |
予知保全 |
| 予知保全アプリケーションに深層学習を適用します。 たとえば、深層学習を使用して、故障検出や残存耐用期間の推定を行います。 |
深層学習アプリ
アプリを使用して、データの処理、ネットワークの可視化と学習、実験の追跡、およびネットワークの量子化を対話的に行います。
グラウンド トゥルース データにラベルを付けるアプリを使用して、学習を行う前にデータを処理できます。ラベル付けアプリの選択に関する詳細については、グラウンド トゥルース データにラベルを付けるためのアプリの選択を参照してください。
名前 | 説明 | 詳細 | |
---|---|---|---|
ディープ ネットワーク デザイナー | | 深層学習ネットワークの構築、可視化、編集、および学習を行います。 | |
実験マネージャー | | 複数の初期状態でネットワークに学習させて結果を比較する深層学習実験を作成します。 | |
ディープ ネットワーク量子化器 | | 畳み込み層の重み、バイアス、および活性化を、8 ビットにスケーリングされた整数データ型に量子化することで、深層ニューラル ネットワークのメモリ要件を削減します。 | |
強化学習デザイナー (Reinforcement Learning Toolbox) | | 強化学習エージェントの設計、学習、シミュレーションを行います。 | Design and Train Agent Using Reinforcement Learning Designer (Reinforcement Learning Toolbox) |
イメージ ラベラー (Computer Vision Toolbox) | | イメージ コレクションに含まれるグラウンド トゥルース データにラベルを付けます。 | イメージ ラベラー入門 (Computer Vision Toolbox) |
ビデオ ラベラー (Computer Vision Toolbox) | | ビデオやイメージ シーケンスに含まれるグラウンド トゥルース データ、またはカスタム データ ソース リーダーから取得したグラウンド トゥルース データにラベルを付けます。 | ビデオ ラベラー入門 (Computer Vision Toolbox) |
グラウンド トゥルース ラベラー (Automated Driving Toolbox) | | 複数のビデオ、イメージ シーケンス、または LIDAR 点群に含まれるグラウンド トゥルース データにラベルを付けます。 | Get Started with the Ground Truth Labeler (Automated Driving Toolbox) |
LIDAR ラベラー (Lidar Toolbox) | | 点群または点群シーケンスに含まれるオブジェクトにラベルを付けます。このアプリは、PLY、PCAP、LAS、LAZ、ROS、PCD のファイルから点群データを読み取ります。 | Get Started with the Lidar Labeler (Lidar Toolbox) |
信号ラベラー (Signal Processing Toolbox) | | 機械学習アプリケーションおよび深層学習アプリケーションで分析または使用する信号にラベルを付けます。 | 信号ラベラー アプリの使用 (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を参照してください。
MATLAB® のデータストアは、大きすぎて一度にメモリに収まらないデータの集合を処理および表現する便利な方法です。大規模なデータ セットを使用した深層学習層の詳細については、ビッグ データを使用した深層学習を参照してください。
Simulink を使用した深層学習
Deep Learning Toolbox™ に含まれている Deep Neural Networks ブロック ライブラリのブロックを使用するか、Computer Vision Toolbox™ に含まれている Analysis & Enhancement ブロック ライブラリの Deep Learning Object Detector ブロックを使用して、Simulink® モデルの深層学習機能を実装します。
詳細については、Simulink を使用した深層学習を参照してください。
ブロック | 説明 |
---|---|
学習済み深層学習ニューラル ネットワークを使用したデータの分類 | |
学習済み深層学習ニューラル ネットワークを使用した応答の予測 | |
学習済み深層学習再帰型ニューラル ネットワークを使用したデータの分類 | |
学習済み再帰型ニューラル ネットワークを使用した応答の予測 | |
Deep Learning Object Detector (Computer Vision Toolbox) | 学習済み深層学習オブジェクト検出器を使用したオブジェクトの検出 |
深層学習の解釈可能性
深層学習ネットワークが特定の判断をする理由は必ずしも明確ではないため、多くの場合、このネットワークは "ブラック ボックス" で表されます。解釈可能性の手法を使用することで、ネットワークの動作を人間が解釈できる出力に変換できます。さらに、この解釈可能な出力を使用すると、ネットワークの予測に関する質問に答えることができます。
Deep Learning Toolbox には、ネットワークの動作の調査と理解に役立つ深層学習の可視化手段がいくつか用意されています。たとえば、gradCAM
、occlusionSensitivity
、および imageLIME
などがあります。詳細については、Deep Learning Visualization Methodsを参照してください。
深層学習のカスタマイズ
さまざまな方法で深層学習モデルの学習とカスタマイズを行うことができます。たとえば、ネットワークを構築するために、組み込みの層を使用する方法や、カスタム層を定義する方法があります。また、ネットワークに学習させるために、組み込みの学習関数 trainNetwork
を使用する方法や、深層学習モデルを関数として定義してカスタム学習ループを使用する方法があります。どの手法を使用したらよいかについては、次の表を参考にしてください。
手法 | ユース ケース | 詳細 |
---|---|---|
組み込みの学習と層 | ほとんどの深層学習タスクに適しています。 |
|
カスタム層 | タスクに必要な層が Deep Learning Toolbox に用意されていない場合、カスタム層を作成できます。 | |
カスタム学習ループ | 詳細なカスタマイズが必要な場合は、カスタム学習ループを使用してネットワークの構築と学習を行うことができます。 |
詳細については、MATLAB による深層学習モデルの学習を参照してください。
深層学習のインポートとエクスポート
TensorFlow™-Keras、TensorFlow 2、ONNX™ (Open Neural Network Exchange) モデル形式、および Caffe から、ネットワークとネットワーク アーキテクチャをインポートできます。学習済みのネットワークを ONNX モデル形式でエクスポートすることもできます。
インポート関数
外部の深層学習プラットフォームとモデルの形式 | ネットワークとしてのモデルのインポート | 層グラフとしてのモデルのインポート |
---|---|---|
ONNX モデル形式のネットワーク | importONNXNetwork | importONNXLayers |
SavedModel 形式の TensorFlow ネットワーク | importTensorFlowNetwork | importTensorFlowLayers |
HDF5 形式または JSON 形式の TensorFlow-Keras ネットワーク | importKerasNetwork | importKerasLayers |
.prototxt ファイルのアーキテクチャと .caffemodel ファイルの重みを使用する Caffe ネットワーク | importCaffeNetwork | importCaffeLayers |
関数 importTensorFlowNetwork
および関数 importTensorFlowLayers
は、関数 importKerasNetwork
および関数 importKerasLayers
よりも推奨されます。
関数
importTensorFlowNetwork
および関数importTensorFlowLayers
は TensorFlow 2 をサポートします。サポートされる TensorFlow のバージョンの詳細についてはLimitationsを参照してください。TensorFlow 1 から TensorFlow 2 に移行する利点の詳細については、https://www.tensorflow.org/guide/migrateを参照してください。関数
importTensorFlowNetwork
と関数importTensorFlowLayers
は SavedModel 形式をサポートしますが、importKerasNetwork
とimportKerasLayers
は 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 モデル形式にエクスポートします。