機械学習 はじめよう

第19回 ロジスティック回帰の学習

この記事を読むのに必要な時間:およそ 2 分

前回はロジスティック回帰モデルを紹介し,その負の対数尤度関数まで求めました。

今回はここからロジスティック回帰の学習手順を導きます。

確率的勾配降下法の復習

「学習」というとなにやら高尚で複雑な響きがありますが,機械学習が実際にやっているのは,適当なモデルを決めて「一番良い」パラメータを選ぶことでした。

何を「一番良い」とするかは難しいところですが,機械学習の多くのモデルでは「誤差が最も小さい」あるいは「尤度(観測された事象の確率)が最も大きい」といった指標で「一番良い」を選びます。つまり「関数を最小(または最大)とするwを求める」ところに落とし込まれるわけです。

この「関数の最小化」「最適化」と呼びますが,これは一般にはとても困難な問題です。1次元空間上の話なら中学や高校の数学で解けますが,機械学習の問題の多くがそうであるように,何万次元もの高次元空間上で厳密解を求めるのは不可能に近いくらい難しいことです。

そこで関数最適化の分野では様々な近似解法が開発されてきました。連載第16回で紹介した「確率的勾配降下法」は,最もポピュラーな近似最適化手法の1つです。今回これを用いることにしましょう。

「確率的勾配降下法」について簡単に復習します。

パラメータwを持つ関数f(x)と訓練データX={xn}に対し,Σnf(xn) を最適化したいとき,X からランダムに1つ取ったデータ点xnにおいて,次の式でパラメータを更新していきます。

w(i)はi回目の更新をしたパラメータ,λは適当な正の値で,iが増えるにつれて小さくしていきます。

確率的勾配降下法は,勾配さえ得られればとても簡単に実装ができ,高速に解を求められるという特徴があります。しかも大規模データに対して適用しやすいため,特に最近は好んで利用される傾向にあります。また,局所解に捕まりにくいというメリットもなかなか見逃せません。

あれあれ,なにやらいいことずくめのような書き方になってしまいましたね。

念のため注意しておくと,どのような問題に対しても高速で局所解に捕まりにくい,というわけでは決してありません。問題によっては確率的勾配降下法より良い最適化手法があるでしょう。解きたい問題や求めたい解にあわせて手法を選ぶ必要があるという点は忘れずにいたいですね。

ロジスティック回帰の学習

では,確率的勾配降下法を使ってロジスティック回帰の学習手順を導きましょう。

ただし,

確率的勾配降下法で負の対数尤度関数E(w)を最適化するには,訓練データの各点に対応するEn(w)の勾配が必要です。

勾配は各成分方向での偏微分を並べたベクトルですから,この偏微分を計算しましょう。

この連載では基本的に途中の計算過程を省いていましたが,実はロジスティック回帰は勾配が簡単に書けることが最大のポイントであるため,今回は少し丁寧に式展開します。

ここでの微分をきれいに片づけるために,ちょっとしたテクニックを使います。

よりですから,

と,σ(t)の微分をあえてσ(t)を使って表します。

すると,

ynの微分をシンプルな形に書き下すことができました。

これを元の式に代入すると,

うまく行き過ぎ,と言いたくなるくらい簡単になりましたね。

勾配は各wjごとの偏微分を束ねたベクトルであることを思い出すと,最終的にEn(w)の勾配は次のようになります。

よって学習率をηとすると,確率的勾配降下法によるパラメータの更新式は次のように書けます。

著者プロフィール

中谷秀洋(なかたにしゅうよう)

サイボウズ・ラボ(株)にてWebアプリ連携や自然言語処理を中心に研究開発を行いながら,英単語タイピングゲーム iVocaをサービス提供している。

URLhttp://d.hatena.ne.jp/n_shuyo/
Twitterhttp://twitter.com/shuyo

コメント

コメントの記入