畳み込みニューラルネットワーク
畳み込みニューラルネットワーク
ディープラーニングでは、画像認識や音声認識、自然言語処理の分野で研究が進められているようですが、画像認識においてはCNN(Convolutional Neural Network)が高い画像認識率を達成しているようです。
今回のゴールを達成する上で必ず必要になると思われますので、こちらについても調べてみました。
CNNの構造
CNNの構造については以下のサイトが図入りで分かりやすいです。
CNN(畳み込みニューラルネットワーク)の仕組み
畳み込み
畳み込みとは元の画像から特徴点を抽出るする処理のこと
入力画像が5x5、畳み込みフィルタが3x3とした場合
まずは左上(グレーになっている個所)に注目し、
入力値とフィルタ値の掛け算を行って、すべて合算して、
特徴マップを得ます。
活性化関数がReLU関数の場合、正ならばそのまま、負ならば0がセットされます。
フィルタ適用範囲を1つ右にずらして(ストライド1)、同様に計算を行います。
同様に、右下まで進めていきます。
パディング
畳み込みを行った場合、出力サイズ(特徴マップ)が小さくなってしまう。
これを防ぐための方法としてパディングがある。
ストライド
フィルタのずらし方を変えることも可能
プーリング
画像の情報を一気に捨ててサイズを小さくする
プーリング処理では、特徴マップの"ごく狭い領域"での最大値を取得して新たな特徴マップを作っており、これにより少々画像が変化しても同じ結果となるため画像の変化に強くなるらしい。
最後に
とりあえず、今後必要になりそうな言葉の意味について調べてみました。
従来ではこの特徴マップの作り方を人が設定していたようですが、CNNではコンピュータがこれをが自動抽出してくれます。これはとても画期的な事で、確かにこれを人がやるのはとてもじゃないけど無理と感じました。
今はライブラリを使えば簡単にCNNが使えるようなので、先人に感謝しつつ、学習を進めていきたいと思います。