目次

5. 計算条件の考察

計算プログラムはいくつかのハイパーパラメーターを持っています。
ここではハイパーパラメーターの最適値について考察します。
データセットとしては比較的難しく正解率の低いCIFAR-10を取り上げます。

5.1 ドロップアウトの確率

図5-1にドロップアウトの確率と正解率の関係を示します。
以下では正解率とはすべてテストデータに関するものです。
ドロップアウトの確率について以下の4通りを考えています。

  1. ドロップアウトなし
  2. ドロップアウト確率を一定とする
  3. ドロップアウト確率を層が進むごとに大きくする
  4. ドロップアウト確率を層が進むごとに小さくする
ドロップアウトがないときは過学習のために損失が上昇に転じて正解率も頭打ちになります。
ドロップアウトを考えた他の3通りでは損失は一定になり正解率も上昇を続けています。 3通りの特性はほぼ同等です。
ハイパーパラメータの数は少ないほど扱いやすいので、 以下ではドロップアウトの確率は一定値0.3とします。

[3]ではケース3がよいと書いてありますが必ずしもそうではないです。
[6]の公開ResNetはデータセットの大きなImageNetを対象にしているために過学習は起こりにくいのでドロップアウトは使用していませんが、 データセットが大きくないときはドロップアウトは必要になるかもしれないと書かれています。

図5-1 ドロップアウトの確率と正解率の関係(CIFAR-10, 自作CNN6, 実線:正解率, 破線:損失)

5.2 ミニバッチの大きさ

図5-2にミニバッチの大きさと正解率の関係を示します。
ミニバッチの大きさを25~200と変えても収束の速さと最終的な正解率はほぼ同じです。
以下では比較的正解率の変動の少ないミニバッチサイズ=50とします。

図5-2 ミニバッチの大きさと正解率の関係(CIFAR-10, 自作CNN6)

5.3 チャンネル数

図5-3にCNNのチャンネル数と正解率の関係を示します。
チャンネル数一定と層が進むごとに大きくする2通りを考えています。
図から両者の性能はほぼ同じと言えます。
ハイパーパラメータの数は少ないほど扱いやすいので、 以下ではチャンネル数一定とします。
最適な層の数とチャンネル数は問題の難しさによります。

公開ResNetは層が進むごとにチャンネル数を大きくしていますが、 必ずしもその必要はありません。

図5-3 チャンネル数と正解率の関係(CIFAR-10, 自作CNN6)

5.4 前処理

学習を行う前にデータセットの画像を加工することを前処理(transform)と呼びます。
torchvision.transformsには多数の前処理が登録されており簡単に使用することができます。
ここでは左右反転(RandomHorizontalFlip関数)と正規化(Normalize関数)の2つを考えます。
図5-4に前処理と正解率の関係を示します。
前処理によって正解率が上がることがわかります。 左右反転の方が効果が大きいと思われます。
問題が難しくないときは(正解率が十分高いときは)前処理の有意な効果が見られないこともあります。

図5-4 前処理と正解率の関係(CIFAR-10, 自作CNN6, 128チャンネル)

5.5 最適化関数

図5-5と図5-6に最適化関数と正解率の関係を示します。
それぞれ自作CNNとResNet18重みありのときです。
図5-5から、ゼロから(正確にはランダムから)学習するときはAdamが適しており、 図5-6から、高度にチューニングされた公開ResNetから追加学習するときはmomentumが適していることがわかります[3]。
表5-1にモデルごとに最適な最適化関数を示します。

図5-5 最適化関数と正解率の関係(CIFAR-10, 自作CNN6, 128チャンネル, ドロップアウトなし, 前処理なし)

図5-6 最適化関数と正解率の関係(CIFAR-10, ResNet18重みあり, ドロップアウトなし, 前処理なし)
表5-1 最適化関数の選択
ケースモデル 最適化関数
1 自作CNN Adam
2 自作ResNet Adam
3 公開ResNet重みなしAdam
4 公開ResNet重みありmomentum

5.6 momentum法の係数

前節の通り、公開ResNet(重みあり)ではmomentum法が適しています。
momentum法は学習率(lr)と係数(momentum)の2つの引数を持っています。
図5-7にmomentum法の係数と正解率の関係を示します。 係数が大きいほど正解率が高いことがわかります(1は不可)。
学習率についてはデータセットごとに考察します。

図5-7 momentum法の係数と正解率の関係(CIFAR-10, ResNet18重みあり, lr=0.001, Resize112, 左右反転なし, 正規化なし, ミニバッチ50, 実線:正解率, 破線:損失)

5.7 計算時間

各モデルのGPUの計算時間を表5-2~表5-4に示します。
計算時間は固有部分とパラメーターに比例する部分の和になります。
計算時間はデータセットの大きさによっても変わります。

表5-2 自作CNNの計算時間(GPU, 単精度, エポックあたり, CIFAR-10)
モデル64ch128ch192ch256ch
CNN411秒13秒26秒38秒
CNN611秒14秒28秒40秒
CNN812秒15秒29秒42秒

表5-3 自作ResNetの計算時間(GPU, 単精度, エポックあたり, CIFAR-10)
モデル64ch128ch192ch256ch
2ブロック10秒11秒18秒27秒
4ブロック12秒16秒30秒46秒
6ブロック13秒23秒42秒65秒

表5-4 公開ResNetの計算時間(GPU, 単精度, エポックあたり, CIFAR-10)
モデルResize32Resize64Resize112Resize224
ResNet1816秒20秒32秒106秒
ResNet3421秒27秒50秒177秒
ResNet5027秒39秒84秒314秒