畳み込みニューラル ネットワーク (CNN または ConvNet) とは、データから直接学習するディープラーニングのためのネットワーク アーキテクチャです。
CNN は、オブジェクト、クラス、カテゴリを認識するために画像の中からパターンを検出するのに特に有効です。音声、時系列、信号データを分類する際にも非常に有効な手法です。
例を使用して始める
特徴表現学習、層、分類
CNN は、入力層、出力層、その間にある多くの隠れ層で構成されています。
これらの層には、データに特有の特徴を学習する目的でデータを変更する働きがあります。代表的な層の例としては、畳み込み層、活性化層 (ReLU 層)、プーリング層の 3 つがあります。
- 畳み込み層では、入力画像を一連の畳み込みフィルターに通すことで、それぞれのフィルターが画像の特定の特徴を活性化します。
- 正規化線形ユニット (ReLU) 層 は、負の値をゼロにマッピングし、正の値を維持することで、より速く、より効果的な学習を可能にします。活性化された特徴だけが、次の層に引き継がれることから、これは "活性化" 層と呼ばれることがあります。
- プーリング層 は、非線形ダウンサンプリングを行うことで出力を単純化し、ネットワークが学習する必要のあるパラメーターの数を減らします。
これらの作業が数十から数百の層で繰り返し行われ、層ごとに異なる特徴を識別するように学習していきます。
重みとバイアスの共有
CNN では、従来のニューラル ネットワークとは異なり、重みとバイアスの値が共有され、この値は、特定の層における隠れニューロンすべてで同一になります。
これは、すべての隠れニューロンが、エッジやブロブなどの同じ特徴を、画像の異なる領域で検出していることを意味します。これにより、ネットワークは画像内のオブジェクトの移動に耐性ができます。たとえば、車を認識するように学習されたネットワークは、画像内のどこに車があっても認識することができます。
分類層
多くの層で特徴を学習した後、CNN のアーキテクチャは分類に移行します。
最後から 2 番目の層は全結合層であり、K 次元のベクトルを出力します (K は、予測できるクラスの数)。このベクトルには、分類される画像の各クラスの確率が含まれています。
CNN アーキテクチャの最終層では、分類層を使って最終分類出力を行います。
医用画像処理:CNN は、何千もの病理報告書を調べて、画像中のがん細胞の有無を視覚的に検出することができます。
音声処理:キーワード検出は、マイクを備えたあらゆる機器で使用でき、特定の単語やフレーズが話されたときにそれを検出することができます (たとえば「Hey Siri!」)。CNN は、環境に関わらず他のフレーズを無視して、キーワードを正確に学習・検出することができます。
オブジェクト検出:自動運転では、CNN を用いて標識などの存在を正確に検出し、その出力に基づいて判断を行います。
合成データの生成:敵対的生成ネットワーク (GAN) を用いて、顔認識や自動運転などのディープラーニング アプリケーションに使用する新しい画像を生成することができます。
CNN を使用する場面
画像データなどの複雑なデータが大量にある場合は、CNN の使用を検討してください。また、信号と時系列データは、ネットワーク構造で扱うために前処理されている場合はそのデータで CNN を使用できます。
信号を CNN で扱う場合については、次の例を参照ください。
事前学習済みモデルの検討
エンジニアや科学者が CNN を使用する際、多くの場合、新しいデータセットの特徴の学習と識別に使用できる事前学習済みモデルから始めます。
GoogLeNet、AlexNet、Inception などのモデルは、専門家によって構築された実証済みのアーキテクチャを活用してディープラーニングを探索するための出発点となります。
MATLAB を使用した CNN
MATLAB® と Deep Learning Toolbox™ を併用すると、CNN の設計、学習、デプロイが可能になります。
ネットワークの設計および学習
ディープ ネットワーク デザイナーを使うことで、事前学習済みモデルをインポートしたり、ゼロから新しいモデルを作成したりすることができます。
また、アプリ内で直接ネットワークを学習させることができ、精度、損失、検証メトリクスをプロットして学習状況を監視することができます。
転移学習への事前学習済みモデルの利用
事前学習済みのネットワークを転移学習で微調整することは、一般的にゼロから学習するよりもはるかに高速で簡単です。また、データや計算リソースの使用量も最小限で済みます。転移学習は、ある種の問題から得られた知識を、類似した問題の解決に利用します。事前学習済みのネットワークを用いて、新しい課題を学習します。転移学習のメリットは、事前学習済みネットワークが豊富な特徴を既に学習していることにあります。たとえば、何百万枚もの画像を使って学習したネットワークを利用し、数百枚の画像だけを使って新しいオブジェクト分類のために再学習させることが可能です。
GPU によるハードウェア アクセラレーション
畳み込みニューラル ネットワークは、数百、数千、場合によっては数百万枚の画像を使って学習されます。大量のデータや複雑なネットワーク アーキテクチャを扱う場合は、GPU により、モデルの学習にかかる処理時間を大幅に短縮することができます。
ディープラーニング向け MATLAB
MATLAB によるディープラーニングのサポートについてご紹介します。
チュートリアルおよび例
MATLAB で機械学習を始めましょう。
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)