はじめに
今回も前回に引き続き、深層学習で使われる要素技術をひとつ紹介する。今回紹介するのは「Label Smoothing」と呼ばれる手法である。
交差エントロピー
いま、分類の問題を考える。このときの処理を以下に示す。
何らかのDNNで処理したあと最終層においてSoftmax関数を適用するのが一般的である。ここでは、入力値を、Softmax関数への入力値を
とおいた。両者ともベクトルであり、特に
である。Softmax関数の出力値は次式で定義される。
(1)
この式は入力値がカテゴリ
に属する確率である。Ground Truthとなる確率を
とおけば、次の交差エントロピーが損失関数となる。
(2)
これを最小にするようにDNN内の重みが決定される。に対してはone-hotベクトルが与えられる。
過学習
を考え、入力値
に対する正解カテゴリが
であるとする。このとき
と書くことができる。交差エントロピーを最小にするように学習を行うと、
は1に、
は0に近づいていくことになる。すなわち
(3)
が1に近づくとき、は大きく、
は小さくなる。
と
の間の距離が大ければ大きいほど、
に近づいていく(参考のため指数関数の変化の様子を以下に示す)。
しかし、と
の間の距離を極端に大きくすると過学習となり、汎化能力を抑制してしまうことがある。
Label Smoothing
過学習を抑えるメカニズムはこれまで種々提案されているが、Label Smoothingもその中のひとつである。入力値がカテゴリ
に属する時、先に与えた
は次式で表現できる。
(4)
ここで、は、
のとき1、
のとき0となる関数である。この「極端」な値の割り当てを緩和し、過学習を抑えようというアイデアがLabel Smoothingである。すなわち、次式を考える。
(5)
ここで、は全ての
について何らかの値を持つ関数である。重み
でこの関数を追加することにより、
のときにも
は値を持つことができる。
として、一様分布が使われることが多い。
(6)
以下の簡単なコードで、重みが損失関数にもたらす効果を
の場合に見てみる。
- 9-13行目:
x
を与えると擬似的な予測値ベクトルを生成する関数である。dim
=5としたので5次元ベクトルである。x
が大きくなると正解値[0,1,0,0,0]に近づいていく。 - 24-27行目:Label Smoothingを考慮した
を作成する関数である。
dim
=5。epsilon
はに相当する。
- 31-32行目:損失(交差エントロピー)を計算する。
このコードを実行すると、次の図を得る。横軸xの値が大きくなると擬似的な予測値が[0,1,0,0,0]に近づいていくことに注意する。
が0のときはLabel Smoothingの効果はないので、通常の学習に見られる減衰曲線となる。
の値を増やしていくと損失の減衰が抑制され、途中から増大に転ずる様子を見ることができる。増加に転じる近傍で学習を止めることで、極端な最適化を抑えることができる。
まとめ
今回は、過学習を抑制するメカニズムのひとつであるLabel Smoothingを紹介した。Label Smoothing自体はとても簡単なロジックである。参考にした論文では、Label Smoothingにより、ILSVRC 2012のtop-1 errorとtop-5 errorの両方において、0.2%ほどの精度向上が見られたと報告されている。