競馬からヒントを得た損失関数で学習する DeepGamblers が登場

3つの要点

✔️分類問題において予測に自信がないときに「棄権」できるモデルは実用上重要
✔️ポートフォリオ理論で競馬における doubling rate を最大化することを考え、それとの類推から「棄権」を含む損失関数を提案
✔️予測クラスを一つ増やして損失関数を差し替えるだけでどのモデルにも適用でき、先行研究を上回る性能を発揮

ディープラーニングは CS 分野に限らず、物理、生物、化学、ヘルスケア、など様々な分野で活躍していますが、応用範囲が広がると予測の性能を高めることとは別の様々な要求が湧いてきます。

そういった要求の中でも重要なものの一つとして、予測の信頼性もしくは不確実性を取り扱えるようにするというものがあります。
例えば、実験データの中からモデルが発見したと思われる希少なシグナルが信頼に足るものなのかを測りたかったり、医療診断にモデルを使うときに誤診をしないように信頼できる予測だけを使いたかったり、という用途が考えられます。

このような用途においては、予測の信頼度に応じて予測結果を採用したり予測を棄権したりする必要があります。分類問題に限った場合、このような問題は selective classification problem と呼ばれます。この記事では分類問題のみを取り扱います。
この記事で紹介する DeepGamblers では、ポートフォリオ理論(その中でも単勝競馬レースに限定)から着想を得た損失関数を提案して、従来手法よりもシンプルで高性能なモデルを構築しました。

典型的な結果として、DeepGamblers が算出できる棄権スコアが高い順に MNIST のデータを並べると以下のものが得られます。確かに人間が見てもどの数字かが分類できないような数字が選ばれていることが分かります。

棄権スコアの上位10件を並べた結果。上が DeepGamblers の結果で下が比較手法の Entropy Selection の結果です。論文 (https://arxiv.org/abs/1907.00208) より引用。

以降では、このモデルがどのように構築・学習され、先行研究とどのように違うかを解説します。

ポートフォリオ理論との類推による損失関数の提案

ポートフォリオ理論と単勝競馬レース

まず、ポートフォリオ理論の概略を説明します。

株式市場を考え、m 個の株式が存在するとします。それらの確率変数を ${\bf X} = (X_1, …, X_m)$ とし、これらを price relative という量であるとします。これは、その日の市場開始時間の価格を 1 としたときの市場終了時間時間の価格を表します。例えば 1.03 ならば 3 % の値上がりを意味します。

ここでポートフォリオを考えます。ポートフォリオは ${\bf b} = (b_1, …, b_m)$ で拘束条件としては $b_i \geq 0, Σ_i b_i = 1$ という形で表現されます。これはすなわち全財産をどの株式に振り分けるかを定めるものになっています。ここでは問題をかなり単純化していて、例えば為替や手数料などは無視しています。

ポートフォリオ理論で最大化したい量は、以下で定義される doubling rate となります。これは一日の終わりにどれくらい資産が相対的に増加しているかを $\log_2$ で測っているものになります(なので 1 であれば 2 倍になることを意味します)。

\[
W({\bf b}, P) = \int \log_2 \left({\bf b}^T {\bf x} \right) dP({\bf x})
\]

これは機械学習の損失関数(で符号を反転したもの)のように見えますが、まだ対応は明確ではありません。
機械学習側で分類問題を考えるとすると、${\bf b}$ がモデルが出力する確率に対応すると想像できますが、${\bf x}$ はどれか一つだけが値を持つ正解ラベルのようなものを考えたくなります。

そこで、よりシンプルな場合として単勝競馬レースを考えてみます。単勝競馬レースでは、${\bf x}(j) = (0, \dots, o_j, \dots, 0)$ (j 番目の成分のみが値を持つ) となり、m 匹いる馬のうち 1 匹のみが勝つというように定式化できます。$o_j$ はオッズに対応するもので、どの馬が勝ったかによって配当が異なるので導入した m 個のパラメタとなります。単勝競馬レースでは確率分布も単純に j 番目の馬が勝つ確率を $p_j$ として離散和に置き換えて計算することができます。

以上により、単勝競馬レースの場合の doubling rate は以下のように書けます。

\[
W({\bf b}, {\bf p}) = \mathbb{E} \left[ \log_2 \left( {\bf b}^T {\bf x} \right) \right] = \sum_{j = 1}^{m} p_j \log_2 (b_j o_j)
\]

ここで使っているポートフォリオは $\sum_{j=1}^{m} b_j = 1$ となっているので、一回のレースに全財産を賭ける場合に対応しています。一般にレースは何度もあるため、一回で全財産を賭けるのではなく、自分が当てる自信があるレースには多めに賭けて、自信がないレースはあまり賭けずにお金を次のレースに取っておく、という戦略を取るのが有効です。
そこで、${\bf b}$ を $m+1$ 次元に拡張して $m+1$ 番目をどの馬にも賭けない場合に対応させると、doubling rate は次のように書けます。

\[
W({\bf b}, {\bf p}) = \sum_{j = 1}^{m} p_j \log_2 \left(b_j \ o_j + b_{m + 1} \right)
\]

ギャンブラーはこれを最大化するような ${\bf b}$ を考えていくことになります。

分類問題への読み替えと提案する損失関数

ここまで来れば分類問題との対応はかなりはっきりします。はじめに、$\log$ の底は先ほどは 2 倍を基準に考えていたので 2 にしていましたが、以降では微分の扱いが楽になるように自然対数を底にします。

$b_{m+1}$ を入れない元々の doubling rate の場合、$p_j$ を正解ラベル $y_j$、$b_j$ をモデルの softmax 出力、全ての $j$ で $o_j = 1$ とすれば単一のサンプルに対するクロスエントロピーの符号を反転したものになることが分かります。

それでは $b_{m+1}$ を入れ doubling rate が何に対応するかですが、これは $m$ クラス分類問題に棄権クラスを加えて $m+1$ クラス分類問題に拡張した場合になるので、 $m+1$ クラスに対応する softmax 出力値は棄権スコア となります。
モデルの softmax 出力値を ${\bf w}$ で特徴付けられる $f_{{\bf w}} (\cdot)$ と書き、データ $x$ を入れた時のラベル $j$ の成分を $f_{{\bf w}} (x)_j$ と書くことにします。さらに、分類問題においては特定のラベルを特別視することはないので、どの $j$ に対しても $o_j = o$ とすることで、以下のように書き直せます。

\[
W({\bf b}(f), {\bf p}) = \sum_{j = 1}^{m} y_j \log \left(f_{{\bf w}} (x)_j \ o + f_{{\bf w}} (x)_{m+1} \right) = \log \left(f_{{\bf w}} (x)_k \ o + f_{{\bf w}} (x)_{m+1} \right)
\]

ここで、2 つ目の等式では $j = k$ の場合のみ $y_j = 1$ でそれ以外は $0$ としています。これの全体の符号を逆にしたものが、論文が提案する gambler loss となります。
学習は以下のように通常のミニバッチ(サイズ $B$)学習をすればよいため、実装も容易です。ここで $\text{true label}$ は $i$ 番目のデータに対してラベルが 1 となる成分を指します。

\[
\min_{{\bf w}} \left[ – W({\bf b}(f), {\bf p}) \right] = \min_{{\bf w}} \left[ \sum_{i = 1}^{B} – \log \left(f_{{\bf w}} (x_i)_{\text{true label}} \ o + f_{{\bf w}} (x_i)_{m+1} \right) \right] \]

提案手法の特徴

gambler loss の $o$ はハイパーパラメタで、大きければ分類予測を当てた時に loss が小さくなるので分類予測をした方が有利で、小さければ逆に予測を当てても比較的 loss が小さくならないので棄権をする(すなわち $m+1$ 番目の成分が大きくなるように重みを学習する)方が有利になったりします。このパラメタは $1 < o < m$ の場合だけ意味を持ちます。証明はここでは省きますが、小さ過ぎれば全部棄権した方がよく、大き過ぎれば棄権などせずに全部予測した方がよくなるので直感的に違和感はないものです。

実際に予測する場合には、softmax の $m+1$ 番目の成分の値に注目し、この値が自分たちで定める閾値よりも大きければ予測を棄権し、小さければいつも通り $m$ 個の成分で最も大きいものを予測ラベルとすることになります。
softmax の成分を 1 つ増やして gambler loss で学習するだけなので、モデルのアーキテクチャにはほとんど手を加えずにどんなモデルにも適用することができます。
また、閾値は予測の際に自由に設定できるので、一度学習するだけで予測の信頼度を後からコントールできます。本当に自信のある予測だけを使いたい場合はこの閾値を高く設定すればよい、ということになります。

得られた損失関数の形自体はそれほど複雑なものではないですが、ポートフォリオ理論、その中でも特に単勝競馬レースとの対応を考えることで興味深い損失関数が提案されました。ここまで議論したポートフォリオ理論とディープラーニングの対応をまとめると以下のようになります。

ポートフォリオ理論とディープラーニングの対応。論文 (https://arxiv.org/abs/1907.00208) より引用。

先行研究との比較

提案手法が先行研究と比べて優れている点を明確にします。
比較のため、selective classification problem において重要な点として以下の 4 点を挙げています。

  • シンプルな end-to-end 学習が可能か?(そうでなければ取り扱いが不便)
  • サンプリングを必要としないか?(そうでなければ予測の際に計算負荷が高くなってしまう)
  • 閾値を変更する時に再学習が必要ないか?(再学習が必要なら計算コストが高い)
  • モデルアーキテクチャを変更する必要がないか?(そうでなければ色々なモデルに簡単に適用できず不便)

先行研究として、Softmax Response (SR) と Bayes Dropout (BD) と SelectiveNet (SN) を考えます。ここでは詳しくは解説しませんが、SR は softmax の最大値を信頼度にするというベースライン的な手法で、BD はベイズ的手法(典型的には予測の際にサンプリングが必要になる)に基づくもので、SN はモデルアーキテクチャなどもいじって性能を最大まで引き出したこの時点での SOTA という位置付けです。

上の 4 つの点で比較すると以下のような表になり、提案手法が全ての好ましい性質を満たしていることが分かります。シンプルな SR も同じく全てを満たしていますが、これに関しては予測性能の面で決着をつける必要があります。

提案手法と先行研究が selective classification problem における好ましい性質のどれを満足しているかの対応表。論文 (https://arxiv.org/abs/1907.00208) より引用。

実験結果

まず、MNIST で学習すると、冒頭に載せたように棄権スコアが高いものが人間にとっても分類し難いものになっているという結果が得られます。
別の面白い実験として、MNIST の 9 の数字を回転させてどのように予測されるかを調べたものがあります。その結果が以下で、途中で 5 と予測してしまっているものもありますが、間の数字に関しては棄権スコアが高くなって学習時には出会わないようなタイプのデータに対して適切に棄権を選択できることを示唆しています。

MNIST の 9 を回転させて予測をして softmax の 9 と 5 と棄権スコアの出力値を比較したもの。論文 (https://arxiv.org/abs/1907.00208) より引用。

ここからは先行研究に倣って SVHN と CIFAR10 と Cat vs. Dog のデータで実験をしていますが、傾向は大まかには同じなので、ここでは CIFAR10 の結果のみを紹介します。
性能評価は、テストデータの予測に対してカバレッジを定めてその中で正答率を比較することで実施します。棄権スコアが分かっているので、予測を棄権スコアでソートすることで、閾値を調整して何%が分類予測として採用(これがカバレッジ)されて残りが棄権されるかを定めることができます。
提案手法においては、0.2 刻みでハイパーパラメタ $o$ を探索し、最適なものを求めています。さらにカバレッジ毎でも最適な $o$ を算出していて、これは前述の再学習の必要なしという利点を破棄していますが、モデルの性能を最大限引き出した場合ということで出しているものとなります。

結果は以下の表になります。特にカバレッジが比較的大きい領域に対しては、シンプルなベースラインである SR を始めとして SOTA である SN の結果も上回っていることが分かります。カバレッジが比較的小さい領域では SR や BD との差は小さくなり、SN が優秀な性能を発揮しています。提案手法はシンプルで望ましい性質を兼ね備えながら、性能でも SOTA と同等以上であることが示されました。

CIFAR10 データにおいて、各カバレッジ毎にエラー率を算出した表。提案手法で標準偏差の値は、最適な $o$ の値に対して $\pm 0.2$ の場合でもエラー率を算出することで付与しています。論文 (https://arxiv.org/abs/1907.00208) より引用。

まとめ

ポートフォリオ理論、その中でも特に単勝競馬レースを考えることで、棄権という選択肢を含んだ分類問題に有効な損失関数を提案する論文を紹介しました。
シンプルでありながら望ましい性質を備えつつ、性能も先行研究と同等以上であるという結果で、他の分野からアイデアを借りてくることは実用的にも有用であることが示されました。

今回は最も簡単な分類問題を題材にしたものだったので、今後は例えばマルチラベルの分類問題なら改善はあるか、ポートフォリオ理論の別の要素からアイデアを借りてこれないか、など様々な発展が見込まれます。分野間で協力することができれば更に色々なアイデアが出てきそうです。

また、この記事では紹介しませんでしたが論文で言及されている情報理論との関係も興味深いところです。
例えば単勝競馬レースで $m+1$ 成分無しの場合で、予測のための補足情報が使える場合(これはディープラーニグ側の言葉で言えばラベルを予測する際に画像情報を使うことに対応します)、 doubling rate の増分はその補足情報とレース結果の確率変数の相互情報量で上から押さえられることが示せます。これはモデルの予測ラベルと正解ラベルの相互情報量を高めることが重要であることを示唆していて、深く研究していくことでポートフォリオ理論側からディープラーニングの情報論的な解釈につながっていくかもしれません。

異なる分野をまたがることで有用な知見が得られるということは興味深く、今後も発展が期待されます。

Deep Gamblers: Learning to Abstain with Portfolio Theory
written by Liu Ziyin, Zhikang Wang, Paul Pu Liang, Ruslan Salakhutdinov, Louis-Philippe Morency, Masahito Ueda
(Submitted on 29 Jun 2019)

Accepted to NeurIPS 2019

Subjects:Machine Learning (cs.LG); Machine Learning (stat.ML)

この記事をシェアする