最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

微軟亞研院副院長周明:從語言智能到代碼智能

2020-11-19 11:41 作者:智源社區(qū)  | 我要投稿

11月6日上午,在中國中文信息學(xué)會和中國計算機學(xué)會聯(lián)合創(chuàng)辦的“語言與智能高峰論壇”上,微軟亞洲研究院副院長周明,以《從語言智能到代碼智能》為題,介紹了智能代碼理解和生成代碼的機理、預(yù)訓(xùn)練模型(CodeBERT/CodeGPT)、基準數(shù)據(jù)集(CodeXGLUE)以及融合了編程語言句法和語義信息的新的評價指標(CodeBLEU),分享了微軟在編程語言知識和上下文進行推理,支持代碼檢索、補全、翻譯、糾錯、問答等場景的應(yīng)用。

周明,微軟亞洲研究院副院長、中國計算機學(xué)會副理事長、國際計算語言學(xué)會(ACL)前任會長。

整理:智源實習(xí)生 羅麗

1. NLP預(yù)訓(xùn)練模型到代碼智能預(yù)訓(xùn)練模型

自然語言處理在深度學(xué)習(xí)的支撐下取得了迅猛發(fā)展,把自然語言發(fā)展的技術(shù)遷移到智能代碼研究領(lǐng)域,以提升代碼能力成為近年來新的研究熱點。代碼智能能夠讓計算機具備理解和生成代碼的能力,利用編程的語言知識和上下文進行推理,支持代碼檢索、代碼翻譯等場景應(yīng)用。

圖1:基于神經(jīng)網(wǎng)絡(luò)的NLP研究(NN-NLP)

圖為清華大學(xué)唐杰團隊總結(jié)的過去5年ACL文章中自然語言發(fā)展的主要工作,包括 Word embeddings、LSTM、Encode decoder、RNN、Pre-trained model 等,這些技術(shù)推動了自然語言的應(yīng)用,包括基于神經(jīng)網(wǎng)絡(luò)的機器翻譯,預(yù)訓(xùn)練模型演化,閱讀理解技術(shù)等。

基于以上研究,周明總結(jié)了過去5年神經(jīng)網(wǎng)絡(luò)自然語言處理具有里程碑意義的工作。

圖2:NN-NLP的技術(shù)演進

1. Word embedding。2013年,Mikolov 等提出利用上下文預(yù)測中間詞或利用中間詞來預(yù)測上下文。在一個窗口內(nèi),根據(jù)預(yù)測的損失,回傳調(diào)整 Word embeddings,并通過大規(guī)模文本訓(xùn)練,得到了一個相對穩(wěn)定的 Word embeddings。Word embeddings 包含詞本身的意義、上下文、句法語義等信息的嵌入,相對來講,它是一個靜態(tài)表示。

2. Sentence embedding。 既然詞可以做嵌入,那么句子也應(yīng)該能做嵌入,對句子進行表示的最初考慮是利用 RNN 或 CNN,從詞嵌入出發(fā),得到句子的全局表示。

3. Encoder-decoder。之后,研究者提出 Encoder decoder,以實現(xiàn)不同語言串的輸出,比如機器翻譯能夠?qū)⒅形恼Z言串變?yōu)橛⑽恼Z言串。Decoder 在產(chǎn)生某個輸出時,需要考慮輸入各節(jié)點權(quán)值的影響。

4.Transformer。RNN 自左到右的并行能力比較弱,只有一個特征抽取器,從多角度來進行特征抽取時,需要引入自注意力機制(Self-attention Mechanism),實現(xiàn)一個詞與其他詞連接強度的同步計算,而 Multi-header 的多角度抽取特征,為Transformer 技術(shù)帶來很多革命性突破。

5. Pre-trained model。對大型數(shù)據(jù)庫做 Self-supervised learning,針對大規(guī)模語料進行訓(xùn)練,可以得到預(yù)訓(xùn)練模型。

預(yù)訓(xùn)練模型是把大規(guī)模語料中訓(xùn)練的通用語言知識濃縮在一個模型中,該模型是一個詞的上下文相關(guān)的語義表示,在該模型中對下游任務(wù)做 Fine-tuning。所謂 Fine-tuning,是在原有神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,根據(jù)具體任務(wù)來調(diào)整參數(shù),每一個具體任務(wù)標注語料,然后針對標注的語料進行訓(xùn)練,訓(xùn)練的損失回傳,調(diào)整網(wǎng)絡(luò),得到一個相對較好的處理器。

圖3:預(yù)訓(xùn)練模型-自然語言處理的新范式

預(yù)訓(xùn)練模型包括預(yù)訓(xùn)練和微調(diào)(Fine-tuning),可以做純文本訓(xùn)練,也可以做文本、圖像、文本和視頻,用成對數(shù)據(jù)進行處理。在 Pre-trained model中,需要自監(jiān)督學(xué)習(xí)策略 Autoregressive language model (自回歸語言模型) 和 Auto encoder (解碼自動編碼器) 做單語言、多語言或多模態(tài),支持多種自然語言任務(wù),包括分類、序列標注、結(jié)構(gòu)預(yù)測、序列生成。Self-supervise learning 可以利用數(shù)據(jù)的自然特點,不需要人工進行標注就可以進行訓(xùn)練和學(xué)習(xí)。Auto-encoding 可以對詞或者句子進行覆蓋或調(diào)整,讓模型來猜測原來的詞或原來的詞序,其錯誤率可以調(diào)整網(wǎng)絡(luò)。

圖4:自監(jiān)督學(xué)習(xí)的預(yù)訓(xùn)練

關(guān)于為什么做預(yù)訓(xùn)練模型,周明進行了以下總結(jié):

1. 預(yù)訓(xùn)練模型嵌入了與任務(wù)無關(guān)的常識。對語法知識和語義知識進行了隱式編碼。

2. 預(yù)訓(xùn)練模型將學(xué)習(xí)到的知識轉(zhuǎn)移到下游任務(wù)中,包括低資源注釋任務(wù)和語言的任務(wù)。

3. 預(yù)訓(xùn)練模型幾乎支持所有的 NLP 任務(wù),且都具有 SOTA 效果。驅(qū)使研究者利用自然訓(xùn)練的遷移模型,來支持所有的自然語言任務(wù)。

4. 為各種應(yīng)用程序提供可擴展的解決方案。只需通過特定任務(wù)的標簽數(shù)據(jù)微調(diào)支持新任務(wù)。

圖5:語言、視覺及其他方面的預(yù)訓(xùn)練模型發(fā)展趨勢
圖6:微軟預(yù)訓(xùn)練模型的主要應(yīng)用

預(yù)訓(xùn)練模型近幾年的研究進展:

1. 出現(xiàn)具有 SOTA 性能的大型模型(例如,Turing 17B;GPT-3 175B;GShard 600B)

2. 預(yù)訓(xùn)練的方法和模型不斷創(chuàng)新,新的預(yù)訓(xùn)練任務(wù)、屏蔽策略和網(wǎng)絡(luò)結(jié)構(gòu)出現(xiàn)。

3. 從單一語言到多語言,到多模式(圖像、視頻、音頻),再到編程語言,不斷拓展,把遷移學(xué)習(xí)的模型更廣泛的運用到新的任務(wù)中。?

4. 可滿足實際需要的小型經(jīng)濟模型(例如模型壓縮,知識提煉等)。
報告中,周明介紹了幾類預(yù)訓(xùn)練語言模型。

1. UniLM

BERT 和GPT 都是從左到右的語言模型,GPT 適合做生成,BERT 適合做理解,而UniLM 可以把兩個任務(wù)同時融入,通過引入 Sequence to Sequence 的語言模型,在預(yù)測詞時做多任務(wù)學(xué)習(xí),通過Mask矩陣來控制詞和詞的連接,用一個統(tǒng)一架構(gòu),通過多任務(wù)學(xué)習(xí)得到 UniLM,該模型兼具分析生成和 Encoder decoder 工作。

圖7:UniLM

2. Unicoder

與經(jīng)典的多元預(yù)訓(xùn)練模型相比,Unicoder 通過引入新任務(wù) Constructive Learning (構(gòu)造性學(xué)習(xí))來預(yù)測兩個詞之間是否構(gòu)成互譯或者兩個短語或句子之間是否構(gòu)成互譯,比如中英文句子的互譯,該任務(wù)使預(yù)訓(xùn)練水平有所提高。

圖8:Unicoder

3. Unicoder和Unicoder-VL

針對 Unicoder 只能做分析或理解,研究者引入了 Unicoder-VL 進行生成,利用對輸入句子加入噪聲,比如顛倒詞序,或加、減詞做 Encode,并在 Decode 時試圖恢復(fù)所破壞的部分,測試模型的整體能力,之后,研究者將預(yù)訓(xùn)練模型繼續(xù)擴展到圖像和視頻任務(wù)中,并構(gòu)建模型 Unicoder-VL for Images 和 Unicoder-VL for Videos。

圖9:Unicoder-VL for Images
圖10:Unicoder-VL for Videos

LayoutLM 是 Document 的訓(xùn)練模型, 該模型考慮了分布信息。用 OCR 掃描文檔,掃描結(jié)果加每一個識別對象的位置信息作為輸入,得到 OCR 的結(jié)果,每個結(jié)果的位置信息,和對應(yīng)文檔的預(yù)訓(xùn)練模型,使用時,將預(yù)訓(xùn)練模型加圖像的部分融入,做各項文檔識別和信息抽取的任務(wù)。

圖11:LayoutLM: Text Layout Pre-training

預(yù)訓(xùn)練模型的應(yīng)用包括問答、多語言問答、文本理解和視頻章節(jié)提取等。

圖12:預(yù)訓(xùn)練模型的應(yīng)用

為促進預(yù)訓(xùn)練模型發(fā)展,微軟發(fā)布數(shù)據(jù)集 XGLUE,該數(shù)據(jù)集覆蓋十幾種語言,包含幾十個任務(wù)。

圖13:數(shù)據(jù)集XGLUE

2. 如何用預(yù)訓(xùn)練模型做代碼智能

從Excel的智能化操作,到自然語言查詢轉(zhuǎn)換為 SQL 的數(shù)據(jù)庫操作,再到 GPT-3 自動生成代碼,代碼智能的實際應(yīng)用在不斷革新和擴大。那么,用預(yù)訓(xùn)練模型如何做代碼智能?

1. 將代碼特點融入預(yù)訓(xùn)練模型

通過將代碼融入預(yù)訓(xùn)練模型,用代碼訓(xùn)練 BERT,得到包含代碼的預(yù)訓(xùn)練模型;通過融入有文本注釋的代碼進一步訓(xùn)練模型,可以得到具有代碼和文本的 CodeBERT。此外,代碼具有結(jié)構(gòu),代碼之間的變量有順序關(guān)系,需要抽取變量之間的依賴關(guān)系或相同關(guān)系來構(gòu)建模型,對于給定的代碼,可以用程序包得到代碼對應(yīng)的抽象語法樹(AST),將抓取的代碼特點融入模型,訓(xùn)練建立新的具有代碼結(jié)構(gòu)的 CodeBERT。

CodeBERT是一個可處理雙模態(tài)數(shù)據(jù)的新預(yù)訓(xùn)練模型,使用了 Transformer 作為基本網(wǎng)絡(luò)結(jié)構(gòu),采用混合目標函數(shù):掩碼語言模型和替換 Token 檢測。

圖14:CodeBERT——Pre-Train with Code
圖15:CodeBERT:Pre-Train with code + Text
圖16:CodeBERT——Pre-Train with Code + Text + Structure

同樣,可以通過已有的GPT模型訓(xùn)練得到 CodeGPT。

圖17:CodeGPT

基于以上模型,進行代碼智能的實驗,構(gòu)建Fine-tuning框架。該框架中,CodeBERT主要用于分析,而codeGPT用于生成,Encoder Decoder 用于實現(xiàn)不同語言串之間的轉(zhuǎn)化,其中Encoder部分可以利用CodeBERT進行初始化。

代碼智能的下游任務(wù)包括代碼搜索(Code Search)、代碼完成(Code Completion)、代碼修復(fù)(Code Repair)和代碼翻譯(Code Translation)等,實驗發(fā)現(xiàn),代碼智能在自然語言代碼檢索、修復(fù),文檔生成、翻譯等任務(wù)上均取得了 SOTA 效果。

圖18:Fine-tuning 框架

2. 發(fā)布數(shù)據(jù)集CodeXGLUE

為了支持代碼智能的研究,研究人員發(fā)布了數(shù)據(jù)集 CodeXGLUE。該數(shù)據(jù)集包括14個子數(shù)據(jù)集,用于10個多樣化的代碼智能任務(wù),包括 Code-Code、Text-Code、Code-Text 和Text-Text 四大類。

圖19:CodeXGLUE
圖20:GitHub鏈接

3. 新的代碼評估機制CodeBLEU

代碼的評測需要考慮語法和語義問題,周明表示,CodeBLEU 評估機制融合了 N-Gram AST 和 Semantic Dataflow 及其不同權(quán)值組合進行評估,相關(guān)度測試表明,CodeBLEU性能更好。

圖21:CodeBLEU
圖22:CodeBLEU實驗

周明表示,代碼智能的研究更需要考慮代碼語言上的特點,需要具有對全局內(nèi)容進行建模的能力,代碼翻譯中編碼的邏輯特點和代碼搜索中復(fù)雜和多意圖的自然語言理解等目前仍需要進一步改進。

報告最后,周明提出代碼智能未來的研究方向:

1. 引入新的訓(xùn)練任務(wù),以更好地表示代碼的特征并考慮全局上下文。

2. 通過考慮邏輯、語義、效率、安全性、執(zhí)行力等提升評估方法(CodeBlue++,更好的模擬代碼質(zhì)量)。

3. 探索類似于 NLP 任務(wù)之外的其他代碼智能的任務(wù)(測試用例生成,用于算法設(shè)計的 AI,bNg 檢測和修復(fù)等)。

4. 呼吁軟件工程領(lǐng)域和 NLP 領(lǐng)域之間進行更多的跨學(xué)科研究。

3. 問答環(huán)節(jié)

Q1: 高校師生如何進行與預(yù)訓(xùn)練有關(guān)的研究?

周明: 應(yīng)從研究的角度探究其方法論,比如知識、領(lǐng)域知識常識、知識圖譜等如何融入,在領(lǐng)域知識表達方面,研究能否用小模型做更好的工作,比如模型壓縮、知識萃取等。在Fine-tuning方面也有很多工作可以去做,另外,可以進行擴展應(yīng)用領(lǐng)域的研究,包括單語言到多語言,甚至到語音、圖像、視頻、文檔等新領(lǐng)域的擴展和跨學(xué)科的研究。

Q2: 自動生成的代碼的語法規(guī)則是硬約束還是自動學(xué)習(xí)的?怎么保證這種正確性??

周明: 這是做自然語言的人的弱項,我們只知道串對串,串生成完之后用 BLEU 算N-Gram匹配程度。這里存在一個非常重要的問題,就是如何衡量代碼生成的能力和質(zhì)量,比如,邏輯上是否正確,語義上是否正確,效率是否高,安全性和可執(zhí)行是否可以,這些目前還沒有一個很好的辦法來衡量,但在邏輯性、語義、效率等方面,可以進行一些模擬工作。期待今后有更多的人做自動評價生成的代碼的邏輯語義和效率問題的研究工作。

Q3: 自然語言處理與語音、圖像結(jié)合的未來工作前景如何?

周明: 自然語言從語音、圖像領(lǐng)域借鑒了很多方法,比如,深度學(xué)習(xí)。自然語言處理研究者提出Transformer和更好的預(yù)訓(xùn)練模型,但我們不應(yīng)固于自己的思路,應(yīng)該把一切可序列化的問題,包括單序列化建模、多序列化的互相映射和比較都看作是一種自然語言任務(wù),用自然語言的方法來幫助提高相關(guān)領(lǐng)域的技術(shù)發(fā)展,共同推動人工智能的發(fā)展。

Q4: 與語言智能相比,代碼智能有什么獨特的技術(shù)挑戰(zhàn)?

周明: 和自然語言相比,代碼的書寫需要遵循特定的語法規(guī)則。自然語言通常本身不可執(zhí)行,但代碼在編譯環(huán)境下可以執(zhí)行并返回結(jié)果。因此,和語言智能相比,代碼智能無論在數(shù)據(jù)、建模、評測、應(yīng)用上都需要更關(guān)注代碼的語法規(guī)則和可執(zhí)行性。

Q5: 語言學(xué)本體在智能方面的發(fā)展前景如何?

周明: 近十年,人工智能的蓬勃發(fā)展主要得益于大數(shù)據(jù)、數(shù)據(jù)驅(qū)動的大模型和強算力,但其建模人類本體知識的能力很有限,因此如何結(jié)合數(shù)據(jù)驅(qū)動模型(如深度學(xué)習(xí))和以知識圖譜為代表的本體知識是一個非常有前景的方向。

Q6: 如何保證生成的 code 的正確性,如何測試?

周明: 測試 code 的正確性一直是代碼生成的一大難點。對于比較獨立的、不依賴其它函數(shù)或者環(huán)境的代碼,測試其正確性可以采用人工設(shè)計的 Test Case 來實現(xiàn),但也不能保證通過了這些測試的代碼就是正確的。對于依賴比較多的函數(shù),使用 Test Case 測試比較困難,所以只能通過其它的自動評價的方法,比如跟參考答案完全匹配的準確率,或者N元文法的準確率。我們提出了 CodeBLEU 的評價方法,使用句法樹匹配信息和變量依賴關(guān)系的匹配信息來逼近生成代碼的語義的正確性。

Q7: 程序自身的算法邏輯思想怎么體現(xiàn)?同樣的功能,不同的人寫的code會不一樣,這種自動生成能體現(xiàn)這種特點嗎?

周明: 目前的代碼理解方法很難直接體現(xiàn)算法的邏輯,已有一些方法在代碼理解和生成任務(wù)中考慮代碼的語法結(jié)構(gòu)(AST)和代碼的語義結(jié)構(gòu)(Data Flow)。目前的代碼生成系統(tǒng)多是基于大規(guī)模數(shù)據(jù)訓(xùn)練的數(shù)據(jù)驅(qū)動模型,并沒有考慮個性化代碼生成。

Q8: 代碼翻譯成不同的語言,框架層面怎么翻譯呢?

周明: 框架結(jié)構(gòu)方面的信息對代碼翻譯是很重要的。CodeBERT 在預(yù)訓(xùn)練的過程中考慮了句法(AST)和語義(Data Flow)等結(jié)構(gòu)相關(guān)的信息,使用 CodeBERT 初始化的序列到序列轉(zhuǎn)換模型能夠?qū)@些結(jié)構(gòu)信息進行建模,從而可以生成框架結(jié)構(gòu)一致的目標語言代碼。在代碼翻譯的研究領(lǐng)域也存在顯式的基于代碼樹和邏輯圖進行建模的方法。

Q9: 怎么在NN中解決標識量的作用域問題?

周明: 一種解決標識量作用域的方式是使用數(shù)據(jù)流分析,該技術(shù)也被我們用來做 CodeBERT 模型和 CodeBLEU 指標。數(shù)據(jù)流分析中,當(dāng)一個變量離開它的作用域,這個變量就會被標記為 dead,這一定程度上反映了標識量的作用域。



微軟亞研院副院長周明:從語言智能到代碼智能的評論 (共 條)

分享到微博請遵守國家法律
张家口市| 彰化县| 盘山县| 城市| 锦屏县| 武宣县| 通化市| 专栏| 同德县| 拉萨市| 湖南省| 偃师市| 应城市| 鸡西市| 阜平县| 工布江达县| 林西县| 乐至县| 元朗区| 崇州市| 谢通门县| 瑞丽市| 合作市| 蕉岭县| 临桂县| 保靖县| 封丘县| 西藏| 南丰县| 天长市| 象山县| 岐山县| 叙永县| 崇明县| 洛南县| 济阳县| 陕西省| 巴里| 吴桥县| 辽宁省| 河津市|