Contenu connexe Similaire à Argmax Operations in NLP Similaire à Argmax Operations in NLP (20) Plus de Hitoshi Nishikawa Plus de Hitoshi Nishikawa (6) Argmax Operations in NLP2. 目的
• NLP タスクの全体像をご説明差し上げ、ご理解いた
タ ク 全体像をご説 差 上げ ご理解 た
だき、皆様の学習の一助とする
– NLP とは何ぞや
– 他の分野との関係
– 構成要素、 NLP の世界観
• NLP タスクのうち、特に argmax 操作(デコード)と呼
g
ばれる操作についてお話差し上げ、モデル開発の
一助とする
2011/07/23 DSIRNLP #1 2
3. 目次
概 分
1. NLPの概要(10分)
1. 他分野との関係、 NLP の諸技術(5分)
他分野 関係、 諸技術( 分)
2. モデル、パラメタ、デコード(5分)
2. デコード(30分)
2 デコ ド(30分)
1. 近似解法(5分) 特
特にココを中心に
を中
2. 動的計画法(5分) お話します
3 整数計画法(20分)
3.
3. まとめ
2011/07/23 DSIRNLP #1 3
4. 自然言語処理
• 自然
自然言語を計算機で処理する一連の技術
を計算機 処 する 連 技術
– 自然言語を対象にする、という対象に焦点をあて
た呼称(分類)
– 隣接領域:音響信号処理(音全般の処理 エコー
隣接領域:音響信号処理(音全般の処理、エコ
キャンセラなど)、音声処理(人間が発する音の
処理、音声認識など)、画像処理(画像の処理)
処理 音声認識など) 画像処理(画像の処理)
– この名前には「目的」は含まれない
• テキストマイニングは「目的」指向の呼称
2011/07/23 DSIRNLP #1 4
5. 他の分野との関係
目的 対象 処理
検索
自然言語 データ構造・
処理 アルゴリズム
要素技術 要素技術
マイニング
2011/07/23 DSIRNLP #1 5
7. 中間表現?
• 文章を読むと 何らかの場景が思い浮かぶ
文章を読むと、何らかの場景が思い浮かぶ
• それを適当な形で表現したもの
東川さんは西川さんを殴りました。西川さんに愚弄されたからです。
原因
殴る 愚弄する
動作主 対象 動作主 対象
東川さん 西川さん 西川さん 東川さん
2011/07/23 DSIRNLP #1 7
8. 東川さんは西川さんを殴りました。西川さんに愚弄されたからです。
談話構造解析
原因
述語項構造 述語項構造
解析 殴る 愚弄する 解析
動作主 対象 動作主 対象
東川さん 西川さん 西川さん 東川さん
係り受け解析
形態素解析
※中間表現は応用に応じて適当な粒度で設定する
※中間表現は応用に応じ 適当な粒度 設定する
2011/07/23 DSIRNLP #1 8
9. 解析と生成
• 中間表現への変換を解析、中間表現から自然言語への変換
中間表現 変換を解析、中間表現 ら自然言語 変換
を生成と呼ぶ
• 解析 • 生成
– 形態素解析 – 深層生成
– 係り受け解析 • 内容選択
• 談話生成
– 述語項構造解析
– 照応解析 – 表層生成
• 文境界決定
– 談話構造解析
• 参照表現生成
• 語彙化
2011/07/23 DSIRNLP #1 9
10. 自然言語処理タスクを解く
• 解析、生成を問わず、それぞれのタスクは、与えら
ず ぞ
れた入力を所望の出力に変換する関数を設計し、
該関数を計算することに帰着される
該関数を計算する と 帰着される
• X : 入力
y = arg max f ( x; w)
x
• Y : 出力
Y : 出力
• f(x; w) : パラメタ w の下で x を実数に写像する関数
• を最大化する
argmaxx f(x;w) : f(x;w)を最大化する x
2011/07/23 DSIRNLP #1 10
11. 基本的な発想
• 無数の解候補それぞれに得点を与えて、一
番得点が高いものを選んでくる
今日 は いい 天気 です 。
y = arg max f ( x; w)
x
51点 名詞 助詞 形容詞 名詞 助動詞 記号
45点 名詞 助詞 名詞 名詞 助動詞 記号
40点 名詞 名詞 名詞 名詞 助動詞 記号
2011/07/23 DSIRNLP #1 11
12. NLP の 3 ステップ
NLP の 3 ステップ
1. モデルを作る:この式を計算すれば問題が
解けるという式を作る
2. パラメタを推定する:良い候補に高い得点を
与えるように、式に含まれるパラメタを推定
与えるように 式に含まれるパラメタを推定
する
3. デコードする:式を機械に計算させて問題を
解く
2011/07/23 DSIRNLP #1 12
13. 全体像
入力
力 言語知識
モデル コーパス
パラメタ
離散最適化
デコード 連続最適化
• いろんなことを勉強しないとご飯が
食べられなくて大変
出力
• 今日は特にデコードについてお話
今日は特にデコ ドについてお話
2011/07/23 DSIRNLP #1 13
18. 以下のモデルを仮定する
• 1次のマルコフモデル、パラメタも推定済とする
次 n
デ パ タも推定済 する
y = arg max{∑ yoko(hi , hi +1 ) + tate(ki , ki +1 )}
横方向 横方向の得点 i =0
の得点
2 2 4 5
4 3 5
始端 名詞 助詞 形容詞 名詞 助動詞 記号 終端
縦方向 4 5 4 5 3 5
の得点
今日 は いい 天気 です 。 計:51点
縦方向の得点と横方向の得点の和がこの品詞列のスコアとする
縦方向の得点:形態素「今日」はどのくらい名詞っぽいか
横方向の得点:「名詞」のあとに「助詞」はどのくらいあらわれやすいか
2011/07/23 DSIRNLP #1 18
19. 単純化
• 縦得点は横得点 足
縦得点は横得点に足してしまえる
まえる
2 2 4 5
4 3 5
始端 名詞 助詞 形容詞 名詞 助動詞 記号 終端
4 5 4 5 3 5
今日 は いい 天気 です 。
計:51点
7 7 10
4 7 9 7
始端 名詞 助詞 形容詞 名詞 助動詞 記号 終端
今日 は いい 天気 です 。
計:51点
• これで問題が単純になる
2011/07/23 DSIRNLP #1 19
20. グラフの探索
• ルートに応じて得点がある
計:51点
7 7 10
4 7 9 7
始端 名詞 助詞 形容詞 名詞 助動詞 記号 終端
5 7 計:47点
名詞
今日 は いい 天気 です
す 。
• 得点が最大のルートを探し出したい
2011/07/23 DSIRNLP #1 20
21. グラフの探索
ラ 探索
名詞 名詞 名詞 名詞 名詞 名詞
動詞 動詞 動詞 動詞 動詞 動詞
始端 形容詞 形容詞 形容詞 形容詞 形容詞 形容詞 終端
助詞 助詞 助詞 助詞 助詞 助詞
助動詞 助動詞 助動詞 助動詞 助動詞 助動詞
記号 記号 記号 記号 記号 記号
今日
今 は いい 天気
気 です
す 。
始端をスタ ト地点、終端を
始端をスタート地点、終端をゴールとして、いずれかのノードを6回通過するルートの
ルとして、いずれかのノ ドを6回通過するル トの
中で、一番高いスコアが得られるルートを探し出したい
2011/07/23 DSIRNLP #1 21
22. 全探索
• 真
真正面から愚直に解くとどうなるか?
直 解く どうなる
• 7つの形態素、6種類の品詞があるため、
6^7≒28万の選び方(ルート)がありうる
– 入力に対して指数的に選び方が増える
• 28万ルートのスコアを全て計算し、最大のス
コアを持つルートを出力すればいい
• 20形態素の文が入力されると3 6*10^15
20形態素の文が入力されると3.6*10^15
• さすがにちょっと無理そう
2011/07/23 DSIRNLP #1 22
23. 大体の方針
動的計画法 で多項式時間に
落ちるか?
N
Y
問題の規模は 厳密解は不要か?
小さいか?
Y N
Y N
動的計画法 近似解法 整数計画法
2 1 3
2011/07/23 DSIRNLP #1 23
25. 貪欲法
• 一番それっぽいものを逐次的に選んでいく方法
番それ ぽ も を逐次的 選ん く方法 計:51点
7 7 10
4 7 9 7
始端 名詞 助詞 形容詞 名詞 助動詞 記号 終端
3 動詞 名詞
5
• ただし最適な解を発見 きる保証はな
ただし最適な解を発見できる保証はない
計:51点
7 形容詞 9 10
4 7 7 7
始端 名詞 助詞 名詞 助動詞 記号 終端
名詞
9 5
計:49点
2011/07/23 DSIRNLP #1 25
27. ビームサーチ
• 上位k個の仮説を保持しながら行う幅優先探索
• 保持する仮説数をビーム幅という
名詞
4
始端 3 動詞
2 形容詞
…
• プライオリティキューにスコアを優先度として、そこま
での仮説(ル ト)を放り込んでいく
での仮説(ルート)を放り込んでいく
2011/07/23 DSIRNLP #1 27
28. ビームサーチ
• 上位k個の仮説を保持しながら行う幅優先探索
• 保持する仮説数をビーム幅という
名詞
4
始端 3 動詞
2
×
形容詞
…
• プライオリティキューにスコアを優先度として、そこま
での仮説(ル ト)を放り込んでいく
での仮説(ルート)を放り込んでいく
2011/07/23 DSIRNLP #1 28
29. ビームサーチ
• 上位k個の仮説を保持しながら行う幅優先探索
• 保持する仮説数をビーム幅という
名詞
4+7
名詞 4+5 動詞
4 4+4 形容詞
始端 3 動詞
3+9
形容詞
2
×
形容詞
3+5 助詞
…
…
• プライオリティキューにスコアを優先度として、そこま
での仮説(ル ト)を放り込んでいく
での仮説(ルート)を放り込んでいく
2011/07/23 DSIRNLP #1 29
30. ビームサーチ
• 上位k個の仮説を保持しながら行う幅優先探索
• 保持する仮説数をビーム幅という
名詞
4+7
名詞 4+5 ×
動詞
4 4+4 ×
形容詞
始端 3 動詞
3+9
形容詞
2
×
形容詞
3+5
×
助詞
…
…
• プライオリティキューにスコアを優先度として、そこま
での仮説(ル ト)を放り込んでいく
での仮説(ルート)を放り込んでいく
2011/07/23 DSIRNLP #1 30
31. ビームサーチ
• 上位k個の仮説を保持しながら行う幅優先探索
• 保持する仮説数をビーム幅という
名詞 動詞
4+7
名詞 4+5 ×
動詞 助詞
4 4+4 ×
…
形容詞
始端 3 動詞
3+9 助動詞
形容詞
2
×
形容詞
3+5
×
助詞
名詞
…
…
…
…
• プライオリティキューにスコアを優先度として、そこま
での仮説(ル ト)を放り込んでいく
での仮説(ルート)を放り込んでいく
2011/07/23 DSIRNLP #1 31
32. 大体の方針
動的計画法 で多項式時間に
落ちるか?
N
Y
問題の規模は 厳密解は不要か?
小さいか?
Y N
Y N
動的計画法 近似解法 整数計画法
2 1 3
2011/07/23 DSIRNLP #1 32
33. 動的計画法
• 実は、ある種の性質をもった問題(漸化式で
書ける問題) あれ 、ちょ
書ける問題)であれば、ちょっとした工夫で計 夫 計
算量を減らせる
• その方法(枠組)を動的計画法 (Dynamic
(Dynamic
programming (DP) )という
• この問題の場合、指数的な計算量(品詞数^
形態素数)を線形の計算量(形態素数 (品詞
形態素数)を線形の計算量(形態素数*(品詞
数^2))まで減らすことができる
2011/07/23 DSIRNLP #1 33
34. ゴールから眺めてみる
• 単純化 ため品詞 種
単純化のため品詞2種(A,B)、3形態素(1,2,3)とする
態素 とする
A A A
始端 終端
B B B
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 34
35. ゴールから眺めてみる
• 単純化 ため品詞 種
単純化のため品詞2種(A,B)、3形態素(1,2,3)とする
態素 とする
A A A
15
始端 終端
B B B
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 35
36. ゴールから眺めてみる
• 単純化 ため品詞 種
単純化のため品詞2種(A,B)、3形態素(1,2,3)とする
態素 とする
12
A A A
3
15
始端 終端
B B B 3
11
形態素
形態素1 形態素
形態素2 形態素
形態素3
• 終端は、単に、A、Bまでのルートの最大のスコアが
わかればよい
2011/07/23 DSIRNLP #1 36
37. ゴールから眺めてみる
• 単純化 ため品詞 種
単純化のため品詞2種(A,B)、3形態素(1,2,3)とする
態素 とする
12
A A A
3
15
始端 終端
B B B 3
11
形態素
形態素1 形態素
形態素2 形態素
形態素3
• 終端は、単に、A、Bまでのルートの最大のスコアが
わかればよい
2011/07/23 DSIRNLP #1 37
38. ゴールから眺めてみる
• ゴ
ゴールが3番目のAだとしたら……?
が 番 だ た
12
A A A
始端
B B
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 38
39. ゴールから眺めてみる
• ゴ
ゴールが3番目のAだとしたら……?
が 番 だ た
8 12
3
A A A
始端
4
B B
8
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 39
40. ゴールから眺めてみる
• ゴ
ゴールが3番目のAだとしたら……?
が 番 だ た
8 12
3
A A A
始端
4
B B
8
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 40
41. ゴールから眺めてみる
• ゴ
ゴールが2番目のBだとしたら……?
が 番 だ た
A
始端
B B
8
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 41
42. ゴールから眺めてみる
• ゴ
ゴールが2番目のBだとしたら……?
が 番 だ た
3
A
始端 5
B B
3
4 8
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 42
43. ゴールから眺めてみる
• ゴ
ゴールが2番目のBだとしたら……?
が 番 だ た
3
A
始端 5
B B
3
4 8
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 43
44. ゴールから眺めてみる
• ゴ
ゴールが1番目のAだとしたら……?
が 番 だ た
3
A
始端
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 44
45. ゴールから眺めてみる
• ゴ
ゴールが1番目のAだとしたら……?
が 番 だ た
3
A
3
始端
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 45
46. マルコフ性につけ込む
• 一つ前の形態素に至るまでの最大のスコア
判 れ 、自分ま ア 最大値
が判っていれば、自分までのスコアの最大値
がわかる
• 一つ前の形態素に至るまでの最大のスコア
つ前の形態素に至るまでの最大のスコア
は、更にその一つ前の形態素のスコアが判
ればよい
• 始点はスコア0と判明しているので、始点から
始点はス ア0と判明しているので、始点から
順繰りに計算できる
2011/07/23 DSIRNLP #1 46
47. 探索
• まず始端
まず始端からスタート
タ
3
A
3
始端
4
B
4
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 47
49. 探索
• 形態素2のAに注目
態素 注
3
5
A A
3
3
始端
4
B
4
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 49
50. 探索
• 形態素2のAに注目
態素 注
3 8
5
A A
3
3
始端
4
B
4
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 50
51. 探索
• 形態素2のBに注目
態素 注
3 8
5
A A
3
3
始端
5
4
B B
3
4
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 51
52. 探索
• 形態素2のBに注目
態素 注
3 8
5
A A
3
3
始端
5
4
B B
3
4 8
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 52
53. 探索
• 形態素3のAに注目
態素 注
3 8
5 3
A A A
3 4
3
始端
5
4
B B
3
4 8
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 53
54. 探索
• 形態素3のAに注目
態素 注
3 8 12
5 3
A A A
3 4
3
始端
5
4
B B
3
4 8
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 54
55. 探索
• 形態素3のBに注目
態素 注
3 8 12
5 3
A A A
3 4
3
始端
5 2
4
B B B
3 3
4 8
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 55
56. 探索
• 形態素3のBに注目
態素 注
3 8 12
5 3
A A A
3 4
3
始端
5 2
4
B B B
3 3
4 8 11
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 56
57. 探索
• 終端 注
終端に注目
3 8 12
5 3
A A A
3 4 3
3
始端 終端
5 2
4 3
B B B
3 3
4 8 11
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 57
58. 探索
• 終端 注
終端に注目
3 8 12
5 3
A A A
3 4 3
3
始端 終端
5 2
4 3
B B B
3 3
4 8 11
形態素
形態素1 形態素
形態素2 形態素
形態素3
2011/07/23 DSIRNLP #1 58
59. 計算量
• 各
各ステップで必要な計算量は 品詞数^2
プ 必 な計算量 詞数
• 形態素の数だけそれを繰り返すため、合計
(品詞数^2)*形態素数
• ナイ ブな計算が(品詞数 形態素数)だ た
ナイーブな計算が(品詞数^形態素数)だった
ことを考えると、劇的に速くなる
– 指数→線形
2011/07/23 DSIRNLP #1 59
60. DP の実装:DP 表を埋めるコードを書く
DP の実装:DP 表を埋めるコードを書く
3 8 12
5 3
A A A
3 4 3
3
始端 終端
5 2
4 3
B B B
3 3
4 8 11
形態素1 形態素2 形態素3
形態素1 形態素2 形態素3
品詞A スコア:3 スコア:8 スコア:12
一つ前:始点 一つ前:A 一つ前:B
品詞B スコア:4 スコア:8 スコア:11
一つ前:始点 一つ前:A 一つ前:B
• ヘンゼルとグレーテル=探索の寓話
• ポイ タを失うと道 迷う
ポインタを失うと道に迷う
2011/07/23 DSIRNLP #1 60
61. 動的計画法が適用できれば
必ず多項式時間に落ちるのか?
• No.
• 動的計画法が適用できるが、多項式のオーダまで
計算量が落ちない問題がある
• 例:巡回セールスマン問題
例:巡回セ ルスマン問題
• Held‐Karp Algorithms (Held+ SIAM62)で階乗のオー
ダが指数まで落ちるが、まだ指数オーダなので、更
ダが指数まで落ちるが まだ指数オーダなので 更
にビームサーチと組み合わせるなどする
• SMT のデコ ド (Till
のデコード (Tillmann+ CL03)等で事例がある
+ CL03)等で事例がある
2011/07/23 DSIRNLP #1 61
62. DP + 枝刈り
DP + 枝刈り
• 品詞 定 品詞数は
品詞同定:品詞数はせいぜい100くらいなので、各ス
ぜ くら な 各
テップでの演算はせいぜい10000回
• 音声認識:品詞ではなく単語を同定するため、数万(
大語彙)の単語数を考えると、計算は何と1億回以
上……
• さすがにつらくなってくるため、いろんな方法で枝刈
り
• 近年はWFSTを用いて探索空間を効率的に表現
2011/07/23 DSIRNLP #1 62
63. 大体の方針
動的計画法 で多項式時間に
落ちるか?
N
Y
問題の規模は 厳密解は不要か?
小さいか?
Y N
Y N
動的計画法 近似解法 整数計画法
2 1 3
2011/07/23 DSIRNLP #1 63
65. Linear Programming (LP)
Linear Programming (LP)
• 線形計画
• 形式的には以下のような形をしている問題を解く方法を線形計画法とい
う
• 目的関数が非線形なときは非線形計画(Nonlinear Programming, NLP)と
目的関数が非線形なときは非線形計画(Nonlinear Programming NLP)と
いい、SVMのパラメタ推定など(凸2次計画)
T
min c x 目的関数
x
xを解(解ベクトル)という
s.t. Ax ≤ b 制約
cは係数
Aは行列、bはベクトル
制約を満たしつつ、目的関数を最小化する
ベクトルxを探すような問題=線形計画問題
それを解く方法=線形計画法
2011/07/23 DSIRNLP #1 65
66. 例
• 以下のような問題を考える
• max y=x1+2x2
• s.t. x <=5.7, x <=3.2, x >=0, x
s t x1<=5 7 x2<=3 2 x1>=0 x2>=0 cT x 目的関数
⎛ x1 ⎞
• 先程の記法で書くと、
max y = (1 2 )⎜ ⎟ = x1 + 2 x2
⎜x ⎟
(maxにして) x1 , x2
⎝ 2⎠
⎛1 0⎞ ⎛ 5. 7 ⎞
⎜ ⎟ ⎜ ⎟ 制約
• 解はx1=5 7 x2=3 2
=5.7, x =3.2 ⎜ 0 1 ⎟⎛ x1 ⎞ ⎜ 3.2 ⎟
s.t.⎜ ⎜ ⎟≤⎜ ⎟
⎜x ⎟
連立方程式
• というのはすぐわかる − 1 0 ⎟⎝ 2 ⎠ 0 になっている
⎜ ⎟ ⎜ ⎟
⎜ 0 − 1⎟ ⎜ 0 ⎟
⎝ ⎠ ⎝ ⎠
A x b
線形計画法は目的関数に含まれる変数(x
線形計画法は目的関数に含まれる変数( 1、x2)を操作して
)を操作して、
制約を満たす、最良の変数の組み合わせを探せば解ける 66
2011/07/23 DSIRNLP #1
67. 図で考える
• 目的関数の変数の値域(制約によって定義される)によって
数 変数 値 約 定義
平面(多角形、xが3次元なら空間(多面体))が定義される
(実行可能領域という) 増加
x2
制約x2<=3.2
y=x1+2x2なので 右上に行く
なので、右上に行く
3
ほどyの値が高い
つまり小数解はここ
2 x1=5.7, x2=3.2
5.7, 3.2
実行可能領域
整数解は
1 x1とx2が共に
制約x1<=5.7 整数の点(青点)
なのでx1=5, x2=3
0 1 2 3 4 5 x1
実行可能領域内の点として解は定義される
一番よい点(最適解)は実行可能領域の境界上のどこかにある 67
2011/07/23 DSIRNLP #1
68. 単体法 (simplex method)
(simplex method)
• 線 計 問題を解く方法
線形計画問題を解く方法
• 必ず多項式時間で解けると証明されているわけで
はないが、実用上高速に問題を解けることが多い
• 可能領域のある頂点を出発点として、境界の辺に
沿って目的関数を増やす方向に解を探す
2011/07/23 DSIRNLP #1 68
69. z
図でみると:
max 4x+3y+2z
3 s.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;
x+y+z <= 8;
0
4
x
3
y
この三角形の面が
x+y+z = 8
2011/07/23 DSIRNLP #1 69
70. z
図でみると:
max 4x+3y+2z
3 s.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;
x+y+z <= 8;
1. x=0, y=0, z=0 からスタート
傾きが大きい x を制約にぶつかるまで
増やす
0
4
x
3
y
この三角形の面が
x+y+z = 8
2011/07/23 DSIRNLP #1 70
71. z
図でみると:
max 4x+3y+2z
3 s.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;
x+y+z <= 8;
1. x=0, y=0, z=0 からスタート
傾きが大きい x を制約にぶつかるまで
増やす
0 2. 次に傾きが大きい y を制約にぶつかる
まで増やす
4
x
3
y
この三角形の面が
x+y+z = 8
2011/07/23 DSIRNLP #1 71
72. z
図でみると:
max 4x+3y+2z
3 s.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;
x+y+z <= 8;
1. x=0, y=0, z=0 からスタート
傾きが大きい x を制約にぶつかるまで
増やす
0 2. 次に傾きが大きい y を制約にぶつかる
まで増やす
4 3. 次に傾きが大きい z を制約にぶつかる
次 傾き 大き を制約 ぶ る
x まで増やす
3
y
この三角形の面が
x+y+z = 8
2011/07/23 DSIRNLP #1 72
73. z
図でみると:
max 4x+3y+2z
3 s.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;
x+y+z <= 8;
1. x=0, y=0, z=0 からスタート
傾きが大きい x を制約にぶつかるまで
増やす
0 2. 次に傾きが大きい y を制約にぶつかる
まで増やす
4 3. 次に傾きが大きい z を制約にぶつかる
次 傾き 大き を制約 ぶ る
x まで増やす
3
4. x=4, y=3, z=1 で 27
y
この三角形の面が
x+y+z = 8
2011/07/23 DSIRNLP #1 73
74. z
図でみると:
max 4x+3y+2z
25 s.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;
23 3
x+y+z <= 8;
1. x=0, y=0, z=0 からスタート
傾きが大きい x を制約にぶつかるまで
増やす
0 2. 次に傾きが大きい y を制約にぶつかる
まで増やす
4 3. 次に傾きが大きい z を制約にぶつかる
次 傾き 大き を制約 ぶ る
x まで増やす
3
4. x=4, y=3, z=1 で 27
y
この三角形の面が
x+y+z = 8 27
2011/07/23 DSIRNLP #1 74
75. z
図でみると:
max 4x+3y+2z
25 s.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;
23 3
x+y+z <= 8;
1. x=0, y=0, z=0 からスタート
傾きが大きい x を制約にぶつかるまで
増やす
0 2. 次に傾きが大きい y を制約にぶつかる
まで増やす
4 3. 次に傾きが大きい z を制約にぶつかる
次 傾き 大き を制約 ぶ る
x まで増やす
3
4. x=4, y=3, z=1 で 27
y
この三角形の面が
x+y+z = 8 ポイント:n変数の問題はn次元空間の探
27 索となり、最適解は必ずn個の制約面が交
わるところ(頂点)にある
2011/07/23 DSIRNLP #1 75
76. z
図でみると:
max 4x+3y+2z
25 s.t. 0<= x <= 4; 0<= y <= 3; 0<= z <= 3;
23 3
x+y+z <= 8;
1. x=0, y=0, z=0 からスタート
傾きが大きい x を制約にぶつかるまで
増やす
0 2. 次に傾きが大きい y を制約にぶつかる
まで増やす
4 3. 次に傾きが大きい z を制約にぶつかる
次 傾き 大き を制約 ぶ る
x まで増やす
3
4. x=4, y=3, z=1 で 27
y
この三角形の面が
x+y+z = 8 ポイント:n変数の問題はn次元空間の探
27 索となり、最適解は必ずn個の制約面が交
x <= 4; y <= 3; x + y + z <= 8 の わるところ(頂点)にある
3つの制約面に阻まれている
2011/07/23 DSIRNLP #1 76
77. スラック変数
max 4x+3y+2z
max 4x+3y+2z s.t. 0<= x; 0<= y; 0<=z;
s.t. 0<= <
s t 0< x <= 4; 0<= y <= 3; 0< z <= 3;
0< < 0<= < x <= 4; y <= 3; z <= 3;
x+y+z <= 8; 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<=
0 λ1; 0 λ2; 0 λ3 0 λ4
2011/07/23 DSIRNLP #1 77
78. z
スラック変数の意味
max 4x + 3y + 2z
y
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
x
y
2011/07/23 DSIRNLP #1 78
79. z
スラック変数の意味
max 4x + 3y + 2z
y
s.t. 0<= x; 0<= y; 0<=z;
0 <=λ3 x + λ1 = 4; y + λ2 = 3; z + λ3 = 3;
x + y + z + λ4 = 8;
0<=y 0<= λ1; 0<= λ2; 0<= λ3; 0<= λ4
0<=x
0< 0 <=λ4 解空間(多面体の中)を形作る7つの面それぞれが
上の 0<= x,y,z,λ1-4 に対応している
0<=z
0<
x
y 0 <=λ1
0 <=λ2
2011/07/23 DSIRNLP #1 79
80. z
スラック変数の意味
max 4x + 3y + 2z
y
s.t. 0<= x; 0<= y; 0<=z;
0 <=λ3 x + λ1 = 4; y + λ2 = 3; z + λ3 = 3;
x + y + z + λ4 = 8;
0<=y 0<= λ1; 0<= λ2; 0<= λ3; 0<= λ4
0<=x
0< 0 <=λ4 解空間(多面体の内側)を形作る7つの面それぞれが
上の 0<= x,y,z,λ1-4 に対応している
0<=z
0<
x
y 0 <=λ1 ポイント:解は、この7変数のうち
0 <=λ2
3つが0になっている
2011/07/23 DSIRNLP #1 80
81. スラック変数
max 4x+3y+2z
max 4x+3y+2z s.t. 0<= x; 0<= y; 0<=z;
s.t. 0<= <
s t 0< x <= 4; 0<= y <= 3; 0< z <= 3;
0< < 0<= < x <= 4; y <= 3; z <= 3;
x+y+z <= 8; 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<=
0 λ1; 0 λ2; 0 λ3 0 λ4
max 4x + 3y + 2z
s.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<=
0 λ1; 0 λ2; 0 λ3 0 λ4
2011/07/23 DSIRNLP #1 81
82. シンプレックス表
実装上は、シンプレックス表を次々と書き換えて求解する
max 4x + 3y + 2z この3つの値が0、すなわち
この3つの値が0 すなわち
s.t. 0<= x; 0<= y; 0<=z; x,y,zは0以上という制約にひっかかっている
λ1 = 4 - x; λ2 = 3 - y; λ3 = 3 - z;
λ4 = 8 - x - y - z;
z 切片 x y z
0<= λ1; 0<= λ2; 0<= λ3; 0<= λ4
ひ こ f(x,y,z) 0 4 3 2
っか ちら
λ1
λ1 4 ‐1
1
か の λ2 3 ‐1
っ 制
てな λ3 3 ‐1
い 約
に λ4 8 ‐1 ‐1 ‐1
は
現在は原点( ,y , )におり、
現在は原点(x=0,y=0,z=0)におり、
スコアは0(f(x,y,z)の行の切片)ということを
シンプレックス表で表現できる
x
y
2011/07/23 DSIRNLP #1 82
83. z 探索方向の決定
x,y,z いずれ
切片 x
x y z
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
λ4 8 ‐1
1 ‐1
1 ‐1
1
シンプレックス表から、
• xは4まで増やせる(4まで増やすとλ1が
x 0となり、制約に阻まれる)
• yは3まで増やせる(3まで増やすとλ2が
y 0となり制約に阻まれる)
• zも3まで増やせる(3まで増やすとλ3が0
も3まで増やせる(3まで増やすと 3が0
となり制約に阻まれる)
x,y,zそれぞれの係数から、xは4まで増やすことによって16、yは3まで増やすことに
よって9 zは3まで増やすことによって6 目的関数の値が増える→xを増やす
よって9、zは3まで増やすことによって6、目的関数の値が増える→xを増やす
2011/07/23 DSIRNLP #1 83
84. z ピボット要素の特定
この‐1の要素を
の 1の要素を 切片 x
x y z
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
λ4 8 ‐1
1 ‐1
1 ‐1
1
• xを増やしたとき、λ1の行の制約と、λ4
の行の制約がxの増加を阻む
x • λ1の行の制約に先にひっかかる
λ1の行の制約に先にひっかかる:
0 <=λ1の
y 制約に阻まれる 切片が4、係数が-1であるため、xを4ま
で増やしたところで制約にぶつかる
• この行と列の交わる場所の要素を
ピボット要素と呼ぶ
幾何的には、x=4の平面にまずぶつかる
ちなみにλ4の制約は上の図の 三角形に直方体を切り取っている面に相当(p 78)参照
ちなみにλ4の制約は上の図の、三角形に直方体を切り取っている面に相当(p.78)参照
2011/07/23 DSIRNLP #1 84
85. シンプレックス表の書き換え
z
切片 x y z
f(x,y,z)
f( ) 0 4 3 2
λ1 4 ‐1 0 0
x=0, y=0, z=0
λ2 3 0 ‐1 0
λ3 3 0 0 ‐1
λ1=0, y=0, z=0
λ4 8 ‐1 ‐1 ‐1
ピボット
• λ1とxを入れ替える
x
• Xをλ1で表す(λ1の行のxを左辺に移項):
0 <=λ1の λ1 = 4 - x → x = 4 - λ1
y
制約に阻まれる • f(x y z) に上式を代入:
制約 阻 f(x,y,z)
f = 4x + 3y + 2z = 4(4-λ1) + 3y + 2z
= 16 – 4λ1 + 3y + 2z
• λ4の行にも代入
の行 も代入
λ4= 4 + λ1 - y - z
2011/07/23 DSIRNLP #1 85
86. シンプレックス表の書き換え
切片 x y z • λ1の行とxの列を入れ替える
f(x,y,z) 0 4 3 2 • Xをλ1で表す(λ1の行のxを左辺に移項):
λ1 = 4 - x → x = 4 - λ1
λ1 4 ‐1 0 0
• f(x,y,z) に上式を代入:
λ2
λ2 3 0 ‐1
1 0 f = 4x + 3y + 2z = 4(4-λ1) + 3y + 2z
λ3 3 0 0 ‐1 f = 16 – 4λ1 + 3y + 2z
λ4 8 ‐1 ‐1 ‐1 • λ4の行にも代入
λ4= 4 + λ1 - y - z
切片 λ1 y z
f(x,y,z) 16 ‐4 3 2
x 4 ‐1 0 0
λ2
λ2 3 0 ‐1
1 0
λ3 3 0 0 ‐1
λ4 4 1 ‐1 ‐1
2011/07/23 DSIRNLP #1 86
87. 掃き出し法
• 計算機では掃き出す法を使って行列を書き換える
切片 x y z • λ1の行をc倍してλ4の行に足し、λ4のx列の要素を0にす
f(x,y,z) 0 4 3 2 ることを考える
λ1
λ 4 ‐1 0 0
• x列の係数から、-1倍して足せば良いことがわかる
x列の係数から、 1倍して足せば良いことがわかる
λ2 3 0 ‐1 0
• -1 = -(-1/-1)
• λ4 - λ1= 8 – x – y – z + (-1(4 – x)) = 4 – y – z
λ3 3 0 0 ‐1
• λ4 = 4 + λ1 – y – z
λ4
λ 8 ‐1 ‐1 ‐1
• 同様にf(x,y,z)の行も掃き出す
切片 λ1 y z • X列の係数から、4倍して足せばいいことがわかる
f(x,y,z) 16 ‐4 3 2 • 4 = -(4/-1)
x 4 ‐1 0 0 • f + 4λ1 = 4x + 3y + 2z + 4 (4 – x) = 16 + 3y + 2z
λ2 3 0 ‐1 0 • f = 16 – 4λ1 + 3y + 2z
λ3 3 0 0 ‐1
λ4 4 1 ‐1 ‐1
• λ1の行はピボット要素の符号を反転させたもので割る(単
にλ1とxを入れ替えるだけなので)
• λ1 = 4 – x → x = 4 – λ1
2011/07/23 DSIRNLP #1 87
88. 図でみると
z 切片 x y z
f(x,y,z) 0 4 3 2
λ1 4 ‐1 0 0
λ2
λ2 3 0 ‐1 0
x = 0, y = 0, λ3 3 0 0 ‐1
z = 0 λ4 8 ‐1 ‐1 ‐1
x
y
z
切片 λ1
λ1 y z
z
f(x,y,z) 16 ‐4 3 2
x 4 ‐1 0 0
λ1 = 0, y = 0, λ2 3 0 ‐1 0
z = 0 λ3 3 0 0 ‐1
x λ4
λ4 4 1 ‐1 ‐1
y
2011/07/23 DSIRNLP #1 88
89. 単体法のアルゴリズム
1. ピボ
ピボット要素を見つける
素を る
– 列の要素(先の例ではx,y,z)の係数、制約からど
列 要素(先 例 は ,y, ) 係数、制約 ら
の変数の値をどれだけを増やせば一番目的関
数 値 増 る 調 る
数の値が増えるか調べる
– 値がこれ以上増やせなければおしまい!
2. 掃き出し法を使ってシンプレックス表を書き
2 掃き出し法を使 てシンプレ クス表を書き
換える
3. 1に戻る(シンプル!)
2011/07/23 DSIRNLP #1 89
90. 整数計画問題
(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
巡回セールスマン問題:SMT(Germann+ ACL01)(Zaslavskiy+ ACL09)、
ACL01)(Z l ki ACL09)
Sentence Ordering(Althaus+ ACL04)
– などなど
言語処理タスクの解ベクトルは整数
→整数計画問題として定式化
2011/07/23 DSIRNLP #1 90
91. 凸包(Convex hull)
凸包(Convex hull)
• 整数条件下での実行可能領域を考える ※ただし凸包
を求めるのは
難しい
制約 凸包
ポイント:
整数解<=小数解
が必ず成立
与えられた点集合を含む最小の多面体
2011/07/23 (2次元だと多角形)=凸包
DSIRNLP #1 91
92. 線形計画緩和 (Linear Programming Relaxation)
(Linear Programming Relaxation)
• 逆に、整数計画問題から整数条件を取り除くと、問
題が緩和される(易しくなる)
• このことを線形計画緩和(relaxation)という
• 緩和問題の最適解=元問題の最適解のことがある
緩和問題の最適解 元問題の最適解のことがある
• また、一般に小数解の近傍を探せば整数解がある
→緩和して問題を簡単にして解ける場合がある
線形計画問題を解く際のテクニックの つ
線形計画問題を解く際のテクニックの一つ
2011/07/23 DSIRNLP #1 92
93. 品詞同定を整数計画法で表現
3 8 12
5 3
A A A
3 4 3
3
始端 終端
5 2
4 3
B B B
3 3
4 8 11
形態素1 形態素2 形態素3
2011/07/23 DSIRNLP #1 93
94. 品詞同定を整数計画法で表現
3 8 12
5 3
A x2 A x6 A
3 4 3
x3 3 x7
x0 x10
始端 終端
x1 x4 5 x8 2 x11
4 3
B x5 B x9 B
3 3
4 8 11
形態素1 形態素2 形態素3
それぞれの辺に変数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 }
同時に選んではいけない辺を制約で表現
s.t. x0+x1 = 1 x2+x3+x4+x5 = 1 x6+x7+x8+x9 = 1 x10+x11 = 1
t 0 1 1; 2 3 4 5 1; 6 7 8 9 1; 10 11 1;
同時に選ばないといけない辺を制約で表現(x0が選ばれているがx2もx3も選ば
れていないというような場合を防ぐ
s.t. x0=x2+x3; x1=x4+x5; x2=x6+x7;x3=x8+x9;x4=x6+x7;…
2011/07/23 DSIRNLP #1 94
96. 分枝限定法 (branch and bound method)
(branch and bound method)
• 整数計 法を解く
整数計画法を解くアルゴリズム
ゴ ズ
• 総当たり は大変なので、解空間を分割し、
総当たり……は大変なので、解空間を分割し、
分割した空間の上限を計算、探索が不要な
空間を見切る
• 基本的な作戦:場合分けをして、明らかに最
適解を含まない領域を探索しない
2011/07/23 DSIRNLP #1 96
97. 例題:ナップサック問題
• 袋 お菓 を詰めた
袋にお菓子を詰めたい
• お菓子にはそれぞれ嬉しさがある(目的関数)
• ただし袋には当然サイズがあり、お菓子を無尽蔵に
詰めることはできない(制約)
• 嬉しさを最大化するようにお菓子を詰めたい(最適
化問題)
• maxx {a*x0 + b x1 + c x2}
{a x0 b*x1 c*x2}
s.t. x {0, 1}; x0 + x1 + x2 <= 2;
2011/07/23 DSIRNLP #1 97
98. アルゴリズム
1. 手元の解空間の中から、可能解を得る
手 解空間 中から 能解を得る
2. 分枝 (branch)
3. 分枝した空間の上限を得る
4.
4 可能解と上限を比較
1. 可能解>上限であればその分枝を破棄 (bound)
2 上限>=可能解であればステップ2へ
2.
5. 1に戻る
2011/07/23 DSIRNLP #1 98
99. 探索木
• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}
s.t. x {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;
x0 = 1
1.貪欲法で可能解を Y N
探索
2011/07/23 DSIRNLP #1 99
100. 探索木
• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}
s.t. x {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;
x0 = 1
1.貪欲法で可能解を 5 (4) Y N
探索
x1 = 1
Y
N
2011/07/23 DSIRNLP #1 100
101. 探索木
• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}
s.t. x {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;
x0 = 1
1.貪欲法で可能解を 5 (4) Y N
探索
x1 = 1
Y
5+3 (4+6)
( ) N
x2 = 1
2011/07/23 DSIRNLP #1 101
102. アルゴリズム
1. 手元の解空間の中から、許容解を得る
手 解空間 中から 許容解を得る
2. 分枝 (branch)
3. 分枝した空間の上限を得る
4.
4 可能解と上限を比較
1. 可能解>上限であればその分枝を破棄 (bound)
2 上限>=可能解であればステップ2へ
2.
5. 1に戻る
2011/07/23 DSIRNLP #1 102
103. 探索木
• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}
s.t. x {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;
2.整数条件を緩和、上限を
シンプレックス法で計算 x0 = 1
5 (4) Y N
x1 = 1 x1 = 1
Y
5+3 (4+6)
( ) N
x2 = 1
2011/07/23 DSIRNLP #1 103
104. 探索木
• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}
s.t. x {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;
2.整数条件を緩和、上限を
シンプレックス法で計算 x0 = 1
5 (4) Y N
x1 = 1 x1 = 1
Y
5+3 (4+6)
( ) N
x2 = 1
2011/07/23 DSIRNLP #1 104
105. 探索木
• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}
s.t. x {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;
2.整数条件を緩和、上限を
シンプレックス法で計算 x0 = 1
5 (4) Y N
x1 = 1 x1 = 1
• maxx {3*x1 + 2*x2 + 2*x3}
Y s.t. x [0, 1]; 6*x1 + 3*x2 + 2*x3 <= 10;
5+3 (4+6)
( ) N
x2 = 1
2011/07/23 DSIRNLP #1 105
106. 探索木
• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}
s.t. x {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;
2.整数条件を緩和、上限を
シンプレックス法で計算 x0 = 1
5 (4) Y N
x1 = 1 x1 = 1
• maxx {3*x1 + 2*x2 + 2*x3}
Y s.t. x [0, 1]; 6*x1 + 3*x2 + 2*x3 <= 10;
5+3 (4+6)
( ) N
→ 3*1+2*1+2*1 = 7
x2 = 1
この領域の上限=7
先に求めた可能解=8なので、
先に求めた可能解 8なので
この領域に最適解がある可能性はない!
探索中止
2011/07/23 DSIRNLP #1 106
107. アルゴリズム
1. 手元の解空間の中から、許容解を得る
手 解空間 中から 許容解を得る
2. 分枝 (branch)
3. 分枝した空間の上限を得る
4.
4 可能解と上限を比較
1. 可能解>上限であればその分枝を破棄 (bound)
2 上限>=可能解であればステップ2へ
2.
5. 1に戻る
2011/07/23 DSIRNLP #1 107
108. 探索木
• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}
s.t. x {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;
2.整数条件を緩和、上限を
シンプレックス法で計算 x0 = 1
5 (4) Y
• maxx {5 + 3*x1 + 2*x2 + 2*x3}
x1 = 1
s.t. x [0, 1]; 6 x1 + 3 x2 + 2 x3 < 6;
s.t. x [0, 1]; 6*x1 + 3*x2 + 2*x3 <= 6;
N
Y
5+3 (4+6)
( )
x2 = 1 x2 = 1
2011/07/23 DSIRNLP #1 108
109. 探索木
• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}
s.t. x {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;
2.整数条件を緩和、上限を
シンプレックス法で計算 x0 = 1
5 (4) Y
• maxx {5 + 3*x1 + 2*x2 + 2*x3}
x1 = 1
s.t. x [0, 1]; 6 x1 + 3 x2 + 2 x3 < 6;
s.t. x [0, 1]; 6*x1 + 3*x2 + 2*x3 <= 6;
N → 5 + 3*(1/6) + 2*1 + 2*1 = 9.5
Y
5+3 (
(4+6)
) この領域の上限=9.5
この領域の上限=9 5
x2 = 1 x2 = 1
先に求めた可能解=8なので、
探索続行、分枝
2011/07/23 DSIRNLP #1 109
110. 探索木
• maxx {5*x0 + 3*x1 + 2*x2 + 2*x3}
s.t. x {0, 1}; 4*x0 + 6*x1 + 3*x2 + 2*x3 <= 10;
2.整数条件を緩和、上限を
シンプレックス法で計算 x0 = 1
5 (4) Y
x1 = 1
N
Y
5+3 (4+6)
( )
x2 = 1 x2 = 1
2011/07/23 DSIRNLP #1 110
111. アルゴリズム
1. 手元の解空間の中から、許容解を得る
手 解空間 中から 許容解を得る
2. 分枝 (branch)
3. 分枝した空間の上限を得る
4.
4 可能解と上限を比較
1. 可能解>上限であればその分枝を破棄 (bound)
2 上限>=可能解であればステップ2へ
2.
5. 1に戻る
2011/07/23 DSIRNLP #1 111
112. ソルバを実装するか?
• すごく大変
すごく大変……でもないが簡単でもない
もな が簡単 もな
• 少なくとも以下の3つを実装しなければならない
1. 良い可能解を高速に見つける方法(貪欲法、シンプレッ
クス法+丸め、など)
2. 上限を高速に見つける方法(シンプレックス法/内点法)
• シンプレックス法はCで200‐300行くらい
3. 1.と2.を使って再帰的に探索するルーチン
• 整数計画法の場合、 lp_solve などフリーのソフトウ
ェアに数式を投入して解くのが無難
– エクセルでも解ける
2011/07/23 DSIRNLP #1 112
113. ILP の使いどころ
ILP の使いどころ
• 問題を切り分けるとき
• NLP では、モデル、パラメタ、デコードを考える必要がある
• あるタスクを解いてみて、その精度が十分でない場合、3つ
の可能性を考える必要がある
– パラメタがうまく推定されていない:訓練データ不足、イタレーションが
足りてない場合など。学習曲線を見てみる
– デコードがうまくいっていない:ビームサーチなどで探索している場合
、探索空間に比してビーム幅が狭い可能性。あまりよろしくない解を
見つけている可能性あり。ILP等で厳密解を見つけてみる
見つけている可能性あり ILP等で厳密解を見つけてみる
– モデル:上の2つが問題なさそうな場合、そもそも当該タスクを解くに
あたってモデルの表現力が足りてない(バイグラム→トライグラムにし
てみる)
2011/07/23 DSIRNLP #1 113
114. まとめ
• 最初は NLP の全体像のお話をしました
– 解析と生成
– y = argmaxx f(x;w)
y g ( ; )
– モデル、パラメタ、デコード
• 次にデコードのお話をしました
次にデコ ドのお話をしました
– 貪欲法、ビームサーチ、動的計画法、整数計画法
– 自分でモデルを作ってみる
– 式を書けば lp_solve が解いてくれるので、面白いモデル
を考えてみる
– ILPで解けたら、他の、速いデコード法を考えてみる
2011/07/23 DSIRNLP #1 114
115. 参考文献(教科書)
• 最適化
– 松井ら, 入門オペレーションズ・リサーチ, 東海大学出版会, 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