ニューラルネットワーク / ディープラーニング
ニューラルネットワーク [Neural Network] / ディープラーニング [Deep Learning]
ニューラルネットワーク、ディープラーニングに関してのマイノートです。今後も随時追加予定です。
目次 [Contents]
- 概要 [Overview]
- パーセプトロン [Perceptron]
(階層型ニューラルネットワーク、フィードフォワード型構造) - 畳み込みニューラルネットワーク [CNN :Convolutional Neural Network]
<階層型ニューラルネットワーク、フィードフォワード型構造>- 畳み込み [convolution] 処理について
- プーリング [pooling] 処理について
- THE ALL CONVOLUTIONAL NETWORK
- CNN と 一般物体認識
- 局所特徴と大域特徴
- 一般物体認識を学習した CNN と転移学習
- タイル型畳み込み [Tiled convolution]
(プーリング層における移動不変性 [location invariant]の拡張) - 逆畳み込みネットワーク [deconvolutional network]
(CNN の可視化) - VGG-16
- VGG-19
- ResNet(残差ネットワーク)
- 【外部リンク】Convolutional neural network architecture for geometric matching
- リカレントニューラルネット [RNN : Recursive Neural Network]
<階層型ニューラルネットワーク> - 連想記憶ネットワーク(ホップフィールドネットワーク [Hopfield network] )(相互結合型ニューラルネットワーク [mutual connected neural networks]))
- Sequence-to-Sequence モデル(seq2seq)
- RNN Encoder-Decoder
- 【外部リンク】Attention
- 【外部リンク】Memory Networks [MemN]
- グラフ畳み込みネットワーク
- 【外部リンク】生成モデル [generative model]
- Neural-ODE
- Neural Processes
- ニューラルネットワーク、ディープラーニングによる物体検出 [object detection]
- R-CNN
- Faster R-CNN
- SSD [Single Shot muitibox Detecter](単発検出器)
- YOLO
- YOLO v1
- YOLO v2
- Optical Flow
- 【外部リンク】ニューラルネットワーク、ディープラーニングによる自然言語処理(NLP)
- 参考文献
概要 [Overview]
全体 MAP図
ニューラルネットワークの概要
ニューラルネットワークの主動作
ニューラルネットワーク、より広義には機械学習は、
大きく分けて以下の2つの問題設定&解決のための手法に分けることが出来る。
① 回帰問題の為の手法。(単回帰分析、重回帰分析、等)
② (クラスの)分類問題の為の手法(SVM、k-NN、ロジスティクス回帰、等)
活性化関数 [activate functions]
修正中...
sigmoid, tanh, softsign
活性化関数のグラフ1
活性化関数の内、sigmoid, tanh, softsign 関数の図
Relu, Relu6, softplus, ELU
活性化関数のグラフ2
活性化関数の内、Relu, Relu6, softplus, ELU 関数の図 ReLu関数(ランプ関数)は、x=0 にて非連続で微分不可能な関数であるが、その他の領域では微分可能なので、ニューラルネットワークにおいては、微分可能な活性化関数として取り扱われることが多い。
そして、この ReLu は、勾配が一定なので、ディープネットワークにおける学習アルゴリズムにおいて発生する、勾配損失問題 [vanishing gradient problem] に対応することが出来るのが最大の利点である。(後述)
ReLu 関数による勾配消失問題 [vanishing gradient problem] への対応と softmax 関数
勾配消失問題 [vanishing gradient problem] とは、ニューラルネットワークの層が深くなるにつれて、誤差逆伝播法等の学習の際に損失関数の勾配(傾き)が 0 に近くなり、入力層に近い層で入出力誤差が消失してしまい、うまく学習できなくなるような問題である。
この問題に対応するために開発されたのが、ReLU [rectified linear unit] や MaxOut という活性化関数である。
これらの活性化関数では、勾配(傾き)が一定なので、誤差消失問題を起こさない。従って、深い層のネットワークでも学習が可能となり、現在多くのニューラルネットワークで採用されている。
但し、これらの活性化関数を通して出力される値は、先に示したグラフのように負の値が出てきたりと、そのままでは扱いづらい欠点が存在する。
従って、softmax 関数を通じて出力を確率に変換するようにする。 この softmax 関数の式は以下のように与えられる。
参考サイト : 画像処理とか機械学習とか / Softmaxって何をしてるの?
【Memo】softmax 関数と統計力学での分配関数の繋がり
ニューラルネットワークの softmax 関数の形は、
統計力学で言う所のカノニカルアンサンブルでの sub system の微視的状態を与える確率の式
の形に対応している。
この確率の式の分母を統計力学では分配関数
といい重要な意味を持つが、これは、エントロピー最大化に繋がる話しであり、
Helmholtz の自由エネルギーは、この分配関数 Z を用いて、
で表現できるけど、これを使えば、カノニカルアンサンブルのエントロピー S が
と書ける。これはまさに、情報理論でいうとこのシャノンの情報量に対応している。
学習方法の分類
教師あり学習 [supervised learning] と教師なし学習 [Unsupervised learning]
バッチ学習 [batch processing] とオンライン学習 [online learning]
強化学習 [reinforcement learning]
転移学習 [transfer learning]
ニューラルネットワークにおける損失関数(評価関数、誤差関数)
損失関数(評価関数、誤差関数)は、モデルの出力と目的値(真の値、教師データ)との差(いいえ変えれば、誤差、距離)を計測する関数であり、モデルの学習に適用されるものである。
ここで、ニューラルネットワーク、より広義には機械学習は、
大きく分けて以下の2つの問題設定&解決のための手法に分けることが出来た。
① 回帰問題の為の手法。(単回帰分析、重回帰分析、等)
② (クラスの)分類問題の為の手法(SVM、k-NN、ロジスティクス回帰、等)
従って、損失関数も同様にして、回帰問題の為の損失関数と、分類問題の為の損失関数が存在することになる。
① 回帰問題の為の損失関数(評価関数、誤差関数)
[拡大]
- L2 正則化の損失関数は、目的値への距離の2乗で表されるので、下に凸な2次関数の形状をしており、
目的値(この場合 0)の近くで急なカーブを描く。
この特性が、損失関数と扱う際に優れているのが特徴である。 - L1 正則化の損失関数は、目的値への距離の絶対値で表される損失関数である。
その為、目的値(この場合 0)からのズレが大きくなっても(ズレの大きなに関わらず)、その傾き(勾配)は一定である。
その為、L1 正則化は L2 正則化よりも、外れ値にうまく対応するケースが多いのが特徴である。
又、目的値(この場合 0)にて、関数が連続でないために、対応するアルゴリズムがうまく収束しないケースが存在することに注意が必要となる。
② 分類問題の為の損失関数(評価関数、誤差関数)
クラスの分類問題の為の損失関数は、現在の学習結果が与えられたデータに対してどの程度「良い感じなのか」を定量化するために使われる。(誤差逆伝播法時の計算等)
分類問題でのニューラルネットワークの最終結果は、例えば2クラスの分類問題の場合、正解は -1 or 1(又は 0 or 1)の負例と正例となる。従って、損失関数による損失は、連続な値ではなく sign 化したもの 、即ち正解ラベルと、ニューラルネットワークの出力の符号が一致しているならば損失は 0(=分類が成功)であり、符号が一致していなければ損失は 1 となる。
パーセプトロン [Perceptron]
(階層型ニューラルネットワーク、フィードフォワード型構造)
単純パーセプトロン [Simple perceptron]
単層パーセプトロンのアーキテクチャ [architecture]
修正中...
誤り訂正学習 [error correction learning rule](パーセプトロンの学習規則 [perceptron learing rule] )
<教師あり学習、オンライン学習>
使用例
最急降下法 [gradient descent method] による学習(重みの更新)
<教師あり学習、パッチ学習>
使用例
確率的勾配降下法 [stochastic gradient descent method]
使用例
多層パーセプトロン [ MLP : Multilayer perceptron]
多層パーセプトロンのアーキテクチャ [architecture]
【参考 URL】softmax関数について
https://mathtrain.jp/softmax
http://s0sem0y.hatenablog.com/entry/2016/11/30/012350
最急降下法 [gradient descent method] による学習(重みの更新)
<教師あり学習、パッチ学習>
確率的勾配降下法 [stochastic gradient descent method]
<教師あり学習、オンライン学習>
誤差逆伝播法(バックプロパゲーション)[Backpropagation]
<教師あり学習、バッチ学習 or オンライン学習>
パーセプトロンによる論理演算
パーセプトロンの収束定理
パーセプトロンの学習は、 線形分離可能な問題であれば、有限回の学習の繰り返しにより収束する ことが証明されている。
このことをパーセプトロンの収束定理と呼ぶ。
畳み込みニューラルネットワーク [CNN :Convolutional Neural Network]
<階層型ニューラルネットワーク、フィードフォワード型構造>
畳み込み [convolution] 処理について
畳み込みの数学的な一般的な定義
畳み込みニューラルネットワークにおける畳み込み
畳み込みニューラルネットワークにおける畳み込み処理の具体的な例(画像データとそのフィルタ処理)
参考サイト
より一般化した畳み込み層のアーキテクチャの元での定式化
受容野の観点から見た、畳み込み層
プーリング [pooling] 処理について
平均プーリング [average pooling]
最大プーリング [max pooling]
Lp プーリング [Lp pooling]
THE ALL CONVOLUTIONAL NETWORK
論文URL : https://arxiv.org/abs/1412.6806
Keras での実装コード : https://github.com/MateLabs/All-Conv-Keras
従来の CNN に対して、Pooling 層を使わず Conv 層のみの構成(Pooing層 → 複数の小さい Conv 層に置き換わる)で同等 or それ以上のレベルの識別性能を持つことを主張したモデル。
◎ ResNet(残差ネットワーク)
ResNet(残差ネットワーク)は、2015年度の ImageNet コンペティションと COCO セグメンテーションで第1位で優勝したモデルであるが、ただ単に、コンペで高い正解率を叩き出しただけではなく、その残差構造自体に本質的で重要な意味を持つ。
一般的に、画像分類のタスクにおいて、CNNベースのニューラルネットワークの層の深さは重要な要素であり、基本的には、層の深さを深くするほど、CNN でより抽象的な構造を捉えることが出来るために、識別性能をより高めることが出来る。
※ VGG や GoogLeNet などは、この観点から、層の深さをそれぞれ 16層(VGG-16)、19層(VGG-19)、22層(GoogLeNet)にして識別性能を高めている。
しかしながら、層の深さを深くしすぎると、下図の結果のように、逆に識別性能が低下してしまうことが経験的・実験的に知られている。
※ 下図ではまた、学習データセットにおいても層が深いほうが正解率が低いので、層を深くしすぎたために過学習が発生して、識別性能が低下したというわけではないことを示している点に注意。
層を深くすると性能が低下する理由としては、勾配消失問題や勾配爆発問題が考えられる。
この勾配消失問題や勾配爆発問題は、batch norm などの正則化手法や dropout で防止することが出来るが、層を深くしすぎるこれらの手法も有効ではなくなってくる。
ResNet では、このような非常に深い層のネットワークに対して、"shortcut connections" の構造を加えることにより、このような非常に深いネットワークにおいても、勾配消失問題や勾配爆発問題を防止することが出来るようにし、結果として、非常に深いネットワークでの高い識別性能を実現する。
☆ ResNet のアーキテクチャ
以下の図は、従来のCNNベースのアーキテクチャと、ResNet のアーキテクチャの基本構造を比較を示した図である。
従来の CNNベースの構造と比較して、ResNet では、赤線で示した "sortcut connection" の構造が追加されている。
この sortcut connection は、入力データ x を、従来のネットワークでの学習対象である出力関数 ところまで、恒等写像でスキップする。
この際に、スキップされた入力データ x と出力関数 との差分を、
残差関数
として定義し、この残差関数 をネットワークの学習対象とする。
(※ この式は、入力データ x と出力関数 の次元が等しい条件を前提としていることに注意。)
そして、この学習された残差関数 と入力データ x を元に、最終的な出力関数
を決定する。
この "sortcut connection" の経路では、従来の何層もある経路(上図の青線)での各層での誤差逆伝播の積み重ねによる勾配消失の影響を受けないので、
勾配消失問題を防ぐことが出来る。
より詳細には、出力関数 は、その微分が1に非常に近い値となるために、誤差逆伝播法による勾配計算時に、他の層をスキップ出来る。
上記では、入力データ x と出力関数 の次元が等しい条件のもとでの式となっていたが、これら入力データ x と出力関数の次元が異なる場合は、以下のような2つの方法で対応する。
線形変換 W_s で入力データ x からの次元を一致させた上で、スキップして加算する。
即ち、shortcut connection は恒等写像のまま()であるが、増加した次元分の要素を、ゼロパディングで埋める。
※ この2番目の手法では、パラメーター数は増加しない。
この ResNet の基本構造を元に、VGG と同じように、conv 層を 34 層まで積み重ねていったものが、以下に示している ResNet-34 である。
※ 下図(左):VGG-19
※ 下図(中央):VGG-19 をベースに、shortcut connection なしの34層ネットワーク(ResNetとの性能の比較用)
※ 下図(右):ResNet-34
※ 実曲線は、入出力次元が一致する shortcut connections
※ 点曲線は、入出力次元が一致しない shortcut connections
以下の表は、このネットワーク構成の、詳細なパラメーターを示した図である。
この ResNet-34 は、3.6 億回のFLOPs(積乗演算)で、これは、VGG-19 のわずか 18% 程度になっていることに注目。
☆ ResNet の識別性能の実験結果
左図は、ResNet との性能差を公平に比較出来るように、VGGベースで、ResNet と同じパラメーター数、深さ、幅、計算可能コストを持ち、shortcut connection なしにしたネットワーク(plain network)での、層の深さを変えたときの識別性能を示した図である。
※ データセットは、ImageNet
※ 細い線は、学習データセットでの誤識別率。
※ 太い線は、検証データセットでの誤識別率
従来の shortcut connection なしのネットワーク(plain network)では、層の深さを深くしすぎると、逆に、識別性能は低下しているが、shortcut connection を導入した ResNet では、層の深さを深くすると、識別性能が上昇していることが見てとれる。
※ この図では、34 層まで深くしているが、更に深くしていっても(例えば、1202層)、同様の傾向は成り立つ。
- 【参考サイト】
- 【元論文】[1512.03385] Deep Residual Learning for Image Recognition
- 【論文翻訳(非公開)】GitHub/Yagami360/MachineLearning-Papers_Survey/papers/Deep_Residual_Learning_for_Image_Recognition/ResNet.md
- Residual Network(ResNet)の理解とチューニングのベストプラクティス - DeepAge
- ResNetの論文を読んだ - kumilog.net
- ResNetの仕組み
- ディープラーニング ResNet のヒミツ - Bridge over troubled Techs.
回帰結合ニューラルネット [RNN : Recursive Neural Network]
<階層型ニューラルネットワーク>
リカレントニューラルネットワークのアーキテクチャの種類
隠れ層間で回帰構造をもつネットワーク
通時的誤差逆伝搬法 [BPTT : back-propagation through time]
通時的誤差逆伝搬法によるパラメータの更新式(誤差関数が最小2乗誤差)
長・短期記憶(LSTM [long short-term memory])モデル
CEC [constant error carousel]
重み衝突 [weight conflict] と入力ゲート [input gate]、出力ゲート [output gate]
忘却ゲート [forget gate]
覗き穴結合 [peephole connections]
LSTM モデルの定式化
GRU [gated recurrent unit]
双方向 RNN [Bidirectional RNN]
RNN Encoder-Decoder (Seqenence-to-sequence models)
Attention (Seqenence-to-sequence models)
LSTM を使用した場合の Attention
■ グラフ畳み込みネットワーク
グラフ構造からなるニューラルネットワークを構築するにあたっては、通常のニューラルネットワークのように畳み込み演算を定義できる必要がある。
しかしながら、グラフ構造ではニューラルネットワークにおける画像の畳み込みのように、隣接する点の関係性が一定でないために、通常の畳み込みはうまく機能しない。
そこで、グラフ構造における畳み込み演算を構築する必要があるのだが、その方法には大きく分けて以下の2つの種類がある。
グラフフーリエ変換を用いたグラフ畳み込み
グラフフーリエ変換を用いないグラフ畳み込み
- 「Relational Graph Convolutional Network」
→ グラフフーリエ変換とは異なる単純な手法でのグラフ畳み込み
- 「Relational Graph Convolutional Network」
◎ グラフフーリエ変換を用いたグラフ畳み込み(Spectral graph convolution)
ここでは、グラフフーリエ変換を用いたグラフ畳み込みについて見ていく。
まず前提として、通常の畳み込み演算とフーリエ変換には、以下のような関係がある。
フーリエ級数展開やフーリエ変換は、正規直交基底としての固有ベクトル(=固有関数)で固有値展開したものである。
ここで、このフーリエ変換の固有値&固有ベクトルは、ラプラシアン ∇2 の固有値と固有ベクトルである。
これら2つの観点から、グラフ構造における畳み込み演算を、以下の観点から構築する。
- ラプラシアンに対応したグラフラプラシアンで置き換え、
- そのグラフラプラシアンの固有値と固有ベクトルで、グラフ上のフーリエ変換(=グラフフーリエ変換)を表現し、
- そのグラフフーリエ変換(と逆グラフフーリエ変換)から、グラフ上のグラフ畳み込みを定義する。
グラフラプラシアン L=D−A において、次数行列 D も隣接行列 A も実対称行列なので、グラフラプラシアンも実対称行列である。
従って、直交行列 U を用いて対角化可能であり、以下の関係が成り立つ。
これは、固有方程式
が成り立つことと同値であるので、先のフーリエ変換が、正規直交基底としての固有ベクトルで固有値展開したものであることとの類似により、直交行列 U によるグラフ上の信号 x∈Rn への演算
はグラフフーリエ変換となる。
また、逆グラフフーリエ変換は、
となる。
そして、このグラフフーリエ変換と逆グラフフーリエ変換を用いて、グラフ畳み込みを以下のように定義する。
この式は、パラメーターを θ→λ とすると
と書き直せるので、一般的には、
と表現することが出来る。
このように表現したグラフ畳み込みは、固有ベクトルの計算と固有ベクトルとの積の計算が、データ次元に応じて計算量が膨大になるという問題がある。
そのため、対角化行列 diag(θ) を多項式で近似する方法が提案されている。
※ このチェビシェフ多項式による近似手法が論文 「Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering」 で提案されている手法。
◎ Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering
論文:[1606.09375] Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering
前節で見たように、グラフフーリエ変換を用いたグラフ畳み込みは、以下のように式で表現できる。
このように表現したグラフ畳み込みでは、固有ベクトルの計算と固有ベクトルとの積の計算が、データ次元に応じて計算量が膨大になるという問題がある。
そのため、論文 「Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering」 では、diag(θ) をチェビシェフ多項式で近似する方法が提案されている。
具体的には、対角行列 diag(θ) は以下の多項式で展開することを考える。(※ 正規直交基底としての固有ベクトル(=固有関数)で固有値展開した形)
そして、この展開式の具体的な形として、チェビシェフ多項式での多項式近似を考える。
即ち、
元のグラフ畳み込みの式に代入すると、
これにより、チェビシェフ多項式での近似により、固有ベクトルの積の計算では、データの次元数 nの2乗に比例した計算コスト O(n2) だったものが、チェビシェフ多項式の次数 K のオーダーに依存した計算コストとなり、計算コストが大幅に減少させることが出来る。
◎ Semi-Supervised Classification with Graph Convolutional Networks
前節では、グラフフーリエ変換を用いたグラフ畳み込みの式を、以下の式のようにチェビシェフ多項式で近似した。
論文「Semi-Supervised Classification with Graph Convolutional Networks」 では、このチェビシェフ多項式での近似式において、 K=1 の次数までの近似式を採用する。
即ち、
K=1 までの次数で近似することで、上式のように、グラフラプラシアン L に対して線形なモデルとなり、モデルの表現力は低下してしまうが、非線形部分は、グラフ畳み込みネットワークの多層構造で担保するようにする。
逆に、K=1とすることで、モデルの過学習が抑えられる効果もある。
ここで、上式においては、学習パラメーターは θ0, θ1 の2つになるが、さらなる過学習対策のために、θ = θ0 = −θ1 として、1つのパラメーターでのみ表現出来るようにすると、上式は、
と書き換えられる。
更に、勾配損失問題や勾配発散問題への対策として、以下のような置き換えを行う。
最終的な結論としては、グラフネットワークの各層の出力は、以下の式で計算出来ることになる。
☆ 損失関数
損失関数は、単純に最終的出力 Z と教師データ Y との間のクロスエントロピーで定義される。
即ち、
◎ R-GCN [Relational Graph Convolutional Network](グラフフーリエ変換を用いないグラフ畳み込み)
論文:[1703.06103] Modeling Relational Data with Graph Convolutional Networks
グラフフーリエ変換を用いたグラフ畳み込みでは、グラフ構造は無向グラフに限定され、又、グラフフーリエ変換を行う必要があるため処理が扱いづらく、計算量が多いという問題があった。
R-GCN [Relational Graph Convolutional Network] では、この問題を解決するために、グラフフーリエ変換ではなく、通常の畳み込みのように、線形結合+活性化関数の形でグラフ畳み込みを行えるようにする。但し、グラフ構造は、知識ベースの有向グラフである必要がある。
☆ RGCN でのグラフ畳み込み(グラフフーリエ変換を用いないグラフ畳み込み)
グラフ構造の文脈において、知識ベース [Knowledge Base] とは、グラフの各々の頂点ノード(A, B, ...)が、"A is a B" や "A has a B" の関係性を持つような有向グラフを指す。
このような知識ベースの有向グラフにおいて、R-GCN では、以下のようなグラフ畳み込みを導入する。
※ この計算式は、i 番目の頂点での次の中間層での1つの頂点を決める式であるので、全ての頂点でこの処理を行うことで、次の中間層での全ての頂点が求まり、1回のグラフ畳み込みが行える動作となる。
この畳み込みは、通常の畳み込みのように、重みベクトルとベクトルの線形和+活性化関数の形になっており、扱いやすいメリットがある。
☆ RGCN での損失関数
損失関数は、単純に最終的出力と教師データとの間のクロスエントロピーで定義される。
即ち、
【補足】グラフラプラシアン
グラフラプラシアンは、グラフ構造の接続辺数の情報を持つ次数行列と、各接続頂点番号の情報を持つ隣接行列の差で定義される。即ち、
※ このグラフラプラシアンは、グラフ構造の各頂点へ入力される情報と出力される情報という見方では発散 ∇2 の意味になっており、それ故に、ラプラシアンと名付けられている。
このグラフラプラシアンの固有値と固有ベクトルには、グラフ構造の重要な情報が含まれる。(詳細略)
◎ 参考文献(グラフ畳み込み)
- 【星の本棚】グラフ理論
- 機は熟した!グラフ構造に対するDeep Learning、Graph Convolutionのご紹介 - ABEJA Arts Blog
- グラフ構造を畳み込む -Graph Convolutional Networks- - Qiita
- Graph Convolutional Network 概説
- onvolutional Neural Networks on Graphs with Fast Localized Spectral Filteringを読んだのでメモ - 機械学習とかコンピュータビジョンとか
- SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKSを読んだのでメモ
- [DL Hacks]Semi-Supervised Classification with Graph Convolutional Networks
- グラフ畳み込み再考 - Qiita
- 【元論文】[1606.09375] Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering
- 【元論文】[1703.06103] Modeling Relational Data with Graph Convolutional Networks
■ ニューラルネットワーク, ディープラーニングによる物体検出 [object detection]
[18/05/31] 別記事(コンピュータビジョン - 一般物体検出)に移行予定
◎ SSD [Single Shot muitibox Detector](単発検出器)
☆ モデル(アーキテクチャ)
ネットワークの最初の部分のレイヤーは、画像分類にに使用される標準的なアーキテクチャ(上図では VGG-16)に基づいて構成され、これをベースネットワークという。
このベースネットワークで、特徴量を検出する。(特徴量はより広い領域から抽出)その後のレイヤーは、マルチスケール特徴マップによる多様な物体検出のための補助的な構造であり、主な特徴 [key features] は以下のようになる。
直感的には、
「多層 CNN では、conv 層や pooling 層で、特徴マップがダウンサンプリングされて、後段に行くほど、特徴マップのグリッドサイズが小さくなるが、このことは、各々の層の特徴マップには、色々なサイズの物体を検出出来る情報が含まれていることを意味している。
従って、SSD モデルの後段の特徴マップ(特徴レイヤー)の各グリッドでは、大きな物体の情報。前段では、小さな物体の情報を取得することが出来る。
そして、各グリッドにおける特徴量を使用して、バウンディングボックス(BBOX)のアスペクト比、所属クラス、座標のオフセットを学習させる。」
というのが、基本的なコンセプトである。
「検出のためのマルチスケール特徴マップ」
畳み込み特徴レイヤーを、(途中で打ち切られている)ベースネットワークの最後尾に追加している。
これらのレイヤーは、特徴マップのサイズを小さくさせ(上図)、マルチスケールでの検出の予想を可能にする。(下図)
検出を予想するための畳み込みモデルは、各特徴レイヤーにおいて異なっている。(モデル図の青線元のレイヤー)
(※ YOLO では、対照的に1つのスケールの特徴マップを扱っている)「検出のための、畳み込み予想器」
ベースネットワークの後尾に追加された各特徴レイヤーは、
畳み込みフィルタ(フィルタ行列)の集合を使用して、固定の検出予想の集合を生成可能である。 p 個のチャンネルをもつサイズ m×n の特徴レイヤーに対しての、潜在的なパラメータ予想のための基本要素は、3×3×p の小さなカーネル(カーネル行列)であり、
このカーネルは、予想カテゴリ(所属クラス)の 検出スコア(物体の中心座標が含まれているなら1となるようなスコア)、
又は、デフォルトボックスの座標に関してのオフセット値を生成(算出)する。
又、バウンディングボックスの座標オフセットの出力値は、各特徴マップの位置に対するデフォルトボックスの位置に対して測定される。SSD モデルは、(前述のように)いくつかの特徴レイヤーを、ベースネットワークの最後に追加するが、
これらの特徴レイヤーは、異なるスケールとアスペクト比のデフォルトボックスに対するオフセット値と、それに付随する確信度を予測する。「デフォルトボックスとアスペクト比(デフォルトボックスと回帰によるオフセット予想)」
ネットワークのトップで、複数の特徴マップに関して、各特徴マップのセル(グリッド)とデフォルトボックスの集合を関連付けている。
その対応するセル(グリッド)に対して、各デフォルトボックスの位置が固定されるように、
デフォルトボックスは、畳み込みのやり方で、特徴マップを隙間なく敷き詰め [tile] ている。(下図参照)
各特徴マップのセル(グリッド)において、
検出したい物体が、各 BBOX 内に存在することを示す指標である検出スコア(物体の中心座標が含まれているなら1となる)と、セル中のデフォルトボックスのオフセット値を予想する。
このオフセット値は、具体的には、ある座標位置で k 個のボックスそれぞれに対し、
c 個のクラスの検出スコア(所属クラスの確率)と、元のデフォルトボックスに対するオフセット値 (x,y,w,h) の4つ(x,yの中心座標2つ、幅w、高さh)を計算する。
その結果、特徴マップに適用されるフィルタは、合計 (c+4)×k 個となり、m×n の特徴マップに対して、(c+4)×k×mn 個の出力が生成されることになる。幾つかの特徴マップで、異なるデフォルトボックスの形状を利用することにより、
出力されるボックス(出力特徴マップ)の形状を、効率よく離散化 [discretize] することが出来る。「デフォルトボックスとアスペクト比の選択(デフォルトボックスと回帰によるオフセット予想)の詳細」
異なるスケールの物体検出を取り扱うために、元画像を異なるサイズで処理し、それらの結果を結合する手法を提案している研究も存在する。
しかしながら、この SSD のように、単一のネットワークの中の幾つかの異なるレイヤーの特徴マップを利用することで、 全ての物体のスケールについて、同じパラメータを共有しながら、同様の効果を得ることがことが出来る。
(更に、こちらの手法では同一の単一のネットワークの使用するため、処理が軽くなるメリットがある。)SSD では、物体検出に下位と上位の特徴マップを使用する。
以下の図は、SSD のフレームワークで使用している2つの典型的な特徴マップ(8×8、4×4) を示している。
(実践的には、より多くの特徴マップを小さい計算コストで使用出来る。)
又、SSD では、特定の特徴マップが、特定のスケールの物体に対応するように学習させるために、 デフォルトボックスを ”敷き詰めて” 設計されている。
より詳細には、デフォルトボックスを中心とする提案領域は、物体のスケール値、中心座標、高さ、幅が合っていないことがあるため、スケール値、幅、高さ、中心座標に回帰する畳み込み層を追加している。(BBOXの形状回帰)
具体的には、今、m 個の特徴マップを予想に使用するケースにおいて、
各特徴マップ k についてのデフォルトボックスのスケール は、以下のようにして計算される。
この式より、最下位のレイヤーのスケール 0.2 と最上位のレイヤーのスケールは 0.9 となり、
中間レイヤーのスケールは、上式に従って規則的な間隔で設定される。
又、デフォルトボックスのアスペクト比に関しては、 の異なるアスペクト比を設定する。
このスケールとアスペクト比により、各デフォルトボックスに対して、
幅 と、高さ が設定される。
「特徴マップとデフォルトボックスについて」
SSD が訓練中に必要とするのは、
入力画像(上図の(a))と、各物体それぞれの正解ボックス(デフォルトボックスの内、各物体が収まるボックス。上図の赤枠と青枠)のみである。各層での畳み込み処理のやり方 [in a convolutional fashion] において、
いくつかの特徴マップでの各位置(中心座標)において、異なるアスペクト比デフォルトボックスの少数の集合(上記例では4個)を、異なるスケールの特徴マップ内(例えば、上記の (b) の 8×8 の特徴マップ内、(c) の4×4の特徴マップ内)で評価する。そして、これらのデフォルトボックスそれぞれにおいて、
形状のオフセット loc : と、全ての物体カテゴリー に関する確信度 conf を予想する。- w : デフォルトボックスの幅、h : デフォルトの高さ、cx,cy : デフォルトボックスの左上座標
訓練時には、最初にこれらのデフォルトボックスと正解 [ground truth] ボックスのマッチ度を図る。
上図の例では、2つのデフォルトボックスの内、1つ目はネコ、2つ目はイヌとマッチさせているが、
この組み合わせは正 [positive] として扱われ、残りは負 [negative] として扱われる。モデルの誤差(損失関数)は、
位置特定誤差 [localization loss] (例えば、Smooth L1)と、確信度誤差 [confidence loss] (例えば、softmax)との間の重み付き和 [weighted sum] である。
☆ 訓練(学習)アルゴリズム
「マッチング戦略」
訓練では、どのデフォルトボックスが正解ボックスとなるのか決定する必要があり、
その結果を元にネットワークを学習させる。
各正解ボックスは、座標位置、アスペクト比、スケール値が異なる幾つかのデフォルトボックスから選択するが、
これらデフォルトボックスに対して、jaccard overlap (下図)の最良値(最もエリアが重複している)で、
各正解ボックスのマッチ度(エリアの重複度)を算出することになる。
この際、ベストマッチした(最もエリアが重複している)デフォルトボックスだけでなく、
jaccard overlap が 0.5 の値よりも大きいデフォルトボックスを正解ボックスと判定させ、学習させる。
これにより、正解ボックスに複数に重なり合っているデフォルトボックスについて、高いスコア予想が可能になる。「損失関数」
SSD の損失関数は、位置特定誤差(loc)と確信度誤差(conf)の重み付き和であり、
(SSD の学習は、複数の物体カテゴリーを扱うことを考慮して行われるため2つの線形和をとる。)以下の式で与えられる。
ここで、上式の位置特定誤差 は、
予想されたボックス(l)と正解ボックス(g)の間の Smooth L1 誤差(関数)であり、以下の式で与えられる。
又、確信度誤差 は、
所属クラスのカテゴリ(c)に対する softmax cross entropy 誤差(関数)であり、以下の式で与えられる。
ハードネガティブマイニング [hard negative mining]
マッチング工程の後、有効なデフォルトボックスの数が多い場合多くのデフォルトボックスは、負 [negative] に判定され、正と負の訓練データの比率が不均衡になってしまう。
(=典型的な画像の多くの面積は、背景によって占められるが、これを有効なデフォルトボックスとして採用すると、
背景しか出力しないネットワークでも、ある程度 loss 値を下げることが出来てしまい、結果として検出能力の低いモデルになってしまう。)この問題に対する対策として、
負に判定される全訓練データを使用する代わりに、これらの(訓練データとしての)デフォルトボックスに対しての誤差関数が高い順(降順)にソートし、負と正の比率が、最大でも3:1になるように、誤差関数の値が上位のもののみを選択する。
これにより、より速くモデルが最適化され、又、安定した学習に繋がる。データ拡張 [data augumentation]
モデルを様々な物体の大きさと形状に対して、よりロバスト(堅牢)にするために、
各訓練画像は、以下のオプションをランダムに選択し、(画像中の領域の)サンプリングを行う。- 元の入力画像全体を使用する。
- 物体画像との最小の jaccard overlap が、0.1 , 0.3 , 0.5 , 0.7 , 0.9 となるように、画像中の領域(サンプルパッチ)をサンプリングする。
- 画像中の領域(サンプルパッチ)をランダムにサンプリングする。
この各画像中の領域(サンプルパッチ)のサイズは、元の画像サイズの 0.1倍 ~ 1.0倍で、アスペクト比は 1/2 ~ 1.0 倍である。
但し、サンプルパッチの中に正解ボックスの中心座標が存在する場合は、正解ボックスの重複部分はそのままにする。
(サイズやアスペクト比を元の画像から変更しない)- 元の入力画像全体を使用する。
☆ 物体検出(推論)フェイズ
top-k filtering
クラス所属の確信度が上位 k 個のもののみを抽出する。
non-maximum suppression アルゴリズム
推論されたデータに対し、バウンディングボックスの重複防止のために non-maximum suppression アルゴリズムを適用する。
参考サイト:
https://meideru.com/archives/353
参考サイト
www.slideshare.net
www.slideshare.net
参考文献
- 作者: Ian Goodfellow,Yoshua Bengio,Aaron Courville,岩澤有祐,鈴木雅大,中山浩太郎,松尾豊,味曽野雅史,黒滝紘生,保住純,野中尚輝,河野慎,冨山翔司,角田貴大
- 出版社/メーカー: KADOKAWA
- 発売日: 2018/03/07
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 作者: 平井有三
- 出版社/メーカー: 森北出版
- 発売日: 2012/07/31
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 7回
- この商品を含むブログ (5件) を見る
[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)
- 作者: Sebastian Raschka,Vahid Mirjalili,福島真太朗,株式会社クイープ
- 出版社/メーカー: インプレス
- 発売日: 2018/03/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
深層学習 Deep Learning (監修:人工知能学会)
- 作者: 麻生英樹,安田宗樹,前田新一,岡野原大輔,岡谷貴之,久保陽太郎,ボレガラダヌシカ,人工知能学会,神嶌敏弘
- 出版社/メーカー: 近代科学社
- 発売日: 2015/11/05
- メディア: 単行本
- この商品を含むブログ (2件) を見る
詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~
- 作者: 巣籠悠輔
- 出版社/メーカー: マイナビ出版
- 発売日: 2017/05/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
実践 Deep Learning ―PythonとTensorFlowで学ぶ次世代の機械学習アルゴリズム (オライリー・ジャパン)
- 作者: Nikhil Buduma,太田満久,藤原秀平,牧野聡
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/04/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
複素ニューラルネットワーク(第2版) 2016年 06 月号 [雑誌]
- 作者: 廣瀬明
- 出版社/メーカー: サイエンス社
- 発売日: 2016/06/21
- メディア: 雑誌
- この商品を含むブログを見る
TensorFlow機械学習クックブック Pythonベースの活用レシピ60+ (impress top gear)
- 作者: Nick McClure,株式会社クイープ
- 出版社/メーカー: インプレス
- 発売日: 2017/08/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る