116
自然言語処理における argmax 操作 NISHIKAWA Hitoshi NISHIKAWA Hitoshi 2011/07/23 1 DSIRNLP #1

Argmax Operations in NLP

Embed Size (px)

Citation preview

自然言語処理における argmax 操作

NISHIKAWA HitoshiNISHIKAWA Hitoshi

2011/07/23 1DSIRNLP #1

目的目的

タ ク 全体像をご説 差 上げ ご理解 た• NLP タスクの全体像をご説明差し上げ、ご理解いただき、皆様の学習の一助とする

– NLP とは何ぞや

– 他の分野との関係

– 構成要素、 NLP の世界観

• NLP タスクのうち、特に argmax 操作(デコード)と呼gばれる操作についてお話差し上げ、モデル開発の一助とする

2011/07/23 2DSIRNLP #1

目次目次

概 分1. NLPの概要(10分)1. 他分野との関係、 NLP の諸技術(5分)他分野 関係、 諸技術( 分)

2. モデル、パラメタ、デコード(5分)

2 デコ ド(30分)2. デコード(30分)1. 近似解法(5分) 特にココを中心に2. 動的計画法(5分)

3 整数計画法(20分)

特 を中お話します

3. 整数計画法(20分)

3. まとめ

2011/07/23 DSIRNLP #1 3

自然言語処理自然言語処理

自然 を計算機 処 する 連 技術• 自然言語を計算機で処理する一連の技術

– 自然言語を対象にする、という対象に焦点をあて自然言語を対象にする、という対象に焦点をあてた呼称(分類)

– 隣接領域:音響信号処理(音全般の処理 エコー– 隣接領域:音響信号処理(音全般の処理、エコキャンセラなど)、音声処理(人間が発する音の処理 音声認識など) 画像処理(画像の処理)処理、音声認識など)、画像処理(画像の処理)

– この名前には「目的」は含まれない

テキストマイニングは「目的」指向の呼称• テキストマイニングは「目的」指向の呼称

2011/07/23 DSIRNLP #1 4

他の分野との関係他の分野との関係

目的 対象 処理

検索

自然言語処理

データ構造・アルゴリズム

マイニング要素技術 要素技術

2011/07/23 DSIRNLP #1 5

自然言語処理自然言語処理

• 自然言語で記述された文章を、適当な中間表現に変換する

• 適当な中間表現を自然言語に変換する

2011/07/23 DSIRNLP #1 6

中間表現?中間表現?

文章を読むと 何らかの場景が思い浮かぶ• 文章を読むと、何らかの場景が思い浮かぶ

• それを適当な形で表現したもの

東川さんは西川さんを殴りました。西川さんに愚弄されたからです。

原因

殴る

動作主 対象

愚弄する

動作主 対象

東川さん 西川さん

動作主 対象

西川さん 東川さん

動作主 対象

2011/07/23 DSIRNLP #1 7

東川さんは西川さんを殴りました。西川さんに愚弄されたからです。

談話構造解析原因

述語項構造解析

述語項構造解析 殴る 愚弄する 解析解析 殴る

動作主 対象

愚弄する

動作主 対象

東川さん 西川さん 西川さん 東川さん

係り受け解析

形態素解析

係り受け解析

※中間表現は応用に応じ 適当な粒度 設定する

2011/07/23 DSIRNLP #1 8

※中間表現は応用に応じて適当な粒度で設定する

解析と生成解析と生成• 中間表現への変換を解析、中間表現から自然言語への変換

• 解析 • 生成

中間表現 変換を解析、中間表現 ら自然言語 変換を生成と呼ぶ

• 解析

– 形態素解析

係り受け解析

• 生成

– 深層生成• 内容選択– 係り受け解析

– 述語項構造解析

照応解析

• 内容選択

• 談話生成

– 表層生成– 照応解析

– 談話構造解析

表層生成• 文境界決定

• 参照表現生成

• 語彙化

2011/07/23 DSIRNLP #1 9

自然言語処理タスクを解く自然言語処理タスクを解く

ず ぞ• 解析、生成を問わず、それぞれのタスクは、与えられた入力を所望の出力に変換する関数を設計し、該関数を計算する と 帰着される該関数を計算することに帰着される

);(maxarg wxfy• X : 入力

• Y :出力

);(maxarg wxfyx

=• Y : 出力

• f(x; w) : パラメタ w の下で x を実数に写像する関数

を 大化する• argmaxx f(x;w) : f(x;w)を 大化する x 

2011/07/23 DSIRNLP #1 10

基本的な発想基本的な発想

• 無数の解候補それぞれに得点を与えて、一番得点が高いものを選んでくる

今日 は いい 天気 です 。);(maxarg wxfy =

名詞 助詞 形容詞 名詞 助動詞 記号51点

);(maxarg wxfyx

名詞 助詞 形容詞 名詞 助動詞 記号

名詞 助詞 名詞 名詞 助動詞 記号

51点

45点

名詞 名詞 名詞 名詞 助動詞 記号40点

2011/07/23 DSIRNLP #1 11

NLPの 3ステップNLP の 3 ステップ

1. モデルを作る:この式を計算すれば問題が解けるという式を作る

2. パラメタを推定する:良い候補に高い得点を与えるように 式に含まれるパラメタを推定与えるように、式に含まれるパラメタを推定する

3. デコードする:式を機械に計算させて問題を解く解く

2011/07/23 DSIRNLP #1 12

全体像全体像

力入力 言語知識言語知識

モデル コーパス

パラメタ離散 適化離散 適化

デコード 連続 適化

出力

• いろんなことを勉強しないとご飯が食べられなくて大変

• 今日は特にデコードについてお話

2011/07/23 DSIRNLP #1 13

• 今日は特にデコ ドについてお話

デコードデコード

• 式(モデル)とパラメタが与えられたときに、その式を計算すること

• 自然言語処理タスクの場合は、離散的な解空間の中で目的関数を 大化する解を探索空間の中で目的関数を 大化する解を探索すること

• 当然、効率的に探索したい

2011/07/23 DSIRNLP #1 14

デ ド お話を ます• ここからデコードのお話をします

2011/07/23 DSIRNLP #1 15

デコードデコード

• 式(モデル)とパラメタが与えられたときに、その式を計算すること

• 自然言語処理タスクの場合は、離散的な解空間の中で目的関数を 大化する解を探索空間の中で目的関数を 大化する解を探索すること

• 当然、効率的に探索したい

2011/07/23 DSIRNLP #1 16

例題:品詞同定例題:品詞同定

• 形態素に分割済みの文字列の品詞を同定することを考える

今日 は いい 天気 です 。

名詞 助詞 形容詞 名詞 助動詞 記号

れを例題と プ をお話• これを例題として、3つのアプローチをお話します

2011/07/23 DSIRNLP #1 17

以下のモデルを仮定する以下のモデルを仮定する

次 デ パ タも推定済 する• 1次のマルコフモデル、パラメタも推定済とする

})()(max{arg ∑ +=n

kktatehhyokoy }),(),(max{arg0

11∑=

++ +=i

iiii kktatehhyokoy横方向の得点横方向

の得点

4 3 2 5 2 54名詞 形容詞助詞 記号助動詞名詞始端 終端

4 3 2 5 2 54

縦方向の得点

今日 は 天気 ですいい

4 5 4 5 53

計:51点

縦方向の得点と横方向の得点の和がこの品詞列のスコアとする縦方向の得点:形態素「今日」はどのくらい名詞っぽいか

今日 は 天気 です 。いい 計:51点

2011/07/23 DSIRNLP #1 18

縦方向の得点:形態素「今日」はどのくらい名詞っぽいか横方向の得点:「名詞」のあとに「助詞」はどのくらいあらわれやすいか

単純化単純化

縦得点は横得点 足 まえる• 縦得点は横得点に足してしまえる

4 3 2 5 2 54名詞 形容詞助詞 記号助動詞名詞始端 終端

4 5 4 5 53今日 は 天気 です 。いい

3

計:51点

10

名詞 形容詞助詞 記号助動詞名詞始端 終端

4 7 7 9 7 107

今日 は 天気 です 。いい

• これで問題が単純になる2011/07/23 DSIRNLP #1 19

今日 は 天気 です 。いい計:51点

グラフの探索グラフの探索

• ルートに応じて得点がある計:51点

名詞 形容詞助詞 記号助動詞名詞始端 終端

4 7 7 9 7 107名詞 形容詞助詞 記号助動詞名詞始端 終端

名詞 75 計:47点

今日 は 天気 です 。いい

名詞 7

• 得点が 大のルートを探し出したい

今日 は 天気 すいい

• 得点が 大のルートを探し出したい2011/07/23 DSIRNLP #1 20

グラフの探索ラ 探索名詞 名詞 名詞 名詞 名詞 名詞

動詞

形容詞

動詞

形容詞始端

動詞

形容詞

動詞

形容詞

動詞

形容詞

動詞

形容詞形容詞

助詞

形容詞

助詞

始端 形容詞

助詞

形容詞

助詞

形容詞

助詞

形容詞

助詞

終端

助詞

助動詞

助詞

助動詞

助詞

助動詞

助詞

助動詞

助詞

助動詞

助詞

助動詞

今 気 す

記号 記号 記号 記号 記号 記号

今日 は いい 天気 です 。始端をスタート地点、終端をゴールとして、いずれかのノードを6回通過するルートの

2011/07/23 DSIRNLP #1 21

始端をスタ ト地点、終端を ルとして、いずれかのノ ドを6回通過するル トの中で、一番高いスコアが得られるルートを探し出したい

全探索全探索

真 直 解く どうなる• 真正面から愚直に解くとどうなるか?

• 7つの形態素、6種類の品詞があるため、7つの形態素、6種類の品詞があるため、6^7≒28万の選び方(ルート)がありうる

入力に対して指数的に選び方が増える– 入力に対して指数的に選び方が増える

• 28万ルートのスコアを全て計算し、 大のスコアを持つルートを出力すればいい

• 20形態素の文が入力されると3 6*10^15• 20形態素の文が入力されると3.6*10^15

• さすがにちょっと無理そう

2011/07/23 DSIRNLP #1 22

大体の方針大体の方針

動的計画法で多項式時間に落ちるか?

N

問題の規模は小さいか?

厳密解は不要か?

Y

小さいか?

Y N Y N

近似解法動的計画法 整数計画法

12 3

2011/07/23 DSIRNLP #1 23

近似解法近似解法

貪欲法• 貪欲法

• ビームサーチビ ムサ チ

2011/07/23 DSIRNLP #1 24

貪欲法貪欲法

番それ ぽ も を逐次的 選ん く方法• 一番それっぽいものを逐次的に選んでいく方法

4 7 7 9 7 107計:51点

名詞 形容詞助詞 記号助動詞名詞始端 終端

4 7 9

動詞3 名詞

ただし 適な解を発見 きる保証はな

動詞3 名詞

5

• ただし 適な解を発見できる保証はない

形容詞7 9 10計:51点

名詞

形容詞

助詞 記号助動詞名詞始端 終端

4 77 9

7 107

名詞

2011/07/23 DSIRNLP #1 25

名詞9 5計:49点

ビームサーチ• 上位k個の仮説を保持しながら行う幅優先探索

ビームサーチ

• 保持する仮説数をビーム幅という

始端

• プライオリティキューにスコアを優先度として、そこまでの仮説(ルート)を放り込んでいくでの仮説(ル ト)を放り込んでいく

2011/07/23 DSIRNLP #1 26

ビームサーチ• 上位k個の仮説を保持しながら行う幅優先探索

ビームサーチ

• 保持する仮説数をビーム幅という

名詞

4

始端動詞3

22 形容詞

• プライオリティキューにスコアを優先度として、そこまでの仮説(ルート)を放り込んでいくでの仮説(ル ト)を放り込んでいく

2011/07/23 DSIRNLP #1 27

ビームサーチ• 上位k個の仮説を保持しながら行う幅優先探索

ビームサーチ

• 保持する仮説数をビーム幅という

名詞

4

始端動詞3

22 形容詞×…

• プライオリティキューにスコアを優先度として、そこまでの仮説(ルート)を放り込んでいくでの仮説(ル ト)を放り込んでいく

2011/07/23 DSIRNLP #1 28

ビームサーチ• 上位k個の仮説を保持しながら行う幅優先探索

ビームサーチ

• 保持する仮説数をビーム幅という名詞4+7

名詞

4

4+74+5 動詞

4+4 形容詞

始端動詞3

2

形容詞

形容詞3+9

2 形容詞×… 助詞…3+5

• プライオリティキューにスコアを優先度として、そこまでの仮説(ルート)を放り込んでいくでの仮説(ル ト)を放り込んでいく

2011/07/23 DSIRNLP #1 29

ビームサーチ• 上位k個の仮説を保持しながら行う幅優先探索

ビームサーチ

• 保持する仮説数をビーム幅という名詞4+7

名詞

4

4+74+5 動詞

4+4 形容詞

××

始端動詞3

2

形容詞

形容詞3+9

×

2 形容詞×… 助詞…3+5

ו プライオリティキューにスコアを優先度として、そこまでの仮説(ルート)を放り込んでいくでの仮説(ル ト)を放り込んでいく

2011/07/23 DSIRNLP #1 30

ビームサーチ• 上位k個の仮説を保持しながら行う幅優先探索

ビームサーチ

• 保持する仮説数をビーム幅という名詞4+7 動詞

名詞

4

4+74+5 動詞×4+4 形容詞×

助詞…

始端動詞3

2

形容詞×形容詞

3+9 助動詞

2 形容詞×… 助詞×…3+5

名詞

• プライオリティキューにスコアを優先度として、そこまでの仮説(ルート)を放り込んでいく

での仮説(ル ト)を放り込んでいく

2011/07/23 DSIRNLP #1 31

大体の方針大体の方針

動的計画法で多項式時間に落ちるか?

N

問題の規模は小さいか?

厳密解は不要か?

Y

小さいか?

Y N Y N

近似解法動的計画法 整数計画法

12 3

2011/07/23 DSIRNLP #1 32

動的計画法動的計画法

• 実は、ある種の性質をもった問題(漸化式で書ける問題)であれば、ちょっとした工夫で計書ける問題) あれ 、ちょ 夫 計算量を減らせる

• その方法(枠組)を動的計画法 (Dynamic• その方法(枠組)を動的計画法 (Dynamic programming (DP) )という

• この問題の場合、指数的な計算量(品詞数^形態素数)を線形の計算量(形態素数*(品詞形態素数)を線形の計算量(形態素数 (品詞数^2))まで減らすことができる

2011/07/23 DSIRNLP #1 33

ゴールから眺めてみるゴールから眺めてみる

単純化 ため品詞 種 態素 とする• 単純化のため品詞2種(A,B)、3形態素(1,2,3)とする

A A A

始端 終端

B B B

形態素1 形態素2 形態素3形態素 形態素 形態素

2011/07/23 DSIRNLP #1 34

ゴールから眺めてみるゴールから眺めてみる

単純化 ため品詞 種 態素 とする• 単純化のため品詞2種(A,B)、3形態素(1,2,3)とする

A A A

15始端 終端

15

B B B

形態素1 形態素2 形態素3形態素 形態素 形態素

2011/07/23 DSIRNLP #1 35

ゴールから眺めてみるゴールから眺めてみる

単純化 ため品詞 種 態素 とする• 単純化のため品詞2種(A,B)、3形態素(1,2,3)とする

12A A A

15

12

3

始端 終端15

3B B B

11

3

形態素1 形態素2 形態素3

• 終端は、単に、A、Bまでのルートの 大のスコアがわかればよい

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 36

わかればよい

ゴールから眺めてみるゴールから眺めてみる

単純化 ため品詞 種 態素 とする• 単純化のため品詞2種(A,B)、3形態素(1,2,3)とする

12A A A

15

12

3

始端 終端15

3B B B

11

3

形態素1 形態素2 形態素3

• 終端は、単に、A、Bまでのルートの 大のスコアがわかればよい

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 37

わかればよい

ゴールから眺めてみるゴールから眺めてみる

ゴ が 番 だ た• ゴールが3番目のAだとしたら……?

12A A A

12

始端

B B

形態素1 形態素2 形態素3形態素 形態素 形態素

2011/07/23 DSIRNLP #1 38

ゴールから眺めてみるゴールから眺めてみる

ゴ が 番 だ た• ゴールが3番目のAだとしたら……?

128

A A A123

8

始端 4

B B

形態素1 形態素2 形態素38

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 39

ゴールから眺めてみるゴールから眺めてみる

ゴ が 番 だ た• ゴールが3番目のAだとしたら……?

128

A A A123

8

始端 4

B B

形態素1 形態素2 形態素38

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 40

ゴールから眺めてみるゴールから眺めてみる

ゴ が 番 だ た• ゴールが2番目のBだとしたら……?

A

始端

B B

形態素1 形態素2 形態素38

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 41

ゴールから眺めてみるゴールから眺めてみる

ゴ が 番 だ た• ゴールが2番目のBだとしたら……?

3

A

3

始端 5

B B

形態素1 形態素2 形態素384

3

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 42

ゴールから眺めてみるゴールから眺めてみる

ゴ が 番 だ た• ゴールが2番目のBだとしたら……?

3

A

3

始端 5

B B

形態素1 形態素2 形態素384

3

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 43

ゴールから眺めてみるゴールから眺めてみる

ゴ が 番 だ た• ゴールが1番目のAだとしたら……?

3

A

3

始端

形態素1 形態素2 形態素3形態素 形態素 形態素

2011/07/23 DSIRNLP #1 44

ゴールから眺めてみるゴールから眺めてみる

ゴ が 番 だ た• ゴールが1番目のAだとしたら……?

3

A

3

3

始端

形態素1 形態素2 形態素3形態素 形態素 形態素

2011/07/23 DSIRNLP #1 45

マルコフ性につけ込むマルコフ性につけ込む

• 一つ前の形態素に至るまでの 大のスコアが判っていれば、自分までのスコアの 大値判 れ 、自分ま ア 大値がわかる

つ前の形態素に至るまでの 大のスコア• 一つ前の形態素に至るまでの 大のスコアは、更にその一つ前の形態素のスコアが判ればよいればよい

• 始点はスコア0と判明しているので、始点から始点はス ア0と判明しているので、始点から順繰りに計算できる

2011/07/23 DSIRNLP #1 46

探索探索

まず始端 タ• まず始端からスタート

3

A

3

3

始端

4B

形態素1 形態素2 形態素34

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 47

探索

も 始端 来る あた ま

探索

• A、Bともに始端から来る(あたりまえ)

3

A

3

3

始端

4B

形態素1 形態素2 形態素34

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 48

探索

態素 注

探索

• 形態素2のAに注目

3

A A

3

3 3

5

始端

4B

形態素1 形態素2 形態素34

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 49

探索

態素 注

探索

• 形態素2のAに注目

3 8

A A

3

35

8

3

始端

4B

形態素1 形態素2 形態素34

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 50

探索

態素 注

探索

• 形態素2のBに注目

3 8

A A

3

35

8

3

始端

45

B

形態素1 形態素2 形態素34

B3

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 51

探索

態素 注

探索

• 形態素2のBに注目

3 8

A A

3

35

8

3

始端

45

B

形態素1 形態素2 形態素34

B

83

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 52

探索

態素 注

探索

• 形態素3のAに注目

3 8

A A

3

35

8

3A

4

3

始端

45

B

形態素1 形態素2 形態素34

B

83

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 53

探索

態素 注

探索

• 形態素3のAに注目

3 8 12A A

3

35

8

3A

3

4

12

始端

45

B

形態素1 形態素2 形態素34

B

83

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 54

探索

態素 注

探索

• 形態素3のBに注目

3 8 12A A

3

35

8

3A

3

4

12

始端

45 2

B

形態素1 形態素2 形態素34

B

83

B3

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 55

探索

態素 注

探索

• 形態素3のBに注目

3 8 12A A

3

35

8

3A

3

4

12

始端

45 2

B

形態素1 形態素2 形態素34

B

83

B311

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 56

探索

終端 注

探索

• 終端に注目

3 8 12A A

3

35

8

3A

3

4

12

3

始端

45 2

終端

3B

形態素1 形態素2 形態素34

B

83

B311

3

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 57

探索

終端 注

探索

• 終端に注目

3 8 12A A

3

35

8

3A

3

4

12

3

始端

45 2

終端

3B

形態素1 形態素2 形態素34

B

83

B311

3

形態素 形態素 形態素

2011/07/23 DSIRNLP #1 58

計算量計算量

各 プ 必 な計算量 詞数• 各ステップで必要な計算量は品詞数^2

• 形態素の数だけそれを繰り返すため、合計形態素の数だけそれを繰り返すため、合計(品詞数^2)*形態素数

ナイ ブな計算が(品詞数 形態素数)だ た• ナイーブな計算が(品詞数^形態素数)だったことを考えると、劇的に速くなる

– 指数→線形

2011/07/23 DSIRNLP #1 59

DPの実装:DP表を埋めるコードを書くDP の実装:DP 表を埋めるコードを書く

A A

35

8

A3 12

始端

3

5

3 4

2終端

3

B

4

4B

8

5

3B3

2

11

3

形態素1 形態素2 形態素3

形態素1 形態素2 形態素34 8 11

品詞A スコア:3一つ前:始点

スコア:8一つ前:A

スコア:12一つ前:B

品詞B スコア:4 スコア:8 スコア:11品詞B スコア:4一つ前:始点

スコア:8一つ前:A

スコア:11一つ前:B

• ヘンゼルとグレーテル=探索の寓話ポイ タを失うと道 迷う

2011/07/23 DSIRNLP #1 60

• ポインタを失うと道に迷う

動的計画法が適用できれば必ず多項式時間に落ちるのか?

• No.

• 動的計画法が適用できるが、多項式のオーダまで計算量が落ちない問題がある

• 例:巡回セールスマン問題例:巡回セ ルスマン問題

• Held‐Karp Algorithms (Held+ SIAM62)で階乗のオー

ダが指数まで落ちるが まだ指数オーダなので 更ダが指数まで落ちるが、まだ指数オーダなので、更にビームサーチと組み合わせるなどする

SMTのデコ ド (Till + CL03)等で事例がある• SMTのデコード (Tillmann+ CL03)等で事例がある

2011/07/23 DSIRNLP #1 61

DP +枝刈りDP + 枝刈り

品詞 定 品詞数は ぜ くら な 各• 品詞同定:品詞数はせいぜい100くらいなので、各ステップでの演算はせいぜい10000回

• 音声認識:品詞ではなく単語を同定するため、数万(大語彙)の単語数を考えると、計算は何と1億回以上……

• さすがにつらくなってくるため、いろんな方法で枝刈さすがにつらくなってくるため、いろんな方法で枝刈り

• 近年はWFSTを用いて探索空間を効率的に表現• 近年はWFSTを用いて探索空間を効率的に表現

2011/07/23 DSIRNLP #1 62

大体の方針大体の方針

動的計画法で多項式時間に落ちるか?

N

問題の規模は小さいか?

厳密解は不要か?

Y

小さいか?

Y N Y N

近似解法動的計画法 整数計画法

12 3

2011/07/23 DSIRNLP #1 63

整数計画法整数計画法

• 離散的な解空間を持つ 適化問題を解く枠組

• まず整数条件がない場合:線形計画法のお話をします話をします

• そのあと整数条件がある場合:整数計画法のお話をします

2011/07/23 DSIRNLP #1 64

Linear Programming (LP)Linear Programming (LP)• 線形計画

• 形式的には以下のような形をしている問題を解く方法を線形計画法という

• 目的関数が非線形なときは非線形計画(Nonlinear Programming NLP)と• 目的関数が非線形なときは非線形計画(Nonlinear Programming, NLP)といい、SVMのパラメタ推定など(凸2次計画)

xcTmin 目的関数

bAx

xcx

≤s.t.

min 目的関数

制約 xを解(解ベクトル)というcは係数bAx ≤s.t. cは係数

Aは行列、bはベクトル

制約を満たしつつ、目的関数を 小化するベクトルxを探すような問題=線形計画問題

それを解く方法=線形計画法それを解く方法=線形計画法

2011/07/23 65DSIRNLP #1

例例

以下のような問題を考える• 以下のような問題を考える

• max y=x1+2x2• s t x1<=5 7 x2<=3 2 x1>=0 x2>=0 目的関数cT xs.t. x1<=5.7, x2<=3.2, x1>=0, x2>=0

• 先程の記法で書くと、(maxにして)

( ) +=⎟⎟⎠

⎞⎜⎜⎝

⎛= 221max 21

2

1

, 21

xxxx

yxx

目的関数

• 解はx =5 7 x =3 2 ⎟⎟⎞

⎜⎜⎛

⎟⎞

⎜⎛⎟⎟⎞

⎜⎜⎛

⎠⎝

237.5

10

01

2

x制約

• 解はx1=5.7, x2=3.2

• というのはすぐわかる

⎟⎟⎟⎟

⎠⎜⎜⎜⎜

≤⎟⎟⎠

⎞⎜⎜⎝

⎟⎟⎟⎟

⎠⎜⎜⎜⎜

−002.3

101

01

0s.t.

2

1

xx

連立方程式になっている

線形計画法は目的関数に含まれる変数( )を操作して

⎟⎠

⎜⎝

⎟⎠

⎜⎝ − 010

A x b

線形計画法は目的関数に含まれる変数(x1、x2)を操作して、制約を満たす、 良の変数の組み合わせを探せば解ける2011/07/23 66DSIRNLP #1

図で考える図で考える

数 変数 値 約 定義• 目的関数の変数の値域(制約によって定義される)によって平面(多角形、xが3次元なら空間(多面体))が定義される(実行可能領域という)(実行可能領域という)

x2 制約x2<=3.2y=x +2x なので 右上に行く

増加

3

2

y=x1+2x2なので、右上に行くほどyの値が高いつまり小数解はここx1=5.7, x2=3.2

1

実行可能領域x1 5.7, x2 3.2

整数解はx1とx2が共に整数の点(青点)

x1

制約x1<=5.7

0 1 2 3 4 5

整数の点(青点)なのでx1=5, x2=3

実行可能領域内の点として解は定義される一番よい点( 適解)は実行可能領域の境界上のどこかにある2011/07/23 67DSIRNLP #1

単体法 (simplex method)単体法 (simplex method)

線 計 問題を解く方法• 線形計画問題を解く方法

• 必ず多項式時間で解けると証明されているわけではないが、実用上高速に問題を解けることが多い

• 可能領域のある頂点を出発点として、境界の辺に可能領域のある頂点を出発点として、境界の辺に沿って目的関数を増やす方向に解を探す

2011/07/23 DSIRNLP #1 68

図でみると:図でみると:z

max 4x+3y+2z3

max 4x+3y+2zs.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;x+y+z <= 8;

04

3y

x

この三角形の面がこの三角形の面がx+y+z = 8

2011/07/23 DSIRNLP #1 69

図でみると:図でみると:z

max 4x+3y+2z3

max 4x+3y+2zs.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;x+y+z <= 8;

1. x=0, y=0, z=0 からスタート傾きが大きい x を制約にぶつかるまで増やす

04

増やす

3y

x

この三角形の面がこの三角形の面がx+y+z = 8

2011/07/23 DSIRNLP #1 70

図でみると:図でみると:z

max 4x+3y+2z3

max 4x+3y+2zs.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;x+y+z <= 8;

1. x=0, y=0, z=0 からスタート傾きが大きい x を制約にぶつかるまで増やす

04

増やす2. 次に傾きが大きい y を制約にぶつかる

まで増やす

3y

x

この三角形の面がこの三角形の面がx+y+z = 8

2011/07/23 DSIRNLP #1 71

図でみると:図でみると:z

max 4x+3y+2z3

max 4x+3y+2zs.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;x+y+z <= 8;

1. x=0, y=0, z=0 からスタート傾きが大きい x を制約にぶつかるまで増やす

04

増やす2. 次に傾きが大きい y を制約にぶつかる

まで増やす3. 次に傾きが大きい z を制約にぶつかる

3y

x

この三角形の面が

次 傾き 大き を制約 ぶ るまで増やす

この三角形の面がx+y+z = 8

2011/07/23 DSIRNLP #1 72

図でみると:図でみると:z

max 4x+3y+2z3

max 4x+3y+2zs.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;x+y+z <= 8;

1. x=0, y=0, z=0 からスタート傾きが大きい x を制約にぶつかるまで増やす

04

増やす2. 次に傾きが大きい y を制約にぶつかる

まで増やす3. 次に傾きが大きい z を制約にぶつかる

3y

x

この三角形の面が

次 傾き 大き を制約 ぶ るまで増やす

4. x=4, y=3, z=1 で 27

この三角形の面がx+y+z = 8

2011/07/23 DSIRNLP #1 73

図でみると:図でみると:z

max 4x+3y+2z3

max 4x+3y+2zs.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;x+y+z <= 8;

2523

1. x=0, y=0, z=0 からスタート傾きが大きい x を制約にぶつかるまで増やす

04

増やす2. 次に傾きが大きい y を制約にぶつかる

まで増やす3. 次に傾きが大きい z を制約にぶつかる

3y

x

この三角形の面が

次 傾き 大き を制約 ぶ るまで増やす

4. x=4, y=3, z=1 で 27

この三角形の面がx+y+z = 8 27

2011/07/23 DSIRNLP #1 74

図でみると:図でみると:z

max 4x+3y+2z3

max 4x+3y+2zs.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;x+y+z <= 8;

2523

1. x=0, y=0, z=0 からスタート傾きが大きい x を制約にぶつかるまで増やす

04

増やす2. 次に傾きが大きい y を制約にぶつかる

まで増やす3. 次に傾きが大きい z を制約にぶつかる

3y

x

この三角形の面が

次 傾き 大き を制約 ぶ るまで増やす

4. x=4, y=3, z=1 で 27

この三角形の面がx+y+z = 8 27

ポイント:n変数の問題はn次元空間の探索となり、 適解は必ずn個の制約面が交わるところ(頂点)にある

2011/07/23 DSIRNLP #1 75

図でみると:図でみると:z

max 4x+3y+2z3

max 4x+3y+2zs.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;x+y+z <= 8;

2523

1. x=0, y=0, z=0 からスタート傾きが大きい x を制約にぶつかるまで増やす

04

増やす2. 次に傾きが大きい y を制約にぶつかる

まで増やす3. 次に傾きが大きい z を制約にぶつかる

3y

x

この三角形の面が

次 傾き 大き を制約 ぶ るまで増やす

4. x=4, y=3, z=1 で 27

この三角形の面がx+y+z = 8 27

ポイント:n変数の問題はn次元空間の探索となり、 適解は必ずn個の制約面が交わるところ(頂点)にあるx <= 4; y <= 3; x + y + z <= 8 の

2011/07/23 DSIRNLP #1 76

x <= 4; y <= 3; x + y + z <= 8 の3つの制約面に阻まれている

スラック変数スラック変数

max 4x+3y+2zs.t. 0<= x; 0<= y; 0<=z;x <= 4; y <= 3; z <= 3;

max 4x+3y+2zs t 0<= x <= 4; 0<= y <= 3; 0<= z <= 3; x 4; y 3; z 3;

x+y+z <= 8;s.t. 0< x < 4; 0< y < 3; 0< z < 3;x+y+z <= 8;

max 4x + 3y + 2z

スラック変数ラムダλを導入

s.t. 0<= x; 0<= y; 0<=z;x + λ1 = 4; y + λ2 = 3; z + λ3 = 3;x + y + z + λ4 = 8;0 λ1 0 λ2 0 λ3 0 λ4

ラック変数ラ ダ を導入0<= λ1; 0<= λ2; 0<= λ3; 0<= λ4

2011/07/23 DSIRNLP #1 77

スラック変数の意味スラック変数の意味max 4x + 3y + 2z

zy

s.t. 0<= x; 0<= y; 0<=z;x + λ1 = 4; y + λ2 = 3; z + λ3 = 3;x + y + z + λ4 = 8;0<= λ1; 0<= λ2; 0<= λ3; 0<= λ4

y

x

2011/07/23 DSIRNLP #1 78

スラック変数の意味スラック変数の意味max 4x + 3y + 2z

zy

s.t. 0<= x; 0<= y; 0<=z;x + λ1 = 4; y + λ2 = 3; z + λ3 = 3;x + y + z + λ4 = 8;

0 <=λ3

0<= λ1; 0<= λ2; 0<= λ3; 0<= λ4

0<

0<=y

解空間(多面体の中)を形作る7つの面それぞれが上の 0<= x,y,z,λ1-4 に対応している

0<=x

0<

0 <=λ4

y

x0<=z

0 <=λ10 <=λ2

2011/07/23 DSIRNLP #1 79

スラック変数の意味スラック変数の意味max 4x + 3y + 2z

zy

s.t. 0<= x; 0<= y; 0<=z;x + λ1 = 4; y + λ2 = 3; z + λ3 = 3;x + y + z + λ4 = 8;

0 <=λ3

0<= λ1; 0<= λ2; 0<= λ3; 0<= λ4

0<

0<=y

解空間(多面体の内側)を形作る7つの面それぞれが上の 0<= x,y,z,λ1-4 に対応している

0<=x

0<

0 <=λ4

y

x0<=z

0 <=λ10 <=λ2 ポイント:解は、この7変数のうち3つが0になっている

2011/07/23 DSIRNLP #1 80

スラック変数スラック変数

max 4x+3y+2zs.t. 0<= x; 0<= y; 0<=z;x <= 4; y <= 3; z <= 3;

max 4x+3y+2zs t 0<= x <= 4; 0<= y <= 3; 0<= z <= 3; x 4; y 3; z 3;

x+y+z <= 8;s.t. 0< x < 4; 0< y < 3; 0< z < 3;x+y+z <= 8;

max 4x + 3y + 2z

スラック変数ラムダλを導入

s.t. 0<= x; 0<= y; 0<=z;x + λ1 = 4; y + λ2 = 3; z + λ3 = 3;x + y + z + λ4 = 8;0 λ1 0 λ2 0 λ3 0 λ4

ラック変数ラ ダ を導入0<= λ1; 0<= λ2; 0<= λ3; 0<= λ4

max 4x + 3y + 2zs.t. 0<= x; 0<= y; 0<=z;λ1 = 4 - x; λ2 = 3 - y; λ3 = 3 - z;λ4 = 8 - x - y - z;0 λ1 0 λ2 0 λ3 0 λ4

スラック変数を左辺に移項

2011/07/23 DSIRNLP #1 81

0<= λ1; 0<= λ2; 0<= λ3; 0<= λ4左辺に移項

シンプレックス表シンプレックス表

max 4x + 3y + 2z実装上は、シンプレックス表を次々と書き換えて求解する

この3つの値が0 すなわちmax 4x + 3y + 2zs.t. 0<= x; 0<= y; 0<=z;λ1 = 4 - x; λ2 = 3 - y; λ3 = 3 - z;λ4 = 8 - x - y - z;

この3つの値が0、すなわちx,y,zは0以上という制約にひっかかっている

λ4 8 x y z;0<= λ1; 0<= λ2; 0<= λ3; 0<= λ4 切片 x  y z 

f(x,y,z) 0 4 3 2

λ1 4 1

z

こちら

ひっかλ1  4 ‐1

λ2  3 ‐1

λ3 3 ‐1

らの制約

かかってな

λ4  8 ‐1 ‐1 ‐1には

ない

現在は原点(x=0,y=0,z=0)におり、

x

現在は原点( ,y , )におり、スコアは0(f(x,y,z)の行の切片)ということをシンプレックス表で表現できる

2011/07/23 DSIRNLP #1 82y

探索方向の決定探索方向の決定切片 x y z

z

x,y,zいずれ切片 x  y z 

f(x,y,z) 0 4 3 2

λ1  4 ‐1 0 0

の方向に移動するか?

λ2  3 0 ‐1 0

λ3 3 0 0 ‐1

λ4 8 ‐1 ‐1 ‐1λ4  8 1 1 1

x

シンプレックス表から、• xは4まで増やせる(4まで増やすとλ1が

0となり、制約に阻まれる)

y

x 0となり、制約に阻まれる)• yは3まで増やせる(3まで増やすとλ2が

0となり制約に阻まれる)• zも3まで増やせる(3まで増やすとλ3が0も3まで増やせる(3まで増やすと 3が0となり制約に阻まれる)

x,y,zそれぞれの係数から、xは4まで増やすことによって16、yは3まで増やすことによって9 zは3まで増やすことによって6 目的関数の値が増える→xを増やす

2011/07/23 DSIRNLP #1 83

よって9、zは3まで増やすことによって6、目的関数の値が増える→xを増やす

ピボット要素の特定ピボット要素の特定切片 x y z

z

この‐1の要素を 切片 x  y z 

f(x,y,z) 0 4 3 2

λ1  4 ‐1 0 0

の 1の要素をピボットと呼ぶ

λ2  3 0 ‐1 0

λ3 3 0 0 ‐1

λ4 8 ‐1 ‐1 ‐1λ4  8 1 1 1

x

• xを増やしたとき、λ1の行の制約と、λ4の行の制約がxの増加を阻む

• λ1の行の制約に先にひっかかる

y

x • λ1の行の制約に先にひっかかる:切片が4、係数が-1であるため、xを4まで増やしたところで制約にぶつかる

• この行と列の交わる場所の要素を

0 <=λ1の制約に阻まれる

• この行と列の交わる場所の要素をピボット要素と呼ぶ

幾何的には、x=4の平面にまずぶつかるちなみにλ4の制約は上の図の 三角形に直方体を切り取っている面に相当(p 78)参照

2011/07/23 DSIRNLP #1 84

ちなみにλ4の制約は上の図の、三角形に直方体を切り取っている面に相当(p.78)参照

シンプレックス表の書き換えシンプレックス表の書き換えz

切片 x  y z 

f( )f(x,y,z) 0 4 3 2

λ1  4 ‐1 0 0

λ2  3 0 ‐1 0x=0, y=0, z=0

λ3 3 0 0 ‐1

λ4  8 ‐1 ‐1 ‐1λ1=0, y=0, z=0

ピボット

• λ1とxを入れ替える

y

x0 <=λ1の制約に阻まれる

• λ1とxを入れ替える• Xをλ1で表す(λ1の行のxを左辺に移項):λ1 = 4 - x → x = 4 - λ1

• f(x y z) に上式を代入:制約 阻 f(x,y,z) に上式を代入:f = 4x + 3y + 2z = 4(4-λ1) + 3y + 2z= 16 – 4λ1 + 3y + 2z

• λ4の行にも代入

2011/07/23 DSIRNLP #1 85

の行 も代入λ4= 4 + λ1 - y - z

シンプレックス表の書き換えシンプレックス表の書き換え切片 x  y z  • λ1の行とxの列を入れ替える

f(x,y,z) 0 4 3 2

λ1  4 ‐1 0 0

λ2 3 0 1 0

• Xをλ1で表す(λ1の行のxを左辺に移項):λ1 = 4 - x → x = 4 - λ1

• f(x,y,z) に上式を代入:λ2  3 0 ‐1 0

λ3 3 0 0 ‐1

λ4  8 ‐1 ‐1 ‐1

f = 4x + 3y + 2z = 4(4-λ1) + 3y + 2zf = 16 – 4λ1 + 3y + 2z

• λ4の行にも代入λ4= 4 + λ1 - y - z

切片 λ1  y z 

f(x,y,z) 16 ‐4 3 2

x  4 ‐1 0 0

λ2 3 0 1 0λ2  3 0 ‐1 0

λ3 3 0 0 ‐1

λ4  4 1 ‐1 ‐1

2011/07/23 DSIRNLP #1 86

掃き出し法掃き出し法• 計算機では掃き出す法を使って行列を書き換える

切片 x  y z 

f(x,y,z) 0 4 3 2

λ

• λ1の行をc倍してλ4の行に足し、λ4のx列の要素を0にすることを考える

• x列の係数から、-1倍して足せば良いことがわかるλ1  4 ‐1 0 0

λ2  3 0 ‐1 0

λ3 3 0 0 ‐1

λ

x列の係数から、 1倍して足せば良いことがわかる• -1 = -(-1/-1)

• λ4 - λ1= 8 – x – y – z + (-1(4 – x)) = 4 – y – z• λ4 = 4 + λ1 – y – z

λ4  8 ‐1 ‐1 ‐1y

• 同様にf(x,y,z)の行も掃き出す• X列の係数から、4倍して足せばいいことがわかる切片 λ1  y z 

• 4 = -(4/-1)• f + 4λ1 = 4x + 3y + 2z + 4 (4 – x) = 16 + 3y + 2z• f = 16 – 4λ1 + 3y + 2z

切片 y

f(x,y,z) 16 ‐4 3 2

x  4 ‐1 0 0

λ2  3 0 ‐1 0

• λ1の行はピボット要素の符号を反転させたもので割る(単にλ1とxを入れ替えるだけなので)λ1 4 4 λ1

λ3 3 0 0 ‐1

λ4  4 1 ‐1 ‐1

2011/07/23 DSIRNLP #1 87

• λ1 = 4 – x → x = 4 – λ1

図でみると図でみるとz 切片 x  y z 

f(x,y,z) 0 4 3 2

λ1  4 ‐1 0 0

λ2 3 0 ‐1 0

x

λ2  3 0 ‐1 0

λ3 3 0 0 ‐1

λ4  8 ‐1 ‐1 ‐1

x = 0, y = 0,z = 0

yx

z切片 λ1 y z切片 λ1  y z 

f(x,y,z) 16 ‐4 3 2

x  4 ‐1 0 0

x

λ2  3 0 ‐1 0

λ3 3 0 0 ‐1

λ4 4 1 ‐1 ‐1

λ1 = 0, y = 0,z = 0

2011/07/23 DSIRNLP #1 88y

x λ4  4 1 ‐1 ‐1

単体法のアルゴリズム単体法のアルゴリズム

ピボ 素を る1. ピボット要素を見つける

– 列の要素(先の例ではx,y,z)の係数、制約からど列 要素(先 例 は ,y, ) 係数、制約 ら

の変数の値をどれだけを増やせば一番目的関数の値が増えるか調べる数 値 増 る 調 る

– 値がこれ以上増やせなければおしまい!

2 掃き出し法を使 てシンプレ クス表を書き2. 掃き出し法を使ってシンプレックス表を書き換える

3. 1に戻る(シンプル!)

2011/07/23 DSIRNLP #1 89

整数計画問題(Integer Linear Programming Problem)

• 整数計画問題整数計画問題

• 解が取り得る値が整数(さっきの青点)である線形計画問題– 特に解が取り得る値が2値(0か1)を0‐1整数計画問題という特に解が取り得る値が2値(0か1)を0 1整数計画問題という

• NLPへの応用– 小全域木:Dependency Parsing (Riedel+ EMNLP06)(Martins+ 

ACL09)

– ナップサック問題:自動要約(McDonald+ ECIR07) (Takamura+ EACL09)

巡回セ ルスマン問題 SMT(G ACL01)(Z l ki ACL09)– 巡回セールスマン問題:SMT(Germann+ ACL01)(Zaslavskiy+ ACL09)、Sentence Ordering(Althaus+ ACL04)

– などなど

言語処理タスクの解ベクトルは整数→整数計画問題として定式化→整数計画問題として定式化

2011/07/23 90DSIRNLP #1

凸包(Convex hull)

整数条件下での実行可能領域を考える

凸包(Convex hull)

• 整数条件下での実行可能領域を考える

制約

※ただし凸包を求めるのは難しい

制約 凸包

ポイント:整数解<=小数解が必ず成立が必ず成立

与えられた点集合を含む 小の多面体与えられた点集合を含む 小の多面体(2次元だと多角形)=凸包2011/07/23 91DSIRNLP #1

線形計画緩和 (Linear Programming Relaxation)線形計画緩和 (Linear Programming Relaxation)

• 逆に、整数計画問題から整数条件を取り除くと、問題が緩和される(易しくなる)

• このことを線形計画緩和(relaxation)という

• 緩和問題の 適解=元問題の 適解のことがある緩和問題の 適解 元問題の 適解のことがある

• また、一般に小数解の近傍を探せば整数解がある→緩和して問題を簡単にして解ける場合がある→緩和して問題を簡単にして解ける場合がある

線形計画問題を解く際のテクニックの一つ線形計画問題を解く際のテクニックの つ

2011/07/23 92DSIRNLP #1

品詞同定を整数計画法で表現品詞同定を整数計画法で表現A A

35

8

A3 12

始端

3

5

3 4

2終端

3

B

4

4B

8

5

3B3

2

11

3

形態素1 形態素2 形態素34 8 11

2011/07/23 DSIRNLP #1 93

品詞同定を整数計画法で表現品詞同定を整数計画法で表現A A

35

8

A3 12

x2 x6

始端

3

5

3 4

2終端

3x0

x1

x2

x4

x3x6

x8

x7 x10

x11

B

4

4B

8

5

3B3

2

11

3x1 x4

x5

x8

x9

x11

形態素1 形態素2 形態素34 8 11

それぞれの辺に変数xを割り当て、式を立てる(x0-11は全て0か1)max {3*x0 + 4*x1 + 5*x2 + 5*x3 + 3*x4 + 3*x5 + 3*x6 + 2*x7 + 4*x8 + 3*x9 + 3*x10 + 3*x11 }

同時に選んではいけない辺を制約で表現t 0 1 1 2 3 4 5 1 6 7 8 9 1 10 11 1s.t. x0+x1 = 1; x2+x3+x4+x5 = 1; x6+x7+x8+x9 = 1; x10+x11 = 1;

同時に選ばないといけない辺を制約で表現(x0が選ばれているがx2もx3も選ばれていないというような場合を防ぐ

2011/07/23 DSIRNLP #1 94s.t. x0=x2+x3; x1=x4+x5; x2=x6+x7;x3=x8+x9;x4=x6+x7;…

指数的な計算量指数的な計算量

• maxx {a*x0 + b*x1 + c*x2 + d*x3}s.t. x  {0, 1}{ , }

• 4つの変数が0と1を取りうるため、 2^4 = 16 通りがあるりがある

• 4つならばいいが100変数だったら? 2^100 ≒ 1.3*10^30 となり、ちょっと無理そう

2011/07/23 DSIRNLP #1 95

分枝限定法 (branch and bound method)分枝限定法 (branch and bound method)

整数計 法を解く ゴ ズ• 整数計画法を解くアルゴリズム

• 総当たり は大変なので、解空間を分割し、総当たり……は大変なので、解空間を分割し、

分割した空間の上限を計算、探索が不要な空間を見切る空間を見切る

• 基本的な作戦:場合分けをして、明らかに適解を含まない領域を探索しない

2011/07/23 DSIRNLP #1 96

例題:ナップサック問題例題:ナップサック問題

袋 お菓 を詰めた• 袋にお菓子を詰めたい

• お菓子にはそれぞれ嬉しさがある(目的関数)

• ただし袋には当然サイズがあり、お菓子を無尽蔵に詰めることはできない(制約)詰めることはできない(制約)

• 嬉しさを 大化するようにお菓子を詰めたい( 適化問題)化問題)

• maxx {a*x0 + b*x1 + c*x2}maxx {a x0   b x1   c x2}s.t. x  {0, 1}; x0 + x1 + x2 <= 2;

2011/07/23 DSIRNLP #1 97

アルゴリズムアルゴリズム

手 解空間 中から 能解を得る1. 手元の解空間の中から、可能解を得る

2. 分枝 (branch)

3. 分枝した空間の上限を得る

4 可能解と上限を比較4. 可能解と上限を比較

1. 可能解>上限であればその分枝を破棄 (bound)

2 上限>=可能解であればステップ2へ2. 上限>=可能解であればステップ2へ

5. 1に戻る

2011/07/23 DSIRNLP #1 98

探索木探索木• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}

x0 = 1

x

s.t. x  {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;

Y N1.貪欲法で可能解を探索

2011/07/23 DSIRNLP #1 99

探索木探索木• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}

x0 = 1

x

s.t. x  {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;

Y N1.貪欲法で可能解を探索

x1 = 1

5 (4)

Y N

2011/07/23 DSIRNLP #1 100

探索木探索木• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}

x0 = 1

x

s.t. x  {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;

Y N1.貪欲法で可能解を探索

x1 = 1

5 (4)

Y N5+3 (4+6)

x2 = 1

( )

2011/07/23 DSIRNLP #1 101

アルゴリズムアルゴリズム

手 解空間 中から 許容解を得る1. 手元の解空間の中から、許容解を得る

2. 分枝 (branch)

3. 分枝した空間の上限を得る

4 可能解と上限を比較4. 可能解と上限を比較

1. 可能解>上限であればその分枝を破棄 (bound)

2 上限>=可能解であればステップ2へ2. 上限>=可能解であればステップ2へ

5. 1に戻る

2011/07/23 DSIRNLP #1 102

探索木探索木• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}

x0 = 1

x

s.t. x  {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;2.整数条件を緩和、上限をシンプレックス法で計算

Y N

x1 = 1

5 (4)

x1 = 1

シンプレックス法で計算

Y N5+3 (4+6)

x2 = 1

( )

2011/07/23 DSIRNLP #1 103

探索木探索木• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}

x0 = 1

x

s.t. x  {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;2.整数条件を緩和、上限をシンプレックス法で計算

Y N

x1 = 1

5 (4)

x1 = 1

シンプレックス法で計算

Y N5+3 (4+6)

x2 = 1

( )

2011/07/23 DSIRNLP #1 104

探索木探索木• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}

x0 = 1

x

s.t. x  {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;2.整数条件を緩和、上限をシンプレックス法で計算

Y N

x1 = 1

5 (4)

x1 = 1

シンプレックス法で計算

Y N5+3 (4+6)• maxx {3*x1 + 2*x2 + 2*x3}

s.t. x  [0, 1]; 6*x1 + 3*x2 + 2*x3 <= 10;

x2 = 1

( )

2011/07/23 DSIRNLP #1 105

探索木探索木• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}

x0 = 1

x

s.t. x  {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;2.整数条件を緩和、上限をシンプレックス法で計算

Y N

x1 = 1

5 (4)

x1 = 1

シンプレックス法で計算

Y N5+3 (4+6)• maxx {3*x1 + 2*x2 + 2*x3}

s.t. x  [0, 1]; 6*x1 + 3*x2 + 2*x3 <= 10;

x2 = 1

( )→ 3*1+2*1+2*1 = 7

この領域の上限=7

先に求めた可能解 8なので先に求めた可能解=8なので、

この領域に 適解がある可能性はない!

探索中止

2011/07/23 DSIRNLP #1 106

探索中止

アルゴリズムアルゴリズム

手 解空間 中から 許容解を得る1. 手元の解空間の中から、許容解を得る

2. 分枝 (branch)

3. 分枝した空間の上限を得る

4 可能解と上限を比較4. 可能解と上限を比較

1. 可能解>上限であればその分枝を破棄 (bound)

2 上限>=可能解であればステップ2へ2. 上限>=可能解であればステップ2へ

5. 1に戻る

2011/07/23 DSIRNLP #1 107

探索木探索木• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}

x0 = 1

x

s.t. x  {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;2.整数条件を緩和、上限をシンプレックス法で計算

Y

x1 = 1

5 (4)シンプレックス法で計算

• maxx {5 + 3*x1 + 2*x2 + 2*x3}s.t. x [0, 1]; 6*x1 + 3*x2 + 2*x3 <= 6;

YN

5+3 (4+6)

s.t. x  [0, 1]; 6 x1 + 3 x2 + 2 x3 <  6;

x2 = 1( )

x2 = 1

2011/07/23 DSIRNLP #1 108

探索木探索木• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}

x0 = 1

x

s.t. x  {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;2.整数条件を緩和、上限をシンプレックス法で計算

Y

x1 = 1

5 (4)シンプレックス法で計算

• maxx {5 + 3*x1 + 2*x2 + 2*x3}s.t. x [0, 1]; 6*x1 + 3*x2 + 2*x3 <= 6;

YN

5+3 (4+6)

s.t. x  [0, 1]; 6 x1 + 3 x2 + 2 x3 <  6;

→ 5 + 3*(1/6) + 2*1 + 2*1 = 9.5

この領域の上限=9 5x2 = 1( )

x2 = 1 この領域の上限=9.5

先に求めた可能解=8なので、探索続行、分枝

2011/07/23 DSIRNLP #1 109

探索木探索木• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}

x0 = 1

x

s.t. x  {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;2.整数条件を緩和、上限をシンプレックス法で計算

Y

x1 = 1

5 (4)シンプレックス法で計算

YN

5+3 (4+6)x2 = 1

( )x2 = 1

2011/07/23 DSIRNLP #1 110

アルゴリズムアルゴリズム

手 解空間 中から 許容解を得る1. 手元の解空間の中から、許容解を得る

2. 分枝 (branch)

3. 分枝した空間の上限を得る

4 可能解と上限を比較4. 可能解と上限を比較

1. 可能解>上限であればその分枝を破棄 (bound)

2 上限>=可能解であればステップ2へ2. 上限>=可能解であればステップ2へ

5. 1に戻る

2011/07/23 DSIRNLP #1 111

ソルバを実装するか?ソルバを実装するか?

すごく大変 もな が簡単 もな• すごく大変……でもないが簡単でもない

• 少なくとも以下の3つを実装しなければならない

1. 良い可能解を高速に見つける方法(貪欲法、シンプレックス法+丸め、など)

2. 上限を高速に見つける方法(シンプレックス法/内点法)• シンプレックス法はCで200‐300行くらい

3. 1.と2.を使って再帰的に探索するルーチン

• 整数計画法の場合、 lp_solveなどフリーのソフトウェアに数式を投入して解くのが無難

– エクセルでも解ける

2011/07/23 DSIRNLP #1 112

ILPの使いどころILP の使いどころ• 問題を切り分けるとき

• NLP では、モデル、パラメタ、デコードを考える必要がある

• あるタスクを解いてみて、その精度が十分でない場合、3つの可能性を考える必要があるの可能性を考える必要がある

– パラメタがうまく推定されていない:訓練データ不足、イタレーションが足りてない場合など。学習曲線を見てみる足りてない場合など。学習曲線を見てみる

– デコードがうまくいっていない:ビームサーチなどで探索している場合、探索空間に比してビーム幅が狭い可能性。あまりよろしくない解を見つけている可能性あり ILP等で厳密解を見つけてみる見つけている可能性あり。ILP等で厳密解を見つけてみる

– モデル:上の2つが問題なさそうな場合、そもそも当該タスクを解くにあたってモデルの表現力が足りてない(バイグラム→トライグラムにしてみる)

2011/07/23 DSIRNLP #1 113

まとめまとめ• 初は NLP の全体像のお話をしました

– 解析と生成

– y = argmaxx f(x;w)y g x ( ; )

– モデル、パラメタ、デコード

• 次にデコードのお話をしました次にデコ ドのお話をしました

– 貪欲法、ビームサーチ、動的計画法、整数計画法

– 自分でモデルを作ってみる– 自分でモデルを作ってみる

– 式を書けば lp_solve が解いてくれるので、面白いモデルを考えてみるを考えてみる

– ILPで解けたら、他の、速いデコード法を考えてみる

2011/07/23 DSIRNLP #1 114

参考文献(教科書)参考文献(教科書)• 適化

松井ら 入門オペレ ションズ リサ チ 東海大学出版会 2008 (平易)– 松井ら, 入門オペレーションズ・リサーチ, 東海大学出版会, 2008. (平易)

– 金谷, これなら分かる 適化数学, 共立出版, 2005. (おすすめ)

– 今野ら, 整数計画法と組合わせ 適化, 日科技連, 1982. (古いがわかりやすい)

– コルテら(著)浅野ら(訳), 組み合わせ 適化(第2版), シュプリンガー・ジャパン, 2009. (攻撃力高い、引用数多)

• アルゴリズムとデータ構造アルゴリズムとデ タ構造

– メールホルンら(著)浅野(訳), アルゴリズムとデータ構造, シュプリンガー・ジャパン,  2009.(入門的)

Cormen et al Introduction to Algorithms (3rd Eds ) MIT Press 2009 (金字塔 ジ– Cormen et al., Introduction to Algorithms (3rd Eds.), MIT Press, 2009. (金字塔。ジャケがかっこいい)

• 実装

– Press et al., Numerical Recipes in C, Cambridge University Press, 1988.

– 奥村, C言語による 新アルゴリズム事典, 技術評論社, 1991.

– 秋葉ら,プログラミングコンテストチャレンジブック,毎日コミュニケーションズ,2010.秋葉ら, プ グラミングコンテストチャレンジブック, 毎日コミュ ケ ションズ,2010.

2011/07/23 DSIRNLP #1 115

• Thanks. 

2011/07/23 DSIRNLP #1 116