新聞中心
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。

專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)新蔡免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
使用機(jī)器學(xué)習(xí)模型越久,就越能意識到,正確了解模型當(dāng)下的運行目的及效果有多重要。在實踐中,即便是在最佳情況下,跟蹤模型的運行情況(尤其是在測試各種模型參數(shù)組合時)都十分繁瑣。大多數(shù)情況下,我都會構(gòu)建自己的工具來調(diào)試和分析機(jī)器學(xué)習(xí)模型。
最近,在為MAFAT的多普勒脈沖雷達(dá)分類挑戰(zhàn)設(shè)計各種模型的時候,我發(fā)覺自己手動構(gòu)建模型調(diào)試工具就是在浪費時間,而搭建集成(組合大多數(shù)分類策略的機(jī)器學(xué)習(xí)模型,搭對了就會帶來極大效用)時尤為繁瑣。
創(chuàng)建集成的問題就是,各種模型及分類都需要讓策略奏效。這就意味著要訓(xùn)練更多的模型、進(jìn)行更多的分析、了解更多關(guān)于整體精度及模型性能的參數(shù)。同樣,這就要求我花更多的時間創(chuàng)建自己的調(diào)試工具和策略。
為了更好地利用時間和資源,我決定使用一系列可用的在線工具來調(diào)試和分析機(jī)器學(xué)習(xí)模型。測試了幾個工具后,我成功縮減了清單:開發(fā)或改進(jìn)機(jī)器學(xué)習(xí)模型時,每個數(shù)據(jù)科學(xué)家都應(yīng)考慮這兩個超贊的工具。
Weights & Biases
Weights &Biases圖表跟蹤驗證集內(nèi)各種具有不同參數(shù)的模型的性能。Y軸表示精度,X軸表示訓(xùn)練回合數(shù)。
Weights & Biases(W&B)是一家總部位于舊金山的公司,提供一系列能無縫融入現(xiàn)有或新項目的深度學(xué)習(xí)及機(jī)器學(xué)習(xí)工具。它主要是跟蹤項目中模型變化的實時性能,簡直太管用了。
我在做項目時,常常就追蹤問題手足無措:何時進(jìn)行了哪些更改?這些更改對項目的各種評估指標(biāo)是否產(chǎn)生了正面或負(fù)面影響?而W&B能用以多種方式存儲并可視化這些評估指標(biāo),其中最有效的就是圖表和表格:
用W&B工具跟蹤和可視化各種指標(biāo)以進(jìn)行并排比較的示例
模型數(shù)據(jù)存儲在可導(dǎo)出表格中,以便在W&B網(wǎng)站上進(jìn)行排序和評估。
如你所見,折線圖表示在訓(xùn)練期間使用不同指標(biāo)跟蹤各種模型的性能。這樣便能進(jìn)行無縫并排比較,以檢查過擬合或檢查驗證集上表現(xiàn)最佳的模型等。
W&B如何與項目關(guān)聯(lián)?
在W&B網(wǎng)站上創(chuàng)建賬戶后,必須在本地環(huán)境下安裝并登錄到個人頁面。
- !pip install --upgrade wandb
- !wandb login
深度學(xué)習(xí)或者機(jī)器學(xué)習(xí)工具不同,情況也可能不同。我用Keras,但其它項目的文檔會更清晰,也易于執(zhí)行:
- #Import the package
- import wandb
- from wandb.keras import WandbCallback#Initialize the W&B object
- wandb.init(project="tester")#Link the model with W&B’stracking metrics
- model.fit(X_train, y_train, validationData=(X_test, y_test) epochs=config.epochs, callbacks=[WandbCallback()])model.save(os.path.join(wandb.run.dir,"model.h5"))
訓(xùn)練模型時,W&B帳戶會實時跟蹤和更新進(jìn)度,在賬戶內(nèi)能輕松分析和評估模型的性能。在這里,你可以選擇創(chuàng)建報告,提供更專業(yè)、更易理解的結(jié)果視圖,可以在其中覆蓋文本和其他視覺效果。
W&B十分有助于跟蹤模型的性能,在更改參數(shù)并嘗試各種技術(shù)時更是如此。實際上,這個說法絕不夸張。它確實能幫上大忙:OpenAI和Toyota Research這樣的大公司定期使用它,稱贊它是靈活且有效用的項目工具。
Uber的Manifold
圖源:unsplash
我正在項目中創(chuàng)建集成。一個集成是不同算法的集合,每個算法就同一數(shù)據(jù)進(jìn)行訓(xùn)練并提供預(yù)測。集成的優(yōu)勢在于,它提供了一系列不同的策略來尋找解決方案,并利用多數(shù)票使所有模型的分類民主化。這很有用,因為盡管單個模型可以很好地預(yù)測部分?jǐn)?shù)據(jù),但它可能會在其他部分不知所措。
在機(jī)器學(xué)習(xí)中,“集成就是數(shù)字力量”。為了讓集成表現(xiàn)良好,組成集成的各個模型必須能進(jìn)行多樣化預(yù)測。多樣化預(yù)測,即不能所有模型都對某數(shù)據(jù)進(jìn)行一模一樣的預(yù)測;它們應(yīng)該能對不同數(shù)據(jù)進(jìn)行準(zhǔn)確預(yù)測。然而這也帶來了問題:你怎么知道集成進(jìn)行的是多樣化預(yù)測呢?看看交通科技巨頭Uber的Manifold吧。
Uber的Manifold是個開源長期項目,旨在為機(jī)器學(xué)習(xí)提供調(diào)試的可視化工具(模型是什么樣子的都無所謂)。通俗地講,Manifold讓你能看見哪個模型在數(shù)據(jù)子集中表現(xiàn)不佳、哪些特性導(dǎo)致了表現(xiàn)不佳。
集成能幫大忙。它創(chuàng)建了一個Widget輸出,在Notebook就能交互以進(jìn)行快速分析。注意,該工具目前僅在經(jīng)典的Jupyter Notebook電腦上可用。它在Jupyter Lab或Google的Colab上不能運行。
Manifold使用k均值聚類——一種鄰近分組技術(shù),將預(yù)測數(shù)據(jù)分為性能相似的片段。想象一下,這是將數(shù)據(jù)分成相似的子類,然后沿著每個分段繪制模型,其中模型越靠左,則在該分段上表現(xiàn)越好。隨機(jī)生成的示例中可以看到這一點:
上述例子中有三個模型,輸入數(shù)據(jù)被分成四段。把對數(shù)損失(log-loss)作為性能指標(biāo),可以看到model_1在segment_0上的表現(xiàn)不佳,而model_2在segment_2上的表現(xiàn)不佳。線的形狀表示性能分布,線的高度表示對數(shù)損失下的相對數(shù)據(jù)點計數(shù)。例如,在segment_1的model_1上,對數(shù)損失為1.5,點的均值低,但十分密集。
Manifold還提供了功能歸因視圖:
功能歸因視圖強(qiáng)調(diào)每個片段的功能分布。在上面的示例中,數(shù)據(jù)組0包含聚類2和3,將其與包含聚類0和1的數(shù)據(jù)組1進(jìn)行比較。x軸是特征值,而y軸是原因的強(qiáng)度。Feature_0高亮顯示這些差異,而Feature_1高亮顯示特征值的直方圖。
那么,如何把Manifold融入項目?
Manifold還處在早期研發(fā)階段,還得繼續(xù)調(diào)bug。但是,這不該妨礙你在項目中使用它。就個人情況來說,我需要弄幾個安裝包才能在Jupyter Notebook上運行它。
- !jupyter nbextension install --py --sys-prefix widgetsnbextension
- !jupyter nbextension enable --py --sys-prefix widgetsnbextension
- !pip install mlvis!jupyter nbextension install --py --symlink --sys-prefix mlvis
- !jupyter nbextension enable --py --sys-prefix mlvis
僅僅安裝nbextention包是不夠的,我還必須啟用這些軟件包。可以在這里導(dǎo)入一些demo工具:
- from mlvis import Manifold
- import sys, json, mathfrom random import uniform
要使用Manifold框架,數(shù)據(jù)需要分成三組特定格式。第一組是所有必須在字典列表中的x值:
- #Example of x-values
- x = [
- {'feature_0': 21, 'feature_1': 'B'},
- {'feature_0': 36, 'feature_1': 'A'}
- ]
第二組是不同的模型預(yù)測,它必須是列表的列表,每個列表都是不同模型的預(yù)測:
- #Example of model predictions
- yPred = [
- [{'false': 0.1, 'true': 0.9}, {'false':0.8, 'true': 0.2}],
- [{'false': 0.3, 'true': 0.7}, {'false':0.9, 'true': 0.1}],
- [{'false': 0.6, 'true': 0.4}, {'false':0.4, 'true': 0.6}]
- ]
最后一組是ground truth值或?qū)嶋H正確的y值,它們在列表值中:
- #Example of ground truth
- yTrue = [
- 'true', 'false'
- ]
數(shù)據(jù)一旦采用這種格式,值就可以輸入到Manifold對象中,操作進(jìn)行Widget,有些類似于上面的例子:
- Manifold(props={'data': {
- 'x': x,
- 'yPred': yPred,
- 'yTrue': yTrue
- }})
然后使用Manifold就能直觀地評估不同模型對相同數(shù)據(jù)的表現(xiàn)了。這對于構(gòu)建集成非常有幫助,因為它使我能夠了解哪些模型在哪里執(zhí)行,哪些數(shù)據(jù)集群是模型最難分類的。Manifold同樣幫我評估了集成中每個模型的預(yù)測多樣性,使我能構(gòu)建一個更強(qiáng)大、能分類一系列不同輸入數(shù)據(jù)的設(shè)備。
圖源:unsplash
對我來說,上述兩種工具真的是越來越有用了。它們可以幫我應(yīng)對這一挑戰(zhàn)并切實改善設(shè)備的性能,希望讀者也能用這些工具來創(chuàng)建更好的模型。
網(wǎng)站標(biāo)題:為了下個項目的質(zhì)量!每個數(shù)據(jù)科學(xué)家都應(yīng)該學(xué)會這兩種工具
URL地址:http://m.5511xx.com/article/coeiese.html


咨詢
建站咨詢
