機(jī)器學(xué)習(xí)完整流程
一個(gè)完整的機(jī)器學(xué)習(xí)項(xiàng)目通常包括以下步驟:
1. 確定項(xiàng)目目標(biāo):明確項(xiàng)目的目標(biāo),了解需要解決的問題和期望的輸出。
2. 數(shù)據(jù)收集與探索:收集和獲取相關(guān)的數(shù)據(jù),并進(jìn)行數(shù)據(jù)的探索與理解。包括數(shù)據(jù)的質(zhì)量檢查、缺失值、異常值的處理,統(tǒng)計(jì)特征分析等。
3. 數(shù)據(jù)預(yù)處理與特征工程:對數(shù)據(jù)進(jìn)行預(yù)處理和特征工程,包括數(shù)據(jù)清洗、歸一化/標(biāo)準(zhǔn)化、特征選擇、特征提取、生成新特征等,以使數(shù)據(jù)適合后續(xù)建模。
4. 模型選擇與訓(xùn)練:根據(jù)問題的性質(zhì)選擇合適的機(jī)器學(xué)習(xí)模型,將數(shù)據(jù)分為訓(xùn)練集和測試集,使用訓(xùn)練集對模型進(jìn)行訓(xùn)練和參數(shù)調(diào)優(yōu)。
5. 模型評估與調(diào)優(yōu):使用測試集或交叉驗(yàn)證進(jìn)行模型性能評估,在評估指標(biāo)的基礎(chǔ)上對模型進(jìn)行調(diào)優(yōu),包括調(diào)整模型參數(shù)、嘗試不同的算法和模型架構(gòu)等。
6. 模型部署與應(yīng)用:將訓(xùn)練好的模型部署到實(shí)際應(yīng)用中,以解決實(shí)際問題。這可能涉及將模型集成到應(yīng)用程序、服務(wù)或生產(chǎn)環(huán)境中,并確保模型的效果和表現(xiàn)符合預(yù)期。
7. 持續(xù)監(jiān)測與維護(hù):對模型進(jìn)行監(jiān)測和維護(hù),跟蹤模型在實(shí)際應(yīng)用中的表現(xiàn)并及時(shí)調(diào)整或更新模型,以保持模型的性能和效果。
8. 文檔與總結(jié):記錄和整理項(xiàng)目的過程、方法和結(jié)果,撰寫項(xiàng)目報(bào)告和總結(jié),以便于后續(xù)回顧和復(fù)現(xiàn)項(xiàng)目。
這是一個(gè)常見的機(jī)器學(xué)習(xí)項(xiàng)目流程,具體的步驟和流程可以根據(jù)不同的項(xiàng)目和需求進(jìn)行調(diào)整和擴(kuò)展。
部署機(jī)器學(xué)習(xí)的過程涉及多個(gè)步驟。首先選擇一個(gè)模型,針對特定任務(wù)加以訓(xùn)練,用測試數(shù)據(jù)進(jìn)行驗(yàn)證,然后,將該模型部署到實(shí)際系統(tǒng)中并進(jìn)行監(jiān)控。在本文中,我們將討論這些步驟,將每個(gè)步驟拆分講解來介紹機(jī)器學(xué)習(xí)。
機(jī)器學(xué)習(xí)是指在沒有明確指令的情況下能夠?qū)W習(xí)和加以改進(jìn)的系統(tǒng)。這些系統(tǒng)從數(shù)據(jù)中學(xué)習(xí),用于執(zhí)行特定的任務(wù)或功能。在某些情況下,學(xué)習(xí),或者更具體地說,訓(xùn)練,是在受監(jiān)督的方式下進(jìn)行,當(dāng)輸出不正確時(shí)對模型加以調(diào)整,使其生成正確的輸出。在其他情況下,則實(shí)行無監(jiān)督學(xué)習(xí),由系統(tǒng)負(fù)責(zé)梳理數(shù)據(jù)來發(fā)現(xiàn)以前未知的模式。大多數(shù)機(jī)器學(xué)習(xí)模型都是遵循這兩種范式(監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí))。
現(xiàn)在,讓我們深入研究“模型”的含義,然后探究數(shù)據(jù)如何成為機(jī)器學(xué)習(xí)的燃料。
機(jī)器學(xué)習(xí)模型
模型是機(jī)器學(xué)習(xí)解決方案的抽象化表述。模型定義架構(gòu),架構(gòu)經(jīng)過訓(xùn)練變成產(chǎn)品實(shí)現(xiàn)。所以,我們不是部署模型,而是部署經(jīng)過數(shù)據(jù)訓(xùn)練的模型的實(shí)現(xiàn)(在下一節(jié)中有更加詳細(xì)的介紹)。模型 + 數(shù)據(jù) + 訓(xùn)練=機(jī)器學(xué)習(xí)解決方案的實(shí)例(圖1)。
圖1:從機(jī)器學(xué)習(xí)模型到解決方案。(圖源:作者)
機(jī)器學(xué)習(xí)解決方案代表一個(gè)系統(tǒng)。它們接受輸入,在網(wǎng)絡(luò)中執(zhí)行不同類型的計(jì)算,然后提供輸出。輸入和輸出代表數(shù)值型數(shù)據(jù),這意味著,在某些情況下,需要轉(zhuǎn)譯。例如,將文本數(shù)據(jù)輸入深度學(xué)習(xí)網(wǎng)絡(luò)需要將單詞編碼成數(shù)字形式,考慮到可以使用的單詞的多樣性,該數(shù)字形式通常是高維向量。同樣,輸出可能需要從數(shù)字形式轉(zhuǎn)譯回文本形式。
機(jī)器學(xué)習(xí)模型有多種類型,如神經(jīng)網(wǎng)絡(luò)模型、貝葉斯 (Bayesian) 模型、回歸模型、聚類模型等。您選擇的模型是基于著手解決的問題。
對于神經(jīng)網(wǎng)絡(luò)來說,模型從淺多層網(wǎng)絡(luò)到深度神經(jīng)網(wǎng)絡(luò),類型豐富,而深度神經(jīng)網(wǎng)絡(luò)還包括多層特化神經(jīng)元(處理單元)。深度神經(jīng)網(wǎng)絡(luò)還有一系列基于目標(biāo)應(yīng)用的可用模型。例如:
如果您的應(yīng)用側(cè)重于識別圖像中的對象,那么卷積神經(jīng)網(wǎng)絡(luò) (CNN) 就是理想的模型。CNN已被應(yīng)用于皮膚癌檢測,效果優(yōu)于皮膚科醫(yī)生的平均水平。
如果您的應(yīng)用涉及預(yù)測或生成復(fù)雜序列(如人類語言句子),那么遞歸神經(jīng)網(wǎng)絡(luò) (RNN) 或長短期記憶網(wǎng)絡(luò) (LSTM) 是理想模型。LSTM也已經(jīng)應(yīng)用到人類語言的機(jī)器翻譯中。
如果您的應(yīng)用涉及用人類語言描述圖像內(nèi)容,可以使用CNN和LSTM的組合(圖像輸入CNN,CNN的輸出代表LSTM的輸入,后者發(fā)出詞匯序列)。
如果您的應(yīng)用涉及生成現(xiàn)實(shí)圖像(如風(fēng)景或人臉),那么生成對抗網(wǎng)絡(luò) (GAN) 是當(dāng)前最先進(jìn)的模型。
這些模型代表了當(dāng)今常用的部分深層神經(jīng)網(wǎng)絡(luò)架構(gòu)。深度神經(jīng)網(wǎng)絡(luò)深受歡迎,因?yàn)樗鼈兛梢越邮芊墙Y(jié)構(gòu)化數(shù)據(jù),如圖像、視頻或音頻信息。網(wǎng)絡(luò)中的各層構(gòu)成一個(gè)特征層次結(jié)構(gòu),使它們能夠?qū)Ψ浅?fù)雜的信息進(jìn)行分類。深度神經(jīng)網(wǎng)絡(luò)已經(jīng)在許多問題領(lǐng)域展示出先進(jìn)的性能。但是像其他機(jī)器學(xué)習(xí)模型一樣,它們的準(zhǔn)確性依賴于數(shù)據(jù)。接下來我們就探討一下這個(gè)方面。
數(shù)據(jù)和訓(xùn)練
無論在運(yùn)算中,還是在通過模型訓(xùn)練構(gòu)建機(jī)器學(xué)習(xí)解決方案的過程中,數(shù)據(jù)皆為驅(qū)動(dòng)機(jī)器學(xué)習(xí)的燃料。對于深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù),探索數(shù)量和質(zhì)量前提下的必要數(shù)據(jù)至關(guān)重要。
深度神經(jīng)網(wǎng)絡(luò)需要大量數(shù)據(jù)進(jìn)行訓(xùn)練;按經(jīng)驗(yàn)來說,圖像分類中每類需要1,000張圖像。但具體答案顯然取決于模型的復(fù)雜度和容錯(cuò)度。實(shí)際機(jī)器學(xué)習(xí)解決方案中的一些示例表明,數(shù)據(jù)集有各種大小。一個(gè)面部檢測和識別系統(tǒng)需要45萬張圖像,一個(gè)問答聊天機(jī)器人需要接受20萬個(gè)問題和200萬個(gè)匹配答案的訓(xùn)練。根據(jù)要解決的問題,有時(shí)較小的數(shù)據(jù)集也足夠。一個(gè)情感分析解決方案(根據(jù)書面文本確定觀點(diǎn)的極性)只需要數(shù)萬個(gè)樣本。
數(shù)據(jù)的質(zhì)量和數(shù)量同等重要。鑒于訓(xùn)練需要大數(shù)據(jù)集,即使少量的錯(cuò)誤訓(xùn)練數(shù)據(jù)也會導(dǎo)致糟糕的解決方案。根據(jù)所需的數(shù)據(jù)類型,數(shù)據(jù)可能會經(jīng)歷一個(gè)清洗過程。此過程確保數(shù)據(jù)集一致、沒有重復(fù)數(shù)據(jù)且準(zhǔn)確、完整(沒有無效或不完整數(shù)據(jù))。有可以支持此過程的工具。驗(yàn)證數(shù)據(jù)的偏差也很重要,確保數(shù)據(jù)不會導(dǎo)致有偏差的機(jī)器學(xué)習(xí)解決方案。
機(jī)器學(xué)習(xí)訓(xùn)練對數(shù)值型數(shù)據(jù)進(jìn)行運(yùn)算,因此,根據(jù)您的解決方案,可能需要預(yù)處理步驟。例如,如果數(shù)據(jù)是人類語言,其必須首先轉(zhuǎn)譯為數(shù)字形式才能處理??梢詫D像進(jìn)行預(yù)處理以保持一致性。例如,除了其他運(yùn)算外,輸入深度神經(jīng)網(wǎng)絡(luò)的圖像還需要調(diào)整大小和平滑處理,以去除噪聲。
機(jī)器學(xué)習(xí)中最大的問題之一是獲取數(shù)據(jù)集來訓(xùn)練機(jī)器學(xué)習(xí)解決方案。根據(jù)您的具體問題,這個(gè)工作量可能非常大,因?yàn)榭赡軟]有現(xiàn)成的數(shù)據(jù),需要您另外設(shè)法獲取。
最后,應(yīng)該分割數(shù)據(jù)集,分別用作訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)。訓(xùn)練數(shù)據(jù)用于訓(xùn)練模型,在訓(xùn)練完成后,測試數(shù)據(jù)用于驗(yàn)證解決方案的準(zhǔn)確性(圖2)。
圖2:分割數(shù)據(jù)集分別用于訓(xùn)練和驗(yàn)證。(圖源:作者)
有工具來幫助完成這個(gè)過程,大多數(shù)框架都擁有“分割”功能,用于分割訓(xùn)練和測試數(shù)據(jù)?,F(xiàn)在我們來看一些簡化機(jī)器學(xué)習(xí)解決方案構(gòu)造的框架。
框架
現(xiàn)在,不再需要從頭開始構(gòu)建機(jī)器學(xué)習(xí)模型。您可以使用包含這些模型和其他工具的框架來準(zhǔn)備數(shù)據(jù)和驗(yàn)證您的解決方案。這些框架還提供用于部署解決方案的環(huán)境。選擇哪個(gè)框架通常取決于您的熟悉程度,但在剛開始的時(shí)候可以選擇一個(gè)適合您要使用的應(yīng)用與模型的框架。
orflow/ >TensorFlow是最好的深度學(xué)習(xí)框架。它支持所有流行的模型(CNN、RNN、LSTM等),并允許您使用Python或C++進(jìn)行開發(fā)。從高端服務(wù)器到移動(dòng)設(shè)備,均可部署TensorFlow解決方案。如果您剛剛上手,TensorFlow是一個(gè)不錯(cuò)的起點(diǎn),它有教程和豐富的文檔。
CAFFE最初是一個(gè)學(xué)術(shù)項(xiàng)目,但在發(fā)布到開源后,已經(jīng)發(fā)展成為一個(gè)流行的深度學(xué)習(xí)框架。CAFFE采用C++編寫,但也支持Python模型開發(fā)。同TensorFlow一樣,它也支持廣泛的深度學(xué)習(xí)模型。
PyTorch的框架中。PyTorch是另一個(gè)很好的選擇,它基于豐富的可用信息,包括構(gòu)建不同類型解決方案的實(shí)踐教程。
R語言和環(huán)境是機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)的流行工具。其為交互式工具,可幫助您逐步構(gòu)建解決方案的原型,同時(shí)分階段查看結(jié)果。有了Keras(一個(gè)開源的神經(jīng)網(wǎng)絡(luò)庫),您可以用極少量的開發(fā)投入來構(gòu)建CNN和RNN。
我所理解的機(jī)器學(xué)習(xí)是一種能夠?qū)崿F(xiàn)人工智能的技術(shù),建立能從經(jīng)驗(yàn)(數(shù)據(jù))中進(jìn)行學(xué)習(xí)的模型,從而使這個(gè)模型可以達(dá)到自行處理此類數(shù)據(jù)的能力。
也可以理解為:通過大量的數(shù)據(jù),訓(xùn)練出一個(gè)能處理此類數(shù)據(jù)的模型。使得這個(gè)模型可以根據(jù)已知的數(shù)據(jù),準(zhǔn)確率很高的判斷出未知的數(shù)據(jù),從而使得人類能夠采取正確的方法去處理某些事情。
想要了解機(jī)器學(xué)習(xí)你需要知道以下幾點(diǎn):
一、機(jī)器學(xué)習(xí)的流程
從實(shí)際的應(yīng)用場景出發(fā),要訓(xùn)練出來一個(gè)能夠適應(yīng)某場景的模型需要經(jīng)過以下幾步:
圖1
1. 場景解析場景解析就是將業(yè)務(wù)邏輯,抽象成為通過算法能夠解決的問題。
比如:做一個(gè)心臟病預(yù)測系統(tǒng),那么就可以抽象為二分類問題——要么有心臟病,要么沒有。然后,根據(jù)已有的數(shù)據(jù)看看有沒有目標(biāo)值,可以判斷出:是監(jiān)督學(xué)習(xí)還是無監(jiān)督學(xué)習(xí),還是半監(jiān)督學(xué)習(xí)。從而,選擇出能夠處理好此類數(shù)據(jù)的算法。
(不同場景采用的算法是不同的)高頻的有以下幾種類型的場景:
分類場景:廣告投放預(yù)測,網(wǎng)站用戶點(diǎn)擊預(yù)測。
聚類場景:人群劃分,產(chǎn)品種類劃分。
回歸場景
文本分析類場景:新聞的標(biāo)簽提取,文本自動(dòng)分類和文本關(guān)鍵信息抽取。
關(guān)系圖算法:社交網(wǎng)絡(luò)關(guān)系,網(wǎng)絡(luò)關(guān)系挖掘和金融風(fēng)險(xiǎn)控制。
模式識別:語音識別,圖像識別和手寫文字識別。
2. 數(shù)據(jù)預(yù)處理場景解析完,選擇適合處理此類數(shù)據(jù)的算法后,需要對數(shù)據(jù)進(jìn)行預(yù)處理——就是對數(shù)據(jù)進(jìn)行清洗工作,對空值,亂碼進(jìn)行處理。
數(shù)據(jù)預(yù)處理的主要目的就是:減少噪音數(shù)據(jù)對訓(xùn)練數(shù)據(jù)的影響。
3. 特征工程特征工程是機(jī)器學(xué)習(xí)中最重要的一部分,因?yàn)楦鶕?jù)已有的訓(xùn)練數(shù)據(jù),可選用的算法是有限的,那么在同樣的算法下特征的選取是不同的,100個(gè)人對一件事情會有100種看法,也就有100種特征,最后特征的質(zhì)量決定模型的好壞。特征工程需要做的包括:特征抽象,特征重要性的評估,特征衍生,特征降維。
4. 模擬訓(xùn)練在經(jīng)過以上過成后,進(jìn)入訓(xùn)練模塊,生成模型。
5. 模型評估對生成模型的成熟度進(jìn)行評估。
6. 離線/在線服務(wù)在實(shí)際運(yùn)用過程中,需要配合調(diào)度系統(tǒng)來使用。
案例場景:每天將用戶當(dāng)日新增的數(shù)據(jù)量流入數(shù)據(jù)庫表里,通過調(diào)度系統(tǒng)啟用離線訓(xùn)練服務(wù),生成最新的離線模型,然后通過在線預(yù)測服務(wù)進(jìn)行實(shí)時(shí)預(yù)測。
7. 數(shù)據(jù)源結(jié)構(gòu)結(jié)構(gòu)化數(shù)據(jù):機(jī)構(gòu)化數(shù)據(jù)是指以矩陣結(jié)構(gòu)儲存的數(shù)據(jù)。
數(shù)據(jù)庫里的數(shù)據(jù)就是以這種結(jié)構(gòu)存在,可以通過二維結(jié)構(gòu)來顯示,如下圖:
圖2結(jié)構(gòu)化數(shù)據(jù)中,有兩個(gè)重要的概念需要介紹一下:特征列和目標(biāo)列。
上圖里age,sex,cp列都是特征列,ifhealth是目標(biāo)列。
非結(jié)構(gòu)化數(shù)據(jù):典型的非結(jié)構(gòu)化數(shù)據(jù)是圖像,文本,語音等文件。這些數(shù)據(jù)不能以矩陣的結(jié)構(gòu)儲存,目前的做法也是通過把非結(jié)構(gòu)化的數(shù)據(jù)轉(zhuǎn)化為二進(jìn)制儲存格式。 半結(jié)構(gòu)化數(shù)據(jù):半結(jié)構(gòu)化數(shù)據(jù)是指按照一定的結(jié)構(gòu)儲存,但不一定是二維的數(shù)據(jù)庫行存儲形態(tài)的數(shù)據(jù)。還有一種是以二維數(shù)據(jù)形態(tài)儲存的,但某些字段是文本類型,某些字段是數(shù)值類型的