成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

NLLB 與 ChatGPT 雙向優化:探索翻譯模型與語言模型在小語種應用的融合策略

人工智能
NLLB(No Language Left Behind) [1] 是Meta發起的一個項目,目標是打破語言障礙。不論每個人說的是什么語言,都能使他們平等地獲取信息和交流。官方對外宣稱,這是全球第一個以單一模型對應多數語言翻譯的設計,希望借此能夠幫助更多人在社群平臺上進行跨語言互動。

本文探討了 NLLB 翻譯模型與 ChatGPT 在小語種應用中的雙向優化策略。首先介紹了 NLLB-200 的背景、數據、分詞器和模型,以及其與 LLM(Large Language Model)的異同和協同關系。接著列舉了實戰與應用的案例,包括使用 ChatGPT 生成的樣本微調 NLLB-200 和使用 NLLB-200 的翻譯結果作為 LLM 的 prompt 等。通過本文的研究和實踐,可以為小語種翻譯模型和語言模型的融合提供一定的參考和借鑒。

一、NLLB 背景介紹

NLLB(No Language Left Behind) [1]  是Meta發起的一個項目,目標是打破語言障礙。不論每個人說的是什么語言,都能使他們平等地獲取信息和交流。官方對外宣稱,這是全球第一個以單一模型對應多數語言翻譯的設計,希望借此能夠幫助更多人在社群平臺上進行跨語言互動。

NLLB 計劃的核心是開發一個既準確又能適應大量語言的翻譯模型。這不僅包括像英語、中文和西班牙語這樣的廣泛使用的語言,還擴展到那些使用人數較少的語言,比如土著和地區性語言,它們通常缺乏用于高質量機器翻譯的數據資源。NLLB 計劃的更廣泛愿景是促進不同語言障礙背后的溝通與知識獲取,進而支持全球社區的教育、經濟機會和社會包容性。隨著這些語言的AI模型和數據集的改進,它們可以被集成到各種工具和平臺中,以提供實時翻譯服務、內容理解和其他與語言相關的功能,為全球用戶帶來好處。

NLLB 項目包含多種語言的翻譯數據集,也包含基于機器學習技術的翻譯模型,這些技術和模型能夠更有效地從有限的數據中學習,使得那些可能幾乎沒有翻譯數據的語言也能被翻譯成其他語言。為了實現這些目標,NLLB 聚集了研究人員、語言學家和工程師,共同致力于先進的機器學習模型、數據收集和增強策略,以及改進的評估方法,以確保翻譯不僅僅是字面上的,而且在文化和語境上也是準確的。

在本文中,我們主要要介紹的是 NLLB 項目中的主角,也就是 NLLB-200 這個預訓練模型。這是 Meta AI 開源的一個機器翻譯的大模型,支持200+語言之前的互相翻譯。

1.1 NLLB-200 數據

目前,谷歌翻譯能夠覆蓋大約130種語言的翻譯,而微軟則大約能夠翻譯110種語言。Meta AI 的目標是通過 NLLB 計劃實現覆蓋200多種語言的翻譯。因此,除了考慮模型本身,Meta AI 還需要關注翻譯模型層面之外的方面,包括數據標注與數據清洗等。

NLLB-200 項目使用的數據集名為 Flores-200,它是 Flores-101 數據集的擴展,其中包含來自世界各地的101種語言。而 Flores-200 數據集不僅覆蓋了之前的語言集合,還增加了更多語言,使總數擴大到了200種。

除了收集公開可用數據和使用網絡爬蟲爬取的數據外,研究團隊還采用回譯策略來進一步擴充訓練數據集。回譯是一種獨特的數據增強技術,涉及使用已有的機器翻譯模型將目標語言的文本翻譯回源語言,以創造新的、豐富的訓練樣本,有助于提高模型在各種語言上的表現和準確性。

由于這些數據用于機器翻譯任務,因此其格式都是句子對格式,即包含第一種語言及其相應的表達,同時包含對應翻譯的第二種語言的表達。數據示例如下:

{
    "translation":
    {
        "ace_Latn": "Gobnyan hana geupeukeucewa gata atawa geutinggai meunan mantong gata.",
        "ban_Latn": "Ida nenten jaga manggayang wiadin ngutang semeton."
    },
    "laser_score": 1.2499876022338867,
    "source_sentence_lid": 1.0000100135803223,
    "target_sentence_lid": 0.9991400241851807,
    "source_sentence_source": "paracrawl9_hieu",
    "source_sentence_url": "_",
    "target_sentence_source": "crawl-data/CC-MAIN-2020-10/segments/1581875144165.4/wet/CC-MAIN-20200219153707-20200219183707-00232.warc.wet.gz",
    "target_sentence_url": "https://alkitab.mobi/tb/Ula/31/6/\n"
}

左右滑動查看完整代碼

1.2 NLLB-200 分詞器

在收集并清理了大量數據之后,NLLB-200 模型使用了 一些方法來促進模型學習到語言不可知(language-agnostic)的表示,從而能夠用于多種語言之間的轉換,而不僅僅是針對特定的單一語言。其中,最關鍵的要素之一是設計了一個能夠處理所有語言的分詞器。在這個分詞器中,使用了一個共享的詞匯表,采用共享的 SentencePiece 詞匯表來編碼所有涉及的語言的輸入和輸出序列。

這意味著相同的子詞單元可以在不同的語言之間共用,有助于模型學習到跨語言共通的詞匯表示。該 SentencePiece 模型是在采樣的1億個句子上進行訓練的。為了確保低資源語言能夠得到充分的表示,NLLB 團隊對高資源語言進行了下采樣,同時對低資源語言進行了上采樣,最終訓練出一個詞表大小高達256206的模型(相比之下,Llama/Llama2/Llama3的詞表大小為32000)。

要使用 NLLB 的分詞器,我們可以直接調用 Transformers,里面有一個 NllbTokenizer,接收的參數為:

- vocab_file (str)
- bos_token (str, optional, defaults to "<s>")
- eos_token (str, optional, defaults to "</s>")
- sep_token (str, optional, defaults to "</s>")
- unk_token (str, optional, defaults to "<unk>")
- pad_token (str, optional, defaults to "<pad>")
- mask_token (str, optional, defaults to "<mask>")
- tokenizer_file (str, optional)
- src_lang (str, optional)
- tgt_lang (str, optional)
- sp_model_kwargs (Dict[str, str])

左右滑動查看完整代碼

from transformers import NllbTokenizer


tokenizer = NllbTokenizer.from_pretrained(
    "nllb/nllb-200-distilled-1.3B", src_lang="eng_Latn", tgt_lang="fra_Latn"
)
example_english_phrase = " UN Chief Says There Is No Military Solution in Syria"
expected_translation_french = (
    "Le chef de l'ONU affirme qu'il n'y a pas de solution militaire en Syrie."
)
inputs = tokenizer(
    example_english_phrase, text_target=expected_translation_french, return_tensors="pt"
)

左右滑動查看完整代碼

1.3 NLLB-200 模型

在大型分詞器準備好之后,每一個句子都能夠合理地被拆分成若干個 token,并且找到對應的 token id。那接下來就是進入模型訓練的部分。NLLB-200 模型使用了 Transformer 架構來學習不同語言之間的表示。

  • 共享的模型參數:在一個統一的神經網絡架構中對所有語言使用共享的參數。這強制模型學習到不特定于任何單個語言的特征表示。
  • 交叉語言遷移學習:通過在相似的語言對訓練時共享知識,可以使模型在不同語言間轉移學到的模式,以利于語言不可知特征的發展。
  • 多任務學習:在訓練中包含任務不局限于翻譯,比如語言建模、降噪自編碼器或其他任務,這也有助于模型捕捉語言共通性。

多語種機器翻譯模型能夠學習不同語言之間的轉換,而不必為每一個語言對分別建立獨立的模型。這樣的方法減少了模型的數量和維護成本,并允許模型在不同語言之間分享知識,通常有助于改進低資源語言的翻譯性能。

1.4 NLLB-200 蒸餾

圖片

【表1】:  NLLB-200及蒸餾版本的參數量

開源的 NLLB-200 的 MoE (Mixture of Experts) 版本具備高達545億個參數,要在我們的設備上運行如此規模的模型確實存在一定難度,對計算資源的要求較高。然而,開發者同時也提供了一個經過蒸餾的精簡版本。這個經蒸餾處理的模型僅含13億參數,相較于原版更為輕量,降低了對硬件資源的依賴,使得在資源受限的環境中運行變得可行。

二、NLLB 與 LLM

NLLB 作為一個翻譯任務,和 LLM 一樣,都可以表述為序列到序列任務,都屬于生成式任務。那么,NLLB 和 LLM 有哪些異同點呢?二者是不是相互沖突?二者能不能有協同合作的機會?

2.1 NLLB 與 LLM 模型異同

NLLB 和 LLM 都使用 Transformer 結構作為基礎。不同之處在于,NLLB 采用標準的編碼器-解碼器架構,而基于 GPT 的模型則僅使用了解碼器(而 BERT 使用的是編碼器)。

在 Transformer 模型中,編碼器負責理解和提取輸入文本中的相關信息。這個過程通常包括處理文本序列化形式(如單詞或字符),并利用自注意力機制來理解文本中的上下文關系。編碼器的輸出是輸入文本的連續表示,通常稱為嵌入。這種嵌入包含了編碼器從文本中提取的所有有用信息,并以模型可處理的高維向量格式表示。然后,這個嵌入會傳遞給解碼器。解碼器的任務是根據從編碼器接收到的嵌入生成翻譯后的文本(目標語言)。解碼器同樣使用自注意力機制和編碼器-解碼器注意力機制來生成翻譯文本。

LLMs 中有的是只有編碼器(encoder-only),有的是只有解碼器(decoder-only),而有的是兩者混合(encoder-decoder hybrid)。這三種類型都屬于 Seq2Seq(序列對序列)模型。盡管名義上是只有編碼器,但實際上 LLMs 仍能夠解碼一些文本和標記,因此也可以看作是解碼器。然而,與 decoder-only 和編碼器-解碼器類型不同,encoder-only 類型的 LLMs 更注重理解輸入內容,并生成針對特定任務的輸出,而不像前兩種類型那樣具有自回歸特性。自回歸表示輸出內容是基于先前生成的標記,逐個標記生成上下文理解。總的來說,encoder-only 類型更擅長分類任務;編碼器-解碼器類型擅長生成強烈依賴于輸入的輸出,如翻譯和文本總結;而 decoder-only 類型則適用于各種Q&A等任務。

2.2 NLLB 與 LLM 目標不同

現在的大規模語言模型也擁有很強的翻譯能力,但是 LLM,比如 ChatGPT,擅長翻譯更高資源的語言,而 NLLB-200 則是對低資源語言的翻譯做了很多的改善。NLLB-200 和 LLM 在翻譯能力上的差異主要體現在它們的專注點和訓練目標上:

1.專業度:

  • NLLB-200 被設計和優化用來進行機器翻譯,支持200多種語言,特別包括很多低資源語言。這意味著它在機器翻譯方面應當展現出較高的專業度和準確率,特別是在那些通常沒有足夠數據支持的語言對之間的翻譯。
  • LLM 雖然也能進行一定的翻譯任務,但它的主要目標是進行自然語言理解和生成,為了創建流暢和自然的對話。因此,它的翻譯能力可能不如明確為翻譯目的而訓練的模型,如 NLLB-200。

2.覆蓋范圍:

  • NLLB-200 專門致力于包括廣泛的語言,確保即使是低資源語言也有良好的翻譯支持。
  • LLM 支持多語言處理,但它的訓練數據集可能不如 NLLB-200 那樣全面覆蓋多種語言,尤其是對于低資源語言。

3.適用性:

  • NLLB-200 專為翻譯而設計,適用于需要精確翻譯的場景。
  • LLM 雖然可以完成簡單的翻譯任務,但它更適用于需要理解上下文、生成人性化回答的對話場景。

總之,NLLB-200 基于其訓練和設計被期望在機器翻譯方面表現優異,而 LLM 則更側重于創建高質量的對話體驗。如果需要進行復雜或專業的翻譯工作,特別是跨越稀有語言的翻譯, NLLB-200 可能是更好的選擇;而在需要與人類用戶進行自然交流的場合,則可能會偏向使用 LLM。

2.3 NLLB 與 LLM 如何協同

NLLB-200 和 LLM 在翻譯上的擅長點不同,然而,LLM 的強大自然語言理解和生成能力可以與 NLLB-200 獨特的翻譯技術互惠互利:

  • 通過利用 LLM 所特有的生成能力,可以創造更精確的領域特定術語數據集 [2] 。這種針對性強的數據集能夠進一步用于對 NLLB-200 進行細致的調整,從而在特定的技術或專業領域提升其翻譯效果。
  • 當下的大型語言模型(LLM)主要以主流語言為核心,這一現象得益于英語、中文等語言的語料在獲取便利性、數據質量和量級方面的明顯優勢。針對語料資源較為稀缺的小語種,比如55種非洲語言,這種中心化趨勢意味著LLM在這些語種上不如在主流語種上表現得那么出色,因此可以依賴 NLLB-200 的翻譯能力,將小語種 prompt 翻譯成主流語言,再去使用 LLM [3]。

這兩種結合方案我們在后面將用實戰的形式來展開講述。

三、實戰與應用

3.1 使用 LLM 生成針對性數據微調 NLLB-200

目前,外銷應用商店主要運營國家包括印度、印尼、泰國、馬來西亞、菲律賓和越南。此外,還有幾十個用戶量較少的國家和地區也在使用。由于用戶輸入的查詢語種繁多,2023年初的評測結果顯示,各個國家都存在著本地語言查詢導致的 badcase。由于少數國家的用戶行為數據較少,基于用戶行為的模型無法很好地發揮作用。另外,許多應用在國外都采用英文名稱,因此本地語言的查詢與英文應用在僅靠文本匹配時會出現不匹配的情況,導致無法返回用戶想要的結果。為了解決這一問題,我們需要引入翻譯功能,將各運營國家缺少召回的本地語言 query 統一翻譯成英語,然后進行結果召回。

因為 NLLB-200 模型原始的訓練數據來源于各種文章,其中可能包含大量修飾性詞語,可能導致文本召回抓取不到關鍵信息。因此,為了在外銷商店搜索中使用 NLLB-200 模型,我們需要對模型進行簡單的微調。

3.2 LoRA 微調:方案介紹

大型語言模型參數龐大(例如,GPT-3 的參數量為 1750 億),在應用到下游任務時,需要相當高的算力來微調全部參數。為了節省成本,一些參數高效(Parameter Efficient)的微調方法被提出,旨在僅訓練少量參數使模型適應到下游任務。

LoRA(Label-Oriented Attentive Fine-tuning)微調是一種被廣泛使用的方法,其通過引入標簽相關的關注機制,幫助模型更好地專注于與所預測標簽相關的信息,從而提高了模型對關鍵信息的學習和提取能力。這種方法在提升模型性能和推理能力方面取得了顯著效果。因此,將 LoRA 微調引入到模型訓練中可以幫助模型更好地理解和學習標簽相關的文本信息,從而提高模型的預測準確性和泛化能力。目前,對于計算機視覺領域的穩定擴散(stable diffusion)和自然語言處理領域的  Llama,LoRA 已成為主流的微調方法。

LoRA(Label-Oriented Attentive Fine-tuning)提出了一種獨特的微調方法:固定預訓練模型參數并在原本的權重矩陣旁路添加低秩矩陣的乘積作為可訓練參數,用以模擬參數的變化量。這一方法旨在通過細微的調整來適應下游任務的需求。

圖片

【圖1】:LoRA微調方法

具體而言,左側的W代表了 LLM 的預訓練參數,在常見的完成 fine-tuning 當中,這個W參數會隨著訓練而更新為W+ΔWW+ΔW,其中ΔWΔW可以被拆解成ΔW=BAΔW=BA。

因此h=W+ΔW=W+BAh=W+ΔW=W+BA。

在前向計算當中,hx=(W+ΔW)x=(W+BA)xhx=(W+ΔW)x=(W+BA)x。

也就是說,左側的 WW 代表了 LLM 的預訓練參數,被固定不變。而右側則包括兩個矩陣:AA 和 BB,它們根據下游任務進行微調。在獲得結果之后,將 WW 和 BABA 合并,輸出新的模型權重。另一種方法是左右側的參數不進行合并,而是在推理時同時載入兩個模型同步進行計算,然后將計算結果相加。這一方法的創新之處在于其獨特的參數調整方式,目標是實現對模型權重的微調而不需要調整大量的參數,從而提高了模型在特定任務上的適應性和性能表現。對于深度學習領域而言,LoRA 的應用已顯示出廣闊的應用前景和潛力。

此外,現在我們不再需要自行開發微調算法了,因為 Hugging Face 已經開源了一個 PEFT 庫 [4] ,其中包括了許多高效微調的方法可供直接調用。從代碼上看,PEFT 支持多種高效微調方式,而且 Hugging Face 已經為常用的參數微調方法提供了封裝,直接調用即可使用。PEFT 庫中封裝好的方法有如下:

class PeftType(str, enum.Enum):
    """
    Enum class for the different types of adapters in PEFT.


    Supported PEFT types:
    - PROMPT_TUNING
    - MULTITASK_PROMPT_TUNING
    - P_TUNING
    - PREFIX_TUNING
    - LORA
    - ADALORA
    - BOFT
    - ADAPTION_PROMPT
    - IA3
    - LOHA
    - LOKR
    - OFT
    - POLY
    - LN_TUNING
    """


    PROMPT_TUNING = "PROMPT_TUNING"
    MULTITASK_PROMPT_TUNING = "MULTITASK_PROMPT_TUNING"
    P_TUNING = "P_TUNING"
    PREFIX_TUNING = "PREFIX_TUNING"
    LORA = "LORA"
    ADALORA = "ADALORA"
    BOFT = "BOFT"
    ADAPTION_PROMPT = "ADAPTION_PROMPT"
    IA3 = "IA3"
    LOHA = "LOHA"
    LOKR = "LOKR"
    OFT = "OFT"
    POLY = "POLY"
    LN_TUNING = "LN_TUNING"
    VERA = "VERA"

左右滑動查看完整代碼

根據 PEFT 官方提供的指南,可以看出 LoRA 已經覆蓋了所有模態和模型,因此屬于一種通用的技巧,掌握了這個方法就可以應用于多個場景。正是因為如此,我們選擇使用這種方法來進行外銷商店搜索的翻譯微調。

從源碼來看,我們不需要自己編寫代碼,只需調用 LoRA 就可以直接用于以下幾大類任務:

class TaskType(str, enum.Enum):
    """
    Enum class for the different types of tasks supported by PEFT.


    Overview of the supported task types:
    - SEQ_CLS: Text classification.
    - SEQ_2_SEQ_LM: Sequence-to-sequence language modeling.
    - CAUSAL_LM: Causal language modeling.
    - TOKEN_CLS: Token classification.
    - QUESTION_ANS: Question answering.
    - FEATURE_EXTRACTION: Feature extraction. Provides the hidden states which can be used as embeddings or features
      for downstream tasks.
    """


    SEQ_CLS = "SEQ_CLS"
    SEQ_2_SEQ_LM = "SEQ_2_SEQ_LM"
    CAUSAL_LM = "CAUSAL_LM"
    TOKEN_CLS = "TOKEN_CLS"
    QUESTION_ANS = "QUESTION_ANS"
    FEATURE_EXTRACTION = "FEATURE_EXTRACTION"

左右滑動查看完整代碼

3.3 NLLB 模型微調:數據

因為我們希望將 query 翻譯成英語后,能夠通過文本匹配與英語 APP 進行匹配,因此,我們希望翻譯的結果也可以盡量接近英語APP的命名方式。比如:

盡量少連詞、修飾詞等非實體,比如,“The digital wallet.“就有“the”這種無用的連詞,可能引入噪音,而翻譯成“digital wallet”,則更便于文本召回。

在一詞多義中,盡量選擇 APP 常用的詞匯,比如同樣表示“無網狀態“,就應該翻譯成“offline”而不是”netless”。

為了實現這個效果,我們需要首先針對性的準備一批數據用于微調。數據生成的工作我們采用了 ChatGPT(基于GPT 3.5的版本):

1.選擇海外運營國家中曝光 top100 的 APP;
2.輸入 APP 主標簽名字進行翻譯,讓 ChatGPT 將 APP 名稱翻譯成印地語、泰語、越南語(與英語差別較大的語言),如【表2】的示例。構建成“小語種-英語”的翻譯對,進行模型微調。

圖片

【表2】:訓練數據示例

3.4 NLLB模型微調:訓練

3.4.1 初始化一個預訓練的模型

from transformers import AutoModelForSeq2SeqLM
model = AutoModelForSeq2SeqLM.from_pretrained("nllb/nllb-200-distilled-1.3B")

左右滑動查看完整代碼

3.4.2 設置 lora 參數,通過 get_peft_model() 獲取需要訓練的 PeftModel

from peft import get_peft_model, LoraConfig, TaskType


peft_config = LoraConfig(
    task_type=TaskType.SEQ_2_SEQ_LM,
    inference_mode=False,
    r=8,
    lora_alpha=16,
    lora_dropout=0.1,
    target_modules=["q_proj", "k_proj", "v_proj", "out_proj", "fc_in", "fc_out", "wte"],
)
lora_model = get_peft_model(model, peft_config)
lora_model.print_trainable_parameters()
# trainable params: 4718592 || all params: 1375356928 || trainable%: 0.3430812688646303

左右滑動查看完整代碼

3.4.3 按照平常的訓練方式進行訓練

訓練參數量降至原先的0.34%,原本需要幾塊 GPU 并行訓練的參數,現在可以降低至單卡完成,甚至可以在 CPU 機器上完成。訓練完畢,將 PeftModel 保存下來。

lora_model.save_pretrained('nllb_lora_model')

左右滑動查看完整代碼

3.5 NLLB 模型微調:推理

因為前面我們僅僅保存了 PeftModel 模型,因此,在推理過程中,我們需要將 base 模型和 lora 參數同時載入進行推理。

3.5.1 初始化前面的 base 模型

from transformers import AutoModelForSeq2SeqLM
model = AutoModelForSeq2SeqLM.from_pretrained("nllb/nllb-200-distilled-1.3B")

左右滑動查看完整代碼

3.5.2 通過獲取保存的 lora 參數,獲取 PeftModel 結果

from peft import PeftConfig, PeftModel
config = PeftConfig.from_pretrained("nllb_lora_model")
lora_model = PeftModel.from_pretrained(model, "nllb_lora_model")

左右滑動查看完整代碼

3.5.3 按照平常的推理方式輸出結果

從自身實驗結果來看,LoRA 微調速度很快,需要的計算資源小,同時產生的結果也很不錯,大多數 case 基本上可以達到和全量參數微調類似的效果。

lora_model.generate(
    **encoded_text, forced_bos_token_id=tokenizer.lang_code_to_id["eng_Latn"]
)

左右滑動查看完整代碼

從開源的測試來看,LoRA 基本上都是可以訓練不足1%的參數,完成接近全量參數微調的效果。

3.6 NLLB 模型微調前后效果對比

翻譯同時能夠做源語言的簡單糾錯與補全

比如說,用戶的輸入為免的游戲,實際表述應該是免費的游戲,經過 NLLB-200 模型翻譯后,可以得到正確的英語free games。從而可以方便進行后續的文本、標簽、語義等召回。

無用的連詞減少,能夠得到更適合應用搜索的簡潔 query

原始版本的翻譯是基于文章的,所以會有很多連詞等等,讓整個句子讀起來更通順更優美(更長)。這種方式并不利于應用搜索,因為應用名稱本身就很短,普通的 query 也是一兩個短詞,所以翻譯出一整個長句子,反而不利于召回到正確的結果。比如下面的 case:

圖片

拿第一個結果舉例,如果翻譯出來 Playing games of chat,那就會有很多 Party Games 的召回,和用戶的需求比較不符。原因是 query 里面包含比較多詞語,因此就會帶來一定的噪音,使得文本匹配的時候,匹配到一些并不關鍵的詞語。

圖片

因此需要模型盡量翻譯出靠近 APP 的名字,如果是翻譯出 chat game ,那整個 query 就簡潔了不少,因此噪音減少之后,召回的結果相關度也明顯增加,甚至可以通過類似標簽找到 Prank Master 一類的結果。

圖片

讓 query 更符合 APP 命名
某類應用應該是有一類應用常用的命名方式的,比如仿真模擬類游戲,一般就叫做什么 simulation 或者是 simulator,詞典的話,一般就是 dictionary 而不是 word,教發音的 APP 名字一般是 spell 而不是 syllable,因此,在下游數據 finetune 之后,可以讓翻譯的 query 更加靠近 APP 本身命名。

圖片

比如,翻譯成 A mocking game,事實上很少有應用或者游戲的名字帶有 mocking 的,因此文本召回使用的主要關鍵詞的是 game,那當然就很難滿足用戶的需求。

圖片

但是如果能夠翻譯出來 simulation game,那就能找到學校模擬、史萊姆模擬等一系列模擬游戲。

圖片

四、使用 NLLB-200 翻譯結果作為 LLM 的 prompt

毫無疑問,無論是 GPT3.5 還是 GPT4,都是以英文為中心的大規模語言模型。而文心一言、通義千問以及豆包和 kimi,則是以中文為中心。

大規模語言模型的訓練是極其耗費資源的,所以像是非洲貧窮國家,很難出現一款以自己的語言為中心的大規模語言模型。那是不是這些國家的人,如果不會中文和英文,就不能享受到大規模語言模型的便利了呢?答案當然不是的,現在的一部分研究表明,將小語種的 prompt 翻譯到英文之后,ChatGPT 或者 Llama 就可以迅速給出對應的準確結果。

4.1 直接 prompt 和翻譯 prompt 的實踐

我們嘗試一個很小眾的語種--毛利語(mri)的問題。一般而言,我們會根據語種統計,比如 Common Crawl,把高于1%占比的語言看作高資源語種,其他看作低資源語種。根據統計,毛利語的語言占比為0.0009%,是當之無愧的小語種。接下來,我們就用這個低資源語種來做prompt的實驗。

輸入:

Ko te hanga i te koroka me 2 raka o te kakahu muka kahurangi me te haurua o te nui o te kakahu muka ma. E hia katoa nga momo kakahu ka whakamahia kia rite ki te whakatakotoranga: "Whakautu:".

ChatGPT 輸出:

Kia taea te hanga i te koroka me 2 raka o te kakahu muka kahurangi me te haurua o te nui o te kakahu muka ma, ka taea te whakamahia i nga momo kakahu katoa ka rite ki te whakatakotoranga "Whakautu: ". Ka taea te whakamahi i nga momo kakahu penei i te kakahu muka, te kakahu pukapuka, te kakahu rarau, me etahi atu. Ko te take he kia rite te whakamahi me te whakarite i te whakatakotoranga ki te hiahia o te tangata.

但是,這個回答從格式上看應該就不對。我們把輸出翻譯回中文來做理解,可以看到,這個回答的意思是:

為了能夠用2鎖藍色纖維布和一半數量的白色纖維布制作一件斗篷,所有類型的布料都可以按照“答案:”的格式使用。可用于纖維布、書布、鞋布等不同類型的衣服。原因就是要根據用戶的需求來使用。

這個回答是完全驢唇不對馬嘴的回答。

同時,我們把這個問題輸入到兩個以中文語料為中心的模型–通義千問和 ChatGLM2 里面看一下。可以看到,以中文語料為中心的兩個模型更加沒辦法理解和處理這個問題。

通義千問 qwen-max-1201輸出

Ko te whakautu i to kōrero, heoi anō tēnei: "Tau Arapi" kua whakamahia hei tauira mō te whakatakotoranga o ngā momo kakahu. Ko te koroka me 2 raka o te kakahu muka kahurangi me te haurua o te nui o te kakahu muka ma, ka whakamahia kia rite ki te whakatakotoranga o "Whakautu: ". Nā reira, ko te whakatakotoranga o ngā momo kakahu nei e rua ake atu ana ki te tauira o "Whakautu: ".

ChatGLM2-6B 輸出:

I'm sorry, but it appears that the text you provided doesn't have a clear question or request for me to respond to. Could you please provide more context or clarify what you would like to know or talk about?

但是如果我們將它翻譯成中文或者英語呢?通過翻譯軟件,我們可以得到這個 prompt 直接翻譯成中文是:

制作一件袍子需要2 匹藍色纖維布料和這個數量一半的白色纖維布料。它一共需要用掉多少匹布料,您的最終答案的格式應為:"答案: <阿拉伯數字>".

對應的輸出 ChatGPT 輸出:

製作一件袍子需要 2 匹藍色纖維布料和這個數量一半的白色纖維布料。它一共需要用掉多少匹布料?答案:3。

雖然輸出是繁體字,但是不影響我們理解,這個回答結果是正確的。同理,我們也把這個prompt輸入到通義千問和 ChatGLM2 里面看一下。可以看到,此時通義千問已經可以回答正確了。

通義千問 qwen-max-1201 輸出:

答案: 3 匹

ChatGLM2-6B 輸出:

答案:4.5

翻譯成英語,則是:

To make a robe, two pieces of blue fiber and half of that amount of white fiber are needed. How many pieces of fabric does it take to make? You should format your final answer as "Answer:".

ChatGPT 輸出是:

To make the robe, it takes a total of 3 pieces of fabric.
Answer: 3

同理,我們也把這個 prompt 輸入到通義千問和 ChatGLM2 里面看一下。可以看到,此時通義千問依舊是可以正確回答的。ChatGLM 的回答錯誤可能是因為6B模型在推理上的不足。

通義千問 qwen-max-1201 輸出:

To make a robe, we need 2 pieces of blue fiber and half of that amount of white fiber. Half of 2 is 1, so we need 1 piece of white fiber.
In total, we need 2 pieces of blue fiber + 1 piece of white fiber = 3 pieces of fabric.
Therefore, the answer is: Answer: 3.

ChatGLM2-6B 輸出:

Answer: 7

我們可以看到,一旦毛利語的 prompt 先通過翻譯,變成了高資源語種,比如中文或者英語,模型就能給出正確的答案,同時格式也能夠滿足我們的要求。

4.2 直接 prompt 和翻譯 prompt 的效果

圖片

【圖2】:各語種直接 prompt &統一翻譯成英語 prompt 在 ChatGPT 和 Llama-2-70B-Chat 的表現

在論文中,研究人員提到,高資源語種翻譯成英語之后再輸入大模型,可能并不會有很大的提升,甚至還可能帶來噪音,影響效果。但是,低資源語種,如果能夠先翻譯成高資源語種,然后再輸入現在以高資源語種為中心的大模型,往往就能夠取得不錯的效果。

我們從【圖2】也可以看出來,對于中文這種高資源語言,使用翻譯之后,在 ChatGPT 中效果還不如直接用中文 prompt;而在 Llama 中,將中文翻譯成英語,然后再輸入 Llama,表現則要優于中文 prompt,這可能是因為 Llama 訓練語料中的中文語料數量要遠遠 ChatGPT 中的中文語料數量。

五、總結與展望

使用 LLM 生成的語料來微調特定任務的 NLLB 模型是一個常見的做法,許多場景都在嘗試利用 LLM 的知識來更好地適應自己的任務。然而,LLM 生成的知識可能存在誤導性,有時甚至可能與事實不符,因此在使用這些語料時,需要進行機器篩選或人工判斷。

雖然機器翻譯能提升以英語或中文等高資源語言為中心的 LLM 在多語言 NLP 任務中的性能,但并非適用于所有情境。對于需要深度語言理解及考慮文化差異的任務,使用母語提示常常更具有潛力,因為母語能更準確地捕捉文化和語言的微妙差別。因此,開發更多種類的多語言 LLM 是非常必要的。

【參考資料】

[1] Costa-jussà M R, Cross J, ?elebi O, et al. No language left behind: Scaling human-centered machine translation[J]. arXiv preprint arXiv:2207.04672, 2022.

[2] Moslem Y, Romani G, Molaei M, et al. Domain terminology integration into machine translation: Leveraging large language models[C]//Proceedings of the Eighth Conference on Machine Translation. 2023: 902-911.

[3] Liu C, Zhang W, Zhao Y, et al. Is translation all you need? a study on solving multilingual tasks with large language models[J]. arXiv preprint arXiv:2403.10258, 2024.

[4] PEFT(https://huggingface.co/docs/peft/main/en/index)

責任編輯:龐桂玉 來源: vivo互聯網技術
相關推薦

2024-07-22 09:10:04

大語言模型推薦系統人工智能

2025-02-17 10:13:27

2023-08-01 08:13:47

因果分析倉儲管理

2024-02-26 08:15:43

語言模型低代碼

2023-05-26 13:22:49

2023-10-10 09:45:35

自動駕駛技術

2024-03-20 10:31:27

2024-12-23 08:03:13

2024-09-10 08:42:37

2024-01-17 08:00:00

人工智能大型語言模型Web

2025-04-03 08:00:00

開源大語言模型DAPO

2024-05-06 07:58:25

大模型AI智慧芽

2024-06-26 19:18:53

2024-06-17 08:49:00

模型語言

2022-04-28 09:36:47

Redis內存結構內存管理

2024-07-23 08:06:19

緩存技術策略

2023-11-01 07:34:04

大語言模型應用協議識別

2023-09-04 12:59:03

AI數據

2024-12-12 09:11:58

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品欧美色视频网站在线观看 | 高清一区二区三区 | 亚洲 一区| 国产精品乱码一二三区的特点 | 成年女人免费v片 | 日韩精品一区二区三区中文在线 | 中文字幕1区 | 国产网站在线播放 | 日本久久精 | 亚洲综合大片69999 | 在线播放国产一区二区三区 | 免费精品久久久久久中文字幕 | 亚洲高清视频一区二区 | 亚洲视频在线观看免费 | 中文字幕日韩欧美 | 日本黄色大片免费看 | 国产精品3区 | 日韩精品免费视频 | 日韩有码一区 | 日韩一区二区三区av | 超黄毛片 | 欧美一级欧美一级在线播放 | 不卡在线视频 | www.狠狠干 | 久久精品免费看 | 日韩精品中文字幕一区二区三区 | 国产精品a久久久久 | www国产成人免费观看视频,深夜成人网 | 亚洲精品一级 | 久久九| 成年人在线观看 | 亚洲一区二区三区在线播放 | 国产精品精品视频一区二区三区 | 国产成人精品网站 | 久久久久成人精品亚洲国产 | 久久久久久免费毛片精品 | 国产精品污www一区二区三区 | 国产91色在线 | 亚洲 | 激情国产在线 | 欧美精品一区二区三区蜜桃视频 | 在线看日韩av |