初心者データサイエンティストの備忘録

調べたことは全部ここに書いて自分の辞書を作る

【深層学習】順序回帰の解説

はじめに

 『深層学習』という下記の本を読んでいます。この本を読んで一発で理解できなかったことをまとめています。本記事では、順序回帰についてまとめていきます。

順序回帰とは?

 順序回帰問題とは、説明変数 \boldsymbol{x}から順序があるクラス yを当てる問題です。本書では、嗜好品の5段階評価(とても悪い、悪い、普通、良い、とても良い)を予測する問題が挙げられています(図1)。

図1:順序回帰の例

 順序回帰の特徴は、正解とモデルの予測が異なっていた場合に、「少しだけ外した予測」と「大きく外した予測」が存在することです。先ほどの嗜好品の例でいえば、正解が「とても悪い」の場合に「悪い」と予測することは、「とても良い」と予測するよりはマシと言えます。このように、予測が正解と異なっていた場合でも、その惜しさを考慮することでモデルの精度を高めることが可能と考えられます。
 以上のような特徴を持っている順序回帰を、通常の多クラス分類と同じ方法で解くことは得策と言えません。本記事では、『深層学習』で紹介されている順序回帰を解く方法を2種類紹介します。
 なお、本記事では順序回帰の対象データを次のように設定しておきます。

  • サンプルサイズ:N
  • n番目の説明変数: \boldsymbol{x}_n
  • n番目の目的変数: y_n
  • 目的変数のクラス数: K

 また、モデルは深層学習モデルを想定しています。

順序回帰を解く方法

二値分類に変換する方法

 一つ目の方法は、順序回帰を二値分類に変換する方法です。順序回帰を次のようにして解きます。

  • 目的変数の変換
    目的変数 y_n = \bar{k}

d_{nk} = \left\{
\begin{array}{ll}
1 & (k<\bar{k}) \\
0 & ({\rm otherwise})
\end{array}
\right.

に変換して、目的変数を \boldsymbol{d} _ n = (d _ {n1}, \cdots, d _ {nK-1})とします。

  • モデル
     深層学習モデルの出力層に K-1個のユニットを並べ、ロジスティック関数による変換を行い予測とします(図2)。

図2:二値分類に変換した場合のモデル

  • 損失関数
    損失関数として、交差エントロピーを用います。なお、交差エントロピーとはモデルに含まれるパラメータを\boldsymbol{w}、予測を \hat{\boldsymbol{d}_n} = (\hat{d} _ {n1}, \cdots, \hat{d} _ {nK-1}) \in [0, 1]^{K-1}としたときに、

E(\boldsymbol{w}) = - \displaystyle{\sum_{n=1}^{N}}\displaystyle{\sum_{k=1}^{K-1}} {\rm log} \hat{d}_{nk}(\boldsymbol{x_n}; \boldsymbol{w})^{d_{nk}}

と表現される式です。

  • 予測の出し方
    次の式で予測を出します。

\hat{y}_n = 1+ \displaystyle{\sum_{k=1}^{K-1}}\boldsymbol{1}(\hat{d}_{nk})

なお、 \boldsymbol{1}(\hat{d} _ {nk})は何らかの方法で \hat{d} _ {nk} 0 1に変換する関数です。例えば、適当な閾値 \gamma_kを用いて


\boldsymbol{1}(\hat{d}_{nk}) = \left\{
\begin{array}{ll}
1 & (\hat{d}_{nk} \geq \gamma_k) \\
0 & (\hat{d}_{nk} < \gamma_k)
\end{array}
\right.

とする関数が考えられます。
 また、この予測 \hat{y}_nはある条件下で下記が成り立ちます。


\displaystyle{\lim_{N \to +\infty}} E\left[\hat{y} \middle| \boldsymbol{x} \right] = \bar{k} \tag{1}

このことの証明は、こちらの記事に書きました。

目的変数をソフトラベルに変換する方法

 二つ目の方法は、one-hot-encodingされている目的変数をソフトラベルに変換する方法です。順序回帰を次のようにして解きます。

  • 目的変数の変換
    目的変数 y_n = \bar{k}

d_{nk} = \dfrac{{\rm exp}(-|\bar{k}-k|)}{{\displaystyle{\sum_{k=1}^{K}}\rm exp}(-|\bar{k}-k|)}

に変換して、目的変数を \boldsymbol{d} _ n = (d _ {n1}, \cdots, d _ {nK})とします。なお、このように定義されるラベルはソフトラベルと呼ばれます。

  • モデル
     深層学習モデルの出力層に K個のユニットを並べ、ソフトマックス関数による変換を行い予測とします(図3)。

図3:ソフトラベルに変換する場合のモデル

  • 損失関数
    損失関数として、交差エントロピーを用います。

  • 予測の出し方
    次の式で予測を出します。


\hat{y}_n = \underset{k}{{\rm argmax}}\{\hat{d}_{nk}\}

 また、この予測 \hat{y}_nもある条件下で(1)式が成り立ちます。このことの証明も、一つ目の方法と同様にこちらの記事に書きました。

まとめ

 本記事では、『深層学習』に記載の順序回帰を解く方法をまとめました。どちらの方法も目的変数を変換すること、その目的変数に合わせたモデルを構築することが必要だと学びました。