ChatGPT參數(shù)只有200億?擴(kuò)散代碼模型,意外泄露

      后臺-系統(tǒng)設(shè)置-擴(kuò)展變量-手機(jī)廣告位-內(nèi)容正文頂部

      微軟的研究部門發(fā)布了一篇關(guān)于預(yù)訓(xùn)練擴(kuò)散代碼模型CodeFusion的論文。在展示代碼生成任務(wù)的基線數(shù)據(jù)對比時(shí),發(fā)現(xiàn)了一個(gè)有趣的事情,ChatGPT(gpt-3.5-turbo)的參數(shù)只有200億。

      要知道,gpt-3.5-turbo是OpenAI中應(yīng)用最多、最成熟的型號之一,而它的前任GPT-3.5已經(jīng)公布是1750億參數(shù)。如此小的參數(shù),在性能、效率方面比大參數(shù)的模型更強(qiáng),使用價(jià)格卻更低。

      這也從側(cè)面驗(yàn)證了年初Meta首次開源Llama時(shí)的說法,小參數(shù)的模型在龐大、高質(zhì)量的數(shù)據(jù)集訓(xùn)練下,性能并不一定就比高參數(shù)的差

      事實(shí)上,很多國內(nèi)外知名的開源大模型項(xiàng)目如百川大模型、LLaMA-2、Falcon-40B等,在多個(gè)知名評測中擊敗了更高的參數(shù)模型,資源消耗卻更低。

      論文地址:https://arxiv.org/abs/2310.17680

      言歸正傳,繼續(xù)為大家介紹微軟發(fā)布的這個(gè)創(chuàng)新代碼模型CodeFusion。

      GitHub Copilot Chat等產(chǎn)品已經(jīng)充分驗(yàn)證了大語言模型在編程領(lǐng)域的可行性和重要作用,通過文本描述就能快速生成各種類型代碼,極大提升了開發(fā)效率。

      但是生成的代碼經(jīng)常會出現(xiàn)錯(cuò)誤、質(zhì)量不佳等難題,為了解決這一痛點(diǎn),微軟提出了創(chuàng)新代碼模型CodeFusion。

      CodeFusion與傳統(tǒng)代碼模型不同的是,引入了“擴(kuò)散過程”模式,通過逐步添加噪聲,讓代碼從簡單向復(fù)雜過渡,然后再逐步減少噪聲回到純凈狀態(tài)

      受Midjourney等擴(kuò)散模型啟發(fā),研究人員設(shè)計(jì)了獨(dú)特的“去噪”機(jī)制,使得模型可以自動學(xué)習(xí)代碼語法,生成更精準(zhǔn)的高質(zhì)量代碼。

      為了評估CodeFusion的效果,研究團(tuán)隊(duì)在多種編程語言上進(jìn)行了比較。包括Python、Bash和Excel公式。與T5、CodeT5、GPT-3、CodeGen等主流代碼生成模型相比, CodeFusion取得了驚人的效果,無論是單次生成的成功率,還是多次生成后正確代碼出現(xiàn)的概率,都有明顯的優(yōu)勢。

      在Python語言上, CodeFusion的單次生成精確度達(dá)80.7%,超過了GPT-3;考慮前5次生成, CodeFusion包含正確代碼的概率高達(dá)90.3%,其它模型最高只達(dá)到85.8%。在Bash和Excel語言上, CodeFusion同樣表現(xiàn)出了強(qiáng)勁的性能。

      在代碼多樣性測試中, CodeFusion生成的前5個(gè)候選代碼,新增代碼行覆蓋率達(dá)到81%,是其它模型的兩倍之多。

      值得一提的是, CodeFusion只有7500萬參數(shù),遠(yuǎn)小于測試模型中的數(shù)十億、上百億甚至上千億參數(shù)模型。這也再次驗(yàn)證了上面所說的小參數(shù)模型,同樣可以比高參數(shù)模型性能更強(qiáng)。


      CodeFusion評測數(shù)據(jù)

      從論文介紹來看,CodeFusion的架構(gòu)主要包含編碼器、去噪器和解碼器三大模塊。

      編碼器

      編碼器的作用是將自然文本提問的編碼轉(zhuǎn)換成向量表示。編碼器會先將自然語言文本進(jìn)行分詞,然后輸入到一個(gè)預(yù)訓(xùn)練的轉(zhuǎn)換器編碼器中,例如T5的編碼器。每個(gè)詞會被映射為一個(gè)稠密的詞向量。

      接著,轉(zhuǎn)換器編碼器會通過多層自注意力和前饋全連接網(wǎng)絡(luò),學(xué)習(xí)輸入文本的上下文語義信息,輸出文本的最終語義向量表示。主要技術(shù)關(guān)鍵點(diǎn)如下:

      使用預(yù)訓(xùn)練模型:直接利用在大規(guī)模語料上預(yù)訓(xùn)練的編碼器,可以有效學(xué)習(xí)語義信息,無需從零訓(xùn)練。

      輸出全局語義向量:通過自注意力捕獲輸入文本的全局上下文語義,不同位置的詞語都互相影響,最后形成整體的語義向量。

      高效編碼:相比RNN等順序模型,轉(zhuǎn)換器編碼器可以高效并行計(jì)算,對長文本也有很強(qiáng)的建模能力。

      去噪器

      去噪器的作用是進(jìn)行擴(kuò)散過程,向編碼器輸出添加高斯噪聲。去噪器會首先隨機(jī)初始化一個(gè)噪聲向量,然后依據(jù)擴(kuò)散步數(shù),通過加權(quán)平均的方式,將編碼器輸出語義向量與噪聲向量融合,得到噪聲新增的隱狀態(tài)向量。

      隨著迭代步數(shù)增加,融入的噪聲占比會漸漸增大,所以狀態(tài)向量會逐步偏離原始語義,加入更多隨機(jī)性。這模擬了物理擴(kuò)散過程。

      去噪器的輸出是一個(gè)噪聲復(fù)雜程度逐步增強(qiáng)的狀態(tài)序列。這為解碼階段提供了一個(gè)從簡單到復(fù)雜的目標(biāo)函數(shù),使模型更容易優(yōu)化。

      解碼器

      解碼器需要逐步從復(fù)雜的噪聲狀態(tài)中,還原出編碼器對應(yīng)的源文本提示語義,以生成準(zhǔn)確、高質(zhì)量代碼。

      解碼器會使用類似的轉(zhuǎn)換器結(jié)構(gòu),每一步接收上一步去噪器輸出的狀態(tài)向量,并結(jié)合源語義向量,通過自注意力學(xué)習(xí)狀態(tài)內(nèi)部的語義,并通過交叉注意力學(xué)習(xí)與源語義的匹配關(guān)系。

      然后,解碼器需要預(yù)測從當(dāng)前狀態(tài)中需要減去的噪聲量,以獲得上一步的干凈狀態(tài)。重復(fù)這一過程,直到還原出源語義向量。

      最后,解碼器完成從擴(kuò)散隱狀態(tài)到源語義再到代碼符號的映射,實(shí)現(xiàn)了從自然語言提示到代碼的轉(zhuǎn)換。

      本文素材來源微軟CodeFusion論文,如有侵權(quán)請聯(lián)系刪除

      未經(jīng)允許不得轉(zhuǎn)載:RPA中國 | RPA全球生態(tài) | 數(shù)字化勞動力 | RPA新聞 | 推動中國RPA生態(tài)發(fā)展 | 流 > ChatGPT參數(shù)只有200億?擴(kuò)散代碼模型,意外泄露

      后臺-系統(tǒng)設(shè)置-擴(kuò)展變量-手機(jī)廣告位-內(nèi)容正文底部
      主站蜘蛛池模板: 清丰县| 府谷县| 堆龙德庆县| 山东| 峨山| 汝南县| 冀州市| 玉山县| 洪江市| 富蕴县| 两当县| 夏邑县| SHOW| 康保县| 虎林市| 广东省| 团风县| 宣汉县| 楚雄市| 兖州市| 齐齐哈尔市| 宜君县| 龙川县| 永和县| 叙永县| 葫芦岛市| 宁夏| 门头沟区| 阿瓦提县| 博白县| 和平区| 大足县| 内黄县| 龙胜| 抚松县| 亳州市| 镇远县| 逊克县| 禹城市| 滨海县| 彝良县|