CNN(畳み込みニューラルネットワーク)のモデルについて。
目次
AI・ディープラーニングの全体像
- 人工知能
- 機械学習
- ディープラーニングの基本・応用
- ディープラーニングの研究
- AIプロジェクト
- AI社会実装に伴う法律・倫理
畳み込みニューラルネットワーク(CNN)の各モデル
CNNのモデル
- ネオコグニトロン
- LeNet
- AlexNet
- VGG
- GoogLeNet
- ResNet
- EfficientNet
ネオコグニトロン
- 「ネオコグニトロン」→1982年、福島邦彦氏に発表したモデル
- CNNの先駆けで、ディープラーニングの原型
- 「特徴抽出を行うS細胞層」と「位置ズレを許容するC細胞層」を交互に重ねた多層構造を持つ神経回路モデル
- S細胞層はCNN畳み込み層、S細胞層はCNNプーリング層に対応
- ネオコグニトロンの学習方法:add-if silent
- CNNの学習方法:誤差逆伝播法、勾配降下法など
- ※LeNetは、ネオコグニトロンの学習方法に誤差逆伝播法を適用したCNNモデル(両者の橋渡し役)
LeNet
- 「LeNet」→1998年、ヤン・ルカンによって提案されたモデル
- CNNの第一号
- 現在のCNNの基本的要素を持っている
- 畳み込み層とプーリング層を交互に重ねたネットワーク
- 文字認識のタスクで高い性能を達成していた
- プーリング層としてサブサンプリングを使用し、データを半分に圧縮していた
AlexNet
- 「AlexNet」→2012年に発表されたモデル
- ILSVRC2012で飛躍的な成績を残した
- ディープラーニングの火付け役となったCNNモデル
- 8層のネットワーク
- ドロップアウト、データ拡張、バッチ正規化などを取り入れている
VGG
- 「VGG」→オックスフォード大学によって開発されたモデル
- 2014年のILSVRCで2位の成績
- シンプルで分かりやすく、汎用的なモデルとして人気が続いた
- AlexNetよりもネットワークを深くしている
- 「VGG-16」→隠れ層(畳み込み層や全結合層)が16個あるモデル
- 「VGG-19」→隠れ層が19個あるモデル
- 小さいフィルタを多数畳み込むほうが特徴をよりよく抽出でき、高い表現力を出せると知られる
GoogLeNet
- 「GoogLeNet」→Google社によって開発されたモデル
- 2014年のILSVRCで1位の成績
- 入力層から出力層まで一直線ではなく、異なるサイズの畳み込み層を並列に並べた「インセプション(Inception)モジュール」を組み合わせた、横に広がりを持つ構造
- 畳み込み処理の後に、全結合層の代わりに、出力直前に、「Global Average Pooling(GAP)」を導入している
- 各特徴マップの全ピクセルにわたる平均を計算、特徴マップを1つのスカラー値にまで圧縮
- ネットワークの中間分岐点では、損失情報のフィードバックを得るための「Auxiliary Classifier」を用いる
- 学習中に追加損失をネットワークにフィードバックすることで、深いネットワークでの勾配消失問題を緩和する効果
- 「インセプションモデル」とも呼ばれる
- 改良版:Inception-V3、Inception-V4、Inception-ResNet
ResNet
- 「ResNet(Residual Network;残差ネットワーク)」→Kaiming Heによって提案されたモデル
- 2015年のILSVRCで1位の成績
- 非常にディープかつ表現力の高いモデル
- 人の認識精度の誤差5%を超えた
- 「スキップ・コネクション(スキップ結合)」により、それまでのCNNの課題(表現力を高めるために層を深くすると勾配消失問題などが生じる)を解決
- ある層への入力を飛び越え、層をまたいで、奥の層へ入力する形式
- 勾配消失を防止しながら層が非常に多いネットワークを実現
- 最大1000層程度まで増やすことができ、前年優勝のGoogLeNetの22層よりも深くすることができた
EfficientNet
- 「EfficientNet」→ICML2019で発表された論文で提案された「モデルスケーリングの法則」
- 「複合係数(Compound Coefficient)」を導入して最適化し、CNNをスケールアップ
- 深さ・広さ・解像度を最適化しながらスケール調整し、小さなモデルで効率よく高い精度を達成
- モデルを小さくできることで、効率化・高速化された
- 既存モデルに比べ、精度と効率の両面で優れている
- シンプルな構造で汎用性も高く、転移学習でも性能を発揮できる
- オープンソースとして公開されている
CNNモデルを大きくするために試すこと
- 深さ(Depth1):層の数、ネットワークを深くすることで表現力を高め、複雑な特徴表現を獲得できる
- 幅(Width):各層のニューロン(ユニット)の数を増やし(モデルを広くし)、細かい特徴表現を獲得、学習も高速化できる、モデルが浅いのに広すぎるとかえって高度な特徴表現が獲得できない
- 入力画像の解像度(Resolution):高解像度の入力画像を用い、詳細な特徴を見出しやすくなる