- MLOps實踐:機器學習從開發到生產
- 李攀登
- 3933字
- 2023-02-28 19:14:01
1.2 ML相關符號及術語定義
由于ML從業者的背景和專業領域不盡相同,不同背景的從業者在術語的使用上可能存在細微的差異。接下來,我們對常用的數據術語進行定義,以方便后面內容的介紹,如原始數據、輸入數據、特征和特征工程,以及與ML相關的術語,如參數、超參數、管道(Pipeline)等。
1.2.1 原始數據、輸入數據、特征與特征工程
數據是任何ML項目的核心“源材料”,原始數據指的是從業務系統直接或間接獲取的信息,數值屬性的原始數據通常可以直接輸入ML模型,但很多時候原始數據在輸入模型之前需要進行某種數據預處理,比如原始數據為圖片、文本等時。這里的數據預處理屬于特征工程的范疇,特征工程是對原始數據或中間特征進行一系列工程化的處理,目標是找到將原始數據或中間數據(已被預處理過的數據)映射為一個更適合建模的新的表示形式,以降低原始數據的噪聲和冗余,在提煉出原始數據中,盡可能多信息的同時還能更高效地刻畫原始數據與目標的關系。
最終用于模型訓練的數據被稱為輸入數據,輸入數據的集合被稱為輸入空間,通常每個具體的輸入稱為一個實例,稱實例的表示為特征向量,所有特征向量的集合存在于一個空間,即特征空間,特征空間的每一維就是一個特征。
在本書中,我們將使用輸入數據來表示輸入模型中的真實數據,比如,從業務系統收集到的時間戳,用特征來表示模型實際操作的轉化數據(比如,一周中的某一天或者一周發生某件事的次數)。針對中間特征的特征工程的目標則是,進一步提高模型訓練的性能,這里的性能可以是準確性??紤]到生產應用場景,有時候為了降低中間計算的復雜度,也需要使用特征工程的方法對中間數據進行處理,以滿足部署后業務方調用的工程性能要求,比如降維。
1.2.2 訓練樣本及預留樣本
我們談論的樣本集,通常是指在進行監督學習模型構建時用于訓練、驗證和測試ML模型的數據。其中用于訓練模型的樣本被稱作訓練樣本,用于驗證和測試模型的樣本被統稱為預留樣本。在實際操作中,通常會將大部分數據隨機地分配給訓練樣本:在訓練過程中輸入模型數據,用于在訓練過程中生成模型參數。驗證數據用于評估模型在該數據上的表現,根據模型在驗證數據上的性能來決定何時停止訓練運行,以及選擇合適的超參數。測試數據是完全沒有在訓練過程中使用過的數據,用于評估訓練后模型的泛化能力。
原則上,ML模型性能的離線評估必須在獨立的測試數據上計算,而不是在訓練或驗證集上。同樣重要的是,三個樣本集(訓練集、驗證集和測試集)都需要是同分布的,且使用相同的特征及特征工程邏輯。
1.2.3 參數與超參數
參數通常表示為學習算法所訓練的模型各變量的權重。參數是由學習算法根據訓練數據直接擬合而成的。學習的目標是找到這樣的參數值,使模型在一定意義上達到最優。比如,線性回歸方程y=wx+b中的w和b,在這個方程中,x是模型的輸入,y是輸出(預測),模型是否具有固定或可變數量的參數決定了它是“參數化”還是“非參數化”的。模型參數的一些示例如下。
● 人工神經網絡中的權重。
● 支持向量機中的支持向量。
● 線性回歸或邏輯回歸中的系數。
超參數則是學習算法或管道的輸入,會影響模型的性能,但不屬于訓練數據,不能從訓練數據中學習。例如,決策樹學習算法中的樹的最大深度,支持向量機中的誤分類的懲罰系數,k-最近鄰算法中的k,以及降維算法中的目標維度等都屬于超參數的范疇。模型的超參數通常又被稱為模型的外部參數,模型超參數的一些示例如下。
● 訓練神經網絡的學習率。
● 支持向量機的C和sigma超參數。
● k-最近鄰算法中的k。
對于初學者來說,經常會將模型超參數與模型參數混淆,這里提供一個簡單的判斷方法:如果一個參數是從業者必須手動指定的,那么它可能就是模型超參數。
1.2.4 參數模型、非參數模型、極大似然估計
前面定義的數據、特征、參數等概念都是學習的組成部分,學習的本質是找到一個輸入到輸出之間的映射,這里的映射通常用模型來表示,學習就是要訓練出最優模型,訓練的過程通常被稱為擬合,模型擬合本身是一個優化問題,所以我們需要指定一個要優化的目標函數(也被稱作損失函數)。在定義目標函數之前,需要設計模型框架,設計模型框架要考慮的因素之一是選擇參數化或非參數化的方法。
參數化方法,即參數模型的假設是,數據分布具有一定的函數形式,數據由固定數量的參數的分布生成。此時模型的擬合即為分布的估計,也就是指定或選擇模型的參數θ,使得該分布模型可以最佳地擬合觀測到的數據。
非參數化方法,即非參數模型的假設是參數的數量可以動態變化。在一些方法中,每一個數據點都可以看作一個參數,最常用的非參數化方法之一是k-最近鄰(k-Nearest Neighbors,KNN)算法,其思想是,根據特征空間中距離最近的數據樣本所對應的響應值來估計特征向量
的響應變量的值。k-最近鄰算法是最基礎的監督學習方法之一,在互聯網行業中被廣泛應用于推薦系統。非參數化方法的缺點是,數據維度越大數據空間就越稀疏,每次預測的時候都需要對局部觀測值進行計算,不能像參數模型那樣通過訓練集來概括觀測到的模式,接下來介紹的極大似然估計主要針對的是參數模型。
在統計學領域,包含概率論和數理統計兩大主題,極大似然估計是數理統計的核心環節,也是ML的核心概念。在圖1-3中,我們假設觀測到的數據獨立同分布于數據分布pdata(x,y),每個數據樣本(xi,yi)都可以被解釋為因素xi導致輸出yi的產生,目標函數則可以被定義為給定參數向量時的概率密度函數,觀測到的響應變量的概率是已知的:L(θ)=pmodel(y|x,θ)。

圖1-3 極大似然估計過程
L(θ)函數被稱為似然函數,它是在假設數據來自參數為θ的模型所指定的分布的情況下觀察到數據的概率。在實際應用中,通常為了方便分析和計算,會對似然函數取對數,記作對數似然(Log-Likehood)估計,簡稱LL(θ)。具體的公式如(式1-1)所示。

極大似然估計的目標是找到能使(式1-1)最大化的參數向量,如(式1-2)所示。

1.2.5 ML管道
首先,讓我們明確管道的概念,本書后續章節中會多次使用管道來定義不同的工作流程。在軟件開發領域,“管道”一詞源于CI/CD的DevOps原則,它是一組自動化流程,允許開發人員和DevOps專業人員將他們的代碼可靠、高效地編譯和部署到生產計算平臺??梢哉J為這些流程是模塊化和可組合的代碼塊,在整個預制的序列中執行特定的任務。
數據工程的核心概念之一是數據管道,數據管道是應用于其輸入和目標之間的一系列數據轉換。它們通常被定義為一個圖,其中每個節點都是一個轉換,邊代表依賴關系和執行順序。有許多專門的工具可以幫助創建、管理和運行這些管道。有時候,也可以稱數據管道為ETL(提取、轉換和加載)管道。
ML模型通常需要進行一系列不同類型的數據轉換,這些轉換一般是通過腳本甚至Jupyter中的單元來實現的,這使得它們難以進行可靠的管理和運行。而適當的數據管道方案在代碼復用、運行時可見性、可管理性及可擴展性等方面都表現出了優勢。
同樣,ML管道是一種對ML的工作流程進行編碼和自動化的技術,以生成用于生產的ML模型,本質上ML管道涉及的內容也屬于數據轉換的范疇。很多數據管道中也會使用ML模型進行轉換,但最終都服務于ML任務。大多數ML模型都需要兩個版本的管道:一個用于訓練,另一個用于服務。這是因為用于訓練和用于服務的數據格式、訪問方式及運行時都有差別,特別是對于實時請求中提供服務的模型。
ML管道是一個純代碼的工件或腳本,獨立于特定的數據實例。這意味著可以在源代碼控制中跟蹤其版本并使用常規的CI/CD進行管道的自動部署,這也是MLOps的核心實踐,這讓我們能夠以結構化和自動化的方式連接代碼和數據平面,具體如圖1-4所示。

圖1-4 使用ML管道連接數據、模型和代碼以生成模型與預測
需要注意的是,這里把ML管道分成了訓練和服務兩個相對獨立的管道。它們的共同點是,需要使用相同的邏輯執行數據轉換以生成可用特征,但它們的具體實現方式可能是非常不同的。例如,訓練管道通常運行在包含所有特征的批處理文件上或從數據庫中導出的數據框上,而服務管道通常是在線運行的并接收實時請求的特征,其余的離線特征從數據庫中檢索。
在實際應用中,不同模型的ML管道所涉及的節點具有相似性,因此應盡可能對管道中涉及的節點進行抽象,嘗試復用代碼和數據。例如:
● 特征存儲:統一提供用于訓練管道的歷史特征和用于服務管道的實時特征。
● 訓練過程各節點模塊化:將模型訓練過程中涉及的節點進行模塊化,有利于訓練管道的快速組合。
● 模型即服務:將服務管道封裝成通用的模型服務接口,并能夠一鍵生成模型服務。
ML管道的概念給ML工作帶來的轉變是,建模團隊不再只負責構建和維護ML模型,而是要將整個管道作為產品進行集中化開發和維護,這確保了迭代周期的完成效率并提供了更高的擴展性。
1.2.6 模型選擇與性能權衡
ML創建的模型本身可以視為一個程序,模型創建的過程會涉及以下常用概念。
模型選擇:我們可以將配置和訓練模型視為模型選擇的過程,甚至ML算法的選擇也是模型選擇過程的一部分,每次迭代都會產生一個新模型,對于迭代出來的這些模型,我們可以選擇使用或繼續迭代。當選擇了要使用的模型時,該模型相對應的訓練樣本和算法配置也隨之確定。
歸納偏差:偏差是對所選模型施加的限制,所有模型都會有偏差,偏差會在模型中引入錯誤,并且根據定義,所有模型都可能有錯誤(因為模型是對觀測值的概括)。ML方法可以創建具有低偏差或高偏差的模型,并且可以使用策略來降低模型的偏差。
模型方差:方差體現了模型對訓練數據的敏感程度,在數據集上創建模型時,ML方法可以具有高方差或低方差。降低模型方差的一種策略是,在具有不同初始條件的數據集上多次運行模型訓練過程,并將平均準確率作為模型性能。
偏差與方差權衡:模型選擇本質上可以被認為是對偏差和方差進行權衡的過程。低偏差模型將具有高方差,需要經過長時間或多次訓練才能獲得可用模型。高偏差模型將具有低方差并且可以快速訓練,但模型性能通常不佳。