
簡(jiǎn)介 隨著機(jī)器學(xué)習(xí)領(lǐng)域和技術(shù)本身的發(fā)展,項(xiàng)目中涉及的階段和工作流程也在不斷發(fā)展。 支持GPU的移動(dòng)設(shè)備的出現(xiàn)為傳統(tǒng)機(jī)器學(xué)習(xí)項(xiàng)目的工作流程引入了一個(gè)新階段。新階段的出現(xiàn)又造就了新的角色和職位。 本文的目標(biāo): - 詳細(xì)剖析機(jī)器學(xué)習(xí)項(xiàng)目中的每個(gè)階段。
- 每個(gè)階段結(jié)束之后交付的最終結(jié)果。

問題定義 問題定義是計(jì)算機(jī)視覺/機(jī)器學(xué)習(xí)項(xiàng)目的首個(gè)階段,重點(diǎn)工作是充分理解需要通過機(jī)器學(xué)習(xí)解決的問題。通常這個(gè)階段需要一個(gè)描述問題的人,以指定的形式記錄有待解決的問題,并詳細(xì)描述各個(gè)場(chǎng)景下的親身經(jīng)歷。這個(gè)階段還需要從描述問題的人的角度捕獲理想的解決方案。這個(gè)階段的交付產(chǎn)物是文檔(word或pdf),其中包括(但不限于)以下內(nèi)容: 相關(guān)角色:IT業(yè)務(wù)分析師
研究 這個(gè)階段是后續(xù)階段(實(shí)現(xiàn)計(jì)劃和開發(fā)工作等)的基礎(chǔ)。這個(gè)階段需要對(duì)解決方案的采用形式進(jìn)行探索,還要研究信息的數(shù)據(jù)結(jié)構(gòu)、格式和來源。對(duì)問題的理解、提出的解決方案以及可用數(shù)據(jù)的結(jié)合,可以幫助我們選擇一個(gè)適合的機(jī)器學(xué)習(xí)模型,最終實(shí)現(xiàn)理想的解決方案。在這一階段,我們需要研究算法和模型實(shí)現(xiàn)所需要的硬件和軟件,以便在后續(xù)階段節(jié)省大量時(shí)間。該階段的交付物是文檔(word或pdf),其中包括對(duì)以下內(nèi)容的研究:- 數(shù)據(jù)結(jié)構(gòu)和來源
- 神經(jīng)網(wǎng)絡(luò)/模型架構(gòu)
相關(guān)職位:機(jī)器學(xué)習(xí)研究員、數(shù)據(jù)科學(xué)家、AI研究員等。
數(shù)據(jù)聚合/挖掘/爬取 數(shù)據(jù)是機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺應(yīng)用程序的動(dòng)力。其中,數(shù)據(jù)聚合是至關(guān)重要的一步,它可以為模型的效率和性能打下基礎(chǔ)。解決方案的輸出定義了數(shù)據(jù)的聚合。數(shù)據(jù)理解至關(guān)重要,任何來源的數(shù)據(jù)都可以利用可視化工具或統(tǒng)計(jì)方法進(jìn)行檢查和分析。數(shù)據(jù)檢查通過確認(rèn)數(shù)據(jù)的來源來提高數(shù)據(jù)的完整性和可信度。數(shù)據(jù)的分析和探索工作還需要滿足以下要求:- 收集的數(shù)據(jù)需要足夠多樣化,以確保模型的預(yù)測(cè)能力可以適應(yīng)各種情況。
- 收集的數(shù)據(jù)需要追求公正,以確保模型可以在推理過程中正確地歸納。
收集數(shù)據(jù)的工具各種各樣。數(shù)據(jù)來源可以是API、XML、CSV或Excel文件等形式。在某些情況下,我們還需要從在線資源中挖掘或抓取數(shù)據(jù)。在抓取之前,請(qǐng)檢查第三方網(wǎng)站的抓取/挖掘政策。該階段的交付產(chǎn)物是一個(gè)包含原始數(shù)據(jù)的文件夾,以及包含了注釋文件的子文件夾。相關(guān)職位:數(shù)據(jù)科學(xué)家、數(shù)據(jù)分析師。
數(shù)據(jù)準(zhǔn)備/預(yù)處理/增強(qiáng) 數(shù)據(jù)的預(yù)處理步驟主要基于模型輸入要求?;仡櫻芯侩A段,再想一想模型/神經(jīng)網(wǎng)絡(luò)架構(gòu)所需的輸入?yún)?shù)和要求。預(yù)處理步驟將原始數(shù)據(jù)轉(zhuǎn)換成能夠成功訓(xùn)練模型的格式。數(shù)據(jù)預(yù)處理包括(但不限于)以下步驟:- 重新格式化數(shù)據(jù),包括調(diào)整圖像大小、修改顏色通道、減少噪聲、圖像增強(qiáng)等
- 數(shù)據(jù)標(biāo)準(zhǔn)化
數(shù)據(jù)增強(qiáng)是為改善已獲得數(shù)據(jù)的多樣化而執(zhí)行的步驟。圖像數(shù)據(jù)的增強(qiáng)可以采取以下形式:該階段的交付產(chǎn)物是一個(gè)文件夾,其中包含標(biāo)記為“訓(xùn)練”、“測(cè)試”和“驗(yàn)證”的子文件夾以及每個(gè)子文件夾中的注釋文件。相關(guān)職位:數(shù)據(jù)科學(xué)家
模型的實(shí)現(xiàn) 通常,我們可以利用各種在線資源提供的現(xiàn)成的模型來簡(jiǎn)化模型的實(shí)現(xiàn)。大多數(shù)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)框架(例如PyTorch或TensorFlow)都提供預(yù)訓(xùn)練的模型,這些模型可用于加速模型的實(shí)現(xiàn)階段。這些經(jīng)過預(yù)訓(xùn)練的模型都已在強(qiáng)大的數(shù)據(jù)集上進(jìn)行了訓(xùn)練,而且達(dá)到了最新的神經(jīng)網(wǎng)絡(luò)架構(gòu)的性能和結(jié)構(gòu)。一般,我們很少需要從零開始實(shí)現(xiàn)模型。模型實(shí)現(xiàn)階段需要完成以下工作:- 刪除神經(jīng)網(wǎng)絡(luò)中的最后一層,把模型的用途改為特定的任務(wù)。例如,刪除Resnet神經(jīng)網(wǎng)絡(luò)架構(gòu)的最后一層,即可在編碼器-解碼器神經(jīng)網(wǎng)絡(luò)架構(gòu)中使用已訓(xùn)練好的模型。
該階段的交付產(chǎn)物是一個(gè)隨時(shí)可以開展訓(xùn)練的模型。相關(guān)職位:數(shù)據(jù)科學(xué)家、機(jī)器學(xué)習(xí)工程師、計(jì)算機(jī)視覺工程師、NLP工程師、AI工程師。
訓(xùn)練 在訓(xùn)練階段,我們將使用前面的數(shù)據(jù)階段提供的數(shù)據(jù)來訓(xùn)練模型。模型訓(xùn)練的實(shí)現(xiàn)包括將聚合的訓(xùn)練數(shù)據(jù)傳遞給模型,創(chuàng)建能夠勝任專門任務(wù)的模型。訓(xùn)練模型需要將訓(xùn)練數(shù)據(jù)分批后傳遞給模型,然后迭代指定次數(shù)的epoch。在訓(xùn)練的早期階段,模型的性能和準(zhǔn)確度可能不怎么令人滿意。但隨著模型不斷執(zhí)行預(yù)測(cè),比較預(yù)測(cè)值與期望值,并在神經(jīng)網(wǎng)絡(luò)內(nèi)反向傳播,逐漸地模型就能夠得到改善,更好地完成自己的任務(wù)。在訓(xùn)練開始之前,我們必須設(shè)置超參數(shù)和網(wǎng)絡(luò)參數(shù),以控制模型訓(xùn)練階段的效率。超參數(shù):在神經(jīng)網(wǎng)絡(luò)訓(xùn)練開始之前定義的值。通過初始化控制神經(jīng)網(wǎng)絡(luò)獲得積極的訓(xùn)練結(jié)果。它們會(huì)影響機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的算法,但不會(huì)受算法的影響。它們的值不會(huì)在訓(xùn)練過程中改變。超參數(shù)的例子包括正則化值、學(xué)習(xí)速率、層數(shù)等。網(wǎng)絡(luò)參數(shù):這是神經(jīng)網(wǎng)絡(luò)中不會(huì)被手動(dòng)初始化的部分。它們是神經(jīng)網(wǎng)絡(luò)內(nèi)部的值,直接由神經(jīng)網(wǎng)絡(luò)控制。網(wǎng)絡(luò)參數(shù)的例子之一就是神經(jīng)網(wǎng)絡(luò)內(nèi)部的權(quán)重。在訓(xùn)練期間,記錄每次訓(xùn)練過程和每個(gè)epoch的指標(biāo)非常重要。通常我們需要收集的指標(biāo)如下:為了整理和可視化訓(xùn)練指標(biāo),我們可以使用Matplotlib和Tensorboard等可視化工具。我們可以通過可視化訓(xùn)練指標(biāo),來確定一些常見的機(jī)器學(xué)習(xí)模型的訓(xùn)練陷阱,例如欠擬合和過度擬合。- 欠擬合:當(dāng)機(jī)器學(xué)習(xí)算法無法學(xué)習(xí)數(shù)據(jù)集中的模式時(shí),就會(huì)發(fā)生這種情況。我們可以利用更加適合該任務(wù)的算法或模型來解決這個(gè)問題。還可以通過識(shí)別數(shù)據(jù)中的更多特征并將其呈現(xiàn)給算法來修復(fù)欠擬合的問題。
- 過度擬合:這個(gè)問題指的是,算法在預(yù)測(cè)新的模式時(shí),過度考慮訓(xùn)練過程中觀測(cè)到的模式。這會(huì)導(dǎo)致機(jī)器學(xué)習(xí)算法無法準(zhǔn)確地歸納沒有見過的數(shù)據(jù)。如果訓(xùn)練數(shù)據(jù)不能準(zhǔn)確地表示測(cè)試數(shù)據(jù)的分布,就有可能發(fā)生過度擬合。我們可以通過減少訓(xùn)練數(shù)據(jù)中的特征數(shù)量,以及通過各種技術(shù)降低網(wǎng)絡(luò)的復(fù)雜性來解決過度擬合的問題。
該階段的交付產(chǎn)物是開發(fā)好的模型和訓(xùn)練指標(biāo)。相關(guān)職位:數(shù)據(jù)科學(xué)家、機(jī)器學(xué)習(xí)工程師、計(jì)算機(jī)視覺工程師、NLP工程師、AI工程師
評(píng)估 到這個(gè)階段的時(shí)候,你已經(jīng)有了訓(xùn)練有素的模型,接下來需要對(duì)模型的性能進(jìn)行評(píng)估。我們需要使用“測(cè)試數(shù)據(jù)”來評(píng)估模型。在訓(xùn)練期間,不可以將測(cè)試數(shù)據(jù)展示給模型。測(cè)試數(shù)據(jù)代表了實(shí)際情況下應(yīng)有的數(shù)據(jù)示例。- 混淆矩陣(錯(cuò)誤矩陣):提供真實(shí)的分類與分類器的結(jié)果匹配或不匹配次數(shù)的直觀圖示?;煜仃囃ǔ1硎境杀砀竦男问剑写碚鎸?shí)的觀測(cè)結(jié)果,而列代表分類器的推斷結(jié)果。
- 準(zhǔn)確率與召回率:這兩個(gè)是性能指標(biāo),用于評(píng)估分類算法、視覺搜索系統(tǒng)等。以評(píng)估視覺搜索系統(tǒng)(根據(jù)查詢圖像查找相似圖像)為例,準(zhǔn)確率可以反映出返回的相關(guān)結(jié)果的數(shù)量,而召回率代表數(shù)據(jù)集中返回的相關(guān)結(jié)果的數(shù)量。
該階段的交付產(chǎn)物是包含評(píng)估結(jié)果以及評(píng)估策略輸出的文檔。相關(guān)職位:數(shù)據(jù)科學(xué)家、機(jī)器學(xué)習(xí)工程師、計(jì)算機(jī)視覺工程師、NLP工程師、AI工程師。
參數(shù)調(diào)整和推斷 參數(shù)調(diào)整是通過修改超參數(shù)值而優(yōu)化模型的過程。參數(shù)調(diào)整的目的是提高模型的性能,這關(guān)系到評(píng)估結(jié)果的改善。在調(diào)整完超參數(shù)并選擇好新值后,需要再次訓(xùn)練和評(píng)估。這個(gè)參數(shù)調(diào)整的過程需要持續(xù)到生成合適的模型為止。推斷是模型的真實(shí)測(cè)試。涉及的工作包括從合適的環(huán)境中獲取的真實(shí)數(shù)據(jù)。到這個(gè)階段的時(shí)候,我們應(yīng)該對(duì)模型的性能充滿信心。該階段的交付產(chǎn)物是改進(jìn)后的模型。相關(guān)職位:數(shù)據(jù)科學(xué)家、機(jī)器學(xué)習(xí)工程師、計(jì)算機(jī)視覺工程師、NLP工程師、AI工程師。
面向移動(dòng)設(shè)備的模型轉(zhuǎn)換 在建立好完善的模型后,我們需要將它放到移動(dòng)設(shè)備上。當(dāng)我們?yōu)殚_發(fā)的模型需要在邊緣設(shè)備(例如手機(jī)或物聯(lián)網(wǎng)設(shè)備)中使用時(shí),就需要進(jìn)行模型轉(zhuǎn)換。模型轉(zhuǎn)換需要將在GPU/CPU環(huán)境中訓(xùn)練好的機(jī)器學(xué)習(xí)模型轉(zhuǎn)換成優(yōu)化高效的版本。經(jīng)過簡(jiǎn)化的模型能夠存儲(chǔ)在設(shè)備上,而且還能夠有效準(zhǔn)確地進(jìn)行推斷。我們可以利用以下工具將模型轉(zhuǎn)換到移動(dòng)設(shè)備上:- Core ML: 這是蘋果發(fā)布的框架,用于創(chuàng)建iOS專用的模型。CoreML提供了常見的機(jī)器學(xué)習(xí)任務(wù)(例如識(shí)別和檢測(cè))的模型。它是iOS版的TensorFlow Lite。
- PyTorch Mobile:PyTorch是一款流行的機(jī)器學(xué)習(xí)框架,并廣泛用于與機(jī)器學(xué)習(xí)相關(guān)的研究。PyTorch移動(dòng)版可與TensorFlow Lite媲美,因?yàn)樗梢詫yTorch訓(xùn)練的模型轉(zhuǎn)換為可在iOS和Android設(shè)備上使用的移動(dòng)版本。但是,PyTorch Mobile仍處于起步階段,目前處于試驗(yàn)發(fā)布狀態(tài)。
- TensorFlow Lite:利用現(xiàn)有的TensorFlow模型,將其轉(zhuǎn)換為.tflite文件形式的優(yōu)化高效版本。簡(jiǎn)化后的模型非常小,可以存儲(chǔ)在設(shè)備上,并且能夠準(zhǔn)確地進(jìn)行推斷。
該階段的交付產(chǎn)物是針對(duì)設(shè)備使用進(jìn)行過優(yōu)化的機(jī)器學(xué)習(xí)模型。相關(guān)職位:數(shù)據(jù)科學(xué)家、機(jī)器學(xué)習(xí)工程師、計(jì)算機(jī)視覺工程師、NLP工程師、AI工程師。
模型部署 部署最終訓(xùn)練好的模型是最后一個(gè)階段。將我們的模型集成到更廣泛的應(yīng)用程序或工具生態(tài)系統(tǒng)中,或者只是圍繞我們的模型構(gòu)建交互式Web界面,是模型部署的重要步驟。在生產(chǎn)環(huán)境中,這個(gè)階段還需要通過監(jiān)視評(píng)估模型的性能。這是為了確保模型表現(xiàn)良好,而且非常適合目標(biāo)。模型的再訓(xùn)練和更新也是模型部署階段的一項(xiàng)工作。模型更新可確保我們模型能夠滿足任務(wù)的可信度和可靠性。 相關(guān)職位:數(shù)據(jù)工程師、機(jī)器學(xué)習(xí)工程師、計(jì)算機(jī)視覺工程師、NLP工程師、AI工程師。https:///10-stages-of-a-machine-learning-project-in-2020-and-where-you-fit-cb73ad4726cb本文為CSDN翻譯文章,轉(zhuǎn)載請(qǐng)注明出處。
|