Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks...

70
Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein Berkeley N L P

Transcript of Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks...

Page 1: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Abstract Syntax Networks for Code Generation and Semantic Parsing

Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Berkeley

N L P

Page 2: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Code Generation

[Ling et al. 2016]

Page 3: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Code Generation

class DireWolfAlpha(MinionCard):

def __init__(self):

super().__init__(

"Dire Wolf Alpha", 2,

CHARACTER_CLASS.ALL,

CARD_RARITY.COMMON,

minion_type=MINION_TYPE.BEAST)

def create_minion(self, player):

return Minion(2, 2, auras=[

Aura(ChangeAttack(1),

MinionSelector(Adjacent()))

])

Input Output [Ling et al. 2016]

Page 4: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Code Generation

class DireWolfAlpha(MinionCard):

def __init__(self):

super().__init__(

"Dire Wolf Alpha", 2,

CHARACTER_CLASS.ALL,

CARD_RARITY.COMMON,

minion_type=MINION_TYPE.BEAST)

def create_minion(self, player):

return Minion(2, 2, auras=[

Aura(ChangeAttack(1),

MinionSelector(Adjacent()))

])

Input Output [Ling et al. 2016]

Page 5: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Code Generation

class DireWolfAlpha(MinionCard):

def __init__(self):

super().__init__(

"Dire Wolf Alpha", 2,

CHARACTER_CLASS.ALL,

CARD_RARITY.COMMON,

minion_type=MINION_TYPE.BEAST)

def create_minion(self, player):

return Minion(2, 2, auras=[

Aura(ChangeAttack(1),

MinionSelector(Adjacent()))

])

Input Output [Ling et al. 2016]

Page 6: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Code Generation

class DireWolfAlpha(MinionCard):

def __init__(self):

super().__init__(

"Dire Wolf Alpha", 2,

CHARACTER_CLASS.ALL,

CARD_RARITY.COMMON,

minion_type=MINION_TYPE.BEAST)

def create_minion(self, player):

return Minion(2, 2, auras=[

Aura(ChangeAttack(1),

MinionSelector(Adjacent()))

])

Input Output [Ling et al. 2016]

Page 7: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Code Generation

class DireWolfAlpha(MinionCard):

def __init__(self):

super().__init__(

"Dire Wolf Alpha", 2,

CHARACTER_CLASS.ALL,

CARD_RARITY.COMMON,

minion_type=MINION_TYPE.BEAST)

def create_minion(self, player):

return Minion(2, 2, auras=[

Aura(ChangeAttack(1),

MinionSelector(Adjacent()))

])

Input Output [Ling et al. 2016]

Page 8: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

The Main Idea

??

??

...

??

...

Page 9: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Card Representation

Dire Wolf Alpha name

cost 2

type Minion

rarity Common

race Beast

class Neutral

description Adjacent minions have

+1 Attack.

health 2

attack 2

class DireWolfAlpha(MinionCard):

def __init__(self):

super().__init__(

"Dire Wolf Alpha", 2,

CHARACTER_CLASS.ALL,

CARD_RARITY.COMMON,

minion_type=MINION_TYPE.BEAST)

def create_minion(self, player):

return Minion(2, 2, auras=[

Aura(ChangeAttack(1),

MinionSelector(Adjacent()))

])

[Ling et al. 2016] Input Output

Page 10: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Code Representations Aura(ChangeAttack(1), MinionSelector(Adjacent()))

[Ling et al. 2016]

Page 11: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Code Representations Aura(ChangeAttack(1), MinionSelector(Adjacent()))

[Ling et al. 2016]

Page 12: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Code Representations Aura(ChangeAttack(1), MinionSelector(Adjacent()))

Page 13: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Model Overview

Input Encoding Output

Page 14: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Encoding

Page 15: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Encoding

Dire Wolf Alpha name

cost 2

type Minion

rarity Common

race Beast

class Neutral

description Adjacent minions have

+1 Attack.

health 2

attack 2

Page 16: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Encoding

Dire Wolf Alpha name

cost 2

type Minion

rarity Common

race Beast

class Neutral

description Adjacent minions have

+1 Attack.

health 2

attack 2

. . .

Page 17: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Encoding

Dire Wolf Alpha name

cost 2

type Minion

rarity Common

race Beast

class Neutral

description Adjacent minions have

+1 Attack.

health 2

attack 2

. . .

Page 18: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Encoding

Dire Wolf Alpha name

cost 2

type Minion

rarity Common

race Beast

class Neutral

description Adjacent minions have

+1 Attack.

health 2

attack 2

. . .

Page 19: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Encoding

Dire Wolf Alpha name

cost 2

type Minion

rarity Common

race Beast

class Neutral

description Adjacent minions have

+1 Attack.

health 2

attack 2

. . .

Page 20: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Encoding

Dire Wolf Alpha name

cost 2

type Minion

rarity Common

race Beast

class Neutral

description Adjacent minions have

+1 Attack.

health 2

attack 2

. . .

Page 21: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoder Architecture

Page 22: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoder Architecture

Page 23: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoder Architecture

Page 24: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

expr

BinOp Name Call ...

Decoder Architecture

??

Page 25: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

expr

BinOp Name Call ...

Call

Decoder Architecture

??

Page 26: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

expr

BinOp Name Call ...

Call

Decoder Architecture

??

Call

func args

Page 27: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

expr

BinOp Name Call ...

Call

Decoder Architecture

??

Call

func args

expr expr*

Page 28: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

expr

BinOp Name Call ...

Call

identifier

“x” ... “Aura”

Decoder Architecture

??

Call

func args

expr expr*

Page 29: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

expr

BinOp Name Call ...

Call

identifier

“x” ...

“Aura”

“Aura”

Decoder Architecture

??

Call

func args

expr expr*

Page 30: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

Page 31: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

Page 32: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr

BinOp Name Call ...

??

Page 33: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr

BinOp Name Call ...

??

Page 34: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr

BinOp Name Call ...

Call

??

Page 35: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

Call

func args

Page 36: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

Call

func args

Page 37: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

Call

func args

expr expr*

Page 38: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

Call

func args

expr expr*

Page 39: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr

BinOp Name Call ...

??

Page 40: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr

BinOp Name Call ...

??

Page 41: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr

BinOp Name Call ...

Name

??

Page 42: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

Page 43: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

Page 44: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr*

Next Stop

??

Page 45: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr*

Next Stop

??

Page 46: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr*

Next Stop

??

Page 47: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

Page 48: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr*

Next Stop

??

Page 49: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr*

Next Stop

??

Page 50: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr*

Next Stop

??

Page 51: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

Page 52: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr*

Next Stop

??

Page 53: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr*

Next Stop

??

Page 54: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Decoding Process

expr*

Next Stop

??

Stop

Page 55: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Training

Page 56: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Training

??

Page 57: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Training

??

Page 58: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Training

??

??

...

??

...

Page 59: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Training

??

??

...

??

...

Page 60: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Hearthstone Results

Page 61: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

0

5

10

15

20

25

Exact Match Accuracy (%)

Hearthstone Results

Nearest Ling et al. (2016)

ASN ASN +SupAtt

Page 62: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

3.0

6.1

0

5

10

15

20

25

Exact Match Accuracy (%)

Hearthstone Results

Nearest Ling et al. (2016)

ASN ASN +SupAtt

Page 63: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

3.0

6.1

18.2

0

5

10

15

20

25

Exact Match Accuracy (%)

Hearthstone Results

Nearest Ling et al. (2016)

ASN ASN +SupAtt

Page 64: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

3.0

6.1

18.2

22.7

0

5

10

15

20

25

Exact Match Accuracy (%)

Hearthstone Results

Nearest Ling et al. (2016)

ASN ASN +SupAtt

Page 65: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Hearthstone Results

65.0 67.1

77.6 79.2

50

55

60

65

70

75

80

85

Token BLEU

Nearest Ling et al. (2016)

ASN ASN +SupAtt

Page 66: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Hearthstone Results

65.7

72.4

75.6

50

55

60

65

70

75

80

Tree F1

Nearest ASN ASN +SupAtt

Page 67: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Semantic Parsing

show me the fare from ci0 to ci1

𝜆𝑥. ∃𝑦.from(𝑦,ci0) ∧ to(𝑦,ci0) ∧ equals fare(𝑦 , 𝑥)

Page 68: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Semantic Parsing Results

87.1

85.7

87.1

90.4 WKZ14

DL16

ASN

ASN+SupAtt

87.1

85.3

84.6

91.3 WKZ14

DL16

ASN

ASN+SupAtt

92.9

91.4

90.0

90.7 LJK13

DL16

ASN

ASN+SupAtt

Geo

ATIS

Jobs

[Wang, Kwiatkowski, Zettlemoyer 2014] [Dong and Lapata 2016] [Liang, Jordan, Klein 2013]

Page 69: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Conclusion

Code generation and similar systems benefit from:

– Representing structure in output space

– Modular network architectures

Page 70: Abstract Syntax Networks for Code Generation and …mitchell/files/acl...Abstract Syntax Networks for Code Generation and Semantic Parsing Maxim Rabinovich*, Mitchell Stern*, Dan Klein

Thanks!