NLP产品级系统设计模式
摘要:?在本文中,作者從六個方面描述了一些生產NLP系統的常見設計和部署模式。這些是團隊為了使產品開發與技術、業務、戰略和操作目標保持一致而必須做出的選擇或權衡。
摘要:在本文中,作者從六個方面描述了一些生產NLP系統的常見設計和部署模式。這些是團隊為了使產品開發與技術、業務、戰略和操作目標保持一致而必須做出的選擇或權衡。
雖然構建NLP系統可能很復雜,但是在構建NLP系統時,重要的是要記住,構建的系統需要解決某一個任務,并且只是實現這個目標的一種方法。在系統構建過程中,工程師、研究人員、設計師和產品經理通常有多個選擇。雖然我們的書主要集中在技術或基礎構建塊上,但是將這些構建塊放在一起來設計復雜的結構來滿足你的需求將需要一些模式思考。模式思維和描述模式的語言是“在專業領域中描述好的設計實踐或有用的組織模式的方法”。這在許多學科中都很流行(Alexander, 1979),包括軟件工程。因此我們主要從以下從六個方面來研究這些設計選擇:
1、在線系統和離線系統:在線系統是指需要實時或接近實時地進行模型預測的系統。有些任務,如打擊垃圾郵件、內容審核等,本質上需要一個在線系統。另一方面,離線系統不需要實時運行。它們可以被構建并利用像Transductive Learning這樣的方法同時在一批輸入上高效運行。有些在線系統可能是被動的,甚至可以以在線方式(也就是在線學習)進行學習,但是許多在線系統是通過定期的離線模型構建來構建和部署的,并將其推向生產。使用在線學習構建的系統應該對敵對環境特別敏感。最近的一個例子是著名的Twitter聊天機器人Tay,一開始從通過網絡進行在線學習。但是很快Tay就開始用攻擊性的推特回應,其母公司微軟在推出后不到一天就不得不關閉這項服務。系統構建的一個典型軌跡是首先構建一個離線系統,將其作為一個“在線”系統進行大量的工作,然后通過添加反饋循環并適當的改變學習方法使其成為一個“在線學習”系統。雖然這種方案在代碼庫中增加了不少的復雜性,但有的時候是非常有必要的。下圖顯示了“Facebook免疫系統”作為一個在線系統檢測垃圾郵件的例子(大約2012年)。注意在線系統比類似的離線系統需要更多的工作。
?
2、交互系統與非交互系統:大多數自然語言系統都是非交互的,因為預測僅僅來自一個模型。實際上,許多產品級NLP模型都深入到數據處理的“Extract-Transform-Load”(ETL)管道的轉換步驟中。因此在某些情況下,人類參與到預測的循環中可能會有幫助。下圖展示了Lilt Inc.的一個交互式機器翻譯接口示例,其中模型和人共同參與了所謂的“混合主動模型”(Green 2014)的預測制作。雖然交互式系統很難設計,但通過將人帶入循環,仍然可以實現非常高的準確性。
?
3、單模式系統與多模式系統:在學習和預測過程中合并多個模式可能會有幫助。例如,新聞轉錄系統不僅要使用音頻流,還要使用視頻幀作為輸入。例如,谷歌最近的一項名為“Look to Listen”(Ephrat et al 2018)的工作,使用多模態輸入來解決演講者源分離的難題(又稱雞尾酒會問題)。多模態系統的構建和部署是昂貴的,但是對于將來自多個模態的輸入組合在一起的困難問題,提供的信號在其他情況下是單模態無法實現的。我們在NLP中也看到了這樣的例子。例如,在多模式翻譯中,我們可以通過在可用的情況下合并來自多種源語言的輸入來提高翻譯質量。在為web頁面生成主題(主題建模)時,可以將從其中包含的圖像中提取的特性與頁面上的文本合并在一起。
?
4、端到端系統與分段系統:自深度學習問世以來,研究人員和工程師的另一個選擇是構建一個復雜的NLP系統,要么作為不同單元的管道,要么作為一個整體端到端系統。端到端設計在機器翻譯、總結和語音識別等許多領域都很有吸引力,在這些領域,精心設計的端到端系統可以顯著地降低實現和部署的復雜性,當然還可以減少代碼行數。分段系統將復雜的NLP任務分解為子任務,每個子任務分別進行優化,獨立于最終的任務目標。分段系統中的子任務使它變得模塊化,并且很容易“修補”生產中的某個特定問題,但通常伴隨著一些“技術債務”。
?
5、封閉域與開放域系統:封閉域系統是為了單一目的而明確優化的,以便在該域中表現良好。例如,可以明確優化機器翻譯系統使之與生物醫學期刊一起工作——這需要對生物醫學平行語料庫進行訓練。開放域系統旨在用于通用目的(例如Google Translate)。再舉一個例子,考慮一個文檔標記系統。如果系統只預測它所訓練的許多類中的一個(典型的情況),那么它將導致一個封閉域系統。但是,如果系統被設計成在運行時發現新的類,那么它就是一個開放域系統。在翻譯和語音識別系統中,封閉域系統也被稱為“有限詞匯”系統。
6、單語與多語系統:為使用單一語言而構建的NLP系統稱為單語系統。建立和優化單語系統是很容易的。相反,多語言系統可以處理多種語言。當它們在一個不同語言的數據集上接受訓練時,它們的結果是顯而易見的。雖然構建一個多語言系統很有吸引力,但是專注于一個單語版本有它的優勢。研究人員和工程師可以利用該語言中廣泛且可用的資源和領域專業知識,以生產高質量的系統,而在一般的多語言系統中,這是不可能的。由于這個原因,我們經常發現許多單語系統集合的多語言產品被單獨優化,并使用語言標識組件將輸入分發給單語系統。
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的NLP产品级系统设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【免费公测中】为数据赋予超能力,阿里云重
- 下一篇: 首帧秒开+智能鉴黄+直播答题,阿里云直播