Argmax Operations in NLP

3,440 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,440
On SlideShare
0
From Embeds
0
Number of Embeds
1,490
Actions
Shares
0
Downloads
49
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Argmax Operations in NLP

  1. 1. 自然言語処理における argmax 操作 NISHIKAWA Hitoshi NISHIKAWA Hitoshi2011/07/23 DSIRNLP #1 1
  2. 2. 目的• NLP タスクの全体像をご説明差し上げ、ご理解いた タ ク 全体像をご説 差 上げ ご理解 た だき、皆様の学習の一助とする – NLP とは何ぞや – 他の分野との関係 – 構成要素、 NLP の世界観• NLP タスクのうち、特に argmax 操作(デコード)と呼 g ばれる操作についてお話差し上げ、モデル開発の 一助とする2011/07/23 DSIRNLP #1 2
  3. 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. 4. 自然言語処理• 自然 自然言語を計算機で処理する一連の技術 を計算機 処 する 連 技術 – 自然言語を対象にする、という対象に焦点をあて た呼称(分類) – 隣接領域:音響信号処理(音全般の処理 エコー 隣接領域:音響信号処理(音全般の処理、エコ キャンセラなど)、音声処理(人間が発する音の 処理、音声認識など)、画像処理(画像の処理) 処理 音声認識など) 画像処理(画像の処理) – この名前には「目的」は含まれない • テキストマイニングは「目的」指向の呼称2011/07/23 DSIRNLP #1 4
  5. 5. 他の分野との関係 目的 対象 処理 検索 自然言語 データ構造・ 処理 アルゴリズム 要素技術 要素技術 マイニング2011/07/23 DSIRNLP #1 5
  6. 6. 自然言語処理• 自然言語で記述された文章を、適当な中間表現に 変換する• 適当な中間表現を自然言語に変換する2011/07/23 DSIRNLP #1 6
  7. 7. 中間表現? • 文章を読むと 何らかの場景が思い浮かぶ 文章を読むと、何らかの場景が思い浮かぶ • それを適当な形で表現したもの東川さんは西川さんを殴りました。西川さんに愚弄されたからです。 原因 殴る 愚弄する動作主 対象 動作主 対象 東川さん 西川さん 西川さん 東川さん 2011/07/23 DSIRNLP #1 7
  8. 8. 東川さんは西川さんを殴りました。西川さんに愚弄されたからです。 談話構造解析 原因述語項構造 述語項構造解析 殴る 愚弄する 解析 動作主 対象 動作主 対象 東川さん 西川さん 西川さん 東川さん 係り受け解析 形態素解析 ※中間表現は応用に応じて適当な粒度で設定する ※中間表現は応用に応じ 適当な粒度 設定する 2011/07/23 DSIRNLP #1 8
  9. 9. 解析と生成• 中間表現への変換を解析、中間表現から自然言語への変換 中間表現 変換を解析、中間表現 ら自然言語 変換 を生成と呼ぶ• 解析 • 生成 – 形態素解析 – 深層生成 – 係り受け解析 • 内容選択 • 談話生成 – 述語項構造解析 – 照応解析 – 表層生成 • 文境界決定 – 談話構造解析 • 参照表現生成 • 語彙化2011/07/23 DSIRNLP #1 9
  10. 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. 11. 基本的な発想• 無数の解候補それぞれに得点を与えて、一 番得点が高いものを選んでくる 今日 は いい 天気 です 。 y = arg max f ( x; w) x51点 名詞 助詞 形容詞 名詞 助動詞 記号45点 名詞 助詞 名詞 名詞 助動詞 記号40点 名詞 名詞 名詞 名詞 助動詞 記号2011/07/23 DSIRNLP #1 11
  12. 12. NLP の 3 ステップ NLP の 3 ステップ1. モデルを作る:この式を計算すれば問題が 解けるという式を作る2. パラメタを推定する:良い候補に高い得点を 与えるように、式に含まれるパラメタを推定 与えるように 式に含まれるパラメタを推定 する3. デコードする:式を機械に計算させて問題を 解く2011/07/23 DSIRNLP #1 12
  13. 13. 全体像 入力 力 言語知識 モデル コーパス パラメタ 離散最適化 デコード 連続最適化• いろんなことを勉強しないとご飯が 食べられなくて大変 出力• 今日は特にデコードについてお話 今日は特にデコ ドについてお話 2011/07/23 DSIRNLP #1 13
  14. 14. デコード• 式(モデル)とパラメタが与えられたときに、そ の式を計算すること• 自然言語処理タスクの場合は、離散的な解 空間の中で目的関数を最大化する解を探索 すること• 当然、効率的に探索したい2011/07/23 DSIRNLP #1 14
  15. 15. • ここからデコードのお話をします デ ド お話を ます2011/07/23 DSIRNLP #1 15
  16. 16. デコード• 式(モデル)とパラメタが与えられたときに、そ の式を計算すること• 自然言語処理タスクの場合は、離散的な解 空間の中で目的関数を最大化する解を探索 すること• 当然、効率的に探索したい2011/07/23 DSIRNLP #1 16
  17. 17. 例題:品詞同定• 形態素に分割済みの文字列の品詞を同定す ることを考える 今日 は いい 天気 です 。 名詞 助詞 形容詞 名詞 助動詞 記号• これを例題として、3つのアプローチをお話し れを例題と プ をお話 ます2011/07/23 DSIRNLP #1 17
  18. 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. 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. 20. グラフの探索 • ルートに応じて得点がある 計:51点 7 7 10 4 7 9 7始端 名詞 助詞 形容詞 名詞 助動詞 記号 終端 5 7 計:47点 名詞 今日 は いい 天気 です す 。 • 得点が最大のルートを探し出したい 2011/07/23 DSIRNLP #1 20
  21. 21. グラフの探索 ラ 探索 名詞 名詞 名詞 名詞 名詞 名詞 動詞 動詞 動詞 動詞 動詞 動詞始端 形容詞 形容詞 形容詞 形容詞 形容詞 形容詞 終端 助詞 助詞 助詞 助詞 助詞 助詞 助動詞 助動詞 助動詞 助動詞 助動詞 助動詞 記号 記号 記号 記号 記号 記号 今日 今 は いい 天気 気 です す 。 始端をスタ ト地点、終端を 始端をスタート地点、終端をゴールとして、いずれかのノードを6回通過するルートの ルとして、いずれかのノ ドを6回通過するル トの 中で、一番高いスコアが得られるルートを探し出したい 2011/07/23 DSIRNLP #1 21
  22. 22. 全探索• 真 真正面から愚直に解くとどうなるか? 直 解く どうなる• 7つの形態素、6種類の品詞があるため、 6^7≒28万の選び方(ルート)がありうる – 入力に対して指数的に選び方が増える• 28万ルートのスコアを全て計算し、最大のス コアを持つルートを出力すればいい• 20形態素の文が入力されると3 6*10^15 20形態素の文が入力されると3.6*10^15• さすがにちょっと無理そう2011/07/23 DSIRNLP #1 22
  23. 23. 大体の方針 動的計画法 で多項式時間に 落ちるか? N Y 問題の規模は 厳密解は不要か? 小さいか? Y N Y N 動的計画法 近似解法 整数計画法 2 1 32011/07/23 DSIRNLP #1 23
  24. 24. 近似解法• 貪欲法• ビームサーチ ビ ムサ チ2011/07/23 DSIRNLP #1 24
  25. 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
  26. 26. ビームサーチ • 上位k個の仮説を保持しながら行う幅優先探索 • 保持する仮説数をビーム幅という始端 • プライオリティキューにスコアを優先度として、そこま での仮説(ル ト)を放り込んでいく での仮説(ルート)を放り込んでいく 2011/07/23 DSIRNLP #1 26
  27. 27. ビームサーチ • 上位k個の仮説を保持しながら行う幅優先探索 • 保持する仮説数をビーム幅という 名詞 4始端 3 動詞 2 形容詞 … • プライオリティキューにスコアを優先度として、そこま での仮説(ル ト)を放り込んでいく での仮説(ルート)を放り込んでいく 2011/07/23 DSIRNLP #1 27
  28. 28. ビームサーチ • 上位k個の仮説を保持しながら行う幅優先探索 • 保持する仮説数をビーム幅という 名詞 4始端 3 動詞 2 × 形容詞 … • プライオリティキューにスコアを優先度として、そこま での仮説(ル ト)を放り込んでいく での仮説(ルート)を放り込んでいく 2011/07/23 DSIRNLP #1 28
  29. 29. ビームサーチ • 上位k個の仮説を保持しながら行う幅優先探索 • 保持する仮説数をビーム幅という 名詞 4+7 名詞 4+5 動詞 4 4+4 形容詞始端 3 動詞 3+9 形容詞 2 × 形容詞 3+5 助詞 … … • プライオリティキューにスコアを優先度として、そこま での仮説(ル ト)を放り込んでいく での仮説(ルート)を放り込んでいく 2011/07/23 DSIRNLP #1 29
  30. 30. ビームサーチ • 上位k個の仮説を保持しながら行う幅優先探索 • 保持する仮説数をビーム幅という 名詞 4+7 名詞 4+5 × 動詞 4 4+4 × 形容詞始端 3 動詞 3+9 形容詞 2 × 形容詞 3+5 × 助詞 … … • プライオリティキューにスコアを優先度として、そこま での仮説(ル ト)を放り込んでいく での仮説(ルート)を放り込んでいく 2011/07/23 DSIRNLP #1 30
  31. 31. ビームサーチ • 上位k個の仮説を保持しながら行う幅優先探索 • 保持する仮説数をビーム幅という 名詞 動詞 4+7 名詞 4+5 × 動詞 助詞 4 4+4 × … 形容詞始端 3 動詞 3+9 助動詞 形容詞 2 × 形容詞 3+5 × 助詞 名詞 … … … … • プライオリティキューにスコアを優先度として、そこま での仮説(ル ト)を放り込んでいく での仮説(ルート)を放り込んでいく 2011/07/23 DSIRNLP #1 31
  32. 32. 大体の方針 動的計画法 で多項式時間に 落ちるか? N Y 問題の規模は 厳密解は不要か? 小さいか? Y N Y N 動的計画法 近似解法 整数計画法 2 1 32011/07/23 DSIRNLP #1 32
  33. 33. 動的計画法• 実は、ある種の性質をもった問題(漸化式で 書ける問題) あれ 、ちょ 書ける問題)であれば、ちょっとした工夫で計 夫 計 算量を減らせる• その方法(枠組)を動的計画法 (Dynamic (Dynamic  programming (DP) )という• この問題の場合、指数的な計算量(品詞数^ 形態素数)を線形の計算量(形態素数 (品詞 形態素数)を線形の計算量(形態素数*(品詞 数^2))まで減らすことができる2011/07/23 DSIRNLP #1 33
  34. 34. ゴールから眺めてみる• 単純化 ため品詞 種 単純化のため品詞2種(A,B)、3形態素(1,2,3)とする 態素 とする A A A 始端 終端 B B B 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 34
  35. 35. ゴールから眺めてみる• 単純化 ため品詞 種 単純化のため品詞2種(A,B)、3形態素(1,2,3)とする 態素 とする A A A 15 始端 終端 B B B 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 35
  36. 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. 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. 38. ゴールから眺めてみる• ゴ ゴールが3番目のAだとしたら……? が 番 だ た 12 A A A 始端 B B 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 38
  39. 39. ゴールから眺めてみる• ゴ ゴールが3番目のAだとしたら……? が 番 だ た 8 12 3 A A A 始端 4 B B 8 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 39
  40. 40. ゴールから眺めてみる• ゴ ゴールが3番目のAだとしたら……? が 番 だ た 8 12 3 A A A 始端 4 B B 8 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 40
  41. 41. ゴールから眺めてみる• ゴ ゴールが2番目のBだとしたら……? が 番 だ た A 始端 B B 8 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 41
  42. 42. ゴールから眺めてみる• ゴ ゴールが2番目のBだとしたら……? が 番 だ た 3 A 始端 5 B B 3 4 8 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 42
  43. 43. ゴールから眺めてみる• ゴ ゴールが2番目のBだとしたら……? が 番 だ た 3 A 始端 5 B B 3 4 8 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 43
  44. 44. ゴールから眺めてみる• ゴ ゴールが1番目のAだとしたら……? が 番 だ た 3 A 始端 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 44
  45. 45. ゴールから眺めてみる• ゴ ゴールが1番目のAだとしたら……? が 番 だ た 3 A 3 始端 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 45
  46. 46. マルコフ性につけ込む• 一つ前の形態素に至るまでの最大のスコア 判 れ 、自分ま ア 最大値 が判っていれば、自分までのスコアの最大値 がわかる• 一つ前の形態素に至るまでの最大のスコア つ前の形態素に至るまでの最大のスコア は、更にその一つ前の形態素のスコアが判 ればよい• 始点はスコア0と判明しているので、始点から 始点はス ア0と判明しているので、始点から 順繰りに計算できる2011/07/23 DSIRNLP #1 46
  47. 47. 探索• まず始端 まず始端からスタート タ 3 A 3 始端 4 B 4 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 47
  48. 48. 探索• A、Bともに始端から来る(あたりまえ) も 始端 来る あた ま 3 A 3 始端 4 B 4 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 48
  49. 49. 探索• 形態素2のAに注目 態素 注 3 5 A A 3 3 始端 4 B 4 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 49
  50. 50. 探索• 形態素2のAに注目 態素 注 3 8 5 A A 3 3 始端 4 B 4 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 50
  51. 51. 探索• 形態素2のBに注目 態素 注 3 8 5 A A 3 3 始端 5 4 B B 3 4 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 51
  52. 52. 探索• 形態素2のBに注目 態素 注 3 8 5 A A 3 3 始端 5 4 B B 3 4 8 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 52
  53. 53. 探索• 形態素3のAに注目 態素 注 3 8 5 3 A A A 3 4 3 始端 5 4 B B 3 4 8 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 53
  54. 54. 探索• 形態素3のAに注目 態素 注 3 8 12 5 3 A A A 3 4 3 始端 5 4 B B 3 4 8 形態素 形態素1 形態素 形態素2 形態素 形態素32011/07/23 DSIRNLP #1 54
  55. 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 形態素 形態素32011/07/23 DSIRNLP #1 55
  56. 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 形態素 形態素32011/07/23 DSIRNLP #1 56
  57. 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 形態素 形態素32011/07/23 DSIRNLP #1 57
  58. 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 形態素 形態素32011/07/23 DSIRNLP #1 58
  59. 59. 計算量• 各 各ステップで必要な計算量は 品詞数^2 プ 必 な計算量 詞数• 形態素の数だけそれを繰り返すため、合計 (品詞数^2)*形態素数• ナイ ブな計算が(品詞数 形態素数)だ た ナイーブな計算が(品詞数^形態素数)だった ことを考えると、劇的に速くなる – 指数→線形2011/07/23 DSIRNLP #1 59
  60. 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. 61. 動的計画法が適用できれば 必ず多項式時間に落ちるのか?• No.• 動的計画法が適用できるが、多項式のオーダまで 計算量が落ちない問題がある• 例:巡回セールスマン問題 例:巡回セ ルスマン問題• Held‐Karp Algorithms (Held+ SIAM62)で階乗のオー ダが指数まで落ちるが、まだ指数オーダなので、更 ダが指数まで落ちるが まだ指数オーダなので 更 にビームサーチと組み合わせるなどする• SMT のデコ ド (Till のデコード (Tillmann+ CL03)等で事例がある + CL03)等で事例がある2011/07/23 DSIRNLP #1 61
  62. 62. DP + 枝刈り DP + 枝刈り• 品詞 定 品詞数は 品詞同定:品詞数はせいぜい100くらいなので、各ス ぜ くら な 各 テップでの演算はせいぜい10000回• 音声認識:品詞ではなく単語を同定するため、数万( 大語彙)の単語数を考えると、計算は何と1億回以 上……• さすがにつらくなってくるため、いろんな方法で枝刈 り• 近年はWFSTを用いて探索空間を効率的に表現2011/07/23 DSIRNLP #1 62
  63. 63. 大体の方針 動的計画法 で多項式時間に 落ちるか? N Y 問題の規模は 厳密解は不要か? 小さいか? Y N Y N 動的計画法 近似解法 整数計画法 2 1 32011/07/23 DSIRNLP #1 63
  64. 64. 整数計画法• 離散的な解空間を持つ最適化問題を解く枠 組• まず整数条件がない場合:線形計画法のお 話をします• そのあと整数条件がある場合:整数計画法の お話をします2011/07/23 DSIRNLP #1 64
  65. 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. 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)を操作して )を操作して、 制約を満たす、最良の変数の組み合わせを探せば解ける 662011/07/23 DSIRNLP #1
  67. 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. 68. 単体法 (simplex method) (simplex method)• 線 計 問題を解く方法 線形計画問題を解く方法• 必ず多項式時間で解けると証明されているわけで はないが、実用上高速に問題を解けることが多い• 可能領域のある頂点を出発点として、境界の辺に 沿って目的関数を増やす方向に解を探す2011/07/23 DSIRNLP #1 68
  69. 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 3y この三角形の面が x+y+z = 8 2011/07/23 DSIRNLP #1 69
  70. 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 3y この三角形の面が x+y+z = 8 2011/07/23 DSIRNLP #1 70
  71. 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 3y この三角形の面が x+y+z = 8 2011/07/23 DSIRNLP #1 71
  72. 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 まで増やす 3y この三角形の面が x+y+z = 8 2011/07/23 DSIRNLP #1 72
  73. 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 で 27y この三角形の面が x+y+z = 8 2011/07/23 DSIRNLP #1 73
  74. 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 で 27y この三角形の面が x+y+z = 8 27 2011/07/23 DSIRNLP #1 74
  75. 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 で 27y この三角形の面が x+y+z = 8 ポイント:n変数の問題はn次元空間の探 27 索となり、最適解は必ずn個の制約面が交 わるところ(頂点)にある 2011/07/23 DSIRNLP #1 75
  76. 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 で 27y この三角形の面が x+y+z = 8 ポイント:n変数の問題はn次元空間の探 27 索となり、最適解は必ずn個の制約面が交 x <= 4; y <= 3; x + y + z <= 8 の わるところ(頂点)にある 3つの制約面に阻まれている 2011/07/23 DSIRNLP #1 76
  77. 77. スラック変数 max 4x+3y+2zmax 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. 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 xy 2011/07/23 DSIRNLP #1 78
  79. 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< xy 0 <=λ1 0 <=λ2 2011/07/23 DSIRNLP #1 79
  80. 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< xy 0 <=λ1 ポイント:解は、この7変数のうち 0 <=λ2 3つが0になっている 2011/07/23 DSIRNLP #1 80
  81. 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. 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)の行の切片)ということを シンプレックス表で表現できる xy 2011/07/23 DSIRNLP #1 82
  83. 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. 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. 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 - λ1y 制約に阻まれる • 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. 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 ‐12011/07/23 DSIRNLP #1 86
  87. 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. 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 xy 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 ‐1y2011/07/23 DSIRNLP #1 88
  89. 89. 単体法のアルゴリズム1. ピボ ピボット要素を見つける 素を る – 列の要素(先の例ではx,y,z)の係数、制約からど 列 要素(先 例 は ,y, ) 係数、制約 ら の変数の値をどれだけを増やせば一番目的関 数 値 増 る 調 る 数の値が増えるか調べる – 値がこれ以上増やせなければおしまい!2. 掃き出し法を使ってシンプレックス表を書き2 掃き出し法を使 てシンプレ クス表を書き 換える3. 1に戻る(シンプル!)2011/07/23 DSIRNLP #1 89
  90. 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. 91. 凸包(Convex hull) 凸包(Convex hull) • 整数条件下での実行可能領域を考える ※ただし凸包 を求めるのは 難しい 制約 凸包 ポイント: 整数解<=小数解 が必ず成立 与えられた点集合を含む最小の多面体2011/07/23 (2次元だと多角形)=凸包 DSIRNLP #1 91
  92. 92. 線形計画緩和 (Linear Programming Relaxation) (Linear Programming Relaxation)• 逆に、整数計画問題から整数条件を取り除くと、問 題が緩和される(易しくなる)• このことを線形計画緩和(relaxation)という• 緩和問題の最適解=元問題の最適解のことがある 緩和問題の最適解 元問題の最適解のことがある• また、一般に小数解の近傍を探せば整数解がある →緩和して問題を簡単にして解ける場合がある 線形計画問題を解く際のテクニックの つ 線形計画問題を解く際のテクニックの一つ2011/07/23 DSIRNLP #1 92
  93. 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 形態素32011/07/23 DSIRNLP #1 93
  94. 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
  95. 95. 指数的な計算量• 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
  96. 96. 分枝限定法 (branch and bound method) (branch and bound method)• 整数計 法を解く 整数計画法を解くアルゴリズム ゴ ズ• 総当たり は大変なので、解空間を分割し、 総当たり……は大変なので、解空間を分割し、 分割した空間の上限を計算、探索が不要な 空間を見切る• 基本的な作戦:場合分けをして、明らかに最 適解を含まない領域を探索しない2011/07/23 DSIRNLP #1 96
  97. 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. 98. アルゴリズム1. 手元の解空間の中から、可能解を得る 手 解空間 中から 能解を得る2. 分枝 (branch)3. 分枝した空間の上限を得る4.4 可能解と上限を比較 1. 可能解>上限であればその分枝を破棄 (bound) 2 上限>=可能解であればステップ2へ 2.5. 1に戻る2011/07/23 DSIRNLP #1 98
  99. 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 = 11.貪欲法で可能解を Y N探索 2011/07/23 DSIRNLP #1 99
  100. 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 = 11.貪欲法で可能解を 5 (4) Y N探索 x1 = 1 Y N 2011/07/23 DSIRNLP #1 100
  101. 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 = 11.貪欲法で可能解を 5 (4) Y N探索 x1 = 1 Y 5+3 (4+6) ( ) N x2 = 1 2011/07/23 DSIRNLP #1 101
  102. 102. アルゴリズム1. 手元の解空間の中から、許容解を得る 手 解空間 中から 許容解を得る2. 分枝 (branch)3. 分枝した空間の上限を得る4.4 可能解と上限を比較 1. 可能解>上限であればその分枝を破棄 (bound) 2 上限>=可能解であればステップ2へ 2.5. 1に戻る2011/07/23 DSIRNLP #1 102
  103. 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. 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. 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. 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. 107. アルゴリズム1. 手元の解空間の中から、許容解を得る 手 解空間 中から 許容解を得る2. 分枝 (branch)3. 分枝した空間の上限を得る4.4 可能解と上限を比較 1. 可能解>上限であればその分枝を破棄 (bound) 2 上限>=可能解であればステップ2へ 2.5. 1に戻る2011/07/23 DSIRNLP #1 107
  108. 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. 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. 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. 111. アルゴリズム1. 手元の解空間の中から、許容解を得る 手 解空間 中から 許容解を得る2. 分枝 (branch)3. 分枝した空間の上限を得る4.4 可能解と上限を比較 1. 可能解>上限であればその分枝を破棄 (bound) 2 上限>=可能解であればステップ2へ 2.5. 1に戻る2011/07/23 DSIRNLP #1 111
  112. 112. ソルバを実装するか?• すごく大変 すごく大変……でもないが簡単でもない もな が簡単 もな• 少なくとも以下の3つを実装しなければならない 1. 良い可能解を高速に見つける方法(貪欲法、シンプレッ クス法+丸め、など) 2. 上限を高速に見つける方法(シンプレックス法/内点法) • シンプレックス法はCで200‐300行くらい 3. 1.と2.を使って再帰的に探索するルーチン• 整数計画法の場合、 lp_solve などフリーのソフトウ ェアに数式を投入して解くのが無難 – エクセルでも解ける2011/07/23 DSIRNLP #1 112
  113. 113. ILP の使いどころ ILP の使いどころ• 問題を切り分けるとき• NLP では、モデル、パラメタ、デコードを考える必要がある• あるタスクを解いてみて、その精度が十分でない場合、3つ の可能性を考える必要がある – パラメタがうまく推定されていない:訓練データ不足、イタレーションが 足りてない場合など。学習曲線を見てみる – デコードがうまくいっていない:ビームサーチなどで探索している場合 、探索空間に比してビーム幅が狭い可能性。あまりよろしくない解を 見つけている可能性あり。ILP等で厳密解を見つけてみる 見つけている可能性あり ILP等で厳密解を見つけてみる – モデル:上の2つが問題なさそうな場合、そもそも当該タスクを解くに あたってモデルの表現力が足りてない(バイグラム→トライグラムにし てみる)2011/07/23 DSIRNLP #1 113
  114. 114. まとめ• 最初は NLP の全体像のお話をしました – 解析と生成 – y = argmaxx f(x;w) y g ( ; ) – モデル、パラメタ、デコード• 次にデコードのお話をしました 次にデコ ドのお話をしました – 貪欲法、ビームサーチ、動的計画法、整数計画法 – 自分でモデルを作ってみる – 式を書けば lp_solve が解いてくれるので、面白いモデル を考えてみる – ILPで解けたら、他の、速いデコード法を考えてみる2011/07/23 DSIRNLP #1 114
  115. 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
  116. 116. • Thanks. 2011/07/23 DSIRNLP #1 116

×