線形クラス分類
導入
回帰分析ではある説明変数から目的変数の値を予測したが、クラス分類(classification)ではある説明変数からそのデータが所属するクラスを予測する。例えば、メールがスパムメールか否かを判定したり、画像に写っている物体が猫か犬かを判定したりする問題がクラス分類に該当する。つまり、回帰とは違い最終的な出力は離散的な値となる。しかし、計算が発生する以上、連続的な値を扱う必要があるため、クラス分類ではモデル(分類する計算機械)は連続的な値を出力し、その値を基にクラスを判定する仕組みを採用することが多い。
説明変数を回帰と同様に とし、クラスの有限個の集合を とする。ここで、 はクラスの数である。 を に対応する目的変数であり、 を満たすとする。クラス分類の目的は、説明変数 を入力として目的変数 を予測する関数 を構築することである。
線形クラス分類モデル
線形クラス分類モデルは、各クラス に対応する別々の重みベクトル を用意し、重回帰分析と同様に値 を以下のように計算する。
これで計算された値 を各クラス に対応させ、最も大きな値を出力したクラスを予測結果とする。つまり、予測関数 は以下のように定義される。
ここで は、添字 がクラス集合 を動くときに、 の値が最大となる添字 を返す関数である。
ロジスティック回帰モデル
線形クラス分類モデルは計算が単純である一方で、各クラスに対応する値 の差が非常に大きくなると、予測が不安定になるという欠点がある。例えば、あるデータ点に対して、クラス に対応する値 、クラス に対応する値 、クラス に対応する値 であったとする。この場合、クラス が予測されるが、 と の差は非常に小さいため、わずかなノイズで予測結果が変わってしまう可能性がある。
この問題を解決するために、ロジスティック回帰モデルでは各クラス に対応する値 を確率に変換するソフトマックス関数(softmax function)を用いる。ソフトマックス関数 は以下のように定義される。
ここで、 は を集めた 次元のベクトルである。これは、各クラス に対応する値 を指数関数で変換し、その総和で割ることで、各クラスに対応する確率を計算する関数である。ソフトマックス関数の出力は常に0から1の範囲に収まり、全てのクラスの確率の総和は1になる。つまり、説明変数 の元でその予測 が に属する確率と見做せる。
さて、 は以下のようにまとめて計算できる。
ここで、 は各クラスに対応する重みベクトルを行に持つ 行列でこれを と表すことにする。すると、ソフトマックス関数の出力は以下のように計算できる。
そして、そのうち最も大きな確率を与えるクラスを予測結果とする。つまり、予測関数 は以下のように定義される。
ソフトマックスの性質
ソフトマックス関数 の出力は以下のの性質を持つ。
- 各要素は0以上である: for all
- 全ての要素の和は1である:
加えて、実装上の注意点として、ソフトマックス関数は指数関数を用いるため、 の値が大きい場合にオーバーフローが発生する可能性がある。この問題を回避するために、 の各要素からその最大値を引くことで数値的に安定化させることが一般的である。
主張
ソフトマックス関数 は、入力ベクトル の各要素に定数 を加えた場合でも出力が変わらない。
ここで、 は全ての要素が1である 次元ベクトルである。
証明
この定理より、 とすることで、ソフトマックス関数の数値的安定化が可能となる。
また、のちにソフトマックス関数の微分を用いるのでここで導出しておくことにする。ソフトマックス関数 は の関数であるのでヤコビアンを計算する。定義より とおくと、
ここで、
であることを思い出すと、
となる。ここで、 はクロネッカーのデルタであり、 のときに1、そうでないときに0となる。
one-hot表現
クラス分類問題では、目的変数 をone-hot表現(one-hot representation)で表すことが多い。今ままで はクラス集合 の要素として表されていたが、one-hot表現では を 次元のベクトル で表す。具体的には、目的変数 がクラス に属する場合、one-hot表現では以下のように表される。
すると、目的変数はスカラー値からベクトル値に変わる。この表現は、ある種の確率分布を表し、正解クラスが で残りが となるため、ソフトマックス関数の出力と比較しやすくなるという利点がある。今後はこのようにして目的変数を表すこととする。
すると、予測関数 はベクトルからベクトルを出力する関数となり、以下のように修正される。
つまり、目的変数 が確率分布で 次元ベクトルになったので予測関数はソフトマックス関数の出力そのものにすることができる。
最尤推定
ある確率モデルが与えられたとき、観測データ が得られたとする。このとき、モデルのパラメータ に対する尤度(likelihood) は以下のように定義される。
ここで、 は説明変数 の元で目的変数 が観測される確率を表す。
つまり尤度とはあるモデルとパラメータの元で観測データが得られる確率を表す。観測データはすでに得られているので、尤度を最大化(1に近づける)するようなパラメータ を求めることが目的となる。この方法を最尤推定(maximum likelihood estimation)と呼ぶ。
さて、ロジスティック回帰モデルにおける尤度を計算してみよう。ある説明変数 において、パラメータ の元で目的変数 が観測される確率は以下のように計算できる。
ここで、 は目的変数 が1を持つ添字、つまり正解クラスである。目的変数 がone-hot表現であることを思い出すと、上式は以下のように書き換えられる。
なぜなら
であるからである。したがって、尤度 は以下のように計算できる。
最尤推定ではこの尤度 を最大化するようなパラメータ を求める。
さて、これを用いて損失関数を考えよう。このままだと指数が多重積分の形になっており計算が煩雑になるため、対数を取って対数尤度関数 を考えることにする。対数関数は単調増加関数であり、正の数に対して1対1で対応するため、対数尤度関数を最大化することは尤度関数を最大化することと同値である。また、損失関数は最小化問題として定義されることが多いため、対数尤度関数の負の値を損失関数とする。以上で新しい損失関数 を以下のように定義できる。
ここで、 は交差エントロピー損失関数(cross-entropy loss function)と呼ばれ、「エントロピー」という情報理論の概念からも導出できる。交差エントロピー損失関数は、モデルの予測分布 と実際の分布 との間の差異を測る指標であり、これを最小化することはモデルの予測が実際のデータに近づくことを意味する。交差エントロピーは以下のように分解可能である。
ここで、 は 番目のデータ点に対する交差エントロピー損失を表す。したがって、交差エントロピーは分解可能目的である。
勾配降下法による最適化
交差エントロピー損失関数 を最小化するパラメータ を求めるために、勾配降下法を用いる。まず、交差エントロピー損失関数の勾配を計算する必要がある。 で微分してもよいが、ここでは で微分することにする。また、確率的勾配降下法を念頭に置いて、 番目のデータ点に対する交差エントロピー損失 の勾配を計算する。
ここで、 とおくと、
であるから、 は にのみ影響を与える。ここで、ソフトマックス関数の微分より
であるから、
である。また、 なので
行列の微分は以下のように定義される。
行列 で定義された関数 の微分 は、各行 で微分したベクトルを行に持つ 行列として定義される。
したがって、交差エントロピー損失関数 の勾配は以下のように表される。
確率的勾配降下法の更新式は以下のようになる。
これをそれぞれを列ベクトルに転置して並べて行列を作ると
評価
モデルの評価には、正解率(accuracy)や適合率(precision)、再現率(recall)、F1スコアなどの指標が用いられる。これらの指標は、モデルの予測結果と実際のクラスラベルを比較することで計算される。 を正解クラスが で予測クラスが であるデータ点の数とすると、混同行列(confusion matrix) は以下のように表される。
この表あるいは値を使って以下の3つの値を定義できる。
- :クラス に正しく分類されたデータ点の数(True Positive)
- :クラス に誤って分類されたデータ点の数(False Positive)
- :クラス に分類されるべきであったが誤って他のクラスに分類されたデータ点の数(False Negative)
これらを用いて、以下の指標を定義できる。
- 正解率(accuracy):全データ点に対する正しく分類されたデータ点の割合
- 適合率(precision):クラス に分類されたデータ点のうち、実際にクラス であったデータ点の割合
- 再現率(recall):実際にクラス であったデータ点のうち、正しくクラス に分類されたデータ点の割合
- F1スコア(F1 score):適合率と再現率の調和平均
これらの指標を用いて、モデルの性能を評価し、必要に応じてモデルの改善を行うことができる。ただ、これらは各クラスごとに計算されるため、全体の評価を行う場合はマクロ平均やマイクロ平均などの手法を用いることがある。
- マクロ平均(macro average):各クラスの指標を単純に平均したもの
- マイクロ平均(micro average):全クラスのTP、FP、FNを合計してから指標を計算したもの