当前位置: 首页>编程笔记>正文

文章閱讀總結:OpenAI-Codex

文章閱讀總結:OpenAI-Codex

文章目錄

    • 1. Abstract 關鍵點
    • 2. 代碼評估框架及其中的重點
    • 3. 微調訓練
    • 4. 有監督微調
    • 5. 限制

https://openai.com/blog/openai-codex/ :Codex工作是一個標準的應用型文章,將訓練好的GPT3應用于一個實際的工作之中,在網絡結構上基本沒有創新,主要工作難點在于收集數據、微調模型,但是其關注的問題非常大,涉及到代碼書寫這個敏感問題。

1. Abstract 關鍵點

  • CodeX是基于GPT語言模型進行微調得到的一個專門用于代碼生成/文檔生成的模型
  • 為了測試模型的精度,OpenAI制作了一個評估數據集HumanEval
  • 使用原始的GPT-3進行寫代碼,其精度基本上為0%,進行微調之后精度可以達到28.8%
  • 進行100次隨機代碼生成,至少有一個代碼是正確的概率達到了70.2%

100次隨機代碼生成至少又一個是正確額的概率對我們實際工作意義不大,所以我們更多地關注紅色線條表示的一個對數平均排序得到的準確率。這里說明了隨著模型參數的增加,代碼生成的精度增加,而且有一定的線性趨勢。

2. 代碼評估框架及其中的重點

  • 對于傳統的語言模型問題,我們可以使用BLUE score來進行模糊匹配評估,只要預測結果和真實結果的子序列的相似度夠高,我們的BLUE socre就非常大;但是對于代碼而言子序列相似度高不代表代碼可以運行,所以這里提出了一種新的評估方法pass@k

    • 其原理很簡單,對于每個任務隨機生成n種結果,其中有c種結果是正確的(即可以通過單元測試),從中隨機抽取k種結果,如果一個正確結果都沒有用(kn?c)(_k^{n-c} )(kn?c?)表示,其概率用(kn?c)(kn)\frac{(_k^{n-c} )}{(_k^n)}(kn?)(kn?c?)?表示,我們需要至少有一個正確結果的概率,即用1減去即可。
    • 為了數值的穩定(計算的時候是累乘,容易超過數值精度位數),所以可以用簡單的形式表示,即1?(1?p^)k1 - (1-\hat{p})^k1?(1?p^?)k,上圖右側是使用python的簡單實現!
  • 由于使用Github的代碼進行訓練,不可避免地會有很多的代碼容易出現數據泄漏,所以這里測試使用人工手動書寫的代碼數據集HumanEval

  • 直接測試各種代碼存在很多的風險(例如數據泄漏、不可中斷循環、攻擊行為等),所以對代碼的正確性進行測試的時候在沙盒環境種進行

3. 微調訓練

  1. 首先,CodeX直接使用GPT3預訓練模型進行測試發現基本沒有效果
  2. 使用GPT3預訓練模型,然后加上微調發現預訓練對精度的提高沒有明顯的效果,但是會加快模型收斂
  3. 由于代碼(特比是python)中使用了大量的不同長度的空格和換行等特殊字符,所以需要進行特別的處理(加入訓練),這樣可以大大減小模型第一和最后一一層的參數量
  4. 結果展示
  • 圖4展示了隨著參數量的增加,測試誤差下降(但是誤差線性下降,參數量指數增加
  • 圖5展示的是由于Pass@k指標種有一個超參數k,這個k和我們的溫度參數有關(比如k=1的時候我們希望選擇概率最大的值,但是隨著k越多了,我們希望也可以選擇一些概率大但并非最大的值)
  • 圖7展示了不同刻度的精確度,我們仍然最關心的是紅色曲線表示的對數平均精度,藍色線條表示的是k次采樣,有一次正確就正確的概率。紅藍兩條線有一定的線性趨勢,而其他幾條線表示的沒有明顯的變化。
  • 圖8說明了使用BLEU socre進行評判,正確和錯誤的內容基本無法取分,也就是不能作為評判精度的指標!

4. 有監督微調

??這里的監督是相對于前面的微調(傳統的GPT3微調,給很多沒有標簽的數據進行專門化訓練),OpenAI團隊從競賽級別的代碼中收集了40000個代碼數據進行專門的監督微調(即這里的代碼是有標準答案的)

  • 可以看到,實線表示的監督訓練的精度變化曲線比沒有監督訓練的結果高了很多,效果非常明顯
  • 圖10的橙色線表示的平均對數精度變化也非常明顯!

5. 限制

  1. 樣本數量太少(訓練和測試的樣本都太少了)
  2. 對于一個人而言,不同的注釋只要描述的是同一個事情其書寫的代碼是相同的,但是對于網絡而言只要注釋變化其代碼就發生了變化,其沒有理解到注釋的核心內容
  3. 注釋的長度越長,給出的代碼的精度越低,網絡對于長注釋/描述的效果不是很好
  1. 網絡對數學語言描述這種比較精確的描述不能充分理解

https://www.nshth.com/bcbj/313069.html
>

相关文章:

  • 2019北京智源大會,智源 - 看山杯 專家發現算法大賽 2019 知乎
  • 電腦id和ip是一個嗎,【運維心得】網絡ID與網絡IP的區別你知道嗎?
  • Deep Learning for Matching in Search and Recommendation 搜索與推薦中的深度學習匹配(1 引言)
  • woocommerce好用嗎,woocommerce 分類到菜單_我如何為每個WooCommerce產品類別創建不同的菜單?
  • wordpress底部菜單插件,sysbios掛鉤函數使用_使用動作掛鉤自定義WordPress主題
  • 醫學影像成像原理,醫學成像模式~~~
  • 學生請假系統app,基于微信小程序的學生請假系統開發
  • 上課睡覺,學生上課睡覺班主任怎么處理_學生上課睡覺,你能正確處理嗎?
  • 對計算機老師的課堂教學評價,計算機課學生評價用語,關于學生上課的評語及評課用語
  • 為什很多學生上課睡覺,學生上課睡覺班主任怎么處理_學生上課睡覺怎么辦
  • win10小盾牌怎么去掉,windows10軟件圖標去除小盾牌
  • matlab常用命令,matlab基礎之變量,matlab基礎知識(4):特殊變量
  • 應用程序右下角有個盾牌,Win7文件右下角盾牌標志去除方法---UAC阻止程序運行
  • 對ui設計的理解和認識,我對于UI設計這個領域的理解
  • 視頻直播間有哪些,直播平臺必備-百度音視頻直播 LSS
  • obs可以推流到哪些直播平臺,新版RTMP推流協議視頻直播點播平臺EasyDSS在進行視頻直播/錄像回看時如何創建視頻錄像計劃?
  • 歐美國家需要輸入法嗎,Mac刪除默認美國輸入法
  • iphone12忘記鎖屏密碼怎么解鎖,APPLE
  • 簡體字比繁體字的好處,雜談對抽象事物的審美——繁體字與簡體字,孰美?
  • 互聯網醫美是什么,醫美互聯網公司:新氧
  • 英語陳述句疑問句祈使句感嘆句,Wh問句,疑問句,祈使句,感嘆句,10
  • 反卷積原理,超越 ConvNeXt、RepLKNet | 看 51×51 卷積核如何破萬卷!
  • 三星最新概念機,三星提出XFormer | 超越MobileViT、DeiT、MobileNet等模型
  • 統計學屬于哪個大類,第四章 專業統計(上)-統計實務
  • json模塊,模塊講解——time,datetime,json,os,requests
  • 微信復制別人的話中間有虛線,微信小程序——繪制折線圖
  • 流固耦合作用,2018結構、流體、熱分析、多物理場耦合、電磁仿真計算特點與硬件配置方案分析
  • 流固耦合作用,結構、流體、熱分析、多物理場耦合、電磁仿真硬件配置推薦2018
  • 倉庫主管崗位職責,LeetCode:Database 115.倉庫經理
  • ios如何卸載軟件,ios13測試版怎么卸載軟件,蘋果手機升ios13.2后怎么刪除app ios13.2卸載軟件應用方法...