IT is IT.

空想イノベーション

既存のものを活用する転移学習

f:id:itry:20190223161155j:plain
ディープニューラルネットワークで、様々な手法の開発により、より深く、複雑な学習が行えるようになった一方で、GPUマシンが1台や2台あったところで、その膨大な計算量を捌ききるのは至難の業ともいえる。

機械学習において重要なのは、最適化されたネットワークの重みであり、その重みを得るためのステップに、膨大な計算と時間を要することになる。
従って、既に学習済みのネットワークがあれば、わざわざ一から学習する必要がない。

スポンサーリンク
 

例えば、VGGやGoogLeNet、ResNetといった巨大なネットワークは、ImageNetで学習済みのモデルが公開されている。 www.image-net.org 公開済みのモデルは万能なものではないので、ここに、新たに何層か追加してファインチューニングを行うことで、それぞれが目的とする高性能なネットワークを得ることができる。

このように、既に学習済みのネットワークを利用して、新しいタスクの識別に活用することを転移学習と呼ぶ。

色々な畳み込みニューラルネットワーク

f:id:itry:20190223003053j:plain
画像処理に大きな威力を発揮する畳み込みニューラルネットワークは、様々な工夫が加えられたモデルが多数開発されている。

例えば、AlexNetはトロント大学で開発されたもので、2012年のImageNet Large Scale Visual Recognition Challenge(ILSVRC)で圧倒的な精度で優勝している。
AlexNetでは、

  • 畳み込み層
  • プーリング層
  • 畳み込み層
  • プーリング層
  • 畳み込み層
  • 畳み込み層
  • 畳み込み層
  • プーリング層
  • 全結合層

という構造になっている。
畳み込み層とプーリング層の繰り返しを増やすことによって、より深いネットワークのモデルが実現可能となっている。

VGGはオックスフォード大学が開発したもので、2014年のILSVRCで2位の成績を収めている。
VGG16やVGG19(それぞれ16層、19層)と重みがある層によって、いくつかの種類が存在する。

層を深くした場合、計算量が膨大になってしまい、学習が進まなくなってしまう可能性がある。
そこで、1×1や、3×3など、小さなサイズの畳み込みフィルタを差し込んで、計算量そのものを減らす、というアプローチがとられている。

スポンサーリンク
 

GoogLeNetは、その名の通りGoogleのチームが開発したもので、2014年のILSVRCで優勝しているモデルだ。

複数の畳み込み層やプーリング層で構成されるInceptionモジュールというブロックを構成することで、並列計算を行いやすくするような工夫がとられている。
しかし、それでも層があまりにも深くなりすぎると、性能の低下や、誤差が逆伝播しにくいといった問題が起きることが判明した。
そこで、Skip connectionと呼ばれる、層を飛び越えた結合を加えることで、この問題を回避している。
Skip connectionを導入したネットワークをResNet(Residual Network)呼んでいる。

Skip connectionの特徴としては、

  • 層が深くなっても、層を飛び越える部分は伝播しやすい
  • 様々な形のネットワークのアンサンブル学習になっている

となっており、100層以上のネットワークが構築されることもあるという。

データがなければ作ってしまえばよい、という発想

画像認識を行ううえで、いわゆる一般的なものを認識させるために、実は重大な課題が存在している。

  • 同じ物体でも角度が異なると画像としては見え方が異なってみえる
  • 同じ物体でも拡大縮小によって画像としては見え方が異なってみえる
  • 同じ物体でも光の当たり方(影など)によって画像としては見え方が異なってみえる

これらを正しく同一のものと認識するためには、全ての状態が網羅したデータが存在すればよい。
しかし現実問題としては、あらゆるシチュエーションの画像を網羅的に用意することは非常に困難を極める。

スポンサーリンク
 

そこで、そういったデータを収集するのではなく、手元にあるデータから擬似的に別のデータを生成する、データ拡張(data augmentation)という手法をとることができる。
データの水増しとも言われるこの方法は、次のようなデータを作り出すことができる。

  • 上下左右の位置をずらす
  • 上下左右を反転する
  • 拡大・縮小をおこなう
  • 回転する
  • 斜めにゆがめる
  • 一部を切り取る
  • コンストラストを変える

データ拡張は画像認識を行う学習では、必須の処理といってよい。

画像処理の締めは全結合層で!はもう古い?!

f:id:itry:20190220230629j:plain
畳み込み層やプーリング層を複数組み合わせることで、複雑な処理が行えるようになるが、これらの層をいくら組み合わせても、出力は画像でしかない。
たとえば、犬や猫などの画像を与えたときに欲しい解は、画像ではなく犬や猫であることを識別できたことである。
つまり、出力を1次元化する必要がある。

畳み込みニューラルネットワークでは、畳み込みやプーリングを繰り返した後、通常のニューラルネットワーク同様、隠れ層、出力層へと繋いでいく
この、最後の隠れ層、出力層に繋ぐ箇所を、全結合層と呼ぶ。

これは、畳み込み層、プーリング層での特徴の抽出精度が高いためだ。

スポンサーリンク
 

しかし、最近では、全結合層を使用しない手法が増えている。
1つの特徴マップに1つのクラスを対応させる、というGlobal Average Pooling(GAP)と呼ばれる手法だ。
具体的には、各チャンネルの画素の平均を出力する、という手法だ。

画像を処理する色々なプーリング

決められた演算を行い、画像サイズを決められたサイズに従って小さくする処理を、プーリングと呼ぶ。 プーリングは、畳み込みニューラルネットワークと違い、フィルターを必要としない分、簡単な仕組みになっている。
また、決められた計算を行うだけなので、パラメータも存在しない。
ダウンサイジングサブサンプリングとも呼ばれている。

スポンサーリンク
 

プーリングには大きく2つあり、maxプーリング、avgプーリングがある。

maxプーリング

2×2ごとに画像(特徴マップの最大値を抽出していくことで、新しくダウンサンプリングした画像を得る手法。
畳み込みニューラルネットワーク同様、位置のズレに対して強いという特性がある。

avgプーリング

最大値を抽出するmaxプーリングに対し、平均値を求めるのがavgプーリングである。

畳み込みニューラルネットワークの「畳み込み」とは何なのか

f:id:itry:20190217213659j:plain
そもそも畳み込みとは、カーネルと呼ばれるフィルタを用いて画像から特徴を抽出する操作をさす。
特徴の抽出は、フィルタを画像の左上から順に重ねあわせていき、画像とフィルタの値をそれぞれ掛け合わせたものの総和をとった値を求めていく、という処理を行っていく方式で行われる。
このフィルタは、通常、画像よりも小さいサイズのものが用いられ、1枚の画像に対し、いくつものフィルタを用意することになる。
フィルタの数値によって、得られる特徴が変わることから、通常のニューラルネットワークにおける重みと同等の働きをするもの、と考えてよい。

スポンサーリンク
 

畳み込みの処理によって、移動不変性の獲得も可能になる。
これは、多少のずれでも人間の目には同じ物体として認識できるが、通常のニューラルネットワークでは入力の位置がずれることで全く別物と 認識してしまうが、畳み込みでは、同じものと認識できる移動不変性、つまり位置のずれに強いモデルができることを意味している。

また、畳み込みによって得られる2次元データを、特徴マップと呼ぶ。

畳み込みニューラルネットワークの基本的な考え方

f:id:itry:20190216234955j:plain
畳み込みニューラルネットワークの最初のモデルが考案されたのは1982年とされている。
畳み込みニューラルネットワークは、主に画像を処理するためのネットワークと言ってもよいが、構造もそれにあわせ、人間がもつ視覚野の神経細胞の2つの動きを真似する、という考えに基づいている。
その2つの神経細胞とは、

  • 単純型細胞(S細胞)
  • 複雑型細胞(C細胞)

である。 単純型細胞は、画像の濃淡パターンを検出するために用いられ、複雑型細胞は、物体の位置が変わっても同一の物体であるとみなすために用いられる働きをする。
この2つの細胞の動きを最初に組み込んだモデルは、福島邦彦氏によって考案された、ネオコグニトロンと呼ばれるモデルだ。
ネオコグニトロンでは、 S細胞層とC細胞層を交互に組み合わせた構造で、多層構造になっている。
手書き文字認識やその他のパターン認識の課題に用いられており、畳み込みニューラルネットワークの発想の元となっている。
また、微分(勾配消失法)を用いない add-if silentと呼ばれる学習方法を採用している。
層の構造は、以下のような動きをするニューロンで構成されている。

  • 入力層
  • コントラスト抽出
  • エッジ抽出
  • 高次特徴抽出
  • 認識細胞層

スポンサーリンク
 

また1998年にはヤン・ルンカンによってLeNetと呼ばれる畳み込みニューラルネットワークモデルが考案された。
LeNetは、畳み込み層とプーリング層(サブサンプリング層)を交互に組み合わせた構造になっている。

  • 入力層
  • 特徴マップ(畳み込み層)
  • 特徴マップ(プーリング層)
  • 特徴マップ(畳み込み層)
  • 特徴マップ(プーリング層)
  • 特徴マップ(畳み込み層)
  • 特徴マップ(プーリング層)
  •   :
  • レイヤー(全結合)
  • 出力(ソフトマックス)

名称こそ違うが、C細胞層=畳み込み層、S細胞層=プーリング層にそれぞれ対応している。
なお、LeNetでは、誤差逆伝播法を用いて学習を行なっている。

現在の多くの畳み込みニューラルネットワークでは、誤差逆伝播法を用いた手法が主流となっている。