Label Smoothing

はじめに

今回も前回に引き続き、深層学習で使われる要素技術をひとつ紹介する。今回紹介するのは「Label Smoothing」と呼ばれる手法である。

交差エントロピー

いま、K分類の問題を考える。このときの処理を以下に示す。

何らかのDNNで処理したあと最終層においてSoftmax関数を適用するのが一般的である。ここでは、入力値をx、Softmax関数への入力値をzとおいた。両者ともベクトルであり、特にz\in \mathbb{R}^Kである。Softmax関数の出力値は次式で定義される。

(1)    \begin{equation*} p(k|x)=\frac{\exp{z_k}}{\sum_{i=1}^K\exp{z_i}} \end{equation*}

この式は入力値xがカテゴリkに属する確率である。Ground Truthとなる確率をq(k|x)とおけば、次の交差エントロピーが損失関数となる。

(2)    \begin{equation*} H(q,p)=-\sum_{k=1}^{K}q(k|x)\ln{p(k|x)} \end{equation*}

これを最小にするようにDNN内の重みが決定される。q(k|x)に対してはone-hotベクトルが与えられる。

過学習

K=5を考え、入力値xに対する正解カテゴリがk=2であるとする。このときq(k|x)=[0,1,0,0,0]と書くことができる。交差エントロピーを最小にするように学習を行うと、p(k=2|x)は1に、p(k\neq 2|x)は0に近づいていくことになる。すなわち

(3)    \begin{equation*} p(k=2|x)=\frac{\exp{z_2}}{\exp{z_1}+\exp{z_2}+\exp{z_3}+\exp{z_4}+\exp{z_5}} \end{equation*}

が1に近づくとき、z_2は大きく、z_i(i\neq 2)は小さくなる。z_2z_i(i\neq 2)の間の距離が大ければ大きいほど、q(k|x)=[0,1,0,0,0]に近づいていく(参考のため指数関数の変化の様子を以下に示す)。

しかし、z_2z_i(i\neq 2)の間の距離を極端に大きくすると過学習となり、汎化能力を抑制してしまうことがある。

Label Smoothing

過学習を抑えるメカニズムはこれまで種々提案されているが、Label Smoothingもその中のひとつである。入力値xがカテゴリyに属する時、先に与えたq(k|x)は次式で表現できる。

(4)    \begin{equation*} q(k|x)=\delta_{k,y} \end{equation*}

ここで、\delta_{k,y}は、k=yのとき1、k\neq yのとき0となる関数である。この「極端」な値の割り当てを緩和し、過学習を抑えようというアイデアがLabel Smoothingである。すなわち、次式を考える。

(5)    \begin{equation*} q(k|x)=(1-\epsilon)\delta_{k,y}+\epsilon u(k) \end{equation*}

ここで、u(k)は全てのkについて何らかの値を持つ関数である。重み\epsilonでこの関数を追加することにより、k\neq yのときにもq(k|x)は値を持つことができる。u(k)として、一様分布が使われることが多い。

(6)    \begin{equation*} q(k|x)=(1-\epsilon)\delta_{k,y}+\epsilon\frac{1}{K} \end{equation*}

以下の簡単なコードで、重み\epsilonが損失関数にもたらす効果をK=5の場合に見てみる。

  • 9-13行目:xを与えると擬似的な予測値ベクトルを生成する関数である。dim=5としたので5次元ベクトルである。xが大きくなると正解値[0,1,0,0,0]に近づいていく。
  • 24-27行目:Label Smoothingを考慮したq(k|x)を作成する関数である。dim=5。epsilon\epsilonに相当する。
  • 31-32行目:損失(交差エントロピー)を計算する。

このコードを実行すると、次の図を得る。横軸xの値が大きくなると擬似的な予測値が[0,1,0,0,0]に近づいていくことに注意する。

\epsilonが0のときはLabel Smoothingの効果はないので、通常の学習に見られる減衰曲線となる。\epsilonの値を増やしていくと損失の減衰が抑制され、途中から増大に転ずる様子を見ることができる。増加に転じる近傍で学習を止めることで、極端な最適化を抑えることができる。

まとめ

今回は、過学習を抑制するメカニズムのひとつであるLabel Smoothingを紹介した。Label Smoothing自体はとても簡単なロジックである。参考にした論文では、Label Smoothingにより、ILSVRC 2012のtop-1 errorとtop-5 errorの両方において、0.2%ほどの精度向上が見られたと報告されている。

参考文献

Rethinking the Inception Architecture for Computer Vision

Kumada Seiya

Kumada Seiya

仕事であろうとなかろうと勉強し続ける、その結果”中身”を知ったエンジニアになれる

最近の記事

  • 関連記事
  • おすすめ記事
  • 特集記事

アーカイブ

カテゴリー

PAGE TOP