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

ディープラーニング(深層学習)とは、人間が自然に行うタスクをコンピュータに学習させる機械学習の手法のひとつです。人工知能(AI)の急速な発展を支える技術であり、その進歩により様々な分野への実用化が進んでいます。近年開発の進んでいる自動運転車においてもカギとなっているのは、ディープラーニングです。停止標識を認識したり、電柱と人間を区別したりするのも、ディープラーニングが可能にしている技術と言えます。また、電話、タブレット、テレビ、ハンズフリースピーカーなどの音声認識にも重要な役割を果たしています。近年ディープラーニングが注目を集めているのには理由があります。それはディープラーニングが、従来の技術では不可能だったレベルのパフォーマンスを達成できるようになってきているからです。

ディープラーニングの技術は、人間の神経細胞(ニューロン)の仕組みを模したシステムであるニューラルネットワークがベースになっています。ニューラルネットワークを多層にして用いることで、データに含まれる特徴を段階的により深く学習することが可能になります。多層構造のニューラルネットワークに大量の画像、テキスト、音声データなどを入力することで、コンピュータのモデルはデータに含まれる特徴を各層で自動的に学習していきます。この構造と学習の手法がディープラーニング特有であり、これによりディープラーニングのモデルは極めて高い精度を誇り、時には人間の認識精度を超えることもあります。

なぜディープラーニングが重要か

いかにしてディープラーニングはこれほど優れた成果をあげているのでしょうか。

ひと言で言えば、精度です。ディープラーニングは、かつてない高いレベルの認識精度に到達しています。高い認識精度は、家庭用電気機器の分野ではよりユーザの期待に応えることにつながります。また自動運転車のように安全性が最優先されるべき分野では、認識精度は何より重要な要素であると言えます。ディープラーニングは近年の進歩により、画像認識などのタスクにおいて、人間の認識能力を超えるまでになっています。

ディープラーニングが最初に理論として登場したのは1980年代ですが、近年になって注目を集めるようになったのには2つの理由があります。

  1. ディープラーニングには大量のラベル付けされたデータが必要です。例えば、自動運転車の開発には数百万の静止画像と数千時間の動画が必要となります。これまでは、近年のように大規模なデータを入手することが容易ではなかったため、今ほど高いレベルの認識精度を実現できていませんでした。
  2. ディープラーニングには高度なコンピュータの処理能力が不可欠です。高性能なGPUは、ディープラーニングに効率的な並列構成になっています。GPUをクラスターやクラウドと組み合わせることで、これまでは数週間を要したネットワークの学習時間を、数時間以下にまで短縮することができました。
Panel Navigation

ディープラーニングの応用例

ディープラーニングは自動運転から医療機器まで幅広い分野に活用されています。

自動運転:自動車の研究者はディープラーニングを使い、一時停止標識や信号機のようなものを自動的に認識させています。さらに、歩行者検知にも使われており、事故の減少に役立てられています。

航空宇宙・防衛:ディープラーニングは衛星から物体認識・物体検出を行い、地上の部隊が安全なエリアにいるかどうかを判断するために使われています。

医療研究:がんの研究者はディープラーニングを使い、自動的にがん細胞を検出しています。UCLAの研究チームは、ディープラーニングの学習に必要な高次元のデータセットを作成する高精度な顕微鏡を構築し、正確にがん細胞を見つけ出しています。

産業オートメーション:ディープラーニングは重機の周辺で業務を行う作業者の安全性向上に役立てられています。人や物が機械の危険域内に侵入した場合、これを自動的に検出することができます。

エレクトロニクス (CES):ディープラーニングは、自動の音声翻訳に使われています。例えば、人の声に反応し、人の好みを学ぶことができるホームアシスタントデバイスには、ディープラーニングの技術が活用されています。

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

ディープラーニングの多くの手法に、ニューラルネットワークの構造が使われ、そうした背景からディープラーニングのモデルは、ディープニューラルネットワークとも呼ばれています。

通常「ディープ」という表現は、ニューラルネットワークの隠れ層の数について言及しているものです。従来のニューラルネットワークでは隠れ層はせいぜい2~3程度でしたが、ディープニューラルネットワークは150もの隠れ層を持つこともありえます。

ディープラーニングのモデルは、大規模なラベル付けされたデータとニューラルネットワークの構造を利用して学習を行います。これにより、データから直接特徴量を学習することができ、これまでのように手作業の特徴抽出は必要なくなりました。

Figure 1. Neural networks, which are organized in layers consisting of a set of interconnected nodes. Networks can have tens or hundreds of hidden layers.

図1. ニューラルネットワークは、相互接続する複数のノードからなる多層で構成されます。ネットワークは数十から数百の隠れ層を持つことができます。

ディープニューラルネットワークで最もよく使われているのは、畳み込みニューラルネットワーク(CNNまたはConvNet)というネットワークです。畳み込みニューラルネットワークでは学習された特徴を入力データと畳み込みます。この2次元の畳み込み層が、このアーキテクチャを画像などの2次元データの処理に適したものにしています。

畳み込みニューラルネットワークでは、手作業での特徴抽出は必要ありません。画像分類に使う特徴量を探し出す必要もありません。畳み込みニューラルネットワークが画像から直接特徴抽出を行います。関連する特徴量は事前には学習する必要がありません。大量の画像データによる学習を通して学び取られます。この自動的な特徴抽出の仕組みにより、物体認識などのコンピュータビジョンのタスクにおいてディープラーニングのモデルは高い分類精度を持つことになりました。

Figure 2. Example of a network with many convolutional layers. Filters are applied to each training image at different resolutions, and the output of each convolved image serves as the input to the next layer.

図2. 複数の畳み込み層で構成されるネットワークの例。解像度が異なる学習画像ごとにフィルターが適用され、それぞれの畳み込み画像の出力が次のレイヤーの入力として使用されます。

畳み込みニューラルネットワークは、数十から数百もの隠れ層により、1つの画像に含まれる数々の特徴を学習していきます。層が進むにつれて、より複雑な特徴を学習します。例えば、最初の隠れ層ではエッジ検出など単純な特徴からスタートして、最後の層ではより複雑な特徴、特に認識したい物体の形状の学習へと進んでいきます。

機械学習とディープラーニングの違いとは?

ディープラーニングは機械学習のひとつの特殊な形と言えるものです。通常の機械学習のワークフローは、画像からマニュアルで特徴量を抽出することからスタートします。そして、抽出した特徴量を使って画像内の物体を分類するモデルを作成します。一方、ディープラーニングでは、特徴量は画像から自動的に抽出されます。また、ディープラーニングは「エンドツーエンドな学習」を実行できます。つまり、ネットワークは生の画像データと、分類など処理すべきタスクを与えられ、自動的にその処理方法を学習していきます。

もう一つの大きな違いは、シャローラーニングがデータの増加に対して性能が頭打ちになるのに対して、ディープラーニングではその性能がデータのサイズに対してスケールする点にあります。

ディープラーニングの大きな利点は、データが増えていくにつれ、しばしばその精度を向上させていくことができる点にあると言えるでしょう。

図3. 自動車の分類における、機械学習(左)とディープラーニング(右)のアプローチの比較

一般的な機械学習では、特徴量と分類器は手動で選択されるのに対して、ディープラーニングでは特徴量の抽出とモデリングは自動的に行われます。

機械学習とディープラーニングから最適な手法を選ぶ

機械学習には幅広い手法とモデルがあり、用途や処理するデータサイズ、解決したい課題のタイプに合わせて選択することができます。一方、ディープラーニングを成功させるには、データを高速で処理するためのGPUだけでなく、モデルを学習させるための大量のデータ(数千もの画像)が必要となります。

機械学習かディープラーニングを選ぶときは、まず高性能なGPUと大量のラベル付けされたデータがあるかどうかを確認して下さい。もしどちらかが欠けている場合、ディープラーニングではなく機械学習が適当と言えるでしょう。ディープラーニングは一般的に機械学習より複雑であるため、信頼できる結果を得るには少なくとも数千の画像が必要となります。より高性能なGPUがあれば、そうした大量の画像の学習に必要な時間はさらに短縮していくことができます。

Panel Navigation
Panel Navigation

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

ディープラーニングを使用した物体認識には下記の3つの手法がよく使われています。

ゼロから学習する

ディープネットワークをゼロから学習するには、大量のラベル付けされたデータを集め、特徴量を学習しモデル化するためのネットワークを設計する必要があります。この方法は、新しい分野での応用や、出力するカテゴリ数が多い場合には有効ですが、大量のデータと学習時間が必要であることから、使用頻度はそれほど高くありません。通常、こうしたタイプのネットワークの学習には、数日から数週間といった長い時間を要します。

転移学習

多くのディープラーニングの応用では、学習済みモデルの微調整を行うタイプのアプローチとして、転移学習が利用されています。この転移学習では、AlexNetやGoogLeNetといった既存の学習済みのネットワークに対して、そのネットワークでは事前には学習されていないクラスを含むデータを与えて学習させます。その場合、学習済みのネットワークには若干の修正が必要となりますが、ネットワークの学習後には本来の「1000種類のカテゴリへの分類」の代わりに「犬か猫か」といった新しいタスクを行わせることができるようになります。この手法には、ゼロからネットワークを学習させる場合と比較して必要なデータ数がはるかに少なくて済むという利点があり(何百万ではなく数千の画像)、計算時間は数分から数時間程度に短縮されます。

転移学習では、既存のネットワークに対して切り貼りをしたり、新しいタスクに対して拡張を行ったりすることが必要となるため、ネットワークの内部構造にアクセスするインターフェースが必要となりますが、MATLAB®にはこうした転移学習を手助けするためのツールや関数がいくつも揃っています。

特徴抽出

やや一般的ではありませんが、ディープラーニングのより専門的な手法として、ネットワークを特徴抽出器として使用する方法があります。ネットワークのすべての層は画像からある種の特徴量を抽出する役割を持っているため、我々は推論の任意の段階でこうした特徴量を取り出すことが可能です。このようにして取り出した特徴量は、サポートベクターマシンなどの機械学習モデルへの入力として使用することができます。

ディープラーニングの学習を高速化

ディープラーニングモデルの学習には、数日から数週間といった長い時間を要することがあり、多数の画像を用いる場合にはより適切な計算環境を用意する必要があります。

GPU

GPUを使うことでディープラーニングの演算を大幅に高速化できます。MATLABをGPUと併用することで、ネットワークの学習に必要な時間を減らし、画像分類に必要な学習の時間は数日から数時間に短縮することができます。ディープラーニングの学習においては、MATLABを使うことで、GPUプログラミングの詳細を知らなくてもGPUを使いこなすことができてしまいます。

クラウド

グループでディープラーニングに取り組む場合には、計算環境の調整も必要となることがあります。GPU搭載マシンを提供するクラウドサービスを利用することも選択肢の一つです。MATLABでは、Amazon Web ServiceやMicrosoft Azureをスムーズに用いて学習できる環境を提供しています。Reference ArchitectureではMATLABインストール済みのクラウド環境をすぐに立ち上げることができます。またデスクトップで作業をしながら学習などの計算コストが高い部分だけをクラウドに投げることも可能です。Cloud Center からマシンの選択から起動、セットアップファイルの準備を簡単に行うことができます。
さらにNVIDIA GPU Cloud (NGC)のMATLABコンテナを用いれば、NVIDIA DGX システムまたはサポートされているクラウドサービス プロバイダーのシステムで面倒なセットアップに悩まされることなく高速学習のための環境を構築することができます。

ディープラーニングの推論を高速化

ディープラーニングの適用先である、自動運転や自律型ロボット、製造ラインでの判定では学習したネットワークでの推論にも速度が求められます。MATLABではGPU Coderを用いて作成モデルと利用GPUに合わせて最適化されたコードを生成して高速に推論を行うことができます。

図4. Deep Learning ToolboxはCNNをゼロから学習する場合でも、転移学習に事前学習済みのモデルを使用する場合でもご利用になれます。

ディープラーニングのアプリケーション

手元の問題に迅速にディープラーニングを適用するにあたっては、学習済みのディープニューラルネットワークのモデルを使った転移学習や特徴抽出の手法が使えるでしょう。MATLABユーザが利用可能なモデルとしては、AlexNet、VGG-16、VGG-19 の他に、importCaffeNetworkを使用してインポートされたCaffeモデル (Caffe Model Zooなど) があります。

【製造現場で使える】ディープラーニングによる異常検知


製造現場での外観検査にディープラーニングを使って、異常検知や不良検知を行うことができます。

117044_wl_Rutgers_fig1_wl.jpg

例:ディープラーニングを活用した CT 撮影における放射線被ばくリスクの低減

立命館大学ではCNN回帰をベースとしたCTスキャンシステムにより通常の診断情報を提供しながら、放射線被ばく量を最大95%低減しました。

Detecting Low-Speed Car Crashes

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

MATLABでディープラーニングは簡単になります。MATLABは、大規模なデータセットを管理するツールと機能に併せて、機械学習、ニューラルネットワーク、コンピュータビジョン、自動運転に特化したツールボックスを提供しています。

MATLABを使えばわずか数行のコードでディープラーニングを行うことができます。ディープラーニングの専門家になる必要はありません。素早く始めて、モデルを作成・可視化し、サーバーや組み込みデバイスに展開していきましょう。

ディープラーニングにMATLABを使用したチームが成功しているのには、理由があります。

  1. わずか数行のコードでモデルを作成・可視化
  2. MATLABでは、最小限のコードでディープラーニングのモデルを構築できます。さらにDeep Network Designerのアプリを使えば、マウス操作と簡単な設定によりコードを記述することなくモデルを構築することも可能です。MATLABを使えば、迅速に学習済みモデルを取り込み、可視化し、学習パラメータを調整しつつ、中間結果をデバッグできます。

  3. 専門家になる前にディープラーニングを試す
  4. MATLABであれば、使いながらディープラーニングの専門知識を身につけていくことができます。私たちのほとんどはディープラーニングの講義を受けたことがありません。実践を通して学ぶ必要があります。MATLABは、この分野についての学びを身近で実践的なものにしてくれます。あなたが専門とする業界や専門分野について知識を持たないデータサイエンティストに役目を引き渡す代わりに、その道の専門家が自らディープラーニングを実践していくことができるのです。

  5. 静止画や動画のGround Truthラベリングを自動化
  6. MATLABでは、静止画の場合には物体を対話的にラベル付けすることができ、動画の場合にはラベリングを半自動化することができます。こうしたラベルの情報はディープラーニングのモデルの学習とテストに使われるものですが、こうした対話的で自動化されたアプローチがより短時間でより良い結果を導くことにつながっていきます。

  7. ディープラーニングのワークフローをひとつに統合
  8. MATLABにより、複数の分野に渡るワークフローをひとつに統合することができます。アイデアの検討とプログラミングをひとつの環境で実現することができます。MATLABはディープラーニングに対してのみツールや機能を提供しているのではなく、ディープラーニングのアルゴリズムを適用することになる分野にも同様にツールや機能を提供します。これらの分野は信号処理やコンピュータビジョン、データアナリティクスなど、幅広い領域に広がっています。

MATLABを通して、既存のアプリケーションに得られた成果を統合していくことができます。MATLABを使えば、ディープラーニングのモデルをエンタープライズシステム、クラスター、クラウド、組み込みデバイスに展開していくプロセスを自動化することができます。

ディープラーニングの学習、適用に関するさらに詳しい情報は、MATLABComputer Vision Toolbox™Statistics and Machine Learning Toolbox™Deep Learning Toolbox™, と Automated Driving Toolbox™ でご覧いただけます。

MATLABを使用したディープラーニングの事例もご覧ください。

ディープラーニングについてさらに詳しく