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

大規(guī)模機器學習系統(tǒng)中的No Free Lunch

人工智能 機器學習
企業(yè)機器學習應(yīng)用系統(tǒng)中的核心模型訓練系統(tǒng)有著什么樣的設(shè)計和優(yōu)化的考慮?與教科書中的機器學習應(yīng)用相比,企業(yè)實際的機器學習應(yīng)用中有哪些容易被人忽略的陷阱?涂威威對此作了經(jīng)驗分享,同時給出了一些可供參考的解決方案。

[[205684]]

作為第四范式•先知平臺核心機器學習框架GDBT的設(shè)計者,涂威威在大規(guī)模分布式機器學習系統(tǒng)架構(gòu)、機器學習算法設(shè)計和應(yīng)用等方面有深厚積累。演講中,涂威威表示,現(xiàn)在有越來越多的企業(yè)開始利用機器學習技術(shù),把數(shù)據(jù)轉(zhuǎn)換成智能決策引擎。企業(yè)機器學習應(yīng)用系統(tǒng)中的核心模型訓練系統(tǒng)有著什么樣的設(shè)計和優(yōu)化的考慮?與教科書中的機器學習應(yīng)用相比,企業(yè)實際的機器學習應(yīng)用中有哪些容易被人忽略的陷阱?涂威威對此作了經(jīng)驗分享,同時給出了一些可供參考的解決方案。

工業(yè)界大規(guī)模分布式機器學習計算框架的設(shè)計經(jīng)驗

機器學習的經(jīng)典定義,是利用經(jīng)驗(數(shù)據(jù))來改善系統(tǒng)性能。在應(yīng)用過程中,首先要明確機器學習目標的定義,也就是用機器學習來做什么事情。以谷歌提升搜索廣告業(yè)務(wù)收入為例,谷歌首先對提升收入的目標進行拆解,廣告收入=平均單次點擊價格點擊率廣告展現(xiàn)量,其中“廣告展現(xiàn)量”被硬性控制(考慮到政策法規(guī)和用戶體驗),“單次點擊價格”受廣告主主動出價影響,與上面兩者不同,“點擊率”的目標明確,搜索引擎記錄了大量的展現(xiàn)點擊日志,而廣告候選集很大,不同廣告的點擊率差別很大,谷歌廣告平臺有控制廣告展現(xiàn)的自主權(quán),因此對于谷歌提升搜索廣告收入的問題而言,機器學習最適合用來優(yōu)化“廣告點擊率”。在確定了機器學習具體的優(yōu)化目標是廣告點擊率之后,谷歌機器學習系統(tǒng)會循環(huán)執(zhí)行四個系統(tǒng):數(shù)據(jù)收集→數(shù)據(jù)預處理→模型訓練→模型服務(wù)(模型服務(wù)產(chǎn)生的數(shù)據(jù)會被下一個循環(huán)的數(shù)據(jù)收集系統(tǒng)收集)。在這四個系統(tǒng)中,與機器學習算法最相關(guān)的就是模型訓練系統(tǒng)。

 

在涂威威看來,計算框架設(shè)計上,沒有普適的***框架,只有最適合實際計算問題的框架。

針對機器學習的兼顧開發(fā)效率和執(zhí)行效率的大規(guī)模分布式并行計算框架

在工業(yè)應(yīng)用中,有效數(shù)據(jù)、特征維度正在迅速攀升。在數(shù)據(jù)量方面,以往一個機器學習任務(wù)僅有幾萬個數(shù)據(jù),如今一個業(yè)務(wù)的數(shù)據(jù)量已很容易達到千億級別。在特征維度方面,傳統(tǒng)的機器學習采用“抓大放小”的方式—只使用高頻宏觀特征,忽略包含大量信息的低頻微觀特征—進行訓練,但隨著算法、計算能力、數(shù)據(jù)收集能力的不斷增強,更多的低頻微觀特征被加入到機器學習訓練中,使模型的效果更加出色。

 

特征頻率分布

機器學習技術(shù)也在工業(yè)應(yīng)用中不斷發(fā)展,最早期的機器學習工業(yè)應(yīng)用只利用宏觀特征、簡單模型,到后來發(fā)展為兩個不同的流派:以微軟、雅虎為代表的只利用宏觀特征但使用復雜模型流派,以谷歌為代表的使用簡單模型但利用微觀特征流派,到現(xiàn)在,利用更多微觀特征以及復雜模型去更精細地刻畫復雜關(guān)系已是大勢所趨。這便對模型訓練提出了更高的要求。

 

其一,訓練系統(tǒng)需要分布式并行。由于功率墻(Power Wall,芯片密度不能***增長)和延遲墻(Latency Wall,光速限制,芯片規(guī)模和時鐘頻率不能***增長)的限制,摩爾定律正在慢慢失效,目前,提升計算能力的方式主要是依靠并行計算,從早期的以降低執(zhí)行延遲為主到現(xiàn)在的以提升吞吐量為主。在模型訓練的高性能計算要求下,單機在IO、存儲、計算方面的能力力不從心,機器學習模型訓練系統(tǒng)需要分布式并行化。當然我們也需要牢記Amdahl定律。

 

Power Wall,功耗隨著集成電路密度指數(shù)提升

其二,訓練框架需要高開發(fā)效率。機器學習領(lǐng)域里,一個著名的定理叫No Free Lunch[Wolpert and Macready 1997],是指任意算法(包括隨機算法)在所有問題上的期望性能一樣,不存在通用的算法,因此需要針對不同的實際問題,研發(fā)出不同的機器學習算法。這就需要機器學習計算框架的開發(fā)效率非常高。

 

典型的機器學習建模過程

其三,訓練系統(tǒng)需要高執(zhí)行效率。在面對實際問題時,需要對數(shù)據(jù)、特征表達、模型、模型參數(shù)等進行多種嘗試,且每一次嘗試,都需要單獨做模型訓練。所以,模型訓練是整個機器學習建模過程中被重復執(zhí)行最多的模塊,執(zhí)行效率也就成為了重中之重。

 

機器學習核心系統(tǒng)對計算資源的需求對比

其四,底層框架的No Free Lunch。對于不同的計算問題,計算的模式和對各種計算資源的需求都是不一樣的,因此沒有在所有問題上***的架構(gòu),只有最適合實際問題的架構(gòu)。針對機器學習任務(wù)的特性進行框架設(shè)計才能更有效地解決大規(guī)模機器學習模型訓練的計算問題。

開發(fā)效率的優(yōu)化

在提高開發(fā)效率上,這里分享計算和編程模式的選擇、編程語言的選擇兩個方面。

并行計算范式分為兩種,一種是基于共享內(nèi)存的并行計算范式,不同的計算節(jié)點共享同一塊內(nèi)存,這里底層需要處理訪存沖突等問題,這種模式一般被用在小規(guī)模處理器的情況,比如單機多處理器;另外一種是基于消息傳遞的并行計算范式,每個計算節(jié)點使用自己的內(nèi)存,計算節(jié)點之間通過消息傳遞的模式進行并行計算。在實際的分布式并行系統(tǒng)中,多機器之間一般基于消息傳遞,單機內(nèi)部一般基于共享內(nèi)存(也有一些系統(tǒng)基于消息傳遞)。

機器學習的分布式模式,又分為數(shù)據(jù)分布式和模型分布式。數(shù)據(jù)分布式是指將訓練數(shù)據(jù)切成很多份,不同的機器處理一部分數(shù)據(jù)。但對于一些較大的模型,單機可能沒有辦法完成整個模型的運算,于是把模型切成很多份,不同機器計算模型的不同部分。在實際應(yīng)用過程中,根據(jù)不同的場景需要,二者一般是并存的。

 

數(shù)據(jù)分布式和模型分布式

機器學習模型訓練中常見的分布式并行計算模型

最常見的就是分布式數(shù)據(jù)流計算模型。數(shù)據(jù)流模型是一種數(shù)據(jù)驅(qū)動的并行計算執(zhí)行模型。數(shù)據(jù)流計算邏輯基于數(shù)據(jù)流圖表達。 用戶通過描述一個計算流圖來完成計算,對計算流圖中的計算節(jié)點進行定義,用戶一般不需要指定具體執(zhí)行流程。數(shù)據(jù)流圖內(nèi)部不同數(shù)據(jù)的計算一般是異步完成的,其中的計算節(jié)點只要上游ready就可以執(zhí)行計算邏輯。目前主流的ETL(Extract-Transform-Load)數(shù)據(jù)處理框架比如Hadoop、Spark、Flink等都是基于數(shù)據(jù)流計算模型。但是機器學習計算任務(wù)有一個共享的不斷被擦寫的中間狀態(tài):模型參數(shù),計算過程會不斷的讀寫中間狀態(tài)。數(shù)據(jù)流的計算模型在執(zhí)行過程中一般是異步的,所以很難對共享中間狀態(tài)——模型參數(shù),進行很好的一致性控制。所以基于數(shù)據(jù)流計算模型的一致性模型一般都是同步的,在數(shù)據(jù)流內(nèi)部保證強一致性,但是基于同步的系統(tǒng)執(zhí)行性能取決于最慢的計算節(jié)點,計算效率比較低。

 

數(shù)據(jù)流計算模型中的模型參數(shù)困惑

另一個常見的分布式并行計算模型就是基于參數(shù)服務(wù)器的分布式計算模型。參數(shù)服務(wù)器就是對機器學習模型訓練計算中的共享狀態(tài)——模型參數(shù)管理的一種直觀的抽象,對模型參數(shù)的讀寫由統(tǒng)一的參數(shù)服務(wù)器管理,參數(shù)服務(wù)器本質(zhì)上就是一個支持多種一致性模型的高性能Key-Value存儲服務(wù)?;趨?shù)服務(wù)器可以實現(xiàn)不同的一致性模型,一個極端就是BSP(Bulk Synchronous Parallel,同步并行),所有的計算節(jié)點在計算過程中都獲取一致的模型參數(shù),對于算法實現(xiàn)而言有一致性的保障,但是代價是同步造成的資源浪費;另一個極端是ASP(Asynchronous Parallel,異步并行),所有的計算節(jié)點在計算過程中彼此之間的模型參數(shù)沒有任何的一致性保證,計算節(jié)點之間完全異步執(zhí)行,這種一致性模型計算效率很高,但是模型參數(shù)沒有一致性保證,不同節(jié)點獲取到的是不同版本的模型,訓練過程不穩(wěn)定,影響算法效果;CMU的Erix Xing教授提出了介于BSP和ASP兩者之間的SSP(Stale Synchronous Parallel),通過限制***不一致的參數(shù)版本數(shù)來控制整體的同步節(jié)奏,這樣既能緩解由于同步帶來的執(zhí)行效率問題,又使得算法相對于ASP在收斂性質(zhì)上有更好的保證。基于不同的一致性模型可以很好地在運行速度和算法效果上進行權(quán)衡。

 

 

其實,數(shù)據(jù)流計算模型和參數(shù)服務(wù)器計算模型刻畫了機器學習模型訓練計算過程的不同方面,機器學習的樣本數(shù)據(jù)的流動用數(shù)據(jù)流來描述就很自然,模型訓練過程中的中間狀態(tài)可以被參數(shù)服務(wù)器計算模型自然的描述。因此,這兩者進行結(jié)合是整體的發(fā)展趨勢:在數(shù)據(jù)流中對參數(shù)服務(wù)器進行讀寫操作,比如Intel就開發(fā)了Spark上的參數(shù)服務(wù)器。但是數(shù)據(jù)流計算模型和參數(shù)服務(wù)器計算模型的一致性模型不盡相同,參數(shù)服務(wù)器的一致性模型比如BSP或者SSP都會打破數(shù)據(jù)流原有的異步計算邏輯。參數(shù)服務(wù)器和數(shù)據(jù)流結(jié)合的災備策略和一致性管理策略需要仔細的設(shè)計才能很好地統(tǒng)一和融合。

 

數(shù)據(jù)流和參數(shù)服務(wù)器結(jié)合的架構(gòu)

編程模型和編程語言的選擇

編程范式可以分為兩種,命令式與聲明式。命令式編程通過顯式指定具體執(zhí)行流程來進行編程,常見的命令式語言是C/C++等;與命令式編程不同,聲明式編程不顯示指定具體執(zhí)行流程,只定義描述計算任務(wù)目標,將具體執(zhí)行交由底層計算框架決定。命令式編程由于顯式指定具體執(zhí)行流程會顯得更加靈活,而聲明式編程底層計算框架可以針對執(zhí)行流程進行更深入的優(yōu)化從而可能會更加高效。在實際的機器學習模型訓練計算框架中,兩者其實一般是并存的,比如MxNet、Tensorflow等。 

 

求和運算的命令式實現(xiàn)和聲明式實現(xiàn)比較

為了兼顧運行效率和易用性,機器學習模型訓練計算框架的編程語言的選擇一般采用前后端分離的方式:以C/C++、Java/Scala等作為后端以保證系統(tǒng)運行效率,使用Python、R等作為前端以提供更為易用的編程接口。對于后端語言的選擇上,主流的就是Java和C++,這兩者各有優(yōu)劣:

在生態(tài)上,Java由于易于開發(fā)使得其生態(tài)要遠遠好于C++,很多大數(shù)據(jù)計算框架都基于Java或者類Java語言開發(fā);

在可移植性上,由于JVM屏蔽了很多底層差異性,所以Java要優(yōu)于C++;

在內(nèi)存管理上,基于GC的Java在大數(shù)據(jù)、同步分布式并行的情況下,效率要遠低于優(yōu)化過的C++的效率,因為大數(shù)據(jù)情況下,GC的概率會很高,而一旦一臺服務(wù)器開始GC其計算能力將受很大影響,整體集群尤其在同步情況下的計算效率也會大打折扣,而機器數(shù)增加的情況下,在一定時刻觸發(fā)GC的概率也會大大增加;

在語言抽象上,C++的模板機制在編譯時刻進行展開,可以做更多的編譯優(yōu)化,在實際執(zhí)行時除了產(chǎn)生的程序文件更大一些之外,整體執(zhí)行效率非常高,而與之對應(yīng)的Java泛型采用類型擦除方式實現(xiàn),在實際運行時做數(shù)據(jù)類型cast,會帶來很多額外的開銷,使得其整體執(zhí)行效率受到很大影響。

在實際機器學習模型訓練系統(tǒng)的設(shè)計上,具體的選擇取決于框架設(shè)計者的偏好和實際問題(比如系統(tǒng)部署要求、開發(fā)代價等)的需求。

 

執(zhí)行效率的優(yōu)化

執(zhí)行效率優(yōu)化方面主要舉例分享計算、存儲、通訊、容錯四個方面的優(yōu)化。

在計算方面,最重要的優(yōu)化點就是均衡。均衡不僅包括不同的機器、不同的計算線程之間的負載均衡,還包括算術(shù)邏輯運算資源、存儲資源、通訊資源等等各種與計算有關(guān)資源之間的均衡,其最終目的是***化所有計算資源的利用率。在實際的優(yōu)化過程中,需要仔細地對程序進行Profiling,然后找出可能的性能瓶頸,針對性能瓶頸進行優(yōu)化,解決瓶頸問題,但是這時候性能瓶頸可能會轉(zhuǎn)移,就要繼續(xù)迭代:Profiling→發(fā)現(xiàn)瓶頸→解決瓶頸。

 

典型的計算性能優(yōu)化循環(huán)

 

CPU和GPU的架構(gòu)對比

分布式計算是有代價的,比如序列化代價、網(wǎng)絡(luò)通訊代價等等,并不是所有的任務(wù)都需要分布式執(zhí)行,有些情況下任務(wù)或者任務(wù)的某些部分可以很好地被單機執(zhí)行,不要為了分布式而分布式。為了得到更好的計算性能,需要對單機和分布式進行分離優(yōu)化。

CPU、GPU、FPGA等不同硬件有各自的優(yōu)勢,比如CPU適合復雜指令,有分支預測,大緩存,適合任務(wù)并行;GPU有大量的算術(shù)邏輯運算單元,但緩存較小,沒有分支預測,適合粗粒度數(shù)據(jù)并行,但不適合復雜指令執(zhí)行,可以用來加速比如矩陣運算等粗粒度并行的計算任務(wù);FPGA對于特定的計算任務(wù),比如深度學習預測,經(jīng)過優(yōu)化后有著介于CPU和GPU之間的峰值,同時功耗遠低于GPU芯片。針對機器學習任務(wù)需要進行合理的任務(wù)調(diào)度,充分發(fā)揮不同計算硬件的優(yōu)勢,提升計算硬件的利用率。

近些年CPU、GPU等計算硬件的效率提升速度遠高于主存性能的提升速度,所以計算和存儲上的性能差距在不斷擴大,形成了“存儲墻”(Memory Wall),因此在很多問題上,存儲優(yōu)化更為重要。在存儲方面,從CPU的寄存器到L1、L2等高速緩存,再到CPU本地內(nèi)存,再到其他CPU內(nèi)存,還有外存等有著復雜的存儲結(jié)構(gòu)和不同的存儲硬件,訪問效率也有著量級的差距。Jeff Dean建議編程人員牢記不同存儲硬件的性能數(shù)據(jù)。

 

 

存儲層級架構(gòu)、性能數(shù)據(jù)和存儲墻

針對存儲的層次結(jié)構(gòu)和各個層級存儲硬件的性能特性,可以采取數(shù)據(jù)本地化及訪存模式等存儲優(yōu)化的策略。因為機器學習是迭代的,可以將一些訓練數(shù)據(jù)或者一些中間計算結(jié)果放在本地,再次訓練時,無需請求遠端的數(shù)據(jù);另外在單機情況下,也可以嘗試不同的內(nèi)存分配策略,調(diào)整計算模式,增強數(shù)據(jù)本地化。在訪存模式優(yōu)化方面,也可以進行很多優(yōu)化:數(shù)據(jù)訪問重新排序,比如GPU中紋理渲染和矩陣乘法運算中常見的Z秩序曲線優(yōu)化;調(diào)整數(shù)據(jù)布局,比如可以采用更緊致的數(shù)據(jù)結(jié)構(gòu),提升順序訪存的緩存***率,同時,在多線程場景下,盡量避免線程之間頻繁競爭申請釋放內(nèi)存,會競爭同一把鎖。除此之外還可以將冷熱數(shù)據(jù)進行分離,提升緩存***率;數(shù)據(jù)預取,比如可以用另外一根線程提前預取數(shù)據(jù)到更快的存儲中,提升后續(xù)計算的訪存效率。

通信是分布式機器學習計算系統(tǒng)中至關(guān)重要的部分。通訊包括點對點通訊和組通訊(如AllReduce、AllGather等)。可通過軟件優(yōu)化、硬件優(yōu)化的形式提高執(zhí)行效率。

在軟件優(yōu)化方面,可以通過比如序列化框架優(yōu)化、通訊壓縮、應(yīng)用層優(yōu)化的方式進行優(yōu)化:

通訊依賴于序列化,通用序列化框架比如ProtoBuffer、Thrift等,為了通用性、一些前后兼容性和跨語言考慮等會犧牲一定的效率,針對特定的通訊場景可以設(shè)計更加簡單的序列化框架,提升序列化效率。

在帶寬成為瓶頸時,可以考慮使用CPU兌換帶寬的方式,比如利用壓縮技術(shù)來降低帶寬壓力。

更重要的優(yōu)化來自于考慮應(yīng)用層通訊模式,可以做更多的優(yōu)化:比如參數(shù)服務(wù)器的客戶端,可以將同一臺機器中多個線程的請求進行請求合并,因為同一次機器學習訓練過程中,不同線程之間大概率會有很多重復的模型參數(shù)請求;或者根據(jù)參數(shù)服務(wù)器不同的一致性模型,可以做請求緩存,提升查詢效率,降低帶寬;或者對于不同的網(wǎng)絡(luò)拓撲,可以采取不同的組通訊實現(xiàn)方式。

除了軟件優(yōu)化之外,通訊架構(gòu)需要充分利用硬件特性,利用硬件來提升網(wǎng)絡(luò)吞吐、降低網(wǎng)絡(luò)延遲,比如可以配置多網(wǎng)卡建立冗余鏈路提升網(wǎng)絡(luò)吞吐,或者部署 Infiniband提升網(wǎng)絡(luò)吞吐、降低網(wǎng)絡(luò)延遲等。

在容錯方面,對于不同的系統(tǒng),容錯策略之間核心的區(qū)別就在于選擇最適合的Tradeoff。這里的Tradeoff是指每次失敗后恢復任務(wù)所需要付出的代價和為了降低這個代價所付出的overhead之間的權(quán)衡。在選擇機器學習模型訓練系統(tǒng)的容錯策略時,需要考慮機器學習模型訓練任務(wù)的特點:首先機器學習模型訓練是一個迭代式的計算任務(wù),中間狀態(tài)較多;其次機器學習模型訓練系統(tǒng)中模型參數(shù)是最重要的狀態(tài);***,機器學習模型訓練不一定需要強一致性。

在業(yè)界常見的有Data Lineage和Checkpointing兩種機器學習訓練任務(wù)災備方案。Data Lineage通過記錄數(shù)據(jù)的來源,簡化了對數(shù)據(jù)來源的追蹤,一旦數(shù)據(jù)發(fā)生錯誤或者丟失,可以根據(jù)Data Lineage找到之前的數(shù)據(jù)利用重復計算進行數(shù)據(jù)恢復,常見的開源項目Spark就使用這種災備方案。Data Lineage的粒度可大可小,同時需要一個比較可靠的維護Data Lineage的服務(wù),總體overhead較大,對于機器學習模型訓練中的共享狀態(tài)——模型參數(shù)不一定是很好的災備方式,因為模型參數(shù)是共享的有著非常多的中間狀態(tài),每個中間狀態(tài)都依賴于之前版本的模型參數(shù)和中間所有數(shù)據(jù)的計算;與Data Lineage不同,機器學習模型訓練系統(tǒng)中的Checkpointing策略,一般會重點關(guān)注對機器學習模型參數(shù)的災備,由于機器學習是迭代式的,可以利用這一點,在滿足機器學習一致性模型的情況下,在單次或多次迭代之間或者迭代內(nèi)對機器學習模型參數(shù)以及訓練進度進行災備,這樣在發(fā)生故障的情況下,可以從上一次迭代的模型checkpoint開始,進行下一輪迭代。相比于Data Lineage,機器學習模型訓練系統(tǒng)對模型參數(shù)和模型訓練進度進行Checkpointing災備是更加自然和合適的,所以目前主流的專門針對機器學習設(shè)計的計算框架比如Tensorflow、Mxnet等都是采用Checkpointing災備策略。

 

除了上述的容錯方式之外,還可以使用傳統(tǒng)災備常用的部署冗余系統(tǒng)來進行災備,根據(jù)災備系統(tǒng)的在線情況,可以分為冷、溫和熱備份方式,實際應(yīng)用中可以根據(jù)實際的資源和計算性能要求選擇最合適實際問題的冗余容錯方式。

機器學習實際應(yīng)用的常見陷阱

在實際的機器學習應(yīng)用中,經(jīng)常會遇到一些容易被忽視的陷阱。這里舉例分享一些常見的陷阱:一致性、開放世界、依賴管理、可理解性/可調(diào)試性。

一致性陷阱

一致性陷阱是最常見的容易被忽視的陷阱。

首先訓練/預估一致性問題是最常見的,其中包括特征表達不一致以及目標含義不一致。特征表達不一致較為常見,起因也有很多:表達方式不一是比較常見的,比如在訓練數(shù)據(jù)中0代表男,1代表女,可是在預估數(shù)據(jù)中1代表女,0代表男;訓練和評估特征提取中,某一方或者兩方都出現(xiàn)了邏輯錯誤,會導致不一致;有一種比較隱秘的不一致叫“穿越”,尤其在時序數(shù)據(jù)上特別容易發(fā)生,“穿越”就是指特征里包含了違反時序或者因果邏輯的信息,比如有特征是在整個訓練數(shù)據(jù)集中取該特征時正負例的個數(shù)/比例,這里其實隱含使用到了樣本的標注信息,但是實際在預估過程中是不可能提前拿到標注信息的(否則就不需要預估了);又比如某些特征使用了當前樣本時間點之后的信息,但是這在實際的預估中是做不到的,因為目前還無法穿越到未來。還有一種不一致性是目標含義的不一致性,比如目標是優(yōu)化搜索結(jié)果的用戶滿意度,但是卻用用戶點擊作為機器學習的目標,用戶點擊了某個搜索結(jié)果不代表用戶對這個結(jié)果滿意。

 

另外一種容易被忽視的一致性是字段含義會隨著時間的推移會發(fā)生變化。

在實際應(yīng)用中需要重點關(guān)注一致性測試,留意特征的具體物理含義,避免出現(xiàn)特征表達不一致、目標含義不一致、隨時間變化的不一致的問題。

開放世界陷阱

機器學習系統(tǒng)被應(yīng)用到實際業(yè)務(wù)中去時,面對的就是一個開放世界,機器學習系統(tǒng)不再是一個靜態(tài)孤立的系統(tǒng),而是需要跟外部世界打交道,這里就有很多的陷阱。其中有一個非常著名的幸存者偏差問題,因為當前的模型會影響下一次模型的訓練數(shù)據(jù),如果不做干涉,那么訓練數(shù)據(jù)是有偏差的。這個偏差***的起源來自二戰(zhàn)期間,科學家團隊研究如何對飛機加固來提升飛機在戰(zhàn)場的存活率,他們找來了戰(zhàn)場上存活下來的飛機上的彈孔進行分析,***得出結(jié)論:腹部中彈最多,所以需要在腹部進行加固,可提高存活率。但是,統(tǒng)計學家Abraham Wald指出他們忽略了那些被摧毀的飛機,因為它們被擊中了機翼、引擎等關(guān)鍵部位,所以可能更好地保護機翼、引擎等關(guān)鍵部位才能提升飛機在戰(zhàn)場上的存活率。在推薦系統(tǒng)、搜索引擎等系統(tǒng)中這樣的問題是非常常見的,用戶看到的結(jié)果是基于機器學習模型推薦出來的,而這些結(jié)果又會成為下一次機器學習模型訓練的數(shù)據(jù),但是這些數(shù)據(jù)是有模型偏置的。本質(zhì)上這是一個Exploitation和Exploration上權(quán)衡的問題,需要以長期效果為目標,解決這樣的問題可以參考強化學習中的解決方案。除了幸存者偏差陷阱之外,機器學習系統(tǒng)在實際業(yè)務(wù)系統(tǒng)中也可能會與其他系統(tǒng)進行配合,機器學習系統(tǒng)的輸出會隨著數(shù)據(jù)而發(fā)生變化,但是如果與之配合的系統(tǒng)中依賴機器學習系統(tǒng)輸出的參數(shù)比如閾值等卻固定不變,就可能會影響整個系統(tǒng)的效果。實際應(yīng)用中需要監(jiān)控機器學習系統(tǒng)的輸出分布和對其他系統(tǒng)的影響,可采取比如預估分布矯正等策略。

 

依賴陷阱

不謹慎的依賴容易導致非常災難性的結(jié)果,但是在實際應(yīng)用中往往會被忽視。常見的依賴有:

數(shù)據(jù)依賴:與傳統(tǒng)軟件系統(tǒng)不同,機器學習系統(tǒng)的表現(xiàn)依賴于外部數(shù)據(jù)。而數(shù)據(jù)依賴相比于代碼依賴會更加可怕,因為很多情況下是隱式的很難察覺或分析。

在大公司中經(jīng)常發(fā)生的情況是模型之間的依賴,在解決某個業(yè)務(wù)問題時,建立了機器學習模型B,為了圖快,依賴了其他團隊模型A的輸出,但是如果依賴的團隊升級了模型A,那么對于B而言將會是災難性的。

 

除了數(shù)據(jù)依賴和模型之間的依賴之外,更難被察覺的是隱性依賴,可能會有一些特征字段會被模型自己改變,比如推薦系統(tǒng)中“用戶點擊推薦文章的次數(shù)”這個特征會隨著推薦模型的升級而發(fā)生改變。

實際應(yīng)用中要密切關(guān)注數(shù)據(jù)依賴,盡量避免產(chǎn)生模型之間的依賴,避免出現(xiàn)隱性依賴。

可理解性/可調(diào)試性陷阱

可理解性/可調(diào)試性最容易被大家忽略。在實際的業(yè)務(wù)應(yīng)用中,經(jīng)常為了追求效果可能會采用非常復雜的模型,然后這個模型可能很難理解,也很難調(diào)試。

對于一些業(yè)務(wù),比如醫(yī)療應(yīng)用、銀行審計等都會需要模型的可理解性。對于可理解性,一種常見的解決方法是說做模型轉(zhuǎn)換,比如說像周志華教授提出的Twice Learning方法,可以把一個非常復雜的應(yīng)用模型,通過Twice Learning的方式轉(zhuǎn)換成一個性能相近的決策樹模型,而決策樹模型是一個比較容易理解的模型。還有一種做法就是對模型的預測結(jié)果給出解釋,比如***的工作LIME借用類似Twice Learning的思想,在局部區(qū)域內(nèi)用可理解模型對復雜模型進行解釋。

可調(diào)試性對于實際應(yīng)用是非常重要的,因為模型幾乎不可能100%正確,而為了追求業(yè)務(wù)效果,容易采用非常復雜的特征和模型,但是在復雜模型和特征情況下沒發(fā)生了bad case,或者想要提升模型性能,會很難分析,導致模型很難提升,不利于后續(xù)的發(fā)展,所以在實際的業(yè)務(wù)中需要選擇適合實際問題和團隊能力的特征、模型復雜度。

 

 

[Twice Learnig和LIME]

總結(jié)

機器學習利用數(shù)據(jù)改善系統(tǒng)性能,是一種數(shù)據(jù)驅(qū)動的實現(xiàn)人工智能的方式,已經(jīng)被廣泛應(yīng)用在各行各業(yè)。隨著實際業(yè)務(wù)數(shù)據(jù)量和數(shù)據(jù)維度的增長,計算能力的不斷提升,機器學習算法的持續(xù)優(yōu)化,工業(yè)應(yīng)用中的機器學習正在從早期的簡單模型宏觀特征轉(zhuǎn)變到現(xiàn)在的復雜模型微觀特征,這樣的轉(zhuǎn)變?yōu)闄C器學習訓練系統(tǒng)的設(shè)計與優(yōu)化帶來了新的挑戰(zhàn)。

機器學習應(yīng)用的核心系統(tǒng)包括數(shù)據(jù)收集、數(shù)據(jù)預處理、模型訓練和模型服務(wù),每個系統(tǒng)對計算、存儲、通訊和一致性的要求都不一樣。對于模型訓練系統(tǒng)而言,由于摩爾定律失效,實際業(yè)務(wù)整體的數(shù)據(jù)量和數(shù)據(jù)維度持續(xù)不斷的增長,機器學習算法的No Free Lunch定理,實際建模過程中頻繁嘗試的需要,計算框架的No Free Lunch,實際的機器學習系統(tǒng)需要一個專門針對機器學習設(shè)計的兼顧開發(fā)效率和執(zhí)行效率的分布式并行計算框架。這次分享首先對解決開發(fā)效率中的計算和編程模型的選擇,編程語言的選擇做了介紹,開發(fā)者需要根據(jù)自己實際的應(yīng)用場景、開發(fā)成本和團隊能力等去做權(quán)衡和選擇。然后又舉例介紹了解決執(zhí)行效率中涉及到的計算、存儲、通訊和容錯的設(shè)計和優(yōu)化。持續(xù)Profiling,迭代消除瓶頸,均衡利用好各種計算資源,盡可能***化各類計算資源的利用率,從而提升整體執(zhí)行效率。

機器學習被應(yīng)用到實際的業(yè)務(wù)中會有很多容易被忽視的陷阱。這次分享對其中常見的各種類型的一致性陷阱、機器學習面對開放世界中的陷阱、機器學習系統(tǒng)中各種依賴的陷阱以及容易被忽視的模型可理解性和可調(diào)試性做了簡單的介紹,同時給出了一些可供參考的解決方案。在實際的機器學習應(yīng)用中需要盡量避免踏入這些陷阱。 

責任編輯:龐桂玉 來源: 36大數(shù)據(jù)
相關(guān)推薦

2017-11-06 10:15:36

機器學習框架Tensorflow

2016-02-25 09:31:02

2017-06-27 15:35:02

機器學習Spark微博應(yīng)用

2017-01-20 08:53:37

數(shù)據(jù)系統(tǒng)架構(gòu)驅(qū)動

2017-09-11 15:19:05

CoCoA機器學習分布式

2016-01-15 09:59:12

機器學習數(shù)據(jù)集

2023-09-08 10:13:35

存儲EC系統(tǒng)

2013-03-22 14:44:52

大規(guī)模分布式系統(tǒng)飛天開放平臺

2025-06-09 10:08:00

KubernetesGo容器

2017-05-23 14:00:26

機器學習編程技術(shù)計算模型

2017-04-19 14:33:48

互聯(lián)網(wǎng)

2016-12-09 10:11:40

機器學習算法庫Fregata

2023-05-26 08:39:44

深度學習Alluxio

2022-07-07 11:00:09

美團模型實踐

2017-08-15 11:04:05

機器學習實際場景

2012-11-05 10:08:01

蘋果iCloud云應(yīng)用

2020-11-16 08:54:05

Google 開源技術(shù)

2023-04-06 16:29:18

模型AI

2017-03-07 13:14:04

深度學習

2025-02-18 09:48:58

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 色婷婷综合网站 | 久久国产精品一区 | 亚洲高清在线 | 国产97视频在线观看 | 999久久久 | 99re国产精品 | 欧美一区二区 | 亚洲欧美在线视频 | 久久亚洲一区 | 国产91一区 | 久久国产精品免费一区二区三区 | 日日夜夜精品 | 久草网在线视频 | 一级做a爰片久久毛片免费看 | 99精品99 | 人人爽人人爽 | 欧美久久国产精品 | 久久国产高清 | 日韩高清不卡 | 国产精品亚洲综合 | 国产精品国产三级国产aⅴ中文 | 成人精品国产一区二区4080 | 久久精品在线免费视频 | 国产精品欧美日韩 | 亚洲欧洲一区 | 最新中文字幕久久 | 综合国产在线 | 国产女人精品视频 | 欧美xxxx性| 色接久久| 国产日韩欧美一区 | 成人综合在线视频 | 日日夜夜天天久久 | 亚洲精品乱码久久久久久按摩观 | 91色在线视频 | 五月综合激情网 | 久操福利 | 视频羞羞 | 日韩av最新网址 | 久久久久久久一区二区三区 | 欧美成人第一页 |