大規模機器學習流程的構建與部署

2021-09-23 02:41:00 字數 2124 閱讀 8211

文章講的是大規模機器學習流程的構建與部署

現在有許多的機器學習演算法實現是可以擴充套件到大資料集上的(其中包括矩陣分解、svm、邏輯回歸、lasso 等等)。實際上,機器學習專家們很樂於指出的一點是:如果你能把機器學習問題轉化為乙個簡單的數值優化問題,你就幾近成功了。

當然,現實的問題是,很多機器學習專案是沒法簡化成乙個簡單的優化問題的。因此資料科學家們不得不去管理和維護複雜的資料專案,加之他們所要分析的問題經常也需要特定的機器學習流程。上游流程中每個階段的決策影響下游流程的結果,因此流程中模組的連線與互動成為了乙個研究的熱點。

在strata+hadoop world new york的報告上,伯克利教授ben recht描述了他們新的伯克利 amplab專案,該專案旨在提供一種構建和管理大規模機器學習的通用流程。鑑於amplab與spark專案的緊密聯絡,該項目的一些想法已在apache spark中初現端倪。

基元辨識與構建

第一步就是建立基礎部件(基石).機器學習流程往往用圖來描述和表達,amplab研究人員一直專注於針對大資料集的圖節點(機器學習流程基礎元件,簡稱基元)的擴充套件和優化。其中一些基元可能針對於特定領域和資料型別(例如文字,影象,聲音,時空資料),一些則是針對於更加通用場景的領域(例如統計學,機器學習).最近的乙個例子是ml-matrix矩陣庫,該庫是乙個執行於apach spark上的分布式矩陣計算庫。

機器學習模組以基元的形式來構成機器學習系統,使得機器學習系統更易於理解。由於流程中的模組幾乎都可解釋,因此相對於那些依賴於黑盒子的機器學習方法,這樣構建的機器學習系統更具透明性,易於解釋。

讓機器學習更具模組化:簡化流程融合

儘管基元可以作為基礎部件,但是使用者還是需要工具來完成整個流程的構建。現如今,工作流工具已經變得越來越普遍,而且諸如此類的工具已經有很多可供資料工程師,資料科學家,甚至商業分析師等使用(例如alteryx, rapidminer, alpine data, dataiku)。

正如上篇博文我提到的,我們將會看到越來越多的資料分析工具,這些工具一方面為程式設計師提供了優雅的介面設計,一方面為提供了簡單的dsl(領域特定語言)使得非專業程式設計師可以進行編輯。某種程度上說,通過dsl對機器學習流程(或者說對表達該流程的圖結構)進行封裝會變得越來越普遍。最新版本的apache spark (版本 1.2)提供了構建機器學習流程的api介面(如果你仔細看的話,我們已經利用dsl來實現機器學習流程構建了)。

做一些誤差分析

「我們正在試圖將機器學習系統植入自動駕駛汽車,電力系統網路等等。如果我們想讓機器學習真正影響到我們的日常生活,那麼我們最好能夠保證機器學習系統能如那些複雜系統(就如飛行器設計系統)般穩定。」-ben recht

我們是否能夠去限定這種層次式流程的近似誤差和收斂率呢?假定我們能夠計算每個節點的誤差,下一步就得有一種機制去提取整個流程的誤差。實際上,我們需要在產品實際部署的時候提供工具來保證流程能正常工作,同時可以期望提供一些測量誤差的方法。

為此,laurent lessard、ben recht 和 andrew packard一直利用從控制理論中的技術自動地對機器學習流程生成驗證證書。該方法已經能夠分析大資料集上大多數流行的機器學習技術。他們更長遠的目標則是能夠直接通過那些複雜的,分布式軟體系統的偽**,分別推導和分析出系統的效能特徵和魯棒性。(與amplab相關的velox專案提供了產品中模型的管理框架)。

隨著機器學習演算法日益滲透入各個領域,我們需要更好的工具來構建複雜的,健壯性強,穩定度高的機器學習系統。雖然諸如scikit-learn 和 graphlab已經提供了對機器學習流程構建的支援,但是像apache spark這種常用的分布式框架則把這種思想發揮到了極致,以使其能偶適應於更大的資料集,更廣泛的人們受益。目前,amplab前期的一些結果還是很令人振奮的,研究者們已經構建了大規模的機器學習系統,並且在視覺,語音以及文字處理方面取得了與各自領域最好成績都不相上下的結果。

大規模機器學習

如果我們有乙個低方差的模型,增加資料集的規模可以幫助你獲得更好的結果。我們應 該怎樣應對乙個有 100 萬條記錄的訓練集?以線性回歸模型為例,每一次梯度下降迭代,我們都需要計算訓練集的誤差的平方和,如果我們的學習演算法需要有 20 次迭代,這便已經是非常大的計算代價。首先應該做的事是去檢查乙個這麼大...

大規模機器學習

如果我們有乙個低方差的模型,增加資料集的規模可以幫助你獲得更好的結果。我們應 該怎樣應對乙個有 100 萬條記錄的訓練集?以線性回歸模型為例,每一次梯度下降迭代,我們都需要計算訓練集的誤差的平方和,如果我們的學習演算法需要有 20 次迭代,這便已經是非常大的計算代價。首先應該做的事是去檢查乙個這麼大...

機器學習 大規模機器學習

當資料有大量的資料,比如1億以上的時候,如果想擬合乙個線性回歸或者邏輯回歸時,梯度下降演算法的計算量將是非常龐大的。預檢查 為什麼不用1000個樣本,而需要用11億個?遇到高偏差問題時候,選擇合適大小的資料集即可,再增加資料集並不會改善,處理方式為尋找新的模型。如果是低方差的模型,增加資料集的規模可...