SlideShare a Scribd company logo
1 of 19
A	
  Machine	
  Learning	
  Framework	
  for	
  
Programming	
  by	
  Example	
  
	
Aditya	
  Menon,	
  Omer	
  Tamuz,	
  Sumit	
  Gulwani,	
  Butler	
  
Lampson,	
  Adam	
  Kalai	
  
ICML	
  2013	
  
すずかけ論文読み会	
  #3	
  (2013/06/01)	
  
紹介者	
  :	
  matsuda	
1
Programming	
  by	
  Example	
  (PBE)	
•  「例」からのプログラミング	
  
– UI	
  /	
  プログラム生成の分野で研究されてきた問題	
  
– 「変換前」,「変換後」のペアから変換プログラム
を生成	
  
•  たとえば・・・)	
  Excel2013のFlash	
  Fill	
  
– セル情報に基づくテキストの書き換え	
  
– 百聞は一見にしかず (YouTube)	
  
– すでに実用化されている	
  
– ただし,	
  line	
  by	
  lineの書き換え	
2
この論文で扱いたい事例	
変換前	
 変換後	
学習	
※	
  line	
  by	
  line	
  ではない,countなども扱いたい	
  
 ふつうはPerlとかAWKでプログラムを書くような処理も含めたい	
3
何が難しいか	
•  一般に,トレーニングデータは非常に少ない	
  
–  もしかしたら,	
  1	
  事例しか与えられないかもしれない	
  
•  f(x)	
  =	
  y	
  を満たすような	
  f(プログラム)	
  は一般に無限に存在	
  
–  ものすごく長い	
  f	
  ,汎用性のない	
  f	
  ,,,,	
  
–  brute-­‐forceにやっても恐らくは見つかるが,たいへん時間がか
かる	
  
•  複数の事例から同時に学習を行う	
  
–  書き換えプログラムの「一般的な性質」を学習!	
  
•  ランキング問題として定式化し,もっともらしい	
  f	
  を「探索」
する問題に落とす	
  
–  探索の高速化!	
  
4
システムのおおまかな構造	
書き換え元の学習
データ	
  :	
  x	
  	
書き換え元の学習
データ	
  :	
  y	
  	
書き換え元の学習
データ	
  :	
  x	
  	
書き換え元の学習
データ	
  :	
  y	
  	
書き換え元の学習
データ	
  :	
  x	
  	
書き換え元の学習
データ	
  :	
  y	
  	
書き換え元の学習
データ	
  :	
  x	
  	
書き換え後の学習
データ	
  :	
  y	
  	
ルールの集合	
  R	
てがかり(clue)の集合	
  C	
PCFGパラメータ	
  :	
  θ	
書き換えの導出	
抽出	
 書き換えを行いた
いデータ	
  :	
  x	
書き換え後の	
  
データ	
  :	
  y	
5	
xからyが復元できるように学習	
適用
問題の定式化	
•  学習対象	
  :	
  f	
  ∈	
  {	
  S	
  -­‐>	
  S	
  }	
  
–  文字列から文字列への書き換えプログラム	
  
•  データ	
  :	
  x(書き換え前)	
  ,	
  y(書き換え後),	
  x(書き換
えを適用したいデータ)	
  
•  F(・)	
  :	
  (x	
  -­‐>	
  y)	
  の変換を実現する全てのプログラ
ム(膨大)	
  
–  この上で 「もっともらしさ」 に基づいてランキングを行
う関数を学習する	
  
–  「もっともらしさ」をどのように表現するか,どのように
学習するか	
6
プログラムを確率モデルとして表す	
•  プログラムの上の確率モデル(PCFG)	
  
– Pr[	
  f	
  |	
  z	
  ;	
  θ	
  ]	
  
•  z	
  :	
  (x,	
  x,y)の組, θ:確率モデルのパラメータ	
  
r	
  :	
  書き換えルール ex.	
  (	
  LIST	
  -­‐>	
  dedup(LIST)	
  )	
  
	
  (あらかじめいっぱい用意してある)	
  	
•  データ(z)とルールをどのように関連付けるか?	
  
•  Pr	
  [	
  r	
  |	
  z	
  ;	
  θ	
  ]	
  をどのようにモデル化するか?	
  
7
プログラムのPCFG(例)	
P	
join(LIST,	
  DELIM)	
concatList(“(“,	
  CAT,	
  “)”)	
LIST	
“	
  ”	
split(x,	
  DELIM)	
“n”	
導出の一例)	
8
書き換えとルールの関連付け:clues	
•  clues	
  (手がかり)	
  
–  c	
  :	
  S3	
  -­‐>	
  2R	
  
•  データの組を受け取って,ルールの集合を返す	
  
–  こういう特徴の場合こういうルールが適応できる,という知識	
  
•  Givenであると仮定?	
  
–  CRFで言うところの素性関数テンプレートのようなもの	
  
	
書き換え元の学習
データ	
  :	
  x	
  	
書き換え後の学習
データ	
  :	
  y	
  	
てがかり(clue)の集合	
  C	
ルールの集合	
  R	
抽出	
9
 	
  clueの例	
prior_cue,	
  unique_inp_cue,	
  dedup_cue,	
  case_cue	
  
trim_cue,	
  strip_space_cue,	
  simple_append_prepend	
  
extract_numbers_cue,	
  numeric_cue,	
  sequence_cue	
  
generalized_sequence_cue,	
  count_occ_cue,	
  line_num_cue	
  
comma_and_cue,	
  num_to_word_cue,	
  matricize_cue,	
  sort_cue	
  
map_each_line_cue,	
  remove_char_cue	
他にもたとえば)	
※完全なリストは hip://cseweb.ucsd.edu/~akmenon/pbe/ にあります	
10
Pr[	
  r	
  |	
  z;	
  θ	
  ]のモデル	
•  ごくふつうのlog	
  linear	
  モデル	
θ	
  	
  :	
  ルールひとつひとつの重み(実数)	
  
ci(z)	
  :	
  テキストを受け取ってルールの集合を返す関数(前述のclue)	
  
Z	
  :	
  正規化	
  
 ルールの左辺(	
  LHS(r)	
  )から導出されるすべての右辺を足しあわせ	
0	
  or	
  1	
11
トレーニング	
•  勾配降下法(対数尤度の最大化)	
k	
  :	
  f のルール数	
正則化(L2)	
対数尤度	
ひとつ	
  z	
  を受け取って,尤度を上げるように	
  θ	
  を更新	
12
正解データは?	
•  正解データを用意するのは難しい	
  
•  bootstrapによって学習(x,	
  yペアのみから学習)	
  
–  θ(0)	
  =	
  0	
  と初期化(すべてのルールが同じ重み)	
  
–  f(x)	
  =	
  y	
  を満たす(正しく変換する)尤もらしいプログラ
ムを推論	
  
•  最初は「短い」	
  f	
  が優先される?	
  
•  見つからなければその事例は無視	
  
–  それを正解データとして,θを更新	
  
–  収束するまで繰り返し	
  
13
未知のデータに対するプログラム生成	
•  入力	
  
– データ z	
  :	
  (x,	
  x,	
  y	
  )	
  	
  	
  	
  (学習には使っていないもの)	
  
– 手がかり	
  :	
  c1,	
  c2,	
  …	
  cn	
  	
  
– モデルパラメータ	
  :	
  θ	
  ∈	
  Rn	
  ,	
  タイムアウト τ	
  
1.  データから手がかりを探し出し,ルール集合Rを生成	
  
2.  ルール集合の元に対してパラメータを用いて確率値を付与	
  
(PCFGの各導出に対する確率値の付与)	
  
3.  PCFGの導出( プログラム:f )を確率値の降順に探索,	
  x,	
  y	
  
を正しく変換している導出を返す	
  
4.  タイムアウトまでに正しく変換する導出が見つからなけれ
ば失敗(タイムアウトを設定しないと永遠に導出し続ける)	
  
14
実験	
•  データ	
  
–  (x,	
  y)	
  280ペア	
  
•  一部は人手で作成(Gulwani,	
  2011)	
  
•  残りはExcelのヘルプフォーラムから人手で収集	
  
–  base	
  funcqon(ルールの元)	
  :	
  100個くらい	
  
–  clues(テキスト組とルール集合の対応づけ)	
  :	
  100個くらい	
  
–  データは hip://cseweb.ucsd.edu/~akmenon/pbe/	
  にあるよ	
  
•  ベースライン	
  
–  θ	
  =	
  0	
  のもの	
  (すべてのルールが同じ重み)	
  
•  実験設定	
  
–  80(train)	
  −20(test)	
  splitを10組	
  
–  タイムアウト	
  τ	
  を変化させる	
  
–  bootstrapは3回	
15
実験結果(Timeout	
  Error)	
PCFGのパラメータを学習することにより,高速化を実現	
16
実験結果(Ranking	
  Error)	
定義がいまいち不明.正解のプログラムが用意されている?	
17
実験結果(Speed	
  Up)	
最大40倍近い速度!	
18
まとめ /	
  感想	
•  「例からのプログラミング」に対する機械学習か
らのアプローチ	
  
•  プログラムをPCFGからの導出で表現し,そのパ
ラメータをbootstrapに学習	
  
•  学習しない場合と比較して最大40倍の高速化,
正解率も向上	
  
•  感想	
  
–  clueとルールの対応付けは人手?何か出来そう	
  
–  似た枠組みをNLPに応用できないかな?	
  
•  略語の推定,要約etc…	
19

More Related Content

What's hot

[DSO] Machine Learning Seminar Vol.2 Chapter 3
[DSO] Machine Learning Seminar Vol.2 Chapter 3[DSO] Machine Learning Seminar Vol.2 Chapter 3
[DSO] Machine Learning Seminar Vol.2 Chapter 3Teruyuki Sakaue
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Ken Morishita
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門Etsuji Nakai
 
論文紹介 Semi-supervised Learning with Deep Generative Models
論文紹介 Semi-supervised Learning with Deep Generative Models論文紹介 Semi-supervised Learning with Deep Generative Models
論文紹介 Semi-supervised Learning with Deep Generative ModelsSeiya Tokui
 
Data-Intensive Text Processing with MapReduce ch6.1
Data-Intensive Text Processing with MapReduce ch6.1Data-Intensive Text Processing with MapReduce ch6.1
Data-Intensive Text Processing with MapReduce ch6.1Sho Shimauchi
 
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)Shotaro Sano
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tatsuya Tojima
 
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...Deep Learning JP
 
クラシックな機械学習の入門 4. 学習データと予測性能
クラシックな機械学習の入門  4.   学習データと予測性能クラシックな機械学習の入門  4.   学習データと予測性能
クラシックな機械学習の入門 4. 学習データと予測性能Hiroshi Nakagawa
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習Takashi Kitano
 
LCCC2010:Learning on Cores, Clusters and Cloudsの解説
LCCC2010:Learning on Cores,  Clusters and Cloudsの解説LCCC2010:Learning on Cores,  Clusters and Cloudsの解説
LCCC2010:Learning on Cores, Clusters and Cloudsの解説Preferred Networks
 
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてGPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてYuya Unno
 
Pythonによる機械学習
Pythonによる機械学習Pythonによる機械学習
Pythonによる機械学習Kimikazu Kato
 
Semi-Supervised Learning Using Gaussian Fields and Harmonic Functions (ICML2003)
Semi-Supervised Learning Using Gaussian Fields and Harmonic Functions (ICML2003)Semi-Supervised Learning Using Gaussian Fields and Harmonic Functions (ICML2003)
Semi-Supervised Learning Using Gaussian Fields and Harmonic Functions (ICML2003)Shunya Ueta
 
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 JubatusハンズオンYuya Unno
 
ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用nishio
 
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on TwitterKDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twittersleepy_yoshi
 
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages. Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages. Satoshi Kato
 
SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)sleepy_yoshi
 

What's hot (20)

[DSO] Machine Learning Seminar Vol.2 Chapter 3
[DSO] Machine Learning Seminar Vol.2 Chapter 3[DSO] Machine Learning Seminar Vol.2 Chapter 3
[DSO] Machine Learning Seminar Vol.2 Chapter 3
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
論文紹介 Semi-supervised Learning with Deep Generative Models
論文紹介 Semi-supervised Learning with Deep Generative Models論文紹介 Semi-supervised Learning with Deep Generative Models
論文紹介 Semi-supervised Learning with Deep Generative Models
 
Data-Intensive Text Processing with MapReduce ch6.1
Data-Intensive Text Processing with MapReduce ch6.1Data-Intensive Text Processing with MapReduce ch6.1
Data-Intensive Text Processing with MapReduce ch6.1
 
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
 
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
 
クラシックな機械学習の入門 4. 学習データと予測性能
クラシックな機械学習の入門  4.   学習データと予測性能クラシックな機械学習の入門  4.   学習データと予測性能
クラシックな機械学習の入門 4. 学習データと予測性能
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習
 
LCCC2010:Learning on Cores, Clusters and Cloudsの解説
LCCC2010:Learning on Cores,  Clusters and Cloudsの解説LCCC2010:Learning on Cores,  Clusters and Cloudsの解説
LCCC2010:Learning on Cores, Clusters and Cloudsの解説
 
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてGPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
 
Pythonによる機械学習
Pythonによる機械学習Pythonによる機械学習
Pythonによる機械学習
 
NumPy闇入門
NumPy闇入門NumPy闇入門
NumPy闇入門
 
Semi-Supervised Learning Using Gaussian Fields and Harmonic Functions (ICML2003)
Semi-Supervised Learning Using Gaussian Fields and Harmonic Functions (ICML2003)Semi-Supervised Learning Using Gaussian Fields and Harmonic Functions (ICML2003)
Semi-Supervised Learning Using Gaussian Fields and Harmonic Functions (ICML2003)
 
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 Jubatusハンズオン
 
ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用
 
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on TwitterKDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
 
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages. Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
 
SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)
 

Viewers also liked

Joint Modeling of a Matrix with Associated Text via Latent Binary Features
Joint Modeling of a Matrix with Associated Text via Latent Binary FeaturesJoint Modeling of a Matrix with Associated Text via Latent Binary Features
Joint Modeling of a Matrix with Associated Text via Latent Binary FeaturesKoji Matsuda
 
Information-Theoretic Metric Learning
Information-Theoretic Metric LearningInformation-Theoretic Metric Learning
Information-Theoretic Metric LearningKoji Matsuda
 
「深層学習」第6章 畳込みニューラルネット
「深層学習」第6章 畳込みニューラルネット「深層学習」第6章 畳込みニューラルネット
「深層学習」第6章 畳込みニューラルネットKen'ichi Matsui
 
画像認識のための深層学習
画像認識のための深層学習画像認識のための深層学習
画像認識のための深層学習Saya Katafuchi
 
Practical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architecturesPractical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architecturesKoji Matsuda
 
Deep Learningと画像認識   ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識   ~歴史・理論・実践~nlab_utokyo
 

Viewers also liked (7)

Joint Modeling of a Matrix with Associated Text via Latent Binary Features
Joint Modeling of a Matrix with Associated Text via Latent Binary FeaturesJoint Modeling of a Matrix with Associated Text via Latent Binary Features
Joint Modeling of a Matrix with Associated Text via Latent Binary Features
 
Information-Theoretic Metric Learning
Information-Theoretic Metric LearningInformation-Theoretic Metric Learning
Information-Theoretic Metric Learning
 
「深層学習」第6章 畳込みニューラルネット
「深層学習」第6章 畳込みニューラルネット「深層学習」第6章 畳込みニューラルネット
「深層学習」第6章 畳込みニューラルネット
 
画像認識のための深層学習
画像認識のための深層学習画像認識のための深層学習
画像認識のための深層学習
 
MIRU2014 tutorial deeplearning
MIRU2014 tutorial deeplearningMIRU2014 tutorial deeplearning
MIRU2014 tutorial deeplearning
 
Practical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architecturesPractical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architectures
 
Deep Learningと画像認識   ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識   ~歴史・理論・実践~
 

Similar to A Machine Learning Framework for Programming by Example

CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出Shuyo Nakatani
 
第1回勉強会スライド
第1回勉強会スライド第1回勉強会スライド
第1回勉強会スライドkoturn 0;
 
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編陽平 山口
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
 
F#のコンピュテーション式
F#のコンピュテーション式F#のコンピュテーション式
F#のコンピュテーション式pocketberserker
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門Daiyu Hatakeyama
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装Ryosuke Okuta
 
使い捨て python コードの書き方
使い捨て python コードの書き方使い捨て python コードの書き方
使い捨て python コードの書き方Sho Shimauchi
 
Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26Akihiro Nishimura
 
NLP若手の回 ACL2012参加報告
NLP若手の回 ACL2012参加報告NLP若手の回 ACL2012参加報告
NLP若手の回 ACL2012参加報告Hiroyuki TOKUNAGA
 
Web本文抽出 using crf
Web本文抽出 using crfWeb本文抽出 using crf
Web本文抽出 using crfShuyo Nakatani
 
最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17Masayoshi Kondo
 
Mplusの使い方 初級編
Mplusの使い方 初級編Mplusの使い方 初級編
Mplusの使い方 初級編Hiroshi Shimizu
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要Toshihiro Kamishima
 

Similar to A Machine Learning Framework for Programming by Example (20)

PFI Christmas seminar 2009
PFI Christmas seminar 2009PFI Christmas seminar 2009
PFI Christmas seminar 2009
 
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
 
第1回勉強会スライド
第1回勉強会スライド第1回勉強会スライド
第1回勉強会スライド
 
20110611 v7unix-b
20110611 v7unix-b20110611 v7unix-b
20110611 v7unix-b
 
20150513 legobease
20150513 legobease20150513 legobease
20150513 legobease
 
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
F#のコンピュテーション式
F#のコンピュテーション式F#のコンピュテーション式
F#のコンピュテーション式
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
Tdd
TddTdd
Tdd
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
 
使い捨て python コードの書き方
使い捨て python コードの書き方使い捨て python コードの書き方
使い捨て python コードの書き方
 
Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26
 
秀スクリプトの話
秀スクリプトの話秀スクリプトの話
秀スクリプトの話
 
NLP若手の回 ACL2012参加報告
NLP若手の回 ACL2012参加報告NLP若手の回 ACL2012参加報告
NLP若手の回 ACL2012参加報告
 
Web本文抽出 using crf
Web本文抽出 using crfWeb本文抽出 using crf
Web本文抽出 using crf
 
最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17
 
Mplusの使い方 初級編
Mplusの使い方 初級編Mplusの使い方 初級編
Mplusの使い方 初級編
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
 
Tokyo r28 1
Tokyo r28 1Tokyo r28 1
Tokyo r28 1
 

More from Koji Matsuda

Reading Wikipedia to Answer Open-Domain Questions (ACL2017) and more...
Reading Wikipedia to Answer Open-Domain Questions (ACL2017) and more...Reading Wikipedia to Answer Open-Domain Questions (ACL2017) and more...
Reading Wikipedia to Answer Open-Domain Questions (ACL2017) and more...Koji Matsuda
 
KB + Text => Great KB な論文を多読してみた
KB + Text => Great KB な論文を多読してみたKB + Text => Great KB な論文を多読してみた
KB + Text => Great KB な論文を多読してみたKoji Matsuda
 
Large-Scale Information Extraction from Textual Definitions through Deep Syn...
Large-Scale Information Extraction from Textual Definitions through Deep Syn...Large-Scale Information Extraction from Textual Definitions through Deep Syn...
Large-Scale Information Extraction from Textual Definitions through Deep Syn...Koji Matsuda
 
知識を紡ぐための言語処理と、 そのための言語資源
知識を紡ぐための言語処理と、そのための言語資源知識を紡ぐための言語処理と、そのための言語資源
知識を紡ぐための言語処理と、 そのための言語資源Koji Matsuda
 
「今日から使い切る」 ための GNU Parallel による並列処理入門
「今日から使い切る」ための GNU Parallelによる並列処理入門「今日から使い切る」ための GNU Parallelによる並列処理入門
「今日から使い切る」 ための GNU Parallel による並列処理入門Koji Matsuda
 
場所参照表現タグ付きコーパスの 構築と評価
場所参照表現タグ付きコーパスの構築と評価 場所参照表現タグ付きコーパスの構築と評価
場所参照表現タグ付きコーパスの 構築と評価 Koji Matsuda
 
Entity linking meets Word Sense Disambiguation: a unified approach(TACL 2014)の紹介
Entity linking meets Word Sense Disambiguation: a unified approach(TACL 2014)の紹介Entity linking meets Word Sense Disambiguation: a unified approach(TACL 2014)の紹介
Entity linking meets Word Sense Disambiguation: a unified approach(TACL 2014)の紹介Koji Matsuda
 
いまさら聞けない “モデル” の話 @DSIRNLP#5
いまさら聞けない “モデル” の話 @DSIRNLP#5いまさら聞けない “モデル” の話 @DSIRNLP#5
いまさら聞けない “モデル” の話 @DSIRNLP#5Koji Matsuda
 
Align, Disambiguate and Walk : A Unified Approach forMeasuring Semantic Simil...
Align, Disambiguate and Walk  : A Unified Approach forMeasuring Semantic Simil...Align, Disambiguate and Walk  : A Unified Approach forMeasuring Semantic Simil...
Align, Disambiguate and Walk : A Unified Approach forMeasuring Semantic Simil...Koji Matsuda
 
Unified Expectation Maximization
Unified Expectation MaximizationUnified Expectation Maximization
Unified Expectation MaximizationKoji Matsuda
 
Language Models as Representations for Weakly-­Supervised NLP Tasks (CoNLL2011)
Language Models as Representations for Weakly-­Supervised NLP Tasks (CoNLL2011)Language Models as Representations for Weakly-­Supervised NLP Tasks (CoNLL2011)
Language Models as Representations for Weakly-­Supervised NLP Tasks (CoNLL2011)Koji Matsuda
 
研究室内PRML勉強会 11章2-4節
研究室内PRML勉強会 11章2-4節研究室内PRML勉強会 11章2-4節
研究室内PRML勉強会 11章2-4節Koji Matsuda
 
研究室内PRML勉強会 8章1節
研究室内PRML勉強会 8章1節研究室内PRML勉強会 8章1節
研究室内PRML勉強会 8章1節Koji Matsuda
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Koji Matsuda
 
Approximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLPApproximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLPKoji Matsuda
 

More from Koji Matsuda (15)

Reading Wikipedia to Answer Open-Domain Questions (ACL2017) and more...
Reading Wikipedia to Answer Open-Domain Questions (ACL2017) and more...Reading Wikipedia to Answer Open-Domain Questions (ACL2017) and more...
Reading Wikipedia to Answer Open-Domain Questions (ACL2017) and more...
 
KB + Text => Great KB な論文を多読してみた
KB + Text => Great KB な論文を多読してみたKB + Text => Great KB な論文を多読してみた
KB + Text => Great KB な論文を多読してみた
 
Large-Scale Information Extraction from Textual Definitions through Deep Syn...
Large-Scale Information Extraction from Textual Definitions through Deep Syn...Large-Scale Information Extraction from Textual Definitions through Deep Syn...
Large-Scale Information Extraction from Textual Definitions through Deep Syn...
 
知識を紡ぐための言語処理と、 そのための言語資源
知識を紡ぐための言語処理と、そのための言語資源知識を紡ぐための言語処理と、そのための言語資源
知識を紡ぐための言語処理と、 そのための言語資源
 
「今日から使い切る」 ための GNU Parallel による並列処理入門
「今日から使い切る」ための GNU Parallelによる並列処理入門「今日から使い切る」ための GNU Parallelによる並列処理入門
「今日から使い切る」 ための GNU Parallel による並列処理入門
 
場所参照表現タグ付きコーパスの 構築と評価
場所参照表現タグ付きコーパスの構築と評価 場所参照表現タグ付きコーパスの構築と評価
場所参照表現タグ付きコーパスの 構築と評価
 
Entity linking meets Word Sense Disambiguation: a unified approach(TACL 2014)の紹介
Entity linking meets Word Sense Disambiguation: a unified approach(TACL 2014)の紹介Entity linking meets Word Sense Disambiguation: a unified approach(TACL 2014)の紹介
Entity linking meets Word Sense Disambiguation: a unified approach(TACL 2014)の紹介
 
いまさら聞けない “モデル” の話 @DSIRNLP#5
いまさら聞けない “モデル” の話 @DSIRNLP#5いまさら聞けない “モデル” の話 @DSIRNLP#5
いまさら聞けない “モデル” の話 @DSIRNLP#5
 
Align, Disambiguate and Walk : A Unified Approach forMeasuring Semantic Simil...
Align, Disambiguate and Walk  : A Unified Approach forMeasuring Semantic Simil...Align, Disambiguate and Walk  : A Unified Approach forMeasuring Semantic Simil...
Align, Disambiguate and Walk : A Unified Approach forMeasuring Semantic Simil...
 
Unified Expectation Maximization
Unified Expectation MaximizationUnified Expectation Maximization
Unified Expectation Maximization
 
Language Models as Representations for Weakly-­Supervised NLP Tasks (CoNLL2011)
Language Models as Representations for Weakly-­Supervised NLP Tasks (CoNLL2011)Language Models as Representations for Weakly-­Supervised NLP Tasks (CoNLL2011)
Language Models as Representations for Weakly-­Supervised NLP Tasks (CoNLL2011)
 
研究室内PRML勉強会 11章2-4節
研究室内PRML勉強会 11章2-4節研究室内PRML勉強会 11章2-4節
研究室内PRML勉強会 11章2-4節
 
研究室内PRML勉強会 8章1節
研究室内PRML勉強会 8章1節研究室内PRML勉強会 8章1節
研究室内PRML勉強会 8章1節
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
 
Approximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLPApproximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLP
 

A Machine Learning Framework for Programming by Example

  • 1. A  Machine  Learning  Framework  for   Programming  by  Example   Aditya  Menon,  Omer  Tamuz,  Sumit  Gulwani,  Butler   Lampson,  Adam  Kalai   ICML  2013   すずかけ論文読み会  #3  (2013/06/01)   紹介者  :  matsuda 1
  • 2. Programming  by  Example  (PBE) •  「例」からのプログラミング   – UI  /  プログラム生成の分野で研究されてきた問題   – 「変換前」,「変換後」のペアから変換プログラム を生成   •  たとえば・・・)  Excel2013のFlash  Fill   – セル情報に基づくテキストの書き換え   – 百聞は一見にしかず (YouTube)   – すでに実用化されている   – ただし,  line  by  lineの書き換え 2
  • 3. この論文で扱いたい事例 変換前 変換後 学習 ※  line  by  line  ではない,countなども扱いたい    ふつうはPerlとかAWKでプログラムを書くような処理も含めたい 3
  • 4. 何が難しいか •  一般に,トレーニングデータは非常に少ない   –  もしかしたら,  1  事例しか与えられないかもしれない   •  f(x)  =  y  を満たすような  f(プログラム)  は一般に無限に存在   –  ものすごく長い  f  ,汎用性のない  f  ,,,,   –  brute-­‐forceにやっても恐らくは見つかるが,たいへん時間がか かる   •  複数の事例から同時に学習を行う   –  書き換えプログラムの「一般的な性質」を学習!   •  ランキング問題として定式化し,もっともらしい  f  を「探索」 する問題に落とす   –  探索の高速化!   4
  • 5. システムのおおまかな構造 書き換え元の学習 データ  :  x   書き換え元の学習 データ  :  y   書き換え元の学習 データ  :  x   書き換え元の学習 データ  :  y   書き換え元の学習 データ  :  x   書き換え元の学習 データ  :  y   書き換え元の学習 データ  :  x   書き換え後の学習 データ  :  y   ルールの集合  R てがかり(clue)の集合  C PCFGパラメータ  :  θ 書き換えの導出 抽出 書き換えを行いた いデータ  :  x 書き換え後の   データ  :  y 5 xからyが復元できるように学習 適用
  • 6. 問題の定式化 •  学習対象  :  f  ∈  {  S  -­‐>  S  }   –  文字列から文字列への書き換えプログラム   •  データ  :  x(書き換え前)  ,  y(書き換え後),  x(書き換 えを適用したいデータ)   •  F(・)  :  (x  -­‐>  y)  の変換を実現する全てのプログラ ム(膨大)   –  この上で 「もっともらしさ」 に基づいてランキングを行 う関数を学習する   –  「もっともらしさ」をどのように表現するか,どのように 学習するか 6
  • 7. プログラムを確率モデルとして表す •  プログラムの上の確率モデル(PCFG)   – Pr[  f  |  z  ;  θ  ]   •  z  :  (x,  x,y)の組, θ:確率モデルのパラメータ   r  :  書き換えルール ex.  (  LIST  -­‐>  dedup(LIST)  )    (あらかじめいっぱい用意してある)   •  データ(z)とルールをどのように関連付けるか?   •  Pr  [  r  |  z  ;  θ  ]  をどのようにモデル化するか?   7
  • 8. プログラムのPCFG(例) P join(LIST,  DELIM) concatList(“(“,  CAT,  “)”) LIST “  ” split(x,  DELIM) “n” 導出の一例) 8
  • 9. 書き換えとルールの関連付け:clues •  clues  (手がかり)   –  c  :  S3  -­‐>  2R   •  データの組を受け取って,ルールの集合を返す   –  こういう特徴の場合こういうルールが適応できる,という知識   •  Givenであると仮定?   –  CRFで言うところの素性関数テンプレートのようなもの   書き換え元の学習 データ  :  x   書き換え後の学習 データ  :  y   てがかり(clue)の集合  C ルールの集合  R 抽出 9
  • 10.    clueの例 prior_cue,  unique_inp_cue,  dedup_cue,  case_cue   trim_cue,  strip_space_cue,  simple_append_prepend   extract_numbers_cue,  numeric_cue,  sequence_cue   generalized_sequence_cue,  count_occ_cue,  line_num_cue   comma_and_cue,  num_to_word_cue,  matricize_cue,  sort_cue   map_each_line_cue,  remove_char_cue 他にもたとえば) ※完全なリストは hip://cseweb.ucsd.edu/~akmenon/pbe/ にあります 10
  • 11. Pr[  r  |  z;  θ  ]のモデル •  ごくふつうのlog  linear  モデル θ    :  ルールひとつひとつの重み(実数)   ci(z)  :  テキストを受け取ってルールの集合を返す関数(前述のclue)   Z  :  正規化    ルールの左辺(  LHS(r)  )から導出されるすべての右辺を足しあわせ 0  or  1 11
  • 12. トレーニング •  勾配降下法(対数尤度の最大化) k  :  f のルール数 正則化(L2) 対数尤度 ひとつ  z  を受け取って,尤度を上げるように  θ  を更新 12
  • 13. 正解データは? •  正解データを用意するのは難しい   •  bootstrapによって学習(x,  yペアのみから学習)   –  θ(0)  =  0  と初期化(すべてのルールが同じ重み)   –  f(x)  =  y  を満たす(正しく変換する)尤もらしいプログラ ムを推論   •  最初は「短い」  f  が優先される?   •  見つからなければその事例は無視   –  それを正解データとして,θを更新   –  収束するまで繰り返し   13
  • 14. 未知のデータに対するプログラム生成 •  入力   – データ z  :  (x,  x,  y  )        (学習には使っていないもの)   – 手がかり  :  c1,  c2,  …  cn     – モデルパラメータ  :  θ  ∈  Rn  ,  タイムアウト τ   1.  データから手がかりを探し出し,ルール集合Rを生成   2.  ルール集合の元に対してパラメータを用いて確率値を付与   (PCFGの各導出に対する確率値の付与)   3.  PCFGの導出( プログラム:f )を確率値の降順に探索,  x,  y   を正しく変換している導出を返す   4.  タイムアウトまでに正しく変換する導出が見つからなけれ ば失敗(タイムアウトを設定しないと永遠に導出し続ける)   14
  • 15. 実験 •  データ   –  (x,  y)  280ペア   •  一部は人手で作成(Gulwani,  2011)   •  残りはExcelのヘルプフォーラムから人手で収集   –  base  funcqon(ルールの元)  :  100個くらい   –  clues(テキスト組とルール集合の対応づけ)  :  100個くらい   –  データは hip://cseweb.ucsd.edu/~akmenon/pbe/  にあるよ   •  ベースライン   –  θ  =  0  のもの  (すべてのルールが同じ重み)   •  実験設定   –  80(train)  −20(test)  splitを10組   –  タイムアウト  τ  を変化させる   –  bootstrapは3回 15
  • 19. まとめ /  感想 •  「例からのプログラミング」に対する機械学習か らのアプローチ   •  プログラムをPCFGからの導出で表現し,そのパ ラメータをbootstrapに学習   •  学習しない場合と比較して最大40倍の高速化, 正解率も向上   •  感想   –  clueとルールの対応付けは人手?何か出来そう   –  似た枠組みをNLPに応用できないかな?   •  略語の推定,要約etc… 19