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