【E資格不合格から学ぶ】ResNet(画像認識)とは?

  • 「ResNet」について学びたいけど理解できるか不安・・・
  • 「ResNet」についてどこから学んでいいか分からない?
  • 「ResNet」を体系的に教えて!

 「ResNet(Residual Net)」は、「Residual module」、「batch normalization」、「Heの初期化」を利用し、2015年にILSVRC(物体検出コンペティション)において優勝した深層学習モデルですが、興味があっても難しそうで何から学んだらよいか分からず、勉強のやる気を失うケースは非常に多いです。

 私は過去に基本情報技術者試験(旧:第二種情報処理技術者試験)に合格し、また2年程前に「一般社団法人 日本ディープラーニング協会」が主催の「G検定試験」に合格しました。現在、「E資格」にチャレンジ中ですが3回不合格になり、この経験から学習の要点について学ぶ機会がありました。 

 そこでこの記事では、「ResNet」の学習のポイントを解説します。

この記事を参考にして「ResNet」が理解できれば、E資格に合格できるはずです。

<<「ResNet」のポイントを今すぐ見たい方はこちら

目次

1.効率的な学習方法とは

効率的な学習をするために・・・
  • 転移学習(Transfer Learning)
    教師あり学習において、目的とするタスク(課題)での教師データが少ない場合に、別の目的で学習した学習済みモデルを再利用
  • 「異なるドメイン(=領域)の学習結果」を利用
異なるドメインの学習結果を利用とは・・・

異なるドメイン(=領域)のデータで高精度の学習済みモデルがある場合・・・

  • そのモデルの構造は似たタスクでも有効ではないか?
  • 学習済みモデルを別タスクでそのまま利用できるのではないか?
  • 「事前学習」した情報から始めた方が学習が効率的になるのではないか?
「事前学習」の方法とは・・・
今回の事前学習で利用するモデル

ImageNetを1000分類で分類した教師データを利用。
ResNetにより学習。以下はサンプル

No.IndexLabel
10tench, Tinca tinca
21goldfish, Carassius auratus
32great white shark, white shark,
man-eater, man-eating shark,
Carcharodon carcharias
43tiger shark, Galeoceydo cuvieri
54hammerhead, hammerhead shark
ImageNetの教師データの例

ImageNet学習済みモデルの概要(ResNet抜粋)

No.ModelSizeTop-1 AccParams
1ResNet5098MB0.74925,636,712
2ResNet101171MB0.76444,707,176
3ResNet152232MB0.76660,419,944
ImageNet学習済みモデルの概要(ResNet抜粋)

参照元:https://keras.io/api/applications/

2.ResNet

「ResNet」とは・・・

2.1 Skip Connection

  • 深い層の積み重ねでも学習可能に
    勾配消失問題の回避
    勾配爆発の回避
  • 中間層の部分出力:H(x)
  • 残差ブロック(Residual Block):
    H(x)=F(x)+x
  • 学習部分:F(x)

Skip Connection:上図よりバイパス接続(=Identity mapping)をすること。
Identity mapping:日本語に直訳すると「身元の位置付けを割り当てる」

「Residual Block」導入によるメリット
  • ブロックへの入力にこれ以上の変換が必要ない場合は重みが0となる。
    ⇒ 浅いCNN(畳み込みニューラルネットワーク)で十分学習ができてしまい、深い中間層が不要な際、不要な層の重みが0になる。
  • 小さな変換が求められる場合は対応する小さな変動をより見つけやすくなる。
    入力時点の勾配が小さい値の場合、通常であればレイヤーを重ねていくほど勾配が消失していってしまうが、「Skip Connection」によりわずかな勾配の情報を消失することなく残すことができる。
    層を深くしても学習を進めることが可能

2.2 Bottleneck構造

Plainアーキテクチャ          Bottleneckアーキテクチャ 

Bottleneck構造のイメージ
Bottleneck構造のイメージ
  • 同一計算コストで1層多い構造
  • 途中の層で3×3の畳込みを行う

3.Wide ResNet

3.1 構造

WideResNetの構造図
WideResNetの構造図
  • ResNetにおけるフィルタ数をK倍
    ◦畳込みチャンネル数が増加
    高速・高精度の学習が可能
    GPUの特性に合った動作
  • ResNetに比べ層数を浅くした
    (反対に各層を広くした)
  • Residual Block にDropoutを導入

3.2 事前学習で利用するモデル

事前学習で利用するモデルは Wide ResNet

Wide ResNet とは・・・
  • 画像分類におけるベースモデルとしてしばしば用いられる。
    例)学習済みWide ResNetをベースとして転移学習を行い新たなモデルを構築する。
  • フィルタ数をk倍したResNet。
  • パラメータ数を増やす方法として、層を深くするのではなく、各層を広く(Wide)した。

以下の表は、CIFAR-10、CIFAR-100 データセットに対する、パラメータdepth、kを変えた時のWide ResNet のエラー率を示している。
 下表より、kの値が同じ場合、depthの値が大きい方がエラー率が必ず小さくなるとはえない。

CIFAR-10、CIFAR-100 データセットに対する、パラメータdepth、kを変えた時のWide ResNet のエラー率

上表参照元:https://arxiv.org/abs/1605.07146

3.3 ファインチューニング

ファインチューニングの説明図
ファインチューニングの説明図

4.まとめ

【ResNetの特徴】
  • Residual Block
    Skip Connection:identity mappingと呼ばれるバイパス接続をすること
  • Bottleneck構造
    同一計算コストで1層多い構造
  • メリット
    深い層の積み重ねでも勾配消失問題と勾配爆発問題を回避できる。
【Wide ResNetの特徴】
  • ResNetにおけるフィルタ数をK倍
  • ResNetに比べ層数を浅くした
    パラメータ数を増やす方法として、層を深くするのではなく、各層を広く(Wide)した。
  • DropoutをResidualブロックに導入

以上

最後まで読んで頂きありがとうございます。
皆様のキャリアアップを応援しています!!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次