【論文解讀 ICLR 2020 | LambdaNet】Probabilistic Type Inference using Graph Neural Networks

論文題目:LambdaNet: Probabilistic Type Inference using Graph Neural Networks

論文來源:ICLR 2020

論文鏈接:https://openreview.net/forum?id=r1lZ7AEKvB

代碼鏈接:https://github.com/MrVPlusOne/LambdaNet

關(guān)鍵詞:GNN袁稽,謂詞玩焰,代碼類型注釋,attention剪芥,超邊绣张,指針網(wǎng)絡(luò)

1 摘要

本文使用圖神經(jīng)網(wǎng)絡(luò)進(jìn)行推理雅宾,具體的場(chǎng)景是在 Python 或者 Typescript 之類的語言中自動(dòng)進(jìn)行代碼的類型注釋唆迁。

該方法首先使用輕量級(jí)的源代碼分析生成一個(gè)程序抽象——類型依賴圖肉拓。該圖將類型變量和邏輯約束后频、名稱以及使用信息聯(lián)系在一起。給定這個(gè)圖后暖途,使用GNN在相關(guān)的類型變量間進(jìn)行消息傳播卑惜,最終進(jìn)行類型的預(yù)測(cè)。

本文提出的方法可以預(yù)測(cè)標(biāo)準(zhǔn)的類型驻售,例如number露久、string,也可以預(yù)測(cè)出訓(xùn)練中未出現(xiàn)過的用戶自定義的類型欺栗。

2 引言

在過去的十年中毫痕,例如Python、Ruby迟几、Javascript之類的動(dòng)態(tài)類型語言獲得了極大的普及消请,但它們?nèi)狈o態(tài)類型系統(tǒng),缺乏在編譯時(shí)捕獲錯(cuò)誤的能力以及code completion的支持类腮,在可維護(hù)性方面存在一定的缺陷臊泰。

Gradual typing可以解決這些不足:程序變量有可選的類型注釋,這樣類型系統(tǒng)就可以在需要的時(shí)候執(zhí)行靜態(tài)類型檢查蚜枢。有許多流行的編程語言可支持gradual typing缸逃,但由于它們大量使用動(dòng)態(tài)語言結(jié)構(gòu)并且缺乏主要的類型,編譯器不能使用來自編程語言社區(qū)的標(biāo)準(zhǔn)算法進(jìn)行類型推斷厂抽。并且察滑,手動(dòng)向現(xiàn)有的代碼庫添加類型注釋非常繁瑣而且易出錯(cuò)。

為了減少從無類型的代碼向靜態(tài)類型代碼過渡所涉及的人工工作修肠,本文的工作使用基于學(xué)習(xí)的方法贺辰,自動(dòng)地為無類型(或有部分類型)的代碼庫推斷出可能的類型注釋。

已有方法的缺點(diǎn):

本文使用的是TypeScript嵌施,是Javascript的一種變形饲化,該語言有大量的類型注釋的程序作為訓(xùn)練數(shù)據(jù)。已經(jīng)有一些使用機(jī)器學(xué)習(xí)為TypeScript推斷類型標(biāo)注的方法吗伤,但這些方法都有一些缺點(diǎn):

(1)推斷的結(jié)果來源于有限的類型詞典吃靠,即推斷的類型都是在訓(xùn)練過程中出現(xiàn)過的,不能推斷出用戶定義的數(shù)據(jù)類型足淆。

(2)即使不考慮用戶定義的類型巢块,這些方法的準(zhǔn)確率也不高礁阁。

(3)這些方法可能會(huì)產(chǎn)生不一致的結(jié)果,對(duì)于相同的變量可能因?yàn)槌霈F(xiàn)位置的不同族奢,導(dǎo)致預(yù)測(cè)出來的類型不同姥闭。

作者提出:

使用GNN對(duì)TypeScript進(jìn)行類型推斷,避免了上述問題越走。

本文的方法先使用輕量級(jí)的源代碼分析棚品,將程序轉(zhuǎn)換成類型依賴圖。圖由節(jié)點(diǎn)和有標(biāo)簽的超邊(hyperedges)組成廊敌,圖中的節(jié)點(diǎn)代表類型變量铜跑,節(jié)點(diǎn)間的關(guān)系編碼在了超邊里。類型依賴圖中除了表達(dá)了邏輯約束之外骡澈,還結(jié)合了設(shè)計(jì)命名和變量使用的上下文提示锅纺。

給定類型依賴圖后,使用GNN為每種類型變量計(jì)算出一個(gè)向量表示肋殴,然后使用類似指針網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行類型預(yù)測(cè)伞广。

GNN本身需要處理各種類型的超邊(有些具有可變數(shù)量的參數(shù)),為此作者定義了恰當(dāng)?shù)膱D傳播操作疼电。

在預(yù)測(cè)層比較了類型變量的向量表示和候選類型的向量表示,從而可以靈活地處理在訓(xùn)練階段未出現(xiàn)過的用戶定義的類型减拭。

另外蔽豺,模型的預(yù)測(cè)結(jié)果具有一致性,因?yàn)槟P瓦M(jìn)行的是變量級(jí)別的預(yù)測(cè)拧粪,而不是位置級(jí)別的預(yù)測(cè)修陡。

貢獻(xiàn):

(1)提出了一個(gè)TypeScript的概率類型推斷算法)(LambdaNet),使用了深度學(xué)習(xí)的方法可霎,根據(jù)程序?qū)?yīng)的類型依賴圖的表示進(jìn)行預(yù)測(cè)魄鸦。

(2)使用GNN方法進(jìn)行了類型變量的向量表示的計(jì)算,并且提出類似指針網(wǎng)絡(luò)的方法對(duì)用戶定義的類型進(jìn)行預(yù)測(cè)癣朗。

(3)實(shí)驗(yàn)證明了LambdaNet的有效性以及和之前的方法相比的優(yōu)越性拾因。

3 動(dòng)機(jī)舉例和問題設(shè)置

————————————————

版權(quán)聲明:本文為CSDN博主「byn12345」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議旷余,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明绢记。

原文鏈接:https://blog.csdn.net/byn12345/article/details/105291133

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市正卧,隨后出現(xiàn)的幾起案子蠢熄,更是在濱河造成了極大的恐慌,老刑警劉巖炉旷,帶你破解...
    沈念sama閱讀 221,331評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件签孔,死亡現(xiàn)場(chǎng)離奇詭異叉讥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)饥追,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門图仓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人判耕,你說我怎么就攤上這事透绩。” “怎么了壁熄?”我有些...
    開封第一講書人閱讀 167,755評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵帚豪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我草丧,道長(zhǎng)狸臣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,528評(píng)論 1 296
  • 正文 為了忘掉前任昌执,我火速辦了婚禮烛亦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘懂拾。我一直安慰自己煤禽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評(píng)論 6 397
  • 文/花漫 我一把揭開白布岖赋。 她就那樣靜靜地躺著檬果,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唐断。 梳的紋絲不亂的頭發(fā)上选脊,一...
    開封第一講書人閱讀 52,166評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音脸甘,去河邊找鬼恳啥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛丹诀,可吹牛的內(nèi)容都是我干的钝的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,768評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼铆遭,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼扁藕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起疚脐,我...
    開封第一講書人閱讀 39,664評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤亿柑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后棍弄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體望薄,經(jīng)...
    沈念sama閱讀 46,205評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疟游,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了痕支。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颁虐。...
    茶點(diǎn)故事閱讀 40,435評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卧须,靈堂內(nèi)的尸體忽然破棺而出另绩,到底是詐尸還是另有隱情,我是刑警寧澤花嘶,帶...
    沈念sama閱讀 36,126評(píng)論 5 349
  • 正文 年R本政府宣布笋籽,位于F島的核電站,受9級(jí)特大地震影響椭员,放射性物質(zhì)發(fā)生泄漏车海。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評(píng)論 3 333
  • 文/蒙蒙 一隘击、第九天 我趴在偏房一處隱蔽的房頂上張望侍芝。 院中可真熱鬧,春花似錦埋同、人聲如沸州叠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咧栗。三九已至,卻和暖如春哟冬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忆绰。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國打工浩峡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人错敢。 一個(gè)月前我還...
    沈念sama閱讀 48,818評(píng)論 3 376
  • 正文 我出身青樓翰灾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親稚茅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纸淮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容