
使用這些基本 REST API 最佳實踐構建出色的 API
Transformer 最初作為機器翻譯模型被提出,后來被廣泛應用于人工智能各個領域。Transformer 的一個大問題是解碼基于自回歸,計算需要一環扣一環地進行,速度比較慢。為解決這個問題,非自回歸模型成為最近研究的一個熱點。目前為止提出的非自回歸模型在機器翻譯的精度上沒有能夠與原始的 Transformer 匹敵。我們提出的 DA-Transformer 在機器翻譯上首次達到了 Transformer 同樣的精度,而處理的速度提高了 7~14 倍[1]。DA-Transformer 不僅可以用于機器翻譯,而且可以用于任意的序列到序列任務。
DA-Transformer (Directed Acyclic Graph Transformer)的核心想法是在解碼層的最后一層構建有向無環圖,如圖 1 所示。有向無環圖的結點表示生成翻譯(目標語言句子)的狀態,邊表示狀態之間的轉移。邊上有狀態轉移概率,結點上有表示向量,生成目標語言單詞。解碼器的輸入是目標語言單詞的位置的索引。有向無環圖的結點對應著解碼器的輸入,有向邊只能是從前面的位置指向后面的位置。有向無環圖的從起始位置到終止位置的一條路徑,對應著一個翻譯狀態的序列,在一條路徑上可以產生目標語言句子(單詞的序列)。其他部分的結構與 Transformer 相同。
DA-Transformer 的解碼是基于并行處理的。在解碼器輸入的各個位置上進行并行計算,得到解碼器最后一層的有向無環圖的結點上的表示向量。在此基礎上計算各個邊上的轉移概率,從每個位置出發到達其之后位置的轉移概率是歸一的。這個過程的計算速度非常快。DA-Transformer 的訓練也是基于翻譯數據進行極大似然估計。這時一個翻譯(目標語言句子)可以由有向無環圖的多條路徑產生,翻譯的生成概率要對所有的路徑求和。使用動態規劃可以高效地完成一個翻譯概率(似然函數)的計算。DA-Transformer 的推理可以使用多個算法。最簡單的貪心算法從起始位置開始從左到右動態遞歸地計算到每個位置概率最大的翻譯,直到生成句子終止符為止。
傳統的語音到文本的翻譯是通過語音識別和文本機器翻譯的串聯實現。這個方法的缺點是推理過程中的錯誤會累加。ConST 可以直接將英語的語音翻譯成中文的文本,而且在語音到文本的翻譯中,達到了 SOTA(state of the art)的效果[2]。
ConST 的架構由 Transformer 的編碼器和解碼器組成(見圖 2)。編碼器既可以接受語音輸入又可以接受文本輸入。輸入是語音時有特殊的前處理模塊,使用 wave2vec2 和 CNN。輸入是文本時處理跟一般的 Transformer 相同。用同一個系統實現語音到文本的語音識別,文本到文本的機器翻譯,語音到文本的語音翻譯。訓練時進行語音識別、文本翻譯、語音翻譯的多任務學習。ConST 的最大特點是,使用對比學習將語義相同的語音輸入的表示和文本輸入的表示拉近。可以理解為對表示學習進行了正則化。圖 2 的下圖左邊直觀說明沒有使用對比學習的表示,右邊直觀說明使用了對比學習之后的表示。
X-VLM 是以 Transformer 為基礎,以文本 – 圖片對數據作為輸入進行預訓練得到的視覺語言模型,可以用多種跨模態的下游任務(見圖 3)[3]。具有多模態處理能力的視覺語言模型是最近研究的熱點。我們這里假設文本和圖片對的內容是強關聯的,文本描述圖片內容,但描述是多顆粒度的。文本可能描述圖片整體、區域或物體,如圖 3 所示。這種基礎模型對 visual question answering 和 visual grounding 等任務等更加適用,也可以用于其他任務。X-VLM 是目前視覺語言各種任務的 SOTA。
之前的方法都是在訓練之前或訓練之中使用物體檢測,而 X-VLM 完全不使用。從已有數據中導出不同顆粒度的文本 – 圖片對數據,包括物體的名稱和圖像中框出的物體的對應數據。模型由文本編碼器、圖像編碼器、交叉編碼器組成。文本編碼器和圖像編碼器是 Transformer 的編碼器,交叉編碼器有從文本到圖像的注意力計算,文本表示作為 query。訓練有四個目標,包括邊框預測、掩碼語言模型、匹配、對比學習。邊框預測是掩蓋物體的邊框,從文本 – 圖片對數據中還原邊框,掩碼語言模型掩蓋一些 token 再從文本 – 圖片對數據中還原,匹配判斷文本 – 圖片數據的匹配程度,對比學習進一步在 batch 數據中拉進語義相近的文本和圖片的表示。X-VLM 已經用于多個實際應用,比如圖 3 下的小學英語解題。輸入帶圖的英語填空題,系統可以自動完成填空,這個任務之前是非常困難的。
最近的 X^2-VLM 將 X-VLM 擴展,也可以處理視頻和多語言。實驗結果顯示在 base 和 large 的規模上 X^2-VLM 是語言視覺任務的最新 SOTA[4]。
Davinci 是更偏文本和圖片生成的多樣化視覺語言處理模型[5]。文本 – 圖片對數據作為輸入,假設文本 – 圖片是強關聯的,文本描述圖片內容。DaVinci 一個模型,完成從文本到圖片生成,從圖片到文本生成,甚至其他的理解和生成等許多任務,在這些任務上達到或接近 SOTA 結果。
DaVinci 的模型是 Transformer,如圖 4 上圖所示,預訓練采用 prefix language modeling 的方法。預訓練時,輸入是文本 – 圖片對,將其中的部分文本或部分圖片掩蓋,然后讓數據通過 Transformer 的編碼器和解碼器,將被掩蓋的內容還原。事先對圖片進行 image tokenizing 處理,每個圖片的 token 由一個離散的編碼表示,進行了圖像的離散化。還原實際是生成被掩蓋部分的圖片 token,這時沒有被掩蓋的上下文(可能是文本或圖片)幫助生成。沒有被掩蓋的部分就是 prefix。DaVinci 的模型雖然簡單,但可以做高質量的文本和圖片生成。比如,圖 4 中的下圖是給定文本 DaVinci 自動生成的圖片的例子。DaVinci 論證了使用同一個模型是能夠同時學習“寫”(基于圖片的文本生成)和“畫”(基于文本的圖像生成),并且這兩種能力能夠互相促進。
Neural Symbolic Processor
這里考慮自然語言理解的問題,具體的文本蘊含任務。比如 “Sam 有 10 美元,他花了 6 美元” 這句話和 “Sam 有 4 美元” 這句話存在蘊含關系。傳統的深度學習方法用預訓練語言模型 BERT 判斷,可以達到一定的準確率,但是有很多蘊含關系的判斷需要邏輯推理,包括數字推理。純深度學習的方法并不能保證做得很好。推測人分別使用系統 1 和系統 2 進行類推推理和邏輯推理,然后進行綜合判斷。
NSP(neural symbolic processing)是模仿人的自然語言理解系統,也包含系統 1 和系統 2(見圖 5)[6]。核心想法是將輸入的文本,通過兩路處理分別進行類推推理和邏輯推理。先將輸入通過編碼器轉換成基于向量的內部表示。之后,在系統 1 里基于內部表示進行預測,與基于 BERT 的傳統深度學習方法相似。在系統 2 里將內部表示進行解碼,產生基于符號的內部表示,稱之為程序,接著執行程序;可以認為對輸入文本進行了翻譯,轉換成程序。最后,將兩路的處理結果進行集成,產生最終的結果,集成使用 MoE 模型。編碼器和解碼器都基于預訓練語言模型 BART。比如,針對上面的例子,系統 2 產生并執行程序,也就是將第 1 個數字減去第 2 個數字等于第 3 個數字(M1-M2=N1)。這樣的機制可以保證無論數字具體是多少,都可以進行同樣的推理。系統 1 同時進行基于深度模型(編碼器)的預測。兩者的判斷又通過 MoE 得到最終集成結果。NSP 在需要邏輯推理的語言理解任務上比傳統的方法在準確率上有大幅度的提升。
深度學習雖然取得了很大的進展,但相比人腦的學習和推理能力還相差甚遠,主要體現以下幾個方面。深度學習善于類推推理,但需要邏輯推理時往往無能為力。深度學習依然需要依賴于大模型、大數據和大算力,數據效率和能源效率要比人低很多。更重要的是,學習和推理往往只能針對具體的任務進行,而不像人腦那樣擁有通用的學習和推理能力。
展望未來,在很長一段時間里機器學習,特別是深度學習仍將是人工智能的主體技術。另一方面,人工智能需要更大的突破,有必要研究和開發下一代的智能計算技術。我們認為,腦啟發計算應該是未來發展的主要方向。最近 Bengio、LeCun 等也提出了類似的主張[7]。這里說的腦啟發計算并不是簡單地模仿人腦,而是根據計算機的實際特點參考人腦的機制,構建機器的學習和推理智能系統,主體可能還是深度學習,但與深度學習又有本質的不同,屬于新的范式。腦科學家馬爾將計算分為三個層面,分別是功能、算法和實現。腦啟發計算更多的應該是從功能層面借鑒人腦的機制。希望能解決樣本效率、能源效率、邏輯推理等方面的問題,為領域帶來更大的突破。下面通過幾個例子說明我們所說的腦啟發計算。
人腦的信息處理分多個腦區。各個腦區相對獨立,又相互關聯(見圖 6)。比如,對自己祖母的記憶,包括視覺、聽覺、語言等方面的信息,分別存儲在不同的腦區。腦啟發計算可以參考人腦的分區處理機制。深度學習中的 MoE(mixture of experts)技術有一定的相關性。
人腦的視覺處理是分兩個通道進行的,分別是 What 通道和 Where 通道(見圖 7)。What 通道負責識別物體的大小,形狀,顏色,而 Where 通道負責識別物體的空間位置。基于深度學習的圖像識別不將兩者的信息加以區分。這就可能導致了學習效率的降低。比如,在卷積神經網絡網絡的學習中需要通過數據增強的方法,增加樣本訓練模型,以應對圖像中物體的尺度不變性、旋轉不變性。
人腦的語言處理在布洛卡區和韋尼克區同時進行,分別負責語法和詞匯(見圖 8)。人的語言理解和生成是在兩個腦區并行進行的。而現在基于 Transformer 的語言處理模型都沒有將兩者分開,可能導致訓練需要更多的樣本。
如上所述,人腦的信息處理由系統 1 和系統 2 組成(見圖 9)。如何實現包含系統 1 和系統 2 的智能系統,是人工智能的一大課題。Neural Symbolic Processor 等采用的神經符號處理是一條路徑,面向這個方向邁出了一小步。
人的許多感知和認知能力是生來具有的,包括對物理法則、數量、概率等概念的認識,以及語言的習得和使用。當前的預訓練、自監督學習從大量的無監督數據中自動學習基礎模型,也可以認為學習到的對應著人生來具有的能力。沒有必要假設人工智能系統需要將所有的能力都通過數據驅動,機器學習的方法獲取。比如,知識圖譜是一種高質量的結構化數據,可以直接提供給智能系統作為一種 “生來具有的” 資源使用。
人工智能的未來發展同時也需要更強大的機器學習理論指導。用傳統的泛化上界解釋深度學習現象已經明顯遇到了困難。深度學習及腦啟發計算的現象通常是非常復雜的。我們認為,應該從信息、數據、模型等幾個角度出發建立新的深度學習及腦啟發計算理論。
具體地應該考慮以下問題。學習和推理過程中信息是如何流動的?數據中存在怎樣的內在結構?模型有怎樣的函數表示能力?最近的一些研究在這些方向取得了一定成果,值得大家關注。這里進行一個簡單總結,也期待出現更完整全面的理論。也建議閱讀馬毅等最近的文章[8]。
機器學習和數據壓縮是一枚硬幣的兩面。無監督學習的目標是給定數據 X 發現其內在結構 X’。數據壓縮是將數據 X 進行壓縮得到表示 X’,并且能從表示 X’還原原始數據 X。兩者是相互對應的,可以認為數據壓縮得到的表示 X’就是無監督學習要得到的內在結構 X’。監督學習的目標是學習從輸入數據 X 到輸出 Y 的映射。Tishby 等提出的信息瓶頸理論從數據壓縮的角度解釋監督學習。將數據 X 進行充分的壓縮得到表示 X’,使得表示 X’對輸出 Y 有充分準確的預測,將兩者分別用互信息表示,進行以下優化,最小化 X 和 X’之間的互信息,同時最大化 Y 和 X’之間的互信息,就對應著監督學習。這時表示 X’是對預測有用的特征,稱作信息瓶頸。
學習中的數據的內在結構也是需要考慮的。馬毅等的工作中,假設高維數據存在于低維空間的流形上,更具體地,多個流形的混合體[10]。認為聚類和分類學習是對數據通過深度神經網絡的非線性變換進行壓縮。將流形混合體上的數據從高維空間映射到低維線性空間,在低維線性空間進行聚類或分類。低維線性空間中,類內樣本相近,類外樣本相遠(見圖 13)。
馬毅等提出了機器學習的壓縮比最大原理 MCR2(maximal coding rate reduction)[10]。
最近對 Transformer 模型的表示能力分析有一些重要的結論。Transformer 模型有幾個重要構成要素,首先通過注意力包括自注意力機制實現輸入表示的組合。文本、圖像、語音數據都是具有組合性的,也就是說,整體的表示由局部的表示組合而成。注意力的計算實際是一種查詢,是 key-value store 符號查詢在向量查詢上的擴展。向量是 one-hot vector 時注意力就等價于 key-value store 查詢。這樣做的一個優點是,用固定的參數量處理可變的輸入。人的類推推理也可以認為是一種相似度計算,注意力機制是類推推理的一個合理且有效的實現。注意力本質是線性變換(不考慮其中的 softmax 計算),在其基礎上的 FFN 又實現了非線性變換。
最近 Dong 等的理論研究發現,Transformer 中的殘差連接實際起著非常重要的作用[11]。殘差連接實現了深度不同的各種注意力網絡加上非線性變換的集成(見圖 14)。理論證明,如果只有注意力,而沒有殘差連接或者前饋神經網絡,Transformer 學到的表示就會變成是秩為 1 的矩陣,也就是每個輸入 token 的表示趨于相同。以往的實驗也證明 position embedding 如果沒有殘差連接也不能傳到 Transformer 的高層。
本文的主要觀點如下。
文章轉自微信公眾號@算法進階