機械学習を理解するための数学テクニック勉強会 lagrange 未定乗数法
TRANSCRIPT
Lagrange 未定乗数法
株式会社ビズリーチ 工藤啓朗
機械学習のための数学テクニック勉強会
自己紹介
工藤 啓朗 (くどう ひろあき)
株式会社ビズリーチ
マーケティング本部 ビズリーチサービス企画部
北海道釧路市出身 , 30歳, 妻子有
高専 : 情報工学科
大学 : 一般相対性理論 / インフレーション宇宙論
前職(5年) : プログラマ → データ分析
現在(10ヶ月目) : アルゴリズム実装 / データドリブンの加速化 / 可視化や共有
主に Python を使用しております。
自己紹介(数学勉強歴)
本日のテーマ
流れ
1. まずは使ってみましょう !2. 必要となる数学的知識
3. Lagrange 未定乗数法についての解釈
4. 振り返り
5. さいごに
Lagrange 未定乗数法は、
最適化問題の数学的な解法の
数あるなかの一つです。
まずは使ってみましょう !
Lagrange 未定乗数法を使って、
下記の最適化問題を解いてみましょう。
まずは使ってみましょう !
x
y
subject to の右側にある数式を満たしたうえで、f(x, y)が最大(maximize)となる変数x,yを求める問題、という意味です。関数 f は、目的関数とよばれています。
解答例
x
y
Lagrange 未定乗数法のポイント
x = 5, y = 5
f = 10
f = 25
f = 50
f = 80
f = 20
x + y = 10は下記の青い線
f = xy を上から見た図
ビジネスへの応用
予測
モデル評価
学習
モデリング
今日はこの一瞬のお話 !!
機械学習の実施プロセス
“例” SVM(Support Vector Machine)
“モデリング”
数式でかくと、
今日解きたい問題
ビジネスへの応用
予測
モデル評価
学習
モデリング
+
+
+
---
ブラックボックスな機械学習
「理解しないまま機械学習のソフトウェアを使う」
(個人的な意見) →
極論、ビジネスでは仕方のないことだと思います。
一方で、誤った結果が出ても、誤っているかどうかの判断ができない、というリスクも
あります。
少しでも、数学への苦手意識を減らして、機械学習のモデルの背景を理解する、とい
う点でお役に立てればと思います。
ここから数学のお話
気になること
必要となる数学的知識
1. 関数の最大値と極大値
2. 微分係数と極値
3. 凸集合と閉集合と有界
4. ベクトルと勾配(gradient)
5. そして、Lagrange 未定乗数法へ
※ 以下、最大値に限定して進めます
最適化問題の前提条件
1. 目的関数に最大値は存在する ?
a. 関数の最大値、極大値、停留点 ??
b. 最大値を求めるには、
i. まず停留点を求めて、そこから極大値を選定する。
ii. 後は、極大値同士と境界の値を比較して、最大値を求める。
2. 制約条件はどんなものでも良いか ?
a. 制約条件を満たす領域は、有界閉集合、となっていることが前提。
必要となる数学的知識の整理
最適化問題
目的関数
制約条件
連続関数
閉集合
有界
理想的な前提条件
凸集合
凸関数
微分可能
いよいよ、Lagrange 未定乗数法へ
制約条件を満たしたうえで、最大値を求めることはできるか ?
- ベクトル v, w
- 平行 : v = a w, a は定数
- 垂直 : v * w = 0, v と w の内積が0となる
- 勾配(gradient) ∇
- 変化が最大となる方向と一致します
- 目的関数の等位面に対して、勾配は垂直となります
- スカラー場とベクトル場
- 目的関数は ?
- 勾配は ?
- ex. 温度分布と、川の流水の分布
ベクトル解析のおさらい
Lagrange 未定乗数法を理解したい
制約条件を満たしたうえで、最大値を求めることはできるか ?
∇ f について
- ∇ f = 0 は停留点を求めることができるが、
- その点が制約条件 g = 0 を満たすとは限らない。
- 制約条件 g = 0 を満たしたうえで、f の極大値が知りたい。
- ∇ f は、f の等位面に対して、垂直な方向を向いている。
Lagrange 未定乗数法を理解したい 1/3
Lagrange 未定乗数法を理解したい 2/3制約条件を満たしたうえで、最大値を求めることはできるか ?
∇ g について
制約条件 g について、
∇ g は、g の接線方向に対して垂直!?
概略は右書きを参照ください。
Lagrange 未定乗数法を理解したい 3/3制約条件を満たしたうえで、最大値を求めることはできるか ?
ある点 (x*, y*) について
- もし点 (x*, y*) が、g上で f の極大値をとるとすると、
- ∇ f は g の接線方向に対して垂直
- ∴ ∇ f と ∇ g は、平行となる
- つまり、適当な λ ≠ 0 を設定すれば、
- ∇ f = -λ ∇ g (∵ 平行)
となります。
あれ、この形 …
∇ f = -λ ∇ g
⇒
もしかして
f + λg を新しい関数として、極値を求める問題とみればOKなんじゃない ?
Lagrange 未定乗数法
Lagrange 未定乗数法 !!そう!!
「新しい関数 f - λg の極値問題を制約条件なしで考える」
という問題に変える方法のことを、Lagrange 未定乗数法といい
ます。
Lagrange 関数 L を下記で定義する。
Lagrange 関数の勾配の図示
∇f -5 ∇g ∇f - 5∇g
Lagrange 未定乗数法の発展
- 制約条件が不等式の最適化問題
- KKT条件
- 制約条件が複数個の最適化問題
- ヘッシアン、十分条件への言及
実際に機械学習の問題を例にして
Lagrange 未定乗数法は、
- 正則化項を加えた線形回帰モデル
- Support Vector Machine
- ナイーブベイズ分類
などで使われています。
下記の問題で適用可能です
ナイーブベイズ分類を実際に解いてみる
- 最適化問題は
- 制約条件の下で
- ある目的関数の最大または最小となる解を求めること
- Lagrange 未定乗数法は
- 目的関数と制約条件を線形結合で表した
- Lagrange 関数というものを定義して
- その制約条件なしの極値問題に問題を変える方法
振り返り
ビズリーチでは、新しい仲間を募集しております!!
- 数学が好きで、機械学習をビジネスに応用したい人- レコメンドエンジンに興味がある人- データ分析に興味ある人
ぜひ、お気軽にお問い合わせください。
http://owl-learn.connpass.com/
さいごに
ご清聴ありがとうございました
以下、補足スライド
最適化問題の前提条件
1. 目的関数に最大値は存在する ?
a. 関数の最大値、極大値、停留点 ??
b. 微分係数と停留点の関係
c. 最大値を求めるには、まず停留点を求めて、そこから極大値を選定する。後は、極大値同士と境界の値を比較し
て、最大値を求める。
※ 暗黙の前提となるケースが多いですが、そもそも最大値が必ずしも存在するわけではありません。
2. 制約条件はどんなものでも良いか ?
a. 閉集合と有界
b. 凸関数と凸集合
定義域が有界閉集合で、目的関数が連続関数のとき、最大値の存在が保証されています。
そして、制約条件が凸集合で、目的関数が微分可能でもある、ほうが扱いやすい。
最適化問題の前提条件