崔建偉,趙 哲,杜小勇
1(數(shù)據(jù)工程與知識工程教育部重點(diǎn)實(shí)驗室(中國人民大學(xué)),北京 100872)
2(中國人民大學(xué) 信息學(xué)院,北京 100872)
人工智能技術(shù)的目標(biāo)是讓機(jī)器在某些方面具備人類的智能能力,從而輔助人類完成各項復(fù)雜任務(wù).數(shù)據(jù)、算力和模型是公認(rèn)的人工智能三要素.近年來,數(shù)據(jù)規(guī)模的快速增長,GPU 等計算設(shè)備迭代迅速,計算能力快速提升;機(jī)器學(xué)習(xí)模型、尤其是基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)技術(shù)不斷演進(jìn).人工智能在圖像識別[1]、語音識別[2]以及智能問答[3]等領(lǐng)域的多項任務(wù)效果已經(jīng)超過真實(shí)人類水平;與此同時,多家科技企業(yè)也將人工智能作為公司重要戰(zhàn)略.
機(jī)器學(xué)習(xí)是目前實(shí)現(xiàn)人工智能的主要途徑,是通過對數(shù)據(jù)進(jìn)行建模而提取知識的過程.傳統(tǒng)的數(shù)據(jù)管理技術(shù)主要支持結(jié)構(gòu)化數(shù)據(jù)交易型應(yīng)用OLTP(online transaction processing)、結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)的分析型應(yīng)用OLAP(online analytics processing)等;非結(jié)化數(shù)據(jù)因為4V[4]的特點(diǎn),目前尚未形成統(tǒng)一的數(shù)據(jù)管理方案.目前,通過機(jī)器學(xué)習(xí)技術(shù)對非結(jié)構(gòu)化數(shù)據(jù)建模而構(gòu)建具備預(yù)測能力的模型,是非結(jié)構(gòu)化數(shù)據(jù)分析的重要手段,因而,機(jī)器學(xué)習(xí)技術(shù)可以理解為是OLTP、OLAP 等之后的自然延伸,思考支持機(jī)器學(xué)習(xí)的數(shù)據(jù)庫技術(shù)正當(dāng)其時.
另一方面,機(jī)器學(xué)習(xí)任務(wù)的一次訓(xùn)練過程包括數(shù)據(jù)選擇、特征抽取、算法選擇、超參數(shù)調(diào)優(yōu)、效果評測等多個子過程;而在訓(xùn)練結(jié)束獲得效果評測后,通常需要人工對模型效果進(jìn)行分析,挖掘模型效果與數(shù)據(jù)、特征和算法之間關(guān)聯(lián),并基于數(shù)據(jù)分析或者人工經(jīng)驗對訓(xùn)練子過程進(jìn)行調(diào)整,重新訓(xùn)練以提升模型效果;這個過程通常會多次循環(huán)迭代進(jìn)行,直到模型效果達(dá)到應(yīng)用要求.顯然,相比與數(shù)據(jù)庫系統(tǒng)的查詢與分析任務(wù),機(jī)器學(xué)習(xí)任務(wù)要復(fù)雜得多.由于機(jī)器學(xué)習(xí)訓(xùn)練子過程和迭代調(diào)整次數(shù)較多,且許多子過程需要人工參與,機(jī)器學(xué)習(xí)的訓(xùn)練過程目前仍然采取以任務(wù)為中心的做法,根據(jù)任務(wù)的特點(diǎn)對訓(xùn)練子過程進(jìn)行定制化優(yōu)化.這種做法人工參與成本較高,且無法在多任務(wù)之間實(shí)現(xiàn)數(shù)據(jù)、特征、模型等資源的復(fù)用,因而存在成本高、效率低、能耗大[5]的問題.如何降低機(jī)器學(xué)習(xí)過程的成本,提高機(jī)器學(xué)習(xí)建模的效率,就成為一個重要的需求.
數(shù)據(jù)管理技術(shù),尤其是數(shù)據(jù)庫和數(shù)據(jù)倉庫系統(tǒng)經(jīng)過多年的發(fā)展,形成了一套獨(dú)特的方法論,包括以數(shù)據(jù)模型為核心、以層次化結(jié)構(gòu)實(shí)現(xiàn)數(shù)據(jù)與應(yīng)用之間的獨(dú)立性、提供面向任務(wù)的描述性語言、通過查詢優(yōu)化技術(shù)提升任務(wù)執(zhí)行效率等.從數(shù)據(jù)管理的角度看,機(jī)器學(xué)習(xí)各個子過程均涉及不同類型的數(shù)據(jù)讀寫、轉(zhuǎn)化和計算,具有顯著的數(shù)據(jù)管理與分析需求.將數(shù)據(jù)庫和數(shù)據(jù)倉庫的關(guān)鍵技術(shù)和系統(tǒng)構(gòu)建經(jīng)驗應(yīng)用于機(jī)器學(xué)習(xí)訓(xùn)練過程,有助于對機(jī)器學(xué)習(xí)形成系統(tǒng)的管理方案,從而提升整體效率.本文對支撐機(jī)器學(xué)習(xí)的主要數(shù)據(jù)管理技術(shù)進(jìn)行整理和歸納,并提出若干研究課題.
本文第1 節(jié)概述人工智能與機(jī)器學(xué)習(xí)的發(fā)展歷史、機(jī)器學(xué)習(xí)主要類別.第2 節(jié)從數(shù)據(jù)管理和系統(tǒng)構(gòu)建的視角對機(jī)器學(xué)習(xí)訓(xùn)練過程進(jìn)行解構(gòu),提出研究框架.第3 節(jié)~第7 節(jié)將具體介紹支撐機(jī)器學(xué)習(xí)的數(shù)據(jù)管理關(guān)鍵技術(shù),包括數(shù)據(jù)選擇、數(shù)據(jù)存儲、數(shù)據(jù)存取、自動優(yōu)化、以及系統(tǒng)構(gòu)建的若干模式.最后,展望支撐機(jī)器學(xué)習(xí)的數(shù)據(jù)庫系統(tǒng)的挑戰(zhàn)與未來研究方向.
人工智能的歷史可以回溯到上世紀(jì)60 年代,早期實(shí)現(xiàn)人工智能主要是基于規(guī)則的方法,對特定領(lǐng)域建立專家系統(tǒng).比如:ELIZIA[6]通過情緒疏導(dǎo)領(lǐng)域的對話規(guī)則總結(jié),最早實(shí)現(xiàn)了人機(jī)對話;早期的機(jī)器翻譯系統(tǒng)也主要是語言學(xué)專家通過總結(jié)不同語言之間的映射規(guī)則而建立.這一時期,人工智能技術(shù)尚缺乏主流的應(yīng)用,主要有兩方面的原因:一是基于規(guī)則的方法通常只能處理已出現(xiàn)的請求,不具備通用預(yù)測能力,對新請求的預(yù)測效果較差;二是基于規(guī)則的方法需要人工總結(jié)大量規(guī)則,其構(gòu)建成本高且難以維護(hù).
進(jìn)入20 世紀(jì)90 年代,隨著數(shù)據(jù)不斷積累以及統(tǒng)計模型持續(xù)改進(jìn),機(jī)器學(xué)習(xí),也就是通過從已有的數(shù)據(jù)和經(jīng)驗中構(gòu)建具備預(yù)測能力的模型,成為實(shí)現(xiàn)人工智能的主要途徑,并在許多領(lǐng)域逐漸實(shí)現(xiàn)了效果突破.比較有代表性的工作包括基于統(tǒng)計模型的語音識別系統(tǒng)的識別錯誤率顯著降低、基于統(tǒng)計機(jī)器翻譯的效果有了顯著提升.相對于基于規(guī)則的方法,機(jī)器學(xué)習(xí)方法優(yōu)勢顯著:一方面,機(jī)器學(xué)習(xí)模型的通用預(yù)測能力較強(qiáng),能夠從數(shù)據(jù)中學(xué)習(xí)到隱藏的模式,更好地響應(yīng)未出現(xiàn)的新請求;另一方面,機(jī)器學(xué)習(xí)通過從數(shù)據(jù)中直接學(xué)習(xí)知識,相對于人工總結(jié)規(guī)則,維護(hù)成本大大降低;通過不斷的積累和清洗數(shù)據(jù),通常能持續(xù)維護(hù)和提升機(jī)器學(xué)習(xí)模型的效果.這一時期,數(shù)據(jù)逐漸成為決定機(jī)器學(xué)習(xí)和人工智能效果的核心要素,在數(shù)據(jù)資源豐富的領(lǐng)域,語音識別和機(jī)器翻譯已經(jīng)逐漸實(shí)用.
進(jìn)入20 世紀(jì),互聯(lián)網(wǎng)快速發(fā)展,搜索引擎、社交網(wǎng)絡(luò)等互聯(lián)網(wǎng)應(yīng)用快速推廣,文本、圖片、語音、用戶行為等數(shù)據(jù)快速積累;與此同時,機(jī)器學(xué)習(xí)模型也進(jìn)一步改進(jìn),兩者相互促進(jìn),推動機(jī)器學(xué)習(xí)成為搜索、社交網(wǎng)絡(luò)等重要應(yīng)用的核心技術(shù).以文本理解為例,SVM[7],CRF[8],LDA[9]等模型成為互聯(lián)網(wǎng)內(nèi)容理解的主要工具,幫助用戶快速找到需要的文檔.這一時期,支撐機(jī)器的訓(xùn)練數(shù)據(jù)已經(jīng)極大豐富,從數(shù)據(jù)中抽取和選擇能夠表達(dá)數(shù)據(jù)特性的特征,通常稱為特征抽取或特征工程,成為決定機(jī)器學(xué)習(xí)效果的另一重要要素.以搜索引擎排序為例,通常需要從原數(shù)據(jù)抽取千級別以上的特征數(shù)量,并通過Learning to rank[10]等方法決定不同特征對于排序任務(wù)的重要程度.對于文本數(shù)據(jù),tfidf,ngram 等特征能夠一定程度表達(dá)文本潛在語義,對各類下游任務(wù),如分類、聚類等任務(wù)都能起到較好的數(shù)據(jù)區(qū)分作用;而對于語音、圖片等類型的數(shù)據(jù),當(dāng)時特征抽取的方法還不足夠表達(dá)數(shù)據(jù)的潛在語義,因而語音識別和圖片理解任務(wù)效果尚未進(jìn)一步取得顯著突破.
2010 年以來,隨著計算密集型硬件GPU,FPGA 等的快速迭代,基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)技術(shù)在人機(jī)對弈、語音、圖像處理等領(lǐng)域效果取得了顯著提升.以圖像識別為例,通過在海量圖片數(shù)據(jù)ImageNet[1]上進(jìn)行學(xué)習(xí),深度卷積網(wǎng)絡(luò)在某些圖片分類的效果已經(jīng)超越人類水平.深度學(xué)習(xí)通過神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)進(jìn)行端到端的特征抽取和建模,將兩者統(tǒng)一到神經(jīng)網(wǎng)絡(luò)的計算中,通過神經(jīng)網(wǎng)絡(luò)逐層計算,形成對原數(shù)據(jù)不同粒度的特征抽象.實(shí)際表現(xiàn)證明:這種端到端的建模方式在許多任務(wù)上都能帶來效果提升,尤其是對語音、圖片等原始數(shù)據(jù)輸入的任務(wù),人工設(shè)計特征通常難以表達(dá)潛在的語義,深度學(xué)習(xí)的方法會帶來顯著提升.深度學(xué)習(xí)算法因為表達(dá)能力更強(qiáng)、自動進(jìn)行特征抽取和選擇,最近幾年推動了人工智能技術(shù)廣泛應(yīng)用.通常來講,深度學(xué)習(xí)算法依賴的訓(xùn)練數(shù)據(jù)規(guī)模更大,訓(xùn)練周期更長.比如近期快速發(fā)展的預(yù)訓(xùn)練技術(shù)[3,11],預(yù)訓(xùn)練階段可能需要在T 級別的數(shù)據(jù)上訓(xùn)練,即使在多臺GPU 機(jī)器上也需要數(shù)周的訓(xùn)練時間.
總之,機(jī)器學(xué)習(xí)訓(xùn)練是通過對已有數(shù)據(jù)進(jìn)行抽象,構(gòu)建具有預(yù)測能力模型的過程.數(shù)據(jù)、特征、算法是影響訓(xùn)練效果的重要因素.從發(fā)展趨勢上看,機(jī)器學(xué)習(xí)算法復(fù)雜度不斷增加,依賴的數(shù)據(jù)規(guī)模不斷增大,提升效率、降低成本,將成為決定機(jī)器學(xué)習(xí)廣泛應(yīng)用的關(guān)鍵因素.
通常來講,可以將機(jī)器學(xué)習(xí)算法分為監(jiān)督學(xué)習(xí)、非監(jiān)督學(xué)習(xí)、強(qiáng)化學(xué)習(xí)等主要類別,機(jī)器學(xué)習(xí)訓(xùn)練過程可以表達(dá)為基于訓(xùn)練數(shù)據(jù)最小化損失函數(shù)的過程.對于監(jiān)督學(xué)習(xí),訓(xùn)練數(shù)據(jù)同時包含輸入數(shù)據(jù)和數(shù)據(jù)標(biāo)簽,通過學(xué)習(xí)輸入數(shù)據(jù)和數(shù)據(jù)標(biāo)簽之間的映射關(guān)系來優(yōu)化目標(biāo);對于非監(jiān)督學(xué)習(xí),訓(xùn)練數(shù)據(jù)不包含數(shù)據(jù)標(biāo)簽,通常是通過學(xué)習(xí)數(shù)據(jù)潛在結(jié)構(gòu)來優(yōu)化訓(xùn)練目標(biāo);強(qiáng)化學(xué)習(xí)則通過數(shù)據(jù)構(gòu)建代理與模擬環(huán)境,通過代理與環(huán)境的交互獲得反饋來實(shí)現(xiàn)目標(biāo)優(yōu)化.
圖1 抽象了主要機(jī)器學(xué)習(xí)類別通用訓(xùn)練過程.對于特定任務(wù)和給定原始訓(xùn)練數(shù)據(jù)情況下,訓(xùn)練過程通常首先進(jìn)行數(shù)據(jù)選擇和特征抽取,選擇出任務(wù)相關(guān)的數(shù)據(jù)、并抽取具備區(qū)分能力的特征.接下來,由于同一任務(wù)可以使用多種算法,需要根據(jù)任務(wù)、數(shù)據(jù)和特征選擇適合的算法.之后開始模型訓(xùn)練,許多算法需要在數(shù)據(jù)上多次迭代逐漸優(yōu)化目標(biāo)函數(shù).在得到訓(xùn)練模型后,需要做效果評測,監(jiān)督學(xué)習(xí)通常在對訓(xùn)練不可見的測試數(shù)據(jù)上進(jìn)行,計算出準(zhǔn)確率、召回率等指標(biāo);非監(jiān)督學(xué)習(xí)可以通過先驗指標(biāo)或人工的方式評測.上述整個過程可以稱為一次訓(xùn)練嘗試,之后分析評測發(fā)現(xiàn)的問題,通常會調(diào)整數(shù)據(jù)選擇、特征抽取、算法選擇等步驟,進(jìn)行下一次嘗試,如此循環(huán),直到評測效果滿足要求.
Fig.1 Training process of machine learning圖1 機(jī)器學(xué)習(xí)訓(xùn)練過程
首先,從數(shù)據(jù)的視角分析機(jī)器學(xué)習(xí)訓(xùn)練過程,討論子過程的數(shù)據(jù)存取與計算,梳理數(shù)據(jù)管理與分析需求;其次,將機(jī)器學(xué)習(xí)任務(wù)看作訓(xùn)練數(shù)據(jù)上的一類查詢請求,討論在任務(wù)與數(shù)據(jù)之間構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng)的必要性,以及系統(tǒng)需要具備的功能;最后,基于上述分析,從數(shù)據(jù)管理、自動優(yōu)化和系統(tǒng)設(shè)計與實(shí)現(xiàn)這3 個方面歸納支撐機(jī)器學(xué)習(xí)的數(shù)據(jù)管理與技術(shù),提出本文研究框架.
基于圖1 所示的機(jī)器學(xué)習(xí)訓(xùn)練過程,圖2 給出了各個子過程的數(shù)據(jù)處理流程.從各個子過程看,數(shù)據(jù)選擇對于同一份原始數(shù)據(jù)可以針對任務(wù)形成不同的選擇結(jié)果,輸出多份中間數(shù)據(jù);數(shù)據(jù)選擇之后,特征抽取需要抽取各種類型的候選特征供后續(xù)算法嘗試;算法選擇需要基于任務(wù)需求、數(shù)據(jù)和特征的統(tǒng)計信息選擇算法并確定超參數(shù),比如對輸入文本抽樣分析確定聚類算法和聚類個數(shù)等超參數(shù);模型訓(xùn)練在迭代優(yōu)化過程中會產(chǎn)生多個中間結(jié)果模型以及最終模型;效果評測則需要依賴最終模型和評測數(shù)據(jù),產(chǎn)出準(zhǔn)確率、召回率等測試結(jié)果;而問題發(fā)現(xiàn)與分析除了參考測試結(jié)果,也需要分析每個子過程輸入輸出數(shù)據(jù)之間的關(guān)聯(lián).可以看出,機(jī)器學(xué)習(xí)過程涉及多種類型、多個步驟的數(shù)據(jù)讀寫和分析,具有顯著的數(shù)據(jù)管理與分析需求.
Fig.2 Data flow for training process of machine learning圖2 機(jī)器學(xué)習(xí)訓(xùn)練數(shù)據(jù)處理
圖2 所示的訓(xùn)練過程需要多輪嘗試,以獲得優(yōu)化的模型效果.通常來說,下輪訓(xùn)練嘗試會基于當(dāng)前模型效果對相關(guān)步驟進(jìn)行一些調(diào)整,比如根據(jù)評測結(jié)果新選擇一些相關(guān)的訓(xùn)練數(shù)據(jù)、增加或減少一些特征,之后進(jìn)入新一輪訓(xùn)練.這個過程會進(jìn)行多次,直到模型效果達(dá)到要求.同一任務(wù)的多輪訓(xùn)練,為數(shù)據(jù)復(fù)用提供了潛在機(jī)會.比如在當(dāng)前特征集合,相對于上一輪如果只減少某個特征,那么可以較大比例地復(fù)用上一輪特征,避免重復(fù)特征抽取;比如當(dāng)前輪只調(diào)整了超參數(shù),則可以完全復(fù)用上一輪的數(shù)據(jù)和特征.
總結(jié)而言,從數(shù)據(jù)的視角看,機(jī)器學(xué)習(xí)可以看作是一個循環(huán)進(jìn)行的多步數(shù)據(jù)處理與分析過程,具有顯著的數(shù)據(jù)管理與分析需求和數(shù)據(jù)復(fù)用潛力.因此,數(shù)據(jù)管理與分析技術(shù)在機(jī)器學(xué)習(xí)中有重要應(yīng)用.
從系統(tǒng)的視角看,機(jī)器學(xué)習(xí)訓(xùn)練可以看作是輸入數(shù)據(jù)上的一類查詢操作.如圖3 所示:訓(xùn)練請求的描述作為硬件環(huán)境和訓(xùn)練數(shù)據(jù)之上的查詢條件,模型作為查詢結(jié)果.與數(shù)據(jù)庫統(tǒng)計查詢相比,機(jī)器學(xué)習(xí)通過算法挖掘數(shù)據(jù)潛在模式并形成預(yù)測功能,因而查詢的計算邏輯更加復(fù)雜.訓(xùn)練請求的描述通常是算法的邏輯表達(dá),映射為訓(xùn)練數(shù)據(jù)和硬件環(huán)境上的物理執(zhí)行需要較多的轉(zhuǎn)化和優(yōu)化工作;比如,需要考慮多種類型的數(shù)據(jù)存儲和讀取方式、以及考慮硬件的計算能力和內(nèi)存限制合理調(diào)度計算.人工進(jìn)行上述轉(zhuǎn)化和優(yōu)化需要較多的系統(tǒng)優(yōu)化經(jīng)驗,工作量較大且優(yōu)化的方法難以在不同任務(wù)間復(fù)用.因此,在訓(xùn)練任務(wù)和數(shù)據(jù)與硬件環(huán)境之間構(gòu)建通用的機(jī)器學(xué)習(xí)系統(tǒng),對各類機(jī)器學(xué)習(xí)算法效率進(jìn)行整體優(yōu)化,有利于提升模型構(gòu)建和訓(xùn)練的效率.
基于機(jī)器學(xué)習(xí)訓(xùn)練過程的計算特點(diǎn),機(jī)器學(xué)習(xí)系統(tǒng)需要包含3 項重要功能.
? 語言處理功能.使用機(jī)器學(xué)習(xí)領(lǐng)域描述性語言進(jìn)行建模,比如矩陣運(yùn)算等;描述性語言建模過程較快、新算法支持靈活,構(gòu)建過程只需要關(guān)注任務(wù)和算法本身而忽略執(zhí)行細(xì)節(jié);系統(tǒng)需要完成描述性語言向?qū)嶋H數(shù)據(jù)的讀寫和硬件上計算的轉(zhuǎn)換;
? 查詢優(yōu)化功能.訓(xùn)練環(huán)境通常存在異構(gòu)硬件,描述語言指定的訓(xùn)練過程通常有多種物理實(shí)現(xiàn)方式;系統(tǒng)通過自動優(yōu)化技術(shù),為任務(wù)自動生成優(yōu)化的物理實(shí)現(xiàn),減少人工參與優(yōu)化過程,整體提升訓(xùn)練效率,也能夠?qū)崿F(xiàn)上層語言構(gòu)建的模型在不同硬件環(huán)境執(zhí)行;
? 數(shù)據(jù)存儲與存取功能.基于數(shù)據(jù)自身結(jié)構(gòu)特點(diǎn),實(shí)現(xiàn)任務(wù)無關(guān)的存儲和讀取優(yōu)化,整體優(yōu)化存儲成本的存取效率;同時,通過對多任務(wù)數(shù)據(jù)的系統(tǒng)管理,挖掘數(shù)據(jù)復(fù)用機(jī)會.
Fig.3 Machine learning as query request and system support圖3 機(jī)器學(xué)習(xí)查詢請求與系統(tǒng)支持
總結(jié)而言,從系統(tǒng)角度看,機(jī)器學(xué)習(xí)訓(xùn)練可以看作一類復(fù)雜分析的數(shù)據(jù)查詢請求.通過系統(tǒng)支撐訓(xùn)練過程,能夠提升建模速度、挖掘多任務(wù)之間的語義關(guān)聯(lián),通過任務(wù)間數(shù)據(jù)復(fù)用提升整體存儲和計算效率.
當(dāng)前,機(jī)器學(xué)習(xí)訓(xùn)練過程以任務(wù)為中心的方式進(jìn)行,為特定任務(wù)進(jìn)行數(shù)據(jù)存儲和計算優(yōu)化,尚未形成整體的數(shù)據(jù)管理和系統(tǒng)性優(yōu)化方案.基于前文對機(jī)器學(xué)習(xí)訓(xùn)練過程的數(shù)據(jù)管理和系統(tǒng)支撐需求分析,提出如圖4 所示的研究框架,對支持人工智能的數(shù)據(jù)管理與分析技術(shù)進(jìn)行歸納與總結(jié),梳理技術(shù)現(xiàn)狀,提出優(yōu)化方向.
Fig.4 Research framework of data management technologies for maching learning圖4 支撐機(jī)器學(xué)習(xí)的數(shù)據(jù)管理技術(shù)研究框架
數(shù)據(jù)管理技術(shù)以訓(xùn)練過程中各類數(shù)據(jù)作為對象,從數(shù)據(jù)選擇、存儲和存取方面總結(jié)和梳理現(xiàn)有技術(shù)在選擇任務(wù)相關(guān)的訓(xùn)練數(shù)據(jù)、存儲和讀寫效率優(yōu)化方面的工作,并提出機(jī)器學(xué)習(xí)數(shù)據(jù)管理新研究方向.自動優(yōu)化技術(shù)將借鑒數(shù)據(jù)庫查詢優(yōu)化經(jīng)驗,梳理對描述性語言進(jìn)行邏輯計劃改寫、物理計劃生成和自動模型選擇方面的工作;機(jī)器學(xué)習(xí)計算通常更為復(fù)雜,自動優(yōu)化技術(shù)還有較大發(fā)展空間,提出后續(xù)優(yōu)化方向.系統(tǒng)設(shè)計與實(shí)現(xiàn)將討論實(shí)現(xiàn)機(jī)器學(xué)習(xí)系統(tǒng)的不同方法,包括基于數(shù)據(jù)庫系統(tǒng)并進(jìn)行淺層或深度的融合方法以及基于數(shù)據(jù)庫設(shè)計思想在數(shù)據(jù)庫之外獨(dú)立實(shí)現(xiàn),以最大限度復(fù)用系統(tǒng)已有的功能和實(shí)現(xiàn)經(jīng)驗.未來,隨著機(jī)器學(xué)習(xí)技術(shù)廣泛應(yīng)用,在線機(jī)器學(xué)習(xí)需求顯著,提出數(shù)據(jù)管理與分析技術(shù)的挑戰(zhàn)和研究新方向.
3 個維度的關(guān)系是:數(shù)據(jù)管理技術(shù)和自動優(yōu)化技術(shù)為在訓(xùn)練過程可以獨(dú)立運(yùn)用的局部優(yōu)化,也是機(jī)器學(xué)習(xí)系統(tǒng)的核心功能;機(jī)器學(xué)習(xí)系統(tǒng)的實(shí)現(xiàn)則是從全局的角度實(shí)現(xiàn)各類技術(shù)的合理集成,一方面為機(jī)器學(xué)習(xí)訓(xùn)練提供完整的系統(tǒng)支持;另一方面,也為各項優(yōu)化技術(shù)持續(xù)改進(jìn)提供平臺支撐.
數(shù)據(jù)選擇是從原始輸入數(shù)據(jù)中選擇與機(jī)器學(xué)習(xí)任務(wù)相關(guān)訓(xùn)練數(shù)據(jù)的過程.原始輸入數(shù)據(jù)通常規(guī)模較大,包含重復(fù)或者與訓(xùn)練任務(wù)不相關(guān)的數(shù)據(jù),直接在原始輸入數(shù)據(jù)上訓(xùn)練可能面臨訓(xùn)練周期長、任務(wù)效果不夠優(yōu)化的問題.因此,自動選擇與任務(wù)相關(guān)的語料將有助于提升訓(xùn)練效果與效率.數(shù)據(jù)選擇的主要挑戰(zhàn)是建立訓(xùn)練數(shù)據(jù)之間、訓(xùn)練數(shù)據(jù)與訓(xùn)練任務(wù)和算法之間的關(guān)聯(lián)性,進(jìn)而選擇出數(shù)據(jù)規(guī)模適中對訓(xùn)練任務(wù)和算法效果幫助最大的訓(xùn)練數(shù)據(jù)子集.本節(jié)將首先介紹任務(wù)無關(guān)的方法,通過少量數(shù)據(jù)能夠覆蓋全量數(shù)據(jù)的語義空間;其次介紹任務(wù)相關(guān)的方法,從通用的訓(xùn)練數(shù)據(jù)中選擇與任務(wù)領(lǐng)域相關(guān)的數(shù)據(jù);最后介紹算法相關(guān)的方法,自動選擇對算法效果影響較大的訓(xùn)練數(shù)據(jù).
數(shù)據(jù)通常可以表達(dá)為高維空間中的向量,訓(xùn)練數(shù)據(jù)集可以看成是高維空間中的區(qū)域.任務(wù)無關(guān)的方法通?;趨^(qū)域覆蓋,假設(shè)原始數(shù)據(jù)包含重復(fù)、相似或相關(guān)的數(shù)據(jù),可以選擇一組規(guī)模較小且相互獨(dú)立的數(shù)據(jù)來覆蓋原數(shù)據(jù)在高維空間中的區(qū)域.因此,在選擇后的數(shù)據(jù)上的訓(xùn)練效果不會明顯降低,但效率可能顯著提升.常用的任務(wù)無關(guān)的數(shù)據(jù)選擇方法包括采樣算法和基于相似度計算.
隨機(jī)采樣是常用的采樣算法,隨機(jī)抽取一定數(shù)量的數(shù)據(jù)作為采樣集用于后續(xù)訓(xùn)練.當(dāng)數(shù)據(jù)在高維空間中分布較均勻時,采樣集通常能夠較好地覆蓋原始數(shù)據(jù)區(qū)域.但對于分布不均勻的情況,比如分類問題中不同類別訓(xùn)練數(shù)據(jù)量差異較大,隨機(jī)采樣可能會漏掉部分類別的訓(xùn)練數(shù)據(jù),或者需要較多次采樣才能覆蓋.Coresets[12]是一種更復(fù)雜的采樣技術(shù),首先通過數(shù)據(jù)向量表達(dá)計算之間的相關(guān)性,得到每條數(shù)據(jù)被選擇的概率以反映所在高維空間的分布,之后按照選擇概率抽樣.Coresets 所需的采樣次數(shù)通常與原始數(shù)據(jù)向量表達(dá)的維度有關(guān),與原始數(shù)據(jù)量無關(guān);對于數(shù)據(jù)量大但維度較小的情況,能以很少的采樣數(shù)量覆蓋原始數(shù)據(jù)區(qū)域.
基于相似度計算的方法通過定義和數(shù)據(jù)間相似度計算,選擇互相之間相似度較低的子集來表達(dá)完整的原始數(shù)據(jù)集.通常來講,數(shù)據(jù)可以表達(dá)為向量,相似度可以通過余弦計算.比如對于文本數(shù)據(jù),可以通過文檔向量模型表達(dá)數(shù)據(jù).近年來,深度神經(jīng)網(wǎng)絡(luò)被廣泛用于抽取數(shù)據(jù)的潛在語義的向量表達(dá),比如:可以使用詞向量[13]、句向量[14]來表達(dá)文本,可以通過卷積神經(jīng)網(wǎng)絡(luò)的隱層向量來表達(dá)圖片,通過遞歸神經(jīng)網(wǎng)絡(luò)的隱層向量來表達(dá)語音.獲得相似度后,可以增量添加的進(jìn)行數(shù)據(jù)選擇.比如:先隨機(jī)選擇一條數(shù)據(jù),之后優(yōu)先選擇并添加與所有已選擇數(shù)據(jù)均不相似的數(shù)據(jù);也可以通過聚類的方法,比如采用k-means 等算法將數(shù)據(jù)進(jìn)行分類,之后從個聚類中選擇一定量的數(shù)據(jù)形成對原始數(shù)據(jù)的覆蓋.
對于監(jiān)督學(xué)習(xí)任務(wù),通常會面臨缺乏任務(wù)領(lǐng)域相關(guān)的訓(xùn)練數(shù)據(jù)的挑戰(zhàn):一方面,某些領(lǐng)域的訓(xùn)練數(shù)據(jù)本身比較稀缺,如低資源語言的機(jī)器翻譯任務(wù);另一方面,在實(shí)際產(chǎn)品中,機(jī)器學(xué)習(xí)模型的領(lǐng)域數(shù)據(jù)通常依賴于用戶對產(chǎn)品的請求,在產(chǎn)品被廣泛使用前,通常缺乏領(lǐng)域數(shù)據(jù).任務(wù)相關(guān)的數(shù)據(jù)選擇技術(shù)方法基于少量的領(lǐng)域相關(guān)的訓(xùn)練數(shù)據(jù),從海量通用數(shù)據(jù)中選擇與任務(wù)領(lǐng)域相關(guān)的數(shù)據(jù)擴(kuò)充訓(xùn)練數(shù)據(jù),通常能夠顯著提升數(shù)據(jù)稀缺的訓(xùn)練任務(wù).本節(jié)將介紹兩類基于領(lǐng)域的數(shù)據(jù)選擇方法——基于生成的方法和基于判別的方法.
? 基于生成的方法首先基于少量領(lǐng)域數(shù)據(jù)學(xué)習(xí)領(lǐng)域相關(guān)生成式模型,如語言模型、AutoEncoder[15]等,學(xué)習(xí)領(lǐng)域相關(guān)數(shù)據(jù)的潛在結(jié)構(gòu);之后,利用生成式模型計算通用數(shù)據(jù)的生成概率,選擇生成概率較大的數(shù)據(jù)用于后續(xù)訓(xùn)練[16,17].也可以在領(lǐng)域數(shù)據(jù)和通用數(shù)據(jù)上各訓(xùn)練一個生成式模型,如果數(shù)據(jù)在兩個生成式模型的生成概率類似,則將通用數(shù)據(jù)用于后續(xù)訓(xùn)練.以自然語言處理任務(wù)為例,可以使用領(lǐng)域相關(guān)的數(shù)據(jù)訓(xùn)練神經(jīng)語言模型,之后對通用領(lǐng)域的數(shù)據(jù)進(jìn)行解碼,并基于解碼得到的困惑度(perplexity)[18]來表示生成概率,進(jìn)而選擇困惑度較低的數(shù)據(jù)加入訓(xùn)練;
? 基于判別的方法將領(lǐng)域相關(guān)的數(shù)據(jù)作為正樣本,從通用數(shù)據(jù)中隨機(jī)采樣數(shù)據(jù)作為負(fù)樣本,基于正負(fù)樣本構(gòu)建領(lǐng)域數(shù)據(jù)分類器,學(xué)習(xí)領(lǐng)域相關(guān)和領(lǐng)域無關(guān)數(shù)據(jù)之間分布上的差異,通過分類選擇正向分類概率較高的數(shù)據(jù)輸入后續(xù)訓(xùn)練使用[19].由于領(lǐng)域相關(guān)的數(shù)據(jù)規(guī)模較小,分類器的效果可能較差,可以通過融入半監(jiān)督特征增強(qiáng)分類器的效果.比如對于文本數(shù)據(jù),可以先在海量非監(jiān)督語料上訓(xùn)練語言模型,獲得任務(wù)無關(guān)的通用語言序列和結(jié)構(gòu)表達(dá)能力,之后將通用語言模型在正負(fù)樣本的隱藏層輸出作為特征,與正負(fù)樣本一起訓(xùn)練領(lǐng)域數(shù)據(jù)分類器,通常能夠獲得更好的分類效果.
算法相關(guān)的方法選擇對具體算法效果提升最大的數(shù)據(jù)用于訓(xùn)練.與任務(wù)相關(guān)的數(shù)據(jù)選擇方法相比,算法相關(guān)的方法更能體現(xiàn)特定算法對訓(xùn)練數(shù)據(jù)的區(qū)分度差異.比如:對于同一分類任務(wù),通常有邏輯回歸、支持向量積等不同算法,可能會將原始數(shù)據(jù)映射到不同的高維空間,因此,優(yōu)化不同算法依賴的數(shù)據(jù)分布可能不同,需要針對性的選擇.算法相關(guān)的方法總體基于主動學(xué)習(xí)[20]的思路,基于模型當(dāng)前預(yù)測能力計算數(shù)據(jù)對當(dāng)前模型的效果提升,選擇提升最大的數(shù)據(jù)用于后續(xù)模型訓(xùn)練.本節(jié)將分別從基于增量選擇的方法和基于數(shù)據(jù)加權(quán)的方法兩個方面介紹.
? 增量選擇的方法首先基于少量的領(lǐng)域相關(guān)數(shù)據(jù)訓(xùn)練初始模型,之后使用初始模型預(yù)測通用數(shù)據(jù),選擇最容易預(yù)測錯誤的數(shù)據(jù)加入訓(xùn)練.如此循環(huán),直到模型效果符合預(yù)期[21].判斷預(yù)測是否容易發(fā)生錯誤,可以基于模型對預(yù)測結(jié)果的置信度.對于分類任務(wù),置信度可以通過概率最高的類與次高的類之間的差異來評估,差異越小,則置信度越低;也可以根據(jù)多個類別上概率的交叉熵來評估,交叉熵越高,置信度越低.對于生成類任務(wù),置信度可以基于模型生成的結(jié)果與真實(shí)結(jié)果的差異來評估.增量選擇方法只在選擇后的數(shù)據(jù)上訓(xùn)練,通常效率更高,但可能遺漏部分對模型效果有提升的數(shù)據(jù);
? 基于加權(quán)的方法首先在全量通用數(shù)據(jù)上進(jìn)行一輪訓(xùn)練得到初始模型,后續(xù)迭代過程中,逐步增加當(dāng)前輪模型容易預(yù)測錯誤的數(shù)據(jù)權(quán)重,以快速提升模型在整體數(shù)據(jù)上的預(yù)測效果[22].目標(biāo)函數(shù)的優(yōu)化通常會在數(shù)據(jù)上多次迭代進(jìn)行,比如采用隨機(jī)梯度下降等方法,模型每次迭代都學(xué)習(xí)到訓(xùn)練數(shù)據(jù)的部分知識.可以使用當(dāng)前迭代模型對數(shù)據(jù)進(jìn)行預(yù)測,如果置信度較高,則說明已經(jīng)學(xué)習(xí)到該條數(shù)據(jù)的知識,后續(xù)訓(xùn)練可以降低該條數(shù)據(jù)的權(quán)重;反之則可以增加該條數(shù)據(jù)的權(quán)重.置信度的計算與任務(wù)相關(guān)的方法中的介紹類似.基于加權(quán)的方法由于首先在全量數(shù)據(jù)上進(jìn)行訓(xùn)練,通過逐漸增加重要訓(xùn)練數(shù)據(jù)的權(quán)重而避免直接丟棄部分訓(xùn)練數(shù)據(jù),通??梢员A粲?xùn)練數(shù)據(jù)的整體知識,模型魯棒性更強(qiáng);但相對于基于增量的方法,訓(xùn)練周期可能更長.
數(shù)據(jù)是影響訓(xùn)練效果的源頭性因素,數(shù)據(jù)選擇是模型訓(xùn)練效果和效率重要決定因素.上述3 類數(shù)據(jù)選擇方法總體是基于單任務(wù)的一輪訓(xùn)練過程,將來優(yōu)化方向包括:1)在單任務(wù)多輪訓(xùn)練訓(xùn)練場景下,如何復(fù)用前輪的數(shù)據(jù)選擇結(jié)果優(yōu)化當(dāng)前輪數(shù)據(jù)選擇的效率;2)在多任務(wù)訓(xùn)練的場景下,如何復(fù)用相關(guān)任務(wù)的數(shù)據(jù)選擇結(jié)果優(yōu)化當(dāng)前任務(wù)數(shù)據(jù)選擇的效率.
機(jī)器學(xué)習(xí)訓(xùn)練過程會讀取或產(chǎn)生多種類型的數(shù)據(jù),對各類數(shù)據(jù)進(jìn)行合理存儲,是后續(xù)數(shù)據(jù)存取與分析的基礎(chǔ).面向機(jī)器學(xué)習(xí)的數(shù)據(jù)存儲技術(shù)面臨許多挑戰(zhàn):首先,訓(xùn)練過程中需要輸入和產(chǎn)生的多種類型的數(shù)據(jù),包括結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)和非結(jié)構(gòu)化數(shù)據(jù),需要依賴多類型存儲系統(tǒng)形成統(tǒng)一的存儲方案;其次,建模和訓(xùn)練過程通常需要多次迭代優(yōu)化模型效果,同一數(shù)據(jù)會生成多個版本,需要兼顧多版本存儲成本和讀取效率;最后,隨著數(shù)據(jù)規(guī)模增大,壓縮技術(shù)能夠提升數(shù)據(jù)讀寫效率,需要基于數(shù)據(jù)之間的關(guān)聯(lián),探索壓縮比更高且計算開銷更友好的壓縮算法.本節(jié)將針對上述挑戰(zhàn)討論和總結(jié)相關(guān)工作.
機(jī)器學(xué)習(xí)訓(xùn)練過程主要涉及的數(shù)據(jù)類型為訓(xùn)練數(shù)據(jù)、特征和模型,同時也涉及訓(xùn)練日志、評測結(jié)果等相關(guān)數(shù)據(jù).首先介紹主要數(shù)據(jù)類型的常用存儲方法,其次介紹相關(guān)數(shù)據(jù)存儲,體現(xiàn)數(shù)據(jù)間關(guān)聯(lián)、幫助問題分析.
對于結(jié)構(gòu)化的訓(xùn)練數(shù)據(jù),可以采用關(guān)系數(shù)據(jù)庫表存儲;半結(jié)構(gòu)化訓(xùn)練數(shù)據(jù)可以存儲在KV 系統(tǒng)中,或者采用JSON,XML 等可以靈活擴(kuò)展屬性的格式存儲在文件中.TFRecord[23]是一種靈活和緊湊的文件格式,采用Protobuf[24]可以自解析地表達(dá)任意類型數(shù)據(jù),內(nèi)部采用二進(jìn)制存儲,方便分塊壓縮以及機(jī)器間網(wǎng)絡(luò)傳輸;對于大規(guī)模訓(xùn)練數(shù)據(jù),采用TFRecord 格式存儲將有利于進(jìn)行分布式處理.特征數(shù)據(jù)通常表達(dá)為矩陣:行表示數(shù)據(jù),列表示不同維度的特征.列較少的特征矩陣可以存儲在關(guān)系表中,以表屬性存儲列;較大規(guī)模的特征矩陣可以采用TFRecord 等文件格式分塊或者整體存儲.模型一般表達(dá)為參數(shù)矩陣之間的有向無環(huán)圖,可以用通用的格式ONNX[25]來存儲,不同類型機(jī)器學(xué)習(xí)框架的模型存儲格式可能不同.
除了數(shù)據(jù)、特征和模型,訓(xùn)練過程還包括任務(wù)描述、超參數(shù)、損失函數(shù)變化等多類信息,需要形成統(tǒng)一存儲方案來體現(xiàn)數(shù)據(jù)之間的關(guān)聯(lián).ModelDB[26]以模型為中心,關(guān)聯(lián)存儲依賴的訓(xùn)練數(shù)據(jù)、特征、超參數(shù)、評測結(jié)等數(shù)據(jù),支持查看和追蹤訓(xùn)練過程數(shù)據(jù)流.同時,為方便訓(xùn)練過程問題發(fā)現(xiàn)與分析,可以基于數(shù)據(jù)沿襲[27]技術(shù)存儲數(shù)據(jù)選擇、特征抽取等過程細(xì)粒度數(shù)據(jù)變換的映射關(guān)系,方便正向和反向的溯源查找.
機(jī)器學(xué)習(xí)訓(xùn)練過程迭代進(jìn)行,同一份數(shù)據(jù)可能產(chǎn)生多個版本.首先,同一任務(wù)的一輪訓(xùn)練過程通常需要在輸入數(shù)據(jù)上迭代優(yōu)化目標(biāo)函數(shù),每次迭代都會產(chǎn)生一個模型版本;其次,機(jī)器學(xué)習(xí)模型調(diào)優(yōu)的過程通常需要多輪訓(xùn)練嘗試,每輪訓(xùn)練可能會對數(shù)據(jù)、特征和模型進(jìn)行調(diào)整,形成多個版本.本節(jié)介紹首先介紹多版本數(shù)據(jù)通用存儲方法,接下來分別介紹針對訓(xùn)練數(shù)據(jù)和模型的優(yōu)化存儲方案.
對于多版本存儲需求,數(shù)據(jù)庫和文件系統(tǒng)已經(jīng)有成熟的解決方案.HBase[28]等數(shù)據(jù)庫系統(tǒng)以及AWS S3[29]等文件系統(tǒng)均原生支持多版本存儲,可以分別存儲訓(xùn)練過程中的結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù).可以配置同一數(shù)據(jù)允許存儲的最大版本數(shù),避免存儲過多版本;也可以通過設(shè)置最長過期時間(time-to-service)來清理長期未適用的版本.
對于訓(xùn)練數(shù)據(jù),同一任務(wù)多次迭代訓(xùn)練形成的多個版本之間通常有較大比例的數(shù)據(jù)重復(fù),可以采用全量存儲和增量存儲結(jié)合的方式優(yōu)化存儲成本.DataHub[30,31]借用Github 的思想對連續(xù)改變的多版本數(shù)據(jù)進(jìn)行管理,支持修改后添加新版本,從多個已有版本數(shù)據(jù)合并形成新版本等操作.對于某個版本的數(shù)據(jù),可以全量存儲,也可以增量存儲相對某個已有版本的增量變化.通過構(gòu)建數(shù)據(jù)版本圖,以數(shù)據(jù)版本為節(jié)點(diǎn),邊表達(dá)版本之間增量存儲的存儲成本和重構(gòu)成本,成本最優(yōu)的存儲方案可以通過基于數(shù)據(jù)版本圖上邊的存儲成本來搜索最小生成樹.實(shí)際應(yīng)用中,在最小化存儲成本的同時,也需要限制重構(gòu)成本的上限,實(shí)現(xiàn)兩者之間的平衡.
ModelHub[32]提出針對模型的多版本存儲方案,由于模型主要由浮點(diǎn)類型參數(shù)矩陣構(gòu)成,尚難有清晰的語義解釋;即使是同一輪訓(xùn)練得到的不同版本模型,在整體參數(shù)值上也可能表現(xiàn)出較大的差異,不利于增量存儲.因此,ModelHub 對模型進(jìn)行更細(xì)粒度拆分,構(gòu)建類似DataHub 的數(shù)據(jù)版本圖,將參數(shù)矩陣作為數(shù)據(jù)版本圖的節(jié)點(diǎn).對于同一輪訓(xùn)練產(chǎn)生的多個中間結(jié)果模型,其對應(yīng)的參數(shù)矩陣數(shù)值通常變化不大,通過增量存儲可以帶來存儲空間收益;而同一訓(xùn)練任務(wù)多輪訓(xùn)練產(chǎn)生多個模型,其浮點(diǎn)參數(shù)的尾數(shù)高位部分可能變化較小,可以截取高位尾數(shù)進(jìn)行連續(xù)存儲,降低該部分的存儲空間.與DataHub 不同的是,讀取模型時需要同時讀取其所包含的所有矩陣,因此在數(shù)據(jù)版本圖搜索最小生成樹時,需要考慮多節(jié)點(diǎn)共同讀取的要求.
壓縮技術(shù)通過避免多次存儲數(shù)據(jù)中的重復(fù)模式,能夠減小數(shù)據(jù)存儲和讀取成本.隨著機(jī)器學(xué)習(xí)訓(xùn)練所需要的數(shù)據(jù)規(guī)模不斷增加,壓縮技術(shù)可以有效降低訓(xùn)練中數(shù)據(jù)讀取規(guī)模,也能幫助更多常用數(shù)據(jù)常駐內(nèi)存,提升計算效率.輸入數(shù)據(jù)和特征通常都可以用矩陣表達(dá),本節(jié)首先介紹通用數(shù)據(jù)壓縮技術(shù)在矩陣存儲上的應(yīng)用,接下來介紹基于矩陣列簇的壓縮技術(shù),以及支持在非解壓數(shù)據(jù)上直接進(jìn)行訓(xùn)練的壓縮技術(shù).
稠密矩陣可以連續(xù)存儲,如果矩陣規(guī)模較大,可以進(jìn)行分塊劃分存儲,進(jìn)而應(yīng)用塊壓縮技術(shù)進(jìn)行壓縮[33].需要考慮一些壓縮選項:一是壓縮算法的選擇,訓(xùn)練過程本身計算開銷較大,需要考慮解壓算法的計算開銷,可以根據(jù)需要選擇如Snappy[34]等輕量級壓縮算法,可以根據(jù)每個分塊的數(shù)據(jù)分布特點(diǎn)選擇不同的壓縮算法;二是如果需要對塊內(nèi)數(shù)據(jù)進(jìn)行多次更新,比如多次更新訓(xùn)練數(shù)據(jù)或特征,可以將數(shù)據(jù)塊在邏輯上劃分成更小的分片,對分片數(shù)據(jù)進(jìn)行分別壓縮,避免更新時對整個塊進(jìn)行解壓.
特征之間通常并會完全獨(dú)立,因而特征矩陣的的列之間可能存在相關(guān)性.將相關(guān)性較強(qiáng)的行或者列進(jìn)行組成列簇,對列簇進(jìn)行整體壓縮可能帶來更高的壓縮比[35].具體而言,在矩陣寫入時,可以基于數(shù)據(jù)抽樣快速計算列之間相關(guān)性搜索出列簇劃分.不同列簇可以選擇不同的壓縮算法,比如列簇內(nèi)重復(fù)數(shù)字的位置如果較連續(xù),可以采用行程長度壓縮算法[36];而如果列簇內(nèi)的數(shù)據(jù)重復(fù)度較低,則可以選擇不進(jìn)行壓縮.通過對列簇的選擇不同壓縮算法,實(shí)現(xiàn)更優(yōu)的局部壓縮,從而在整體矩陣上實(shí)現(xiàn)更高壓縮比.
特征矩陣通常每行表示一條訓(xùn)練數(shù)據(jù),列表示不同維度的特征值.塊壓縮技術(shù)忽略矩陣行之間的邊界,訓(xùn)練讀入時必須先對整塊解壓,分離出行數(shù)據(jù)后才能進(jìn)行計算.可以用字典記錄每行數(shù)據(jù)的邊界位置,壓縮算法避免跨行壓縮,進(jìn)而支持在壓縮數(shù)據(jù)上直接進(jìn)行訓(xùn)練[37].比如:如果使用前綴樹壓縮算法,讀取到行邊界時可以停止繼續(xù)查找更長前綴,多行共同具有的重復(fù)模式只存儲一次,實(shí)現(xiàn)壓縮效果;同時,行內(nèi)的數(shù)據(jù)壓縮可以保留訓(xùn)練算法所需要的列索引信息,這樣對壓縮數(shù)據(jù)進(jìn)行順序讀取時,可以獲得數(shù)據(jù)的行索引和列索引,算法訓(xùn)練可以直接在壓縮后的數(shù)據(jù)上計算[38].
目前,機(jī)器學(xué)習(xí)數(shù)據(jù)存儲仍主要以任務(wù)為中心為主,尚未形成統(tǒng)一的存儲模式.將來,從不同訓(xùn)練任務(wù)中抽象出統(tǒng)一數(shù)據(jù)存儲模式、挖掘任務(wù)間的數(shù)據(jù)語義關(guān)聯(lián),將成為從數(shù)據(jù)的視角管理機(jī)器學(xué)習(xí)訓(xùn)練過程的基礎(chǔ).以此為基礎(chǔ)實(shí)現(xiàn)任務(wù)間數(shù)據(jù)共享與復(fù)用,能夠顯著降低工業(yè)級機(jī)器學(xué)習(xí)應(yīng)用的資源成本.
機(jī)器學(xué)習(xí)訓(xùn)練過程需要對訓(xùn)練數(shù)據(jù)、特征、模型等數(shù)據(jù)進(jìn)行變換和多次讀寫,數(shù)據(jù)存取技術(shù),如視圖、索引和緩存等技術(shù),對于提升訓(xùn)練效率至關(guān)重要.面向機(jī)器學(xué)習(xí)的數(shù)據(jù)存取技術(shù)將面臨許多挑戰(zhàn):首先,數(shù)據(jù)和特征的變換可能使用較復(fù)雜的線性變換,對變換得到的中間結(jié)果進(jìn)行高效增量維護(hù)將面臨挑戰(zhàn);其次,機(jī)器學(xué)習(xí)通常需要處理非結(jié)構(gòu)化數(shù)據(jù)以及以通常將各類數(shù)據(jù)表達(dá)為矩陣,需要探索針對非結(jié)構(gòu)化數(shù)據(jù)和矩陣的索引方法以提升數(shù)據(jù)讀取效率;最后,可以緩存高頻讀取數(shù)據(jù)以優(yōu)化效率.由于不同數(shù)據(jù)的重構(gòu)計算成本不同,緩存方案需要同時考慮緩存開銷和重構(gòu)計算成本.本節(jié)將介紹針對機(jī)器學(xué)習(xí)訓(xùn)練過程的視圖、索引和緩存技術(shù).
在數(shù)據(jù)庫領(lǐng)域,對于同一關(guān)系表,不同應(yīng)用可能具有相同的數(shù)據(jù)選擇或轉(zhuǎn)化需求.數(shù)據(jù)庫通過視圖技術(shù)來管理通用的數(shù)據(jù)選擇或轉(zhuǎn)化的邏輯與結(jié)果,實(shí)現(xiàn)數(shù)據(jù)與上層應(yīng)用的邏輯獨(dú)立,并通過復(fù)用中間結(jié)果提升整體讀取效率.視圖通常分為Layzer 和Eager 兩種模式:Layzer 并不實(shí)際存儲中間結(jié)果,在數(shù)據(jù)讀取發(fā)生時,實(shí)時從原數(shù)據(jù)表讀取數(shù)據(jù)并計算,實(shí)現(xiàn)了數(shù)據(jù)選擇和轉(zhuǎn)化邏輯的復(fù)用;Eager 模式則實(shí)際存儲和維護(hù)中間結(jié)果,直接從視圖中讀取數(shù)據(jù),實(shí)現(xiàn)了數(shù)據(jù)選擇和轉(zhuǎn)化結(jié)果的復(fù)用.本節(jié)首先介紹基于視圖技術(shù)管理數(shù)據(jù)轉(zhuǎn)換和特征抽取中間結(jié)果的管理,其次介紹針對線性代數(shù)變換的增量視圖維護(hù)方法.
機(jī)器學(xué)習(xí)訓(xùn)練通常需要多種類型、多個步驟的數(shù)據(jù)轉(zhuǎn)化處理.對于文本為輸入,通常需要進(jìn)行大小寫歸一化、詞根提取等操作;對于圖片輸入,通常需要對圖片進(jìn)行旋轉(zhuǎn)、分辨率變化等操作.特征抽取和選擇可以認(rèn)為是機(jī)器學(xué)習(xí)特有的數(shù)據(jù)轉(zhuǎn)換,同一任務(wù)多輪訓(xùn)練嘗試使用特征集合通常存在重復(fù),同一原數(shù)據(jù)上不同任務(wù)的特征集合通常也不是完全獨(dú)立.因此,通過視圖存儲公共的數(shù)據(jù)處理和特征抽取中間數(shù)據(jù),可以在多訓(xùn)練任務(wù)之間實(shí)現(xiàn)數(shù)據(jù)復(fù)用,提升讀取效率.具體來講,可以統(tǒng)計每個任務(wù)特征集合的訪問頻率,對不同特征集合采取不同的視圖存儲模式(Layzer 或Eager),整體平衡多任務(wù)的特征存儲成本和存取效率.COLUMBUS[39]針對相關(guān)任務(wù)特征集合之間存在重復(fù),提出對特征集合的并集矩陣進(jìn)行QR分解,Q是正交矩陣,R是上三角矩陣,可以看作多任務(wù)特征的公共中間表達(dá),后續(xù)數(shù)據(jù)變換基于Q和R進(jìn)行計算會更高效,因而可以采用Eager 模式視圖對Q和R進(jìn)行存儲.
機(jī)器學(xué)習(xí)訓(xùn)練可能會對數(shù)據(jù)進(jìn)行一些復(fù)雜的變換,比如插值和線性變換等.原始輸入數(shù)據(jù)在迭代過程中通常會增量更新,增量更新在這類復(fù)雜變換中的傳播模式相對復(fù)雜,使用視圖維護(hù)變換后的結(jié)果并增量維護(hù)將面臨挑戰(zhàn).對于插值計算變換,增量數(shù)據(jù)只影響局部數(shù)據(jù)的插值結(jié)果,MauveDB[40]提出通過線段樹來索引原始數(shù)據(jù),進(jìn)而快速查找增量數(shù)據(jù)影響的局部原始數(shù)據(jù),進(jìn)而實(shí)現(xiàn)增量更新;對于回歸計算變換,線性變換基函數(shù)計算結(jié)果通??梢栽隽扛?MauveDB 提出對基函數(shù)變換結(jié)果進(jìn)行物化存儲而實(shí)現(xiàn)增量更新.線性代數(shù)計算通??梢员磉_(dá)為矩陣乘法,局部增量會通過乘法傳播至全矩陣,使得增量計算的時間復(fù)雜度較高;LINVIEW[41]提出:增量矩陣的行和列之間通常不是線性獨(dú)立的,可以將增量矩陣分解為兩個低維度的矩陣,降低矩陣乘法增量計算的時間復(fù)雜.
在數(shù)據(jù)系統(tǒng)中,索引是提升數(shù)據(jù)讀取效率的關(guān)鍵技術(shù).常用的索引技術(shù)包括Hash 索引、B 樹索引等:Hash索引用于快速執(zhí)行索引項上的隨機(jī)查找,B 樹索引同時支持索引項上的隨機(jī)查找和區(qū)間查找.對于訓(xùn)練過程中的結(jié)構(gòu)化數(shù)據(jù),可以直接使用數(shù)據(jù)庫索引提升讀取速度.本節(jié)將首先介紹非結(jié)構(gòu)化數(shù)據(jù)的索引方法;由于訓(xùn)練過程主要數(shù)據(jù)類型可以抽象為矩陣,接下來介紹矩陣索引技術(shù).
ZOMBIE[42]提出對數(shù)據(jù)按照潛在結(jié)構(gòu)劃分成任務(wù)無關(guān)的不同分組并建立索引,對于特定機(jī)器學(xué)習(xí)任務(wù),可以評估每個分組的數(shù)據(jù)對模型效果的影響,選擇影響較大的分組數(shù)據(jù)進(jìn)行訓(xùn)練.具體而言:訓(xùn)練數(shù)據(jù)可以表達(dá)為向量,之后使用聚類算法劃分成k個獨(dú)立的分組;訓(xùn)練過程中,每次從當(dāng)前對任務(wù)效果影響最大的索引組讀取數(shù)據(jù)加入訓(xùn)練,索引組對效果的影響可以通過組中已加入訓(xùn)練的數(shù)據(jù)來評估.數(shù)據(jù)聚類通常能夠反映數(shù)據(jù)潛在特性,有利于模型訓(xùn)練更快提升效果.比如:如果文檔長度是某個分類任務(wù)的重要區(qū)分特征,而長文檔可能包含一些共同的詞語,因此,聚類算法可能將長文本聚為一類,訓(xùn)練過程從長文本所在類中讀取數(shù)據(jù)可能收斂更快.由于非結(jié)構(gòu)化數(shù)據(jù)缺乏語義解釋,這種基于數(shù)據(jù)潛在結(jié)構(gòu)和特征的聚類的分組索引是快速讀取任務(wù)相關(guān)數(shù)據(jù)的一種可行方式.
矩陣是機(jī)器學(xué)習(xí)重要數(shù)據(jù)類型,可能需要同時支持連續(xù)讀寫和隨機(jī)訪問.如果是稠密矩陣,通常連續(xù)存儲的讀取效率較高;對于稀疏矩陣,通??梢詫⒕仃嚲€性變換為一維數(shù)組,根據(jù)非零數(shù)據(jù)的下標(biāo)建立B 樹索引,葉節(jié)點(diǎn)存儲對應(yīng)數(shù)據(jù)值,以支持高效的隨機(jī)讀取和范圍讀取.與通用的B 樹索引不同的是,矩陣的不同區(qū)域可能具有不同的稠密程度.LABTree[43]設(shè)計了稀疏類型和稠密類型葉節(jié)點(diǎn),稀疏葉節(jié)點(diǎn)存儲每個數(shù)據(jù)的矩陣索引和數(shù)據(jù)值.稠密節(jié)點(diǎn)對一段連續(xù)的值只保留一個索引項,包含連續(xù)值的起始矩陣坐標(biāo)以及值本身,存儲格式更緊湊.LABTree 支持根據(jù)矩陣的局部稠密程度自動選擇稀疏類型或者稠密類型的葉節(jié)點(diǎn),比如:當(dāng)一個稀疏類型的葉節(jié)點(diǎn)發(fā)生插入操作并觸發(fā)葉節(jié)點(diǎn)分裂,如果檢測到葉節(jié)點(diǎn)數(shù)據(jù)的連續(xù)程度較高,會自動轉(zhuǎn)換了稠密類型葉節(jié)點(diǎn).
機(jī)器學(xué)習(xí)訓(xùn)練通常需要在同一份數(shù)據(jù)上多次迭代,通過將需要多次讀取的數(shù)據(jù)放入緩存,可以提升迭代過程中的訓(xùn)練效率.本節(jié)首先介紹基于代價估算的緩存策略,對單次訓(xùn)練生成訪問效率提升最大的緩存策略;接下來介紹在多任務(wù)場景下模型緩存方案.
將單次訓(xùn)練所有依賴的所有數(shù)據(jù)作為節(jié)點(diǎn),有計算依賴關(guān)系的節(jié)點(diǎn)之間添加有向邊,可以構(gòu)建訓(xùn)練數(shù)據(jù)流的有向無環(huán)圖(direct acyclic graph,簡稱DAG)[44].為DAG 中每個節(jié)點(diǎn)定義執(zhí)行耗時代價估算:如果節(jié)點(diǎn)放入緩存,計算耗時為0,但消耗等數(shù)據(jù)大小的內(nèi)存資源;否則,內(nèi)存消耗為0,節(jié)點(diǎn)執(zhí)行耗時則需要綜合考慮從原始輸入數(shù)據(jù)節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)的計算時長,以及該節(jié)點(diǎn)被后續(xù)節(jié)點(diǎn)依賴的次數(shù).基于執(zhí)行耗時的代價估算,在訓(xùn)練環(huán)境限定內(nèi)存資源條件下,可以搜索最優(yōu)緩存策略,以最大程度縮短訓(xùn)練耗時,在內(nèi)存資源與計算資源之間取得平衡.
在多任務(wù)訓(xùn)練環(huán)境中,對于新訓(xùn)練任務(wù),可以搜索相關(guān)歷史任務(wù)的訓(xùn)練結(jié)果,使用其進(jìn)行初始化將有助于新模型快速訓(xùn)練收斂.因此,可以通過緩存被新任務(wù)依賴較多的模型來提升多任務(wù)訓(xùn)練整體效率.這里,計算新任務(wù)與歷史任務(wù)相關(guān)性是關(guān)鍵.COLUMBUS[39]提出使用緩存中的模型對新任務(wù)的測試數(shù)據(jù)進(jìn)行評測,取效果最好的模型作為新任務(wù)的初始化模型;之后,基于LRU 算法,可以將不常訪問的模型交換出內(nèi)存.實(shí)際上,這是一種基于遷移學(xué)習(xí)[45]的訓(xùn)練方法,最新預(yù)訓(xùn)練技術(shù)[3]的進(jìn)展驗證了其有效性.結(jié)合模型緩存優(yōu)化等技術(shù),遷移學(xué)習(xí)是實(shí)現(xiàn)基于資源復(fù)用的實(shí)時機(jī)器學(xué)習(xí)的重要途徑.
當(dāng)前,機(jī)器學(xué)習(xí)訓(xùn)練的數(shù)據(jù)讀取對象粒度較大,比如對非結(jié)構(gòu)化訓(xùn)練數(shù)據(jù)、特征矩陣和模型進(jìn)行整體讀取.上述緩存技術(shù)主要針對整體數(shù)據(jù)對象的粒度優(yōu)化存取效率,并考慮到多輪訓(xùn)練和多任務(wù)間數(shù)據(jù)復(fù)用的需求.未來需要進(jìn)一步探索訓(xùn)練中數(shù)據(jù)對象的內(nèi)部語義,提煉出適合復(fù)用的子結(jié)構(gòu),通過探索細(xì)粒度的存取技術(shù)來進(jìn)一步優(yōu)化數(shù)據(jù)讀寫整體效率.
機(jī)器學(xué)習(xí)訓(xùn)練過程通常采用領(lǐng)域描述語言進(jìn)行靈活而高效的建模,如DSL(domain specific lanaguage)[46]或者DML(declaritive machine learning language)[47])等.DSL 向上提供矩陣運(yùn)算、統(tǒng)計函數(shù)等機(jī)器學(xué)習(xí)領(lǐng)域的邏輯計算操作,由于需要考慮內(nèi)部數(shù)據(jù)表達(dá)、機(jī)器硬件環(huán)境等執(zhí)行細(xì)節(jié),無法直接映射為前述數(shù)據(jù)存取、存儲技術(shù)提供的物理操作,需要使用自動優(yōu)化技術(shù)將DSL 描述的邏輯計劃轉(zhuǎn)化為可執(zhí)行的物理計劃,在多種可能的物理計劃中自動決策并選擇最優(yōu)計劃.本節(jié)首先介紹邏輯計劃改寫,由于建模過程通常表達(dá)為向量和矩陣之間的連續(xù)運(yùn)算,需要考慮維度等信息,將運(yùn)算序列改寫為代價最優(yōu)的等價序列;其次將討論物理計劃生成,需要考慮計算在異構(gòu)硬件上(CPU、GPU 等)的調(diào)度方案;最后討論自動模型選擇,也即為訓(xùn)練任務(wù)自動生成效果較優(yōu)的訓(xùn)練計劃,需要在限定的訓(xùn)練時間內(nèi)綜合考慮特征選擇、算法選擇和超參數(shù)調(diào)優(yōu)等多種因素的合理組合.
將DSL 的運(yùn)算操作和輸入數(shù)據(jù)作為節(jié)點(diǎn),操作與數(shù)據(jù)之間的依賴作為邊,DSL 代碼可以轉(zhuǎn)換為DAG,稱為邏輯計劃.原始的DAG 中可能包含重復(fù)計算子圖、操作執(zhí)行順序可能不是最優(yōu),可以通過邏輯改寫技術(shù)將原始DAG 改寫邏輯等價、執(zhí)行效率更優(yōu)的新計劃.實(shí)際上,關(guān)系數(shù)據(jù)對用戶SQL 進(jìn)行查詢優(yōu)化時,會廣泛應(yīng)用改寫技術(shù),比如選擇下推、投影下推等,其思路是:讓縮減數(shù)據(jù)規(guī)模的操作盡早的發(fā)生,這對機(jī)器學(xué)習(xí)邏輯計劃改寫也有很大的參考價值.本節(jié)將分別介紹靜態(tài)改寫和動態(tài)改寫技術(shù).
靜態(tài)改寫[46]針對編譯時已確定的參數(shù)信息,如矩陣維度等,在DAG 運(yùn)行前進(jìn)行改寫.常用的方法包括公共子表達(dá)式消除、常量折疊以及分支移除等.DAG 中的公共子表達(dá)移除可以遞歸進(jìn)行:首先,從葉子節(jié)點(diǎn)開始標(biāo)識相同子表達(dá)式;之后從,父親節(jié)點(diǎn)到根節(jié)點(diǎn)逐級遞歸標(biāo)識和消除.分支移除可以幫助提前確定一些維度信息,使得運(yùn)行前能更多進(jìn)行靜態(tài)改寫.對于機(jī)器學(xué)習(xí),DAG 中的主要操作是矩陣運(yùn)算,矩陣運(yùn)算操作和順序可以基于啟發(fā)式規(guī)則優(yōu)化,比如兩次矩陣轉(zhuǎn)秩不需要計算(XTT=X)、二元操作X+X可以改寫為一元操作2?X而避免兩次讀取X.矩陣乘法順序?qū)τ嬎懔坑休^大影響,比如計算XT?Y?d,d為向量,如果按照(XT?Y)?d的順序,則會產(chǎn)生較大中間矩陣,時間復(fù)雜度是O(n3);如果按照XT?(Y?d)進(jìn)行,則中間結(jié)果為向量,時間復(fù)雜度為O(n2).實(shí)際上,矩陣乘法順序優(yōu)化與數(shù)據(jù)庫多表連接順序優(yōu)化類似,都具有最優(yōu)子結(jié)構(gòu)和無后效性的特征,可以采用動態(tài)規(guī)劃方法求解最優(yōu)乘法順序;與多表連接不同的是,矩陣乘法計算代價需要額外矩陣稀疏性等信息.
動態(tài)改寫[46]是在運(yùn)行過程中進(jìn)行,其原因是改寫依賴的維度等信息在運(yùn)行時才能完全確定.一個典型的例子是DAG 中包含if-else 分支,if 分支和else 分支的輸出數(shù)據(jù)的維度可能不一樣,導(dǎo)致后續(xù)計算操作輸入數(shù)據(jù)的維度不能在運(yùn)算前確定.在確定完整的維度后,可以繼續(xù)對一些運(yùn)算順序進(jìn)行改寫.比如對于(?XT)?y,如果向量y的維度小于X的行數(shù),可以改寫為?(XT)?y以較小負(fù)號運(yùn)算計算量.
機(jī)器學(xué)習(xí)的訓(xùn)練環(huán)境通常包括異構(gòu)硬件,如CPU、GPU、FPGA 以及計算集群等;邏輯改寫后的DAG 可以有多種物理計劃,需要結(jié)合計算的資源開銷和硬件環(huán)境生成最優(yōu)物理計劃.數(shù)據(jù)庫領(lǐng)域通常采用基于代價估算的物理計劃生成,比如根據(jù)讀取數(shù)據(jù)規(guī)模的預(yù)估確定直接讀取原數(shù)據(jù)表或者讀取索引.機(jī)器學(xué)習(xí)DAG 的操作通常是密集型計算,運(yùn)行代價估算需要重點(diǎn)考慮計算復(fù)雜度和內(nèi)存要求兩方面的因素.
計算復(fù)雜度通??梢酝ㄟ^矩陣維度來預(yù)估,維度較小或者數(shù)據(jù)稀疏的矩陣運(yùn)算,可以調(diào)度到CPU 中運(yùn)算;維度較大的稠密矩陣運(yùn)算,可以調(diào)度到GPU 并行計算;操作輸出矩陣的維度信息可以直接由輸入矩陣維度確定.基于計算復(fù)雜度預(yù)估調(diào)度也需要考慮操作融合的影響,比如可以將連續(xù)的運(yùn)算融合成一個算子,調(diào)度到同一硬件上執(zhí)行,避免數(shù)據(jù)在內(nèi)存間頻繁拷貝,進(jìn)而提升計算效率.
操作的內(nèi)存需求也可以通過矩陣維度來估算[46].如果單機(jī)可以滿足操作內(nèi)存需求,操作計算可以調(diào)度到單機(jī)CPU,GPU 上進(jìn)行.對于內(nèi)存超出單機(jī)限制的矩陣,可以使用多機(jī)分布式計算,比如采用分布式分塊乘法.矩陣運(yùn)算的物理執(zhí)行可以基于矩陣內(nèi)存估算進(jìn)一步細(xì)化,比如對于矩陣乘法X?Y,如果Y較大無法放入內(nèi)存,但X較小可以放入內(nèi)存,則計算過程可以讓X常駐內(nèi)存,對Y進(jìn)行一次外存掃描可以得出計算結(jié)果,這與數(shù)據(jù)庫兩表連接算法選擇有相似的地方.同時,確定操作內(nèi)存需求和機(jī)器內(nèi)存限制后,可以對運(yùn)算順序進(jìn)一步改寫.比如計算XT?y,如果向量y的維度小于X的行數(shù),且y可以放入機(jī)器內(nèi)存,計算順序可以改寫為(yT?X)T而避免對數(shù)據(jù)規(guī)模較大的X進(jìn)行轉(zhuǎn)秩操作.
上述邏輯計劃改寫和物理計劃生成優(yōu)化技術(shù)主要對單次訓(xùn)練進(jìn)行自動優(yōu)化,避免人工參與.如前文所述,同一任務(wù)通常需要多輪訓(xùn)練嘗試,過程中需要分析評測效果對特征、算法、超參數(shù)等進(jìn)行調(diào)整優(yōu)化訓(xùn)練效果,迭代嘗試需要大量的人工分析工作.自動模型選擇在用戶不完整指定訓(xùn)練依賴的情況下,自動搜索出特征、算法等之間的合理組合,訓(xùn)練得到效果優(yōu)化的模型.一方面可以減少多次嘗試的人工參與工作量,另一方面也給系統(tǒng)更大的優(yōu)化空間.
模型選擇可以看作是特征選擇、算法選擇和超參數(shù)選擇三者之間的組合,稱為 MST(model selection triple)[48].對于設(shè)定的一組候選MST,系統(tǒng)可以自動選擇和訓(xùn)練出任務(wù)效果最優(yōu)的模型.與上文單次訓(xùn)練優(yōu)化技術(shù)不同的是,從候選MST 自動選擇最優(yōu)模型可以基于面向候選集合的優(yōu)化思路:一方面可以充分利用并行計算,將候選MST 調(diào)度到多卡或者多機(jī)上并行訓(xùn)練;另一方面,候選模型之間通常具有較高的數(shù)據(jù)共享,可以通過復(fù)用來提升模型候選的整體執(zhí)行效率.比如固定特征和算法,指定超參數(shù)的搜索條件,候選MST 之間的特征可以完全復(fù)用;如果對特征設(shè)置了枚舉條件,枚舉得到的特征集合之間并不完全獨(dú)立,采用前文所述的視圖技術(shù)存儲特征集合的公共表達(dá),可以避免多任務(wù)重復(fù)計算特征.
對于深度學(xué)習(xí),神經(jīng)網(wǎng)絡(luò)模型進(jìn)行端到端的特征抽取和建模,神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索技術(shù)(NAS)[49?51]是自動模型選擇的重要方法.NAS 通??梢砸匀斯ぴO(shè)計的網(wǎng)絡(luò)作為搜索起點(diǎn),將超參數(shù)、層數(shù)、連接方式等不同維度作為搜索空間,應(yīng)用強(qiáng)化學(xué)習(xí)、進(jìn)化算法、貝葉斯優(yōu)化等搜索策略,根據(jù)效果評測的反饋來搜索新模型.深度神經(jīng)網(wǎng)絡(luò)通常具有可復(fù)用子結(jié)構(gòu)[52],可以通過將已訓(xùn)練好的模型參數(shù)遷移到新模型來提升搜索效率.
自動優(yōu)化是系統(tǒng)提升機(jī)器學(xué)習(xí)訓(xùn)練效率的關(guān)鍵技術(shù).當(dāng)前,自動優(yōu)化的研究主要針對單任務(wù)訓(xùn)練,針對多任務(wù)整體訓(xùn)練效率的自動優(yōu)化技術(shù)有很大的探索空間.其中,探索模型中可復(fù)用子結(jié)構(gòu)、建立任務(wù)間的語義關(guān)聯(lián)、自動識別相關(guān)任務(wù)模型,將是自動優(yōu)化技術(shù)重要的研究方向.
數(shù)據(jù)庫是多種數(shù)據(jù)管理技術(shù)的系統(tǒng)集成,本節(jié)從數(shù)據(jù)庫系統(tǒng)的視角討論對機(jī)器學(xué)習(xí)訓(xùn)練任務(wù)的支持,探討數(shù)據(jù)管理技術(shù)對提升機(jī)器學(xué)習(xí)訓(xùn)練效率的系統(tǒng)支持.由于數(shù)據(jù)庫和機(jī)器學(xué)習(xí)系統(tǒng)在數(shù)據(jù)模型、管理對象與優(yōu)化目標(biāo)上存在差異,基于數(shù)據(jù)庫已有的數(shù)據(jù)管理技術(shù)支撐機(jī)器學(xué)習(xí)訓(xùn)練需要在數(shù)據(jù)庫功能復(fù)用和建模與訓(xùn)練靈活性方面進(jìn)行合理適配,比如對數(shù)據(jù)模型、存儲與存取功能、查詢優(yōu)化技術(shù)采取不同的復(fù)用和適配策略.本節(jié)將討論3 種實(shí)現(xiàn)方式:與數(shù)據(jù)庫系統(tǒng)淺層融合、深層融合以及在數(shù)據(jù)庫系統(tǒng)之外獨(dú)立實(shí)現(xiàn)[53].
淺層融合背后的假設(shè)是機(jī)器學(xué)習(xí)算法和計算可以使用SQL 語言來表達(dá),實(shí)際上,大部分機(jī)器學(xué)習(xí)算法都屬于線性代數(shù)運(yùn)算,可以用矩陣間的計算來表達(dá);如果將矩陣存儲為關(guān)系表,矩陣間運(yùn)算就可以通過表連接操作來計算.如果訓(xùn)練數(shù)據(jù)存儲在數(shù)據(jù)庫中,淺層融合方法可以在數(shù)據(jù)庫內(nèi)部完成訓(xùn)練而避免額外的數(shù)據(jù)移動,也可以復(fù)用數(shù)據(jù)庫的存儲和讀寫功能以及優(yōu)化技術(shù)[54?58].本節(jié)將分兩方面介紹淺層融合的關(guān)鍵技術(shù)——各類矩陣運(yùn)算的實(shí)現(xiàn)和主要機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn).
矩陣按行存儲為關(guān)系表,行下標(biāo)與表的行號對應(yīng),每行的向量可以用數(shù)據(jù)庫支持的數(shù)組類型來存儲.為方便后續(xù)計算,同一矩陣可以按行或者列為順序分別存儲為一個表[54,55].基于這個格式,矩陣之間的加減法可以通過表之間的等值連接來計算;矩陣乘法A?B可以表達(dá)為以按行存儲的A矩陣表與按列存儲的B矩陣表之間的全連接,并計算連接向量的點(diǎn)積.對于稀疏矩陣,可以按照行下標(biāo)、列下標(biāo)、值的三元組形式存儲為關(guān)系表,乘法結(jié)果可以對相乘兩個表的行下標(biāo)和列下標(biāo)進(jìn)行g(shù)roup by,再對列下標(biāo)和行下標(biāo)進(jìn)行等值連接得到.對于更復(fù)雜的矩陣運(yùn)算,比求矩陣求逆操作,如果數(shù)據(jù)可以放入內(nèi)存,可以通過用戶自定義函數(shù)(user define function,簡稱UDF)來計算并擴(kuò)充到SQL 中.如果矩陣的規(guī)模較大,可以將矩陣劃分為子矩陣存儲到不同關(guān)系表中,乘法先在分塊矩陣表中進(jìn)行,之后進(jìn)行聚合.
基于上述矩陣運(yùn)算,機(jī)器學(xué)習(xí)算法可以分為一趟計算和多趟計算:一趟計算,如最小二乘法算法等,可以直接表達(dá)為矩陣運(yùn)算的序列,因而使用多條SQL 語句就可以實(shí)現(xiàn);多趟計算則針對需要迭代優(yōu)化的機(jī)器學(xué)習(xí)算法,比如邏輯回歸、梯度下降、k-means 聚類算法等.多趟計算的主要挑戰(zhàn)是,如何使用SQL 表達(dá)迭代邏輯、存儲中間結(jié)果和判斷迭代終止.可以將迭代內(nèi)的計算邏輯定義為一個視圖,將視圖與存儲遞增序列的虛表進(jìn)行鏈接來表達(dá)迭代邏輯.更靈活的方式是將算法定義為一個UDF,迭代內(nèi)的邏輯通過SQL 來實(shí)現(xiàn),迭代生成的中間結(jié)果使用一個中間表進(jìn)行存儲,外層通過腳本語言來控制結(jié)束條件.這種方式將中間數(shù)據(jù)存儲為關(guān)系表,其讀寫在數(shù)據(jù)庫引擎內(nèi)進(jìn)行,訪問效率較高;同時,通過將UDF 集成到SQL,不同的用戶也可以復(fù)用算法的實(shí)現(xiàn).
機(jī)器學(xué)習(xí)訓(xùn)練和數(shù)據(jù)庫的數(shù)據(jù)模型分別是矩陣和關(guān)系表:矩陣適合表達(dá)多行多列的并行計算,而關(guān)系表更適合表達(dá)行和列級別的數(shù)據(jù)讀寫和計算.使用關(guān)系表存儲矩陣,會對后續(xù)計算帶來限制.深度融合的方式通過對數(shù)據(jù)庫內(nèi)部數(shù)據(jù)存取和計算流程進(jìn)行優(yōu)化和適配,使得數(shù)據(jù)庫能夠?qū)C(jī)器學(xué)習(xí)計算進(jìn)行更原生的支持,進(jìn)而提升模型構(gòu)建和訓(xùn)練效率[59?63].本節(jié)將從兩個方面介紹深度融合方法:一是對數(shù)據(jù)庫內(nèi)部功能進(jìn)行擴(kuò)充和適配,二是基于數(shù)據(jù)庫底層功能構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng).
SimSQL[59]提出將矩陣、向量作為數(shù)據(jù)庫的內(nèi)置數(shù)據(jù)類型,同時內(nèi)置矩陣乘法等計算的實(shí)現(xiàn).這樣,矩陣可以作為元組的屬性,矩陣間的運(yùn)算表達(dá)為元組屬性間的運(yùn)算,使用SQL 編寫訓(xùn)練代碼會大大簡化.內(nèi)置數(shù)據(jù)類型還有兩點(diǎn)優(yōu)勢:一是存儲的額外開銷較小,數(shù)據(jù)頁之內(nèi)不再需要存儲行的位移、長度等信息;二是方便實(shí)現(xiàn)并行計算優(yōu)化,比如矩陣作為屬性整體讀取到內(nèi)存后,矩陣乘法可以整體通過Eigen[60]等CPU 并行計算庫實(shí)現(xiàn).另一方面,內(nèi)置數(shù)據(jù)類型可以將矩陣的統(tǒng)計信息直接暴露給數(shù)據(jù)庫查詢優(yōu)化器,提升代價估算的準(zhǔn)確度.比如:如果矩陣A的維度是[100,10000],矩陣B的維度是[10000,100],則A?B的維度是[100,100],數(shù)據(jù)規(guī)模較小;查詢優(yōu)化器可以基于維度信息讓A與B的乘法盡早發(fā)生,使得中間數(shù)據(jù)的規(guī)模更小.
數(shù)據(jù)庫系統(tǒng)的設(shè)計實(shí)現(xiàn)了數(shù)據(jù)管理與應(yīng)用獨(dú)立,具有邏輯獨(dú)立的數(shù)據(jù)存取層.通常來講,數(shù)據(jù)庫數(shù)據(jù)存儲層提供面向塊的數(shù)據(jù)讀寫操作,可以直接在數(shù)據(jù)存取層之上構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng).這樣做有兩方面優(yōu)勢:一是可以完全復(fù)用數(shù)據(jù)庫成熟的數(shù)據(jù)存儲和存取技術(shù),比如數(shù)據(jù)壓縮、緩存管理等;二是直接進(jìn)行塊讀寫的數(shù)據(jù)吞吐更大,數(shù)據(jù)訪問效率更高,與后續(xù)并行計算更好地匹配.DAnA[61]提供機(jī)器學(xué)習(xí)領(lǐng)域的描述性語言(DSL),直接使用數(shù)據(jù)庫塊對訓(xùn)練數(shù)據(jù)進(jìn)行存儲;將DSL 轉(zhuǎn)換為DAG 后,數(shù)據(jù)讀取會直接轉(zhuǎn)換為塊的讀取操作.DAnA 直接從數(shù)據(jù)庫的緩存管理器中復(fù)制整塊數(shù)據(jù)到并行計算硬件FPGA 的緩存中,之后利用FPGA 的多核能力對塊進(jìn)行并行解析提取數(shù)據(jù)字段,避免了在數(shù)據(jù)庫內(nèi)部將塊解析為元組時,額外的計算和數(shù)據(jù)拷貝過程.這種方式實(shí)現(xiàn)了存儲和計算在數(shù)據(jù)模型與硬件資源方面的解耦合,系統(tǒng)靈活性更高.
數(shù)據(jù)庫和機(jī)器學(xué)習(xí)除了數(shù)據(jù)模型不同,管理與優(yōu)化的目標(biāo)也有所不同:數(shù)據(jù)庫主要管理結(jié)構(gòu)化數(shù)據(jù),而機(jī)器學(xué)習(xí)是非結(jié)構(gòu)化數(shù)據(jù)分析的重要手段.使用數(shù)據(jù)庫管理非結(jié)構(gòu)化數(shù)據(jù)不夠靈活,且較難無縫集成到非結(jié)構(gòu)化數(shù)據(jù)處理流程中.數(shù)據(jù)庫的優(yōu)化重點(diǎn)是存取效率,機(jī)器學(xué)習(xí)的優(yōu)化重點(diǎn)是計算效率,兩者依賴的具體優(yōu)化技術(shù)存在差別.因此,借鑒數(shù)據(jù)庫系統(tǒng)的設(shè)計理念和實(shí)現(xiàn)經(jīng)驗進(jìn)行獨(dú)立的設(shè)計和實(shí)現(xiàn),也是機(jī)器學(xué)習(xí)系統(tǒng)構(gòu)建的重要方式[64?70].本節(jié)首先介紹獨(dú)立構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng)的典型工作,之后總結(jié)數(shù)據(jù)庫設(shè)計思想對于系統(tǒng)構(gòu)建的參考價值.
SciDB[33]是獨(dú)立實(shí)現(xiàn)的機(jī)器學(xué)習(xí)系統(tǒng).以多維數(shù)組作為數(shù)據(jù)模型,分chunk 連續(xù)存儲;支持面向數(shù)組的查詢語言(AQL),方便對數(shù)組中的數(shù)據(jù)進(jìn)行訪問和計算表達(dá),同時也兼容R 語言;計算效率方面,數(shù)據(jù)組間的運(yùn)算可以在對齊chunk 劃分邊界后,直接在chunk 間進(jìn)行;由于存儲和計算完全獨(dú)立實(shí)現(xiàn),SciDB 在效率優(yōu)化方面具有很高的靈活性.SystemML[64,65]在分布式計算系統(tǒng)MapReduce,Spark 的基礎(chǔ)上實(shí)現(xiàn)機(jī)器學(xué)習(xí)系統(tǒng);數(shù)據(jù)模型為矩陣,使用HDFS 進(jìn)行存儲,矩陣運(yùn)算可以轉(zhuǎn)化Spark 計算任務(wù);對外提供機(jī)器學(xué)習(xí)領(lǐng)域描述性語言(DSL),轉(zhuǎn)化為DGA后,通過自動優(yōu)化技術(shù)轉(zhuǎn)化為物理計劃,并根據(jù)資源限制調(diào)度到單機(jī)或者Spark 集群上運(yùn)行;由于使用Spark作為計算引擎,任務(wù)訓(xùn)練可以無縫集成到Spark 整體數(shù)據(jù)處理流程中.Cumulon[66]的數(shù)據(jù)模型也為矩陣,以分塊形式存儲在HDFS 中,并對分塊矩陣運(yùn)算自主調(diào)度,與使用MapReduce 進(jìn)行矩陣計算相比效率更高;Cumulon 考慮了不同機(jī)型在內(nèi)存資源和計算能力的差異,建立了使用不同機(jī)型在訓(xùn)練成本和時長的預(yù)估模型,因而可以在滿足訓(xùn)練時長的要求下,自動選擇和生成成本最低的物理計劃.
上述系統(tǒng)雖然獨(dú)立實(shí)現(xiàn),但數(shù)據(jù)庫系統(tǒng)的設(shè)計理念和實(shí)現(xiàn)經(jīng)驗對其有重要參考意義,總結(jié)為3 點(diǎn).
1)面向領(lǐng)域問題的描述性語言:數(shù)據(jù)庫系統(tǒng)成功的一個重要因素是提供描述性語言SQL,支持方便的描述數(shù)據(jù)讀寫需求和較簡單的統(tǒng)計計算,而不必關(guān)系執(zhí)行細(xì)節(jié).SciDB 支持面向數(shù)組的查詢語言AQL,SystemML 和Cumulon 均支持機(jī)器學(xué)習(xí)領(lǐng)域的描述語言(DSL).描述性語言隱藏了訓(xùn)練過程的細(xì)節(jié),可以靈活而高效地構(gòu)建機(jī)器學(xué)習(xí)模型;
2)分層設(shè)計獨(dú)立優(yōu)化:數(shù)據(jù)庫的核心設(shè)計理念是保持語言處理層、查詢優(yōu)化層、數(shù)據(jù)存取層、數(shù)據(jù)存儲層各層之間接口獨(dú)立,可以靈活組合并分別優(yōu)化.SystemML 可以對相同的訓(xùn)練任務(wù)選擇調(diào)度到單機(jī)或者Spark 集群,實(shí)現(xiàn)了語言處理層與計算存儲層的獨(dú)立,Spark 系統(tǒng)在計算效率方面的優(yōu)化可以直接在SystemML 中生效;
3)自動優(yōu)化技術(shù):數(shù)據(jù)庫查詢優(yōu)化技術(shù)對于任意的SQL 請求生成效率優(yōu)化的執(zhí)行計劃,是支撐數(shù)據(jù)庫廣泛應(yīng)用的核心技術(shù).對于機(jī)器學(xué)習(xí)而言,由于計算更加復(fù)雜,異構(gòu)硬件類型更多,對自動優(yōu)化技術(shù)依賴程度更高.SystemML 和Cumulon 均實(shí)現(xiàn)了自動優(yōu)化技術(shù),將DSL 編寫的訓(xùn)練代碼自動轉(zhuǎn)化為高效執(zhí)行的物理計劃,能夠系統(tǒng)地提升各類機(jī)器學(xué)習(xí)算法的訓(xùn)練效率.
本節(jié)從與數(shù)據(jù)庫系統(tǒng)的關(guān)系視角對機(jī)器學(xué)習(xí)系統(tǒng)實(shí)現(xiàn)進(jìn)行了分類歸納,前述數(shù)據(jù)管理技術(shù)在不同類別中具有不同應(yīng)用方式.在數(shù)據(jù)庫基礎(chǔ)上,淺層或者深層融合的機(jī)器學(xué)習(xí)系統(tǒng)能夠較大程度復(fù)用數(shù)據(jù)庫已經(jīng)提供的數(shù)據(jù)壓縮、視圖、緩存、索引以及自動查詢優(yōu)化等技術(shù),并根據(jù)需要對數(shù)據(jù)庫數(shù)據(jù)類型和查詢優(yōu)化技術(shù)進(jìn)行擴(kuò)展.數(shù)據(jù)庫之外獨(dú)立實(shí)現(xiàn)的機(jī)器學(xué)習(xí)系統(tǒng)通常提供DSL 進(jìn)行建模,需要獨(dú)立實(shí)現(xiàn)自動優(yōu)化技術(shù);數(shù)據(jù)存儲與存取技術(shù)可以獨(dú)立實(shí)現(xiàn),也可以復(fù)用文件系統(tǒng)已有功能.由于機(jī)器學(xué)習(xí)技術(shù)仍在快速發(fā)展過程中,前文討論的數(shù)據(jù)選擇、多版本存儲、數(shù)據(jù)索引等技術(shù)尚未形成完整的系統(tǒng)集成方案,探索各類數(shù)據(jù)管理技術(shù)的統(tǒng)一系統(tǒng)集成方法是未來面臨的重要挑戰(zhàn).
本文分別從數(shù)據(jù)和系統(tǒng)的視角對機(jī)器學(xué)習(xí)訓(xùn)練過程進(jìn)行解構(gòu),從數(shù)據(jù)管理、自動優(yōu)化、系統(tǒng)設(shè)計與實(shí)現(xiàn)方面梳理了支撐機(jī)器學(xué)習(xí)的數(shù)據(jù)管理技術(shù)現(xiàn)狀.數(shù)據(jù)選擇、數(shù)據(jù)存儲和數(shù)據(jù)存取技術(shù)的優(yōu)化思路從任務(wù)為中心逐漸轉(zhuǎn)化到數(shù)據(jù)為中心,通過多版本存儲、視圖、緩存等技術(shù)初步實(shí)現(xiàn)跨任務(wù)數(shù)據(jù)共享,但尚未形成統(tǒng)一的跨任務(wù)數(shù)據(jù)管理方案.自動優(yōu)化技術(shù)目前主要采取任務(wù)為中心的做法,從為訓(xùn)練過程自動優(yōu)化效率逐漸發(fā)展到為訓(xùn)練任務(wù)自動生成效果優(yōu)化的訓(xùn)練過程.自動模型選擇需要搜索大量的候選,效率仍面臨挑戰(zhàn).機(jī)器學(xué)習(xí)系統(tǒng)需要集成數(shù)據(jù)管理、自動優(yōu)化等技術(shù),可以復(fù)用已有數(shù)據(jù)庫功能進(jìn)行擴(kuò)充與適配,也可以基于數(shù)據(jù)庫的設(shè)計思想獨(dú)立實(shí)現(xiàn).總結(jié)而言,數(shù)據(jù)庫系統(tǒng)長期積累的數(shù)據(jù)管理技術(shù)已經(jīng)廣泛應(yīng)用到機(jī)器學(xué)習(xí)訓(xùn)練的各個環(huán)節(jié).隨著更多面向機(jī)器學(xué)習(xí)的工業(yè)級應(yīng)用的出現(xiàn),構(gòu)建以數(shù)據(jù)為中心、支持跨任務(wù)數(shù)據(jù)復(fù)用和在線實(shí)時建模與訓(xùn)練的新型數(shù)據(jù)庫系統(tǒng),是提升機(jī)器學(xué)習(xí)效率、降低成本的重要途徑.未來的挑戰(zhàn)和研究方向包括:
1)數(shù)據(jù)庫內(nèi)支持機(jī)器學(xué)習(xí)完整過程.
數(shù)據(jù)庫內(nèi)支持機(jī)器學(xué)習(xí)能夠避免訓(xùn)練數(shù)據(jù)在數(shù)據(jù)庫和機(jī)器學(xué)習(xí)系統(tǒng)間移動,也能夠復(fù)用數(shù)據(jù)完備的安全管理機(jī)制保護(hù)數(shù)據(jù)隱私.當(dāng)前,數(shù)據(jù)庫內(nèi)支持機(jī)器學(xué)習(xí)主要關(guān)注建模和訓(xùn)練過程[54,55],對建模前數(shù)據(jù)處理和完成訓(xùn)練后在線推理關(guān)注相對較少.對于數(shù)據(jù)處理,結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)通常抽象為關(guān)系表或KV 表,適合采用SQL 進(jìn)行轉(zhuǎn)換計算;非結(jié)構(gòu)化數(shù)據(jù)尚未形成統(tǒng)一的數(shù)據(jù)模型,數(shù)據(jù)處理通常根據(jù)具體任務(wù)而采用不同的語言和模式;而模型構(gòu)建通常采用多維矩陣作為通用數(shù)據(jù)表達(dá),適合采用DSL 進(jìn)行建模.因此,需要探索無縫連接數(shù)據(jù)處理和模型構(gòu)建的更有效方式,形成統(tǒng)一融合的數(shù)據(jù)模型和描述性語言[71],降低數(shù)據(jù)在兩個階段的轉(zhuǎn)換成本.對于在線推理,其挑戰(zhàn)包括需要探索模型計算自動優(yōu)化方式以提升推理效率[72]以及請求量動態(tài)變化時,基于異構(gòu)硬件自適應(yīng)調(diào)度計算以滿足推理延時要求[73]等.
2)跨任務(wù)數(shù)據(jù)與模型的管理與復(fù)用.
當(dāng)前,機(jī)器學(xué)習(xí)數(shù)據(jù)與模型主要以任務(wù)為中心的方式管理,難以實(shí)現(xiàn)全局存儲與計算最優(yōu).未來,隨著機(jī)器學(xué)習(xí)的廣泛應(yīng)用,將出現(xiàn)大量訓(xùn)練目標(biāo)和過程類似的任務(wù),建立跨任務(wù)數(shù)據(jù)與模型關(guān)聯(lián)、實(shí)現(xiàn)任務(wù)間資源復(fù)用,是提升多任務(wù)整體訓(xùn)練效率的重要途徑.這方面已經(jīng)有初步研究[74,75],但仍面臨許多挑戰(zhàn).
? 首先,需要探索通用的數(shù)據(jù)語義表示,形成跨任務(wù)數(shù)據(jù)表示基礎(chǔ).非結(jié)構(gòu)化數(shù)據(jù)的語義表達(dá)仍面臨挑戰(zhàn),基于深度神經(jīng)網(wǎng)絡(luò)非監(jiān)督訓(xùn)練得到的潛在語義向量表達(dá)是有希望的方向,需要進(jìn)一步探索與結(jié)構(gòu)化數(shù)據(jù)表達(dá)方式的融合;
? 其次,需要探索任務(wù)間模型的復(fù)用方法.由于機(jī)器學(xué)習(xí)模型,尤其是神經(jīng)網(wǎng)絡(luò)模型尚缺乏可解釋性,模型復(fù)用仍面臨挑戰(zhàn).預(yù)訓(xùn)練是有希望的方向,通過海量非監(jiān)督數(shù)據(jù)訓(xùn)練得到能被多任務(wù)復(fù)用的公共模型,但仍是整體模型的復(fù)用,需要進(jìn)一步探索模型子結(jié)構(gòu)以實(shí)現(xiàn)更細(xì)粒度的復(fù)用;
? 同時,在多用戶、多任務(wù)協(xié)同的環(huán)境中,訓(xùn)練數(shù)據(jù)、中間結(jié)果和模型的安全訪問機(jī)制,也是值得探索的方向.
3)支持在線自動模型構(gòu)建與訓(xùn)練.
自動模型構(gòu)建與訓(xùn)練將進(jìn)一步減少機(jī)器學(xué)習(xí)過程的人工參與,提升效率.當(dāng)前,自動模型構(gòu)建與訓(xùn)練主要考慮效果優(yōu)化,對于效率與實(shí)時性方面考慮較少.支持在線自動模型構(gòu)建與訓(xùn)練要求在更低資源開銷下達(dá)到要求的訓(xùn)練效果,面臨許多挑戰(zhàn):首先,需要探索訓(xùn)練數(shù)據(jù)、算法、超參數(shù)更高效的搜索與組合方法,更早過濾效果次優(yōu)的訓(xùn)練方案;其次,需要更準(zhǔn)確地預(yù)估不同方案的訓(xùn)練耗時,比如在訓(xùn)練代價估算中同時考慮數(shù)據(jù)和模型的元數(shù)據(jù)信息以及考慮數(shù)據(jù)和模型復(fù)用帶來訓(xùn)練耗時降低.同時,自動模型構(gòu)建與訓(xùn)練需要具備自學(xué)習(xí)特性,可以將人工建模的過程作為學(xué)習(xí)對象.隨著人工建模過程和效果評測數(shù)據(jù)的積累,學(xué)習(xí)其中潛在的建模和訓(xùn)練優(yōu)化策略,持續(xù)優(yōu)化自動模型構(gòu)建和訓(xùn)練的效果.