最近、学習は最適化問題に帰着されるということを自分自身強く意識するようになりました。
そこで有名なSVMや対数線形モデルなどの評価関数を見て、それぞれがどのような狙いを持っているのかを概観してみようと思います。
Support Vector Machine
線形関数
で分離面を構成するのが第一の考え方です。
評価関数
がマージンと呼ばれるもので、これを最大化するのがSVMです。絶対値は取り扱いにくいので、代わりに二乗を考え、分数も厄介なので、逆数を取り、以下の最適化問題に帰着します。
subject to
評価関数はマージンを最大化すること、制約式は正しく分類できていることを示しています(いくら分離面がデータから遠くても、分類を間違えていたら意味無いですよね)。
解釈
分離面がデータから離れていると何がいいのかというと、分離面の近くにあるデータというのは、分類が際どいデータであるということですから、そのようなデータが生じないように分離面を決めておくということです。何も難しいことはありません。導出は以前にもブログ内で行っています。
ソフトマージン
サポートベクターマシンにはソフトマージンというものが出てきます。
先ほどの最適化問題の制約には、分類が正しく行えることが含まれていましたが、中には必ずしも分類が綺麗にできないデータというものも存在します。
少しくらい間違えてもいいから、マージン最大化の考え方を含めながらも妥当な分離面を獲得したい場合はソフトマージンを使います。(先程の制約はハードマージンという)
最適化問題は以下のようになります。
subject to
評価関数に新たな項が加わっています。はデータが上手く分けられない度合いを示しています。データが上手く分離できない場合は、このが大きな値を取ってしまうために、今から最小化したい評価関数の値を増加させてしまいます。従って、なるべく分離が上手く出来ている状態を目指そうと学習が行われることになります。は設計者が決められるハイパーパラメータです。この値を大きくすればするほど、分離できていないことに大きなペナルティーを課すことになるので、ハードマージンに近づきます。
制約式の方も見てみましょう。左辺が0以上になることを、が助けています。すなわち分離できない度合いを少しくらい持っていても良いということを言っているわけです。
対数線形モデル
狙い
対数線形モデルの評価関数は、ずばり対数尤度です。素性(得られたデータみたいなもの)に対して、そのラベルの条件付き確率を計算しようというモデルです。
対数線形モデルでは、素性とラベルの組に対して素性値という値を考えており、条件付き確率をパラメータを用いて
と表現しておきます(これは最大エントロピー法という統計物理の考えとある条件で一致する)。
機械学習では基本的に、データは独立同分布から生起するという仮定を用いるので、というデータが生起するのは単純に各確率の積になります。
対数を取ると、積は和になりますから、結局評価関数は
となります。これを最大化すれば良いという単純な発想です。
実際の最適化問題
結局、尤度を最大にするようなを求めたいのですが、これは上手く分類結果が求まらないことが知られています。そこで、評価関数(対数尤度)に手を加え
を最大化する問題に変更します。
解釈
これは最大化問題ですから、第二項が大きくなると最大化したい値が減少してしまいます。
すなわち第二項を小さくしたい働きが学習の中で現れるので、自ずとパラメータベクトルの大きさは小さい状態で求まるようになります。
これはSVMで見たソフトマージンと発想が似ています。似ているというより同じです。
本来の評価関数に対して、何らかのペナルティーを与えるというのが機械学習の基本的な考え方です。
正則化
本来の評価関数に対して追加でペナルティー項を与える手法を「正則化」と言います。
SVMのソフトマージンの場合は最小化問題
で、第一項が最大化したいマージンの逆数。第二項が分類できていない度合いです。
対数線形モデルの場合は最大化問題で
第一項が対数尤度で、第二項がパラメータの大きさに制限を与えるものです。
正則化項の取り扱い
今、最小化と最大化の2つの問題を見ていますが、これらは符号を変えればいつでも変換できます。対数線形モデルの方を、符号を変えて
としてもいいのです。すると、より一般的に正則化を入れた評価関数の表現が見つかります。
第一項は、いつでも最小化したいと思っているものです。SVMならばマージンの逆数、対数線形も出るならば負の対数尤度です。これが本来考えている問題の本質的な部分です。
これらの本質的に最小化したい関数を損失関数[L]と表現します。
一方で、第二項目のペナルティーは、最小化を妨げてしまう要因です。それが起こらないように、なるべくペナルティーとなっている値を小さくするように学習が行われます。このような項を正則化項と表現します。
本質的に重要なのは損失関数の方ですが、問題に応じて正則化項の重要性も変化してきます。従って、これらの重要性の比重は、いつでも人間側が決めることになっています。損失関数と正則化項の重要性が1000対3くらいならば、評価関数は全体として
のようにしておいて、最小化問題を解けばいいことになります。しかし最小化問題にとって定数倍はどうでもいい話です。いま知りたいのは最小化問題を解いて得られるパラメータの方ですから。よって、通常は損失関数の方をいつでも1にしておいて
などのように設定することになります。
評価関数の一般的な取り扱い
よって、パラメータのモデルを考えているならば、評価関数は
のように表すことができます。正則化項の重要さをCで調整するという形です。
あるデータ点毎に考え個別に、損失や正則化の影響を考えることができれば個々の損失と個々の正則化の影響を考え
と表現できます。これが通常機械学習に現れる評価関数の形です。
正則化項も損失関数も、もっと多くのパラメータに依存している場合もあり、一見複雑に見えますが、結局は全て上記の形で収めることができます。
数ある機械学習の手法も、この損失関数をどのようなものにしているか、正則化項をどのようなものにしているか、これらの組み合わせによって違いが生じているのです。
当然、モデルをどのようなものにしているかによっての複雑さも変わりますし、式が違えば微分の計算も異なるため、学習のアルゴリズムはそれぞれ異なりますが、評価関数を見れば多くのモデルの狙いが理解できるようになるかと思います。(当然正則化が無いものもあります。メインは損失関数の方です。)
正則化と最大事後確率推定(Maximum a-posteriori estimation:MAP推定)
評価関数は本来の損失関数+正則化で構成されるというのをみました。
確率モデルの推定では、最尤推定と最大事後確率推定との関係でまったく同じものが出てきます。
データから、パラメータを推定しようという場合には尤度を最大化するようなθを選ぶことになります。最大事後確率推定では、パラメータすらも確率変数だと考え、確率的に得られるデータから、パラメータを確率的に推定できると考えます。
従って、考えるのはの最大化です。ベイズの定理より、
となり、これを最大化することを考えます。対数を取れば、積は和になり。
を最大化する問題に帰着されます。第二項の事前分布は自分で設定する部分ですから、これが結局正則化項の役割を担うようになるのです。
対数線形モデルは最大事後確率推定
具体例としてはパラメータの事前分布をガウス分布と仮定すれば、その分布の分散が、正則化項の重要度を示すの逆数の役割を担います。正則化項としてはが出てきます。
これは対数線形モデルそのものです。すなわち、対数線形モデルとは、パラメータの事前分布をガウス分布とした場合の最大事後確率推定に等しいのです。
ベイズの定理を用いたMAP推定が、機械学習で威力を発揮しているのは、自然と正則化という概念を中に包含していたため精度の良い実用的な分類器を構成できたからです。
そしてこう見ると、やはり機械学習の様々な手法はどこかで密接に繋がっているものだと思います。
評価関数に見慣れたなら以下の記事も読めます