主要内容

最新のリリースでは,このページがまだ翻訳されていません。このページの最新版は英語でご覧になれます。

MATLABによる深層学習

深層学習とは

"深層学習"とは,人間が生まれながらに身に付けている,経験から学ぶという行動をするようにコンピューターに学習させる機械学習の一分野です。機械学習アルゴリズムは,事前に定義された方程式をモデルとして使用するのではなく,計算法を使用して情報をデータから直接“学”習します。深層学習は画像認識に特に適しており,顔認識,動き検出などの問題のほか,自動運転,車線検出,歩行者検出,自動駐車などの先進運転者支援技術の多くが抱える問題を解決するために重要です。

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

実際の深層学習の各種手法を無料でお試しいただくには,ディープラーニング入門をご覧ください。

何をしますか吗? 詳細
転移学習を実行してネットワークを自分のデータで微調整する

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

ヒント

通常,新しいタスクを学習するように事前学習済みのネットワークを微調整する方が,新しいネットワークに学習させるよりもはるかに簡単で時間がかかりません。

事前学習済みのネットワークでイメージを分類する 事前学習済みの深層ニューラルネットワーク
分類または回帰用の新しい深層ニューラルネットワークを作成する

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

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

学習または予測用にイメージのサイズ変更,回転,または前処理を行う イメージの深層学習向け前処理
フォルダー名を基に自動で,またはアプリを使用して対話的にイメージデータにラベルを付ける

イメージ分類についてのネットワークの学習

イメージラベラー(计算机视觉工具箱)

シーケンスおよび時系列データ用の深層学習ネットワークを作成する

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

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

イメージ(道路,車歩行者など)の各ピクセルを分類する 深層学習を使用したセマンティックセグメンテーション入門(计算机视觉工具箱)
イメージ内のオブジェクトを検出して認識する 深層学習,セマンティックセグメンテーション,検出(计算机视觉工具箱)
テキストデータを分類する 深層学習を使用したテキストデータの分類
音声認識のためにオーディオデータを分類する 深層学習を使用した音声コマンド認識
ネットワークが学習した特徴を可視化する

GoogLeNetを使用した深梦イメージ

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

CPU、GPU複数のGPUによる学習,デスクトップまたはクラウドのクラスターにおける並列学習,大きすぎてメモリに収まらないデータセットの処理 GPUおよび並列でのビッグデータを使用した深層学習

自動運転などの深層学習の応用分野の詳細は,深層学習の応用を参照してください。

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

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

詳細については,ネットワークアーキテクチャの選択を参照してください。

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

モデルの学習は,ラベル付けされた大規模なデータセットと,通常は複数の畳み込み層を含む多くの層から成るニューラルネットワークアーキテクチャを使用して行います。これらのモデルの学習は計算量が多くなります。通常は,高性能のGPUを使用して学習時間を短縮できます。次の図は,畳み込みニューラルネットワークが多くのイメージから特徴を自動的に学習する層をどのように組み合わせて新しいイメージを分類しているかを示しています。

多くの深層学習アプリケーションは,イメージファイルを使用します。場合によっては,数百万枚のイメージファイルを使用することもあります。深層学習用の多くのイメージファイルに効率的にアクセスするために,MATLABには関数imageDatastoreが用意されています。この関数を使用して,以下が行えます。

  • イメージをバッチ単位で自動的に読み取り,機械学習とコンピュータービジョンアプリケーションの処理を高速化

  • 大きすぎてメモリに収まらないイメージのコレクションからデータをインポート

  • フォルダー名に基づいて自動的にイメージにラベル付け

10行のMATLABコードによる深層学習の例

この例では,わずか10行のMATLABコードを使用して,深層学習でライブWebカメラに映ったオブジェクトを特定する方法を説明します。この例を試して,MATLABでどれほど簡単に深層学習を始めることができるか確認してください。

  1. 次のコマンドを実行して(ダウンロードが必要な場合あり),Webカメラに接続し,事前学習済みのニューラルネットワークを取得します。

    相机=摄像头;%连接摄像头网= alexnet;%加载神经网络

    网络摄像头およびalexnetアドオンをインストールする必要がある場合は,各関数からのメッセージに表示されるリンクから,アドオンエクスプローラーを使用して無料のアドオンをダウンロードできます。または,深度学习工具箱模型AlexNet网络およびMATLAB金宝appUSB摄像头的支持包を参照してください。

    深度学习工具箱模型AlexNet网络をインストールすると,それを使用してイメージを分類できます。100年AlexNetは万枚を超えるイメージで学習している事前学習済みの畳み込みニューラルネットワーク(CNN)で,イメージを1000個のオブジェクトカテゴリ(キーボード,マウス,マグカップ,鉛筆,多くの動物など)に分類できます。

  2. 次のコードを実行し,ライブイメージを表示して分類します。Webカメラをあるオブジェクトに向けると,Webカメラに表示されているオブジェクトのクラスがニューラルネットワークによって判断されて報告されます。イメージの分類は,Ctrl+Cキーを押すまで続行されます。このコードでは,imresize(图像处理工具箱)を使用して,このネットワーク用にイメージをリサイズしています。

    true im =快照(相机);%拍照图像(im);%显示图片im = imresize(im,[227 227]); / /为alexnet调整图片大小标签=分类(净,im);%对图片进行分类标题(char(标签));%显示类标签drawnow结束

    この例では,ネットワークはマグカップを正しく分類しています。身の回りのオブジェクトで実験して,このネットワークの精度を確認してください。

    この例のビデオを見るには,深度学习的11行MATLAB代码を参照してください。

    この例を拡張してクラスの確率スコアを表示する方法については,深層学習を使用したWebカメライメージの分類を参照してください。

    深層学習の次のステップとして,この事前学習済みのネットワークを他のタスクに使用できます。転移学習または特徴抽出を使用して,自分のイメージデータで新しい分類問題を解決してみましょう。例については,転移学習を使用した短時間での深層学習の開始事前学習済みのネットワークから抽出された特徴を使用した分類器の学習を参照してください。他の事前学習済みのネットワークを試してみるには,事前学習済みの深層ニューラルネットワークを参照してください。

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

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

たとえば,数千枚または数百万枚のイメージで学習したネットワークを利用する場合,わずか数百枚のイメージを使って再学習させることで,新しいオブジェクトを検出できるようになります。元の学習データと比べて非常に小規模なデータセットを使用して,事前学習済みのネットワークを効果的に微調整できます。データセットが非常に大規模な場合,転移学習は新しいネットワークが学習する場合に比べて速くならない可能性があります。

転移学習には以下の利点があります。

  • 事前学習済みのネットワークの学習済みの特徴を新しい問題に転移

  • 転移学習は新しいネットワークに学習させるよりも簡単で時間がかからない

  • 学習時間とデータセットのサイズの削減

  • 新しいネットワークをゼロから作成する方法を知る必要なしに深層学習を実行

対話形式での例については,ディープネットワークデザイナーを使用した転移学習を参照してください。

プログラムによる例については,新しいイメージを分類するための深層学習ネットワークの学習を参照してください。

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

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

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

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

ニューラルネットワークは本質的に並列アルゴリズムです。この並列性の利点を活かし,并行计算工具箱™を使用して,学習をマルチコアCPU、グラフィックス処理装置(GPU),および複数のCPUとGPUを備えたコンピューターのクラスターに分散させることができます。

深いネットワークの学習は計算量が非常に多くなります。通常は,高性能のGPUを使用して学習時間を短縮できます。適切なGPUがない場合は,代わりに1つ以上のCPUコアで学習させることができます。畳み込みニューラルネットワークの学習は,1つのGPUまたはCPUで複数のGPUまたはCPUコアで,あるいはクラスターで並列に行えます。GPUまたは並列オプションを使用するには并行计算工具箱が必要です。

大きすぎてメモリに収まらないデータセットを使用して問題を解決するために,複数のコンピューターは必要ありません。関数imageDatastoreを使用して,マシンのクラスターを使用せずに,データのバッチを処理できます。ただし,利用できるクラスターがある場合は,コードをデータリポジトリに入れる方が,大量のデータをあちこちに移動させるよりも有効なことがあります。

深層学習のハードウェアおよびメモリ設定の詳細は,GPUおよび並列でのビッグデータを使用した深層学習を参照してください。

関連するトピック