テクノロジー

2024年11月15日

畳み込みニューラルネットワーク(CNN1)とは

畳込みニューラルネットワークは、Convolutional Neural Network(CNN)と呼ばれます。画像の中の物体を検出し、分類するために使用されます。
いわゆる通常のニューラルネットワークも、人間の神経回路を模倣して作られたアルゴリズムだということは学んできましたが、CNNも人間の視覚をモデルに考案されています。

著者プロフィール

IT分野における教育の先駆者として、多くのエンジニアを育成するプログラミングスクールの運営、Web開発やAI研修を行なっています。幅広いレベルの受講生に対して実践的なスキルを提供。生徒の成長を第一に考え、効果的で魅力的な教育プログラムの設計に情熱を注いでいます。

ゴール

  • 「深層学習スクラッチ 畳み込みニューラルネットワーク1」を解くうえで必要な知識や技術について理解できる

目的

  • 畳込みニューラルネットワークの数学的知識について、理解する
  • 畳込みニューラルネットワークをスクラッチ実装する際のより踏み込んだヒントを掲載しているので、それを基に、スクラッチ実装できるようになる。

どのように学ぶか

「課題」の目次と照らし合わせながら、進めていきましょう。

畳込みニューラルネットワーク(CNN)とは

畳込みニューラルネットワークは、Convolutional Neural Network(CNN)と呼ばれます。画像の中の物体を検出し、分類するために使用されます。

いわゆる通常のNNも、人間の神経回路を模倣して作られたアルゴリズムだということは学んできましたが、CNNも人間の視覚をモデルに考案されています。

人間の視覚処理の流れ

  1. 物体から反射された光が目の奥の網膜に像を投影する
  2. 物体の像全体を一度に把握するのではなく、ある限定された領域ごとに像をスキャンするように認識する。この限定された領域を、「局所受容野」と呼ぶ。
  3. 特定の単純な形状を認識する単純型細胞が、無数に作用しあうことにより、複雑な形状の物体を認識する。
  4. 空間全体を認識する複雑型細胞が、単純型細胞の認識結果の空間的補完を行う

CNNの視覚処理の流れ

人間の視覚処理の流れと同じ流れで、それぞれ下記のような対応関係にある。

単純型細胞:畳み込み層

複雑型細胞:プーリング層

畳込み層・プーリング層を複数個に拡張する働きをするフィルターによって、単純型細胞や複合型細胞は多くの細胞が組み合わさって作用している。

この畳込み層・プーリング層・フィルターについて、次項で詳しく解説していきます。

畳み込みニューラルネットワークの処理イメージ

Image from Gyazo

ImageNet Classification with Deep Convolutional Neural Networks. Alex Krizhevsky, Ilya Sutskever, and Geoffrey E. Hinton. 5page. Figure 2: An illustration of the architecture of our CNN. (最終閲覧日:2022年5月27日)

上記の画像は Alex net と呼ばれる CNN のネットワークで、ImageNet LSVRC-2012というコンペティションで優勝し、DeepLearningは躍進を遂げました。

現在CNNはこの Alex net をベースに工夫が重ねられています。工夫された内容と処理の流れは下記の通りです。

  • 処理は左から右へ進んでいきます。まず、入力(Input)として、MNISTデータ等の手書き文字をネットワークに入力します。画像データなので2次元のデータです。実際には、ミニバッチ分でプラス1次元の3次元データが入力となりますが、単一画像が入力された例を示しています。また、色情報でプラス1次元、4次元データであることもあります。
  • 畳み込み層(Convolution)に通します。カーネル(kernel)と呼ばれる重みと入力(Input)の演算により、次の層への出力を求めます。ここで重要なのは、カーネルは、n×mの2次元であることと、カーネルの数は、複数個あるということです。カーネルを複数個用意することで、様々な違った特徴を画像から抽出できるようになっています。この抽出した特徴をfeature mapと呼びます。
  • プーリング層(Pooling)に通します。プーリングは、得られたfeature mapから代表値を抽出し、位置ずれを補正する役割があります。
  • 畳み込み層とプーリング層を繰り返し通し、その後全結合層(Flatten)という層に入力します。全結合層は、画像データを行データに変換する役割を持ちます。
  • 全結合層により、平滑化されたので、通常のニューラルネットワークに投入することが出来る形となり、ここからは今まで学習してきた通常のニューラルネットワークに処理を通します。例えば、最終的な出力を「男性か女性か」という分類とするなら、出力層は、そのクラス数分だけのノードを持ち、「年齢予測」という回帰とするなら、出力層は、1ノードだけを持ちます。

まとめ

  • CNNは、畳み込み層とプーリング層が組み合わさり処理を行っている

ダイビックのことをもっと知ってみませんか?