CNN(畳み込みニューラルネットワーク)について。
目次
AI・ディープラーニングの全体像
- 人工知能
- 機械学習
- ディープラーニングの基本・応用
- ディープラーニングの研究
- AIプロジェクト
- AI社会実装に伴う法律・倫理
畳み込みニューラルネットワーク(CNN)
CNNの概要
- 「畳み込みニューラルネットワーク(Convolutional Neural Network;CNN)」
- 入力層には画像を入力、学習結果をより下流層に入力していくことを繰り返し、層が進むに従い、より高度な特徴が学習可能となる
- 入力層に近い層(浅い層):単純かつ具体的な特徴を抽出
中段になる層:より高次な特徴を抽出
出力層に近い層(深い層):複雑かつ抽象的な特徴を学習し、出力 - 入力画像の畳み込み→プーリング→特徴の畳み込み→プーリング→全結合層
CNNと画像認識技術
- 画像認識コンペ「ILSVRC(ImageNet Large Scale Visual Recognition Challenge)」
- 画像に映る「クラス(ラベル)」を正しく予想するために競争し、「誤差率」の低さを競う
- 2012年、トロント大学のヒントン教授のチームが開発した「AlexNet」が勝利
※前年の誤差率を10%以上改善→第3次AIブームの火付け役に - 2015年、「ResNet」が誤差率5%よりも低い値に
- ILSVRC→大規模オープンデータベース「ImageNet」からの画像データを用いる
- 画像に写る物体に「ラベル(クラス名)」が付与される
- ImageNetの画像データのボリューム→クラスの種類2万以上、画像数は1400万枚以上
- 「WorldNet」→概念辞書を参照し、上記語・下位語の概念を取り入れている
- 「MNIST」→手書き文字(0-9)(クラス数10個、データ数数万枚ほど)
- 「Fashion MNIST」→グレースケール画像(クラス数10個、データ数数万枚ほど)
- 「CIFAR-10」→カラー画像(クラス数10個、データ数数万枚ほど)
CNNの仕組み
CNNのレイヤー:「畳み込み層」→「プーリング層」→「全結合層」
畳み込み層
- 役割→「入力画像から特徴を抽出すること」
- 画像に「フィルタ(カーネル)」という小さな画像をかける→「畳み込み演算」
- 画像認識に必要な特徴表現を含む「特徴マップ」が、新しい画像データとして生成される
- 特徴マップが次の層への入力データとして渡され、より高度な特徴量を抽出するための材料として使われる
- フィルタの画素値は抽出したい特徴に合わせて設定され、経験則に基づいた目的別のフィルタが使われる
- 「パディング」→画像の縮小を防ぎたい場合に、画像の周りを事前に0値で埋める
→画像の端にある特徴を抽出しやすくなる利点もある - CNNでは、CNN以外と異なり、領域ごとにフィルタを小刻みにずらして(ストライド)特徴量抽出を行う
→隣接する特徴の相関と、空間的な情報を維持できる
- フィルタを画像の一部に重ね、重なる部分で画素同士の値で畳み込み演算を行う
- 演算結果を新しい領域の上にマッピング(写像)しちえく
- ウィンドウを少しずつ一定幅でスライドしていきつつ、画像全体をカバーするまで写像変換を繰り返す
畳み込み層における特徴量抽出のルール
- 画像サイズとともに、RGBという色次元がある
- カラー画像の色次元3、グレースケール画像の色次元1
- フィルタの色次元の数は、入力画像の色次元と同じものにする必要あり
- 特徴マップの深さ(奥行の次元)は、その演算に使用されたフィルタの数と等しい
プーリング層
- 役割→「重要な特徴を残しつつ画像の情報量を圧縮すること」
- 特徴量を凝縮させるプーリング層と畳み込み層とを交互に使うことで特徴を検出できる
- 物体の些細な位置変化により認識結果が変わらないようにする
- 過学習を抑制する
- 計算コストを下げる
- 「最大プーリング(Max Pooling)」→画像の小領域ごとに最大の画素値だけ残す
- 「平均プーリング(Average Pooling)」→小領域中の平均値だけ残す
全結合層
- 「全結合層(Fully Connected Layers)」
- 役割→「分類の結果を出力する」
- 畳み込み層やプーリング層から出力される画像形式のデータを全結合層に入力する前に、一次元ベクトルにフラット化する必要あり