CNN(畳み込みニューラルネットワーク)の精度向上策について。
目次
AI・ディープラーニングの全体像
- 人工知能
- 機械学習
- ディープラーニングの基本・応用
- ディープラーニングの研究
- AIプロジェクト
- AI社会実装に伴う法律・倫理
畳み込みニューラルネットワーク(CNN)の精度向上策
代表的な精度向上策
- 畳みの初期設定法
- ドロップアウト(Dropout)
- バッチ正規化(Batch Normalization)
- データ拡張(Data Augmentation)
- 転移学習(Transfer Learning)
- モデルの軽量化
畳みの初期設定法
- 初期設定が学習の収束に影響することがある
- 先行する層のニューロンの数を考慮し、重みを初期化すべき
- 活性化関数(シグモイド関数・Tanh関数)→「Xavierの初期値」を使うことが多い
- 活性化関数(ReLU関数)→「Heの初期値」を使うことが多い
ドロップアウト(Dropout)
- 一部のニューロンをランダムに無効化→過学習を軽減し、汎化性能を上げるための工夫
- 各ニューロンからの出力には、「1ー無効化割合」係数を掛ける
- アンサンブル学習器の一種とみなすことができる
(少しずつ異なるニューラルネットワークを多数組み合わせている)
バッチ正規化(Batch Normalization)
- データを一定範囲に揃えること
- 入力データの値をすべて0~1におさまるよう正規化を行う→モデルの学習効率を改善
- 「標準化」→平均を引いて標準偏差で割ること
- 「共変量シフト」→長いネットワークのなかで、何層も演算を繰り返すうちにデータの分布が偏ってくる現象
- 「バッチ正規化」→ミニバッチごとに標準化処理を用い、共変量シフトを、層ごとに補正する
- 標準化を行って、データの分布の偏りをなくし、「正規分布」に近くなるようデータを整える
→学習を早くし、過学習を防止 - バッチ正規化→全結合層(線形変換)/活性化層(非線形変換)、畳み込み層(線形変換)/活性化層(非線形変換)
データ拡張(Data Augmentation)
- 擬似的・人工的に学習用画像データのバリエーションを増やす技術
- ランダムな量で行い、変化を適用した後の画像を新しい画像とみなす
- ミニバッチごとに都度拡張する方法を用いることで、データの総量は変わらずにバリエーションのみ増やすことができる
転移学習(Transfer Learning)
- あるタスクのために学習させたモデルを、他のタスクに適用する手法
- 転移学習に使われる学習済モデルは、大規模データセットを用いて学習したもので、すでに優秀な特徴抽出器となっており、汎用的なパラメータを提供できる
- 少ないデータ量で効率的に高精度を出すことができる
(⇔ゼロから大量データを用いて長い時間をかけて学習させる) - 新しいタスクに特化した専用の層を、出力層に近い部分に追加する
- 微調整や再訓練を行うのは、主にネットワークの下流のパラメータ
- 学習済みモデルに新しいタスクのための層を追加・置換えする
- 出力層に近い側のパラメータのみ訓練、上流のパラメータは固定する
- 訓練済みモデルのすべてのパラメータを再訓練(「ファインチューニング」)
モデルの軽量化
- 計算の効率化(GPU、メモリなどの計算リソースの節約)、訓練データ準備の負担軽減、推論の高速化、省エネ
- 訓練データ準備の負担軽減→パラメータ数の現象→モデルの簡略化
→過学習のリスクが下がる
→過学習を抑えるために必要な訓練データが少なくて済む - 軽量化により、同じ量の訓練データを使用しても、より汎化性能高いモデルを訓練することができる
量子化 | ・パラメータをより小さいビット数で表現→軽量化を図る ・ネットワークの構造を変えずにメモリ使用量と計算コストを削減できる |
---|---|
プルーニング (Pruning;枝刈り) | ・ネットワークの一部の比較的重要度の低いニューロンを剪定する→モデルサイズと計算コストと軽減 ・モデルの精度に大きな影響を及ぼすことなく、モデルを効果的に軽量化できる ・プルーニングだけでは精度が落ちるため、プルーニング後に再学習を行う |
蒸留 | ・大きな複雑なモデル・アンサンブル学習器→「教師モデル」 ・その知識を、小さく単純なモデル(「生徒モデル」)に継承、その学習に利用する手法 ・より情報量の多いソフトラベルを用い、生徒モデルを訓練する ・情報量を増やしながらモデル軽量化 (⇔量子化・プルーニングでは、情報を削減する) ①大規模データセットを用い、教師モデルを訓練する ②学習済みの教師モデルを用い、新たなデータセットに対し予測する ③教師モデルの予測出力を用い、生徒モデルを教師モデルに近づくよう訓練する |