CA週記 - 帶你進⼊ OpenAI 的世界

MicrosoftReactor發表於2022-04-25

2021年11月的 Microsoft Ignite , 微軟帶來了全新的 Azure OpenAI Service,通過新的 Azure 認知服務能夠訪問 OpenAI 強大的 GPT-3 模型 。 雖然微軟還沒有正式開放 Open AI Service , 但 GitHub 和 OpenAI 已經推出了基於 GPT-3 的新模型 Codex 的工具 - Copilot ,通過它可以幫助軟體開發人員更高效地編寫程式碼。我相信不少小夥伴都已經開始在 Visual Studio Code / Visual Studio 使用 Copilot 感受到 GPT-3 的威力。 作為開發者, 希望微軟能儘快開放相關文件, 能儘快掌握相關技能 。 為了滿足各位要求, 今天我就帶大家進入 OpenAI 。

GPT-3 介紹

2020 年 5 月,Open AI 發表了一篇開創性的論文,題為 Language Models Are Few-Shot Learners。 他們展示了 GPT-3語言模型,它使用了一個具有 1750 億個引數的神經網路。 GPT-3 使用來自 CommonCrawl、WebText、維基百科和書籍語料庫的資料進行訓練, 並在各種自然語言處理任務中表現出驚人的效能,包括翻譯、問答和完形填空任務。在效能上 GPT-3 也是非常優秀, 超過了很多現有的模型。2020 年 7 月,也就是論文發表兩個月後,OpenAI 開放了一個 beta API playground,大家可以通過 API 方式訪問 GPT-3 模型。

GPT-3 的幾個主要特點

1. 零/單/少樣本學習(Zero/one/few-shot learning): 通常,深度學習會針對一組特定的類別進行訓練和測試。 如果計算機視覺中對星球大戰中的 BB8 , R2D2 , C3PO 進行分類,在測試過程中就只能針對這三個類別進行。 但在零樣本學習設定中,系統在測試時,可以使用不在訓練內的類別(例如,用曼努達人做測試)。 單/少樣本學習(one-shot 和few-shot) 也是一個道理,在測試時,系統會分別看到一個或幾個新的類別。

2. 零/單/少樣本任務遷移(Zero/one/few-shot task transfer): 這個整合了 零/單/少樣本學習和多工學習的概念。 新任務(或者顯示零個、一個或幾個新任務的示例)可以隨時執行,而不是在測試時才展示新類。 例如, 輸入 “I love you -> 我愛你。 I miss you -> ____。” GPT-3 就可以通過單樣本任務遷移 ,把之前沒有訓練過的英語轉中文的任務執行起來

3. Transformers: Transformers 是解決機器翻譯問題的框架, 有一個簡單的網路結構,基於自注意機制,不依賴於遞迴和卷積完全。通過平行計算使Transformer效率高,需要更少的訓練時間。

4. 生成模型(Generative models): 統計學中分類任務有兩種模型-判別模型,生成模型。 判別模型對給定的可觀察變數和目標變數對的條件概率進行編碼:p(y|x)。 生成模型對聯合概率進行編碼:p(x,y)。 生成模型可以“生成類似於現有資料的新資料”,GPT-3 模型就是應用生成模型來。

5. 多工學習(Multitask learning): 大多數深度學習系統都是單任務的, 只針對特定的場景。多工系統克服了這一限制。 他們受過訓練,能夠針對給定的輸入解決不同的任務。 例如我輸入一個蘋果,他可以幫我翻譯成英文的 Apple ,可以找到一張蘋果的圖片,也可以找到蘋果的一些特徵等。

6. 半監督學習(Semi-supervised learning): 是以無監督的方式訓練具有非常大資料集的模型,然後通過在較小的資料集中使用監督訓練來調整模型以適應不同的任務。

通過 OpenAI API 呼叫GPT-3

由於微軟現在還沒開放 OpenAI 的 GPT-3 功能 , 現階段我們只能通過 OpenAI (beta.openai.com) 提供的 API 使用 GPT-3 。(當然你需要有一個美國的電話號碼來啟用該功能) ,OpenAI 有非常豐富的文件, 以及示例 ,讓開發者可以非常快上手使用 API。

Python 呼叫 API 幾個必須的步驟

  1. 安裝 openai 庫

pip install openai

  1. 申請 API 的金鑰

  2. 可以通過 Notebook 測試一下

幾個注意的點

  1. 模型 engine ,現在針對 GPT-3 有2個比較主要的模型
模型 介紹
text-davinci-002 GPT-3 關於自然語言處理場景的模型,通常需要較少的上下文。 除了響應提示外,還支援在文字中插入補全。
code-davinci-002 可以理解和生成程式程式碼的模型,包括將自然語言翻譯成程式碼(這個模型需要另外申請)
  1. 關於一些示例,你可以通過訪問
    https://beta.openai.com/examples 學習更多的應用場景


  2. 你可以通過 OpenAI 提供的 Playground 做一些測試 https://beta.openai.com/playground

  3. 你可以針對自己的業務定義 GPT-3 模型 ,你可以通過該連結瞭解更多 https://openai.com/blog/customized-gpt-3/

展望

GPT-3 功能強大 ,讓 AI 應用場景更貼近實際的生活 。 我非常希望微軟的 OpenAI Service 能儘快開放 ,讓更多的開發者能使用。 還有現在 OpenAI GPT-3 在中文的支援還是非常有限的, 我也寄望微軟版本的服務能有更好的中文支援。

相關資料

  1. 瞭解 Azure OpenAI Service 功能,請訪問 https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/

  2. Azure OpenAI Service 介紹,請訪問
    https://blogs.microsoft.com/ai/new-azure-openai-service/

  3. OpenAI 的相關部落格 https://openai.com/blog/

相關文章