經(jīng)典機(jī)器學(xué)習(xí)的過程
掃描二維碼
隨時(shí)隨地手機(jī)看文章
數(shù)據(jù)收集和預(yù)處理:在這一步中,需要從不同的數(shù)據(jù)源收集數(shù)據(jù),包括結(jié)構(gòu)化數(shù)據(jù)(例如數(shù)據(jù)庫中的表格數(shù)據(jù))和非結(jié)構(gòu)化數(shù)據(jù)(例如文本、圖像和音頻)。然后需要對數(shù)據(jù)進(jìn)行預(yù)處理,例如數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)換和特征提取等操作,以便用于模型訓(xùn)練。特征工程:在這一步中,需要根據(jù)預(yù)處理后的數(shù)據(jù)選擇合適的特征,以便用于模型訓(xùn)練。特征工程可以包括特征選擇、特征提取、特征轉(zhuǎn)換和特征降維等操作。模型選擇和訓(xùn)練:在這一步中,需要根據(jù)特定問題的要求選擇合適的模型,并使用已經(jīng)預(yù)處理和特征工程的數(shù)據(jù)對其進(jìn)行訓(xùn)練。常用的模型包括線性回歸、邏輯回歸、決策樹、支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)模型等。模型評估和調(diào)優(yōu):在模型訓(xùn)練完成后,需要對模型進(jìn)行評估和調(diào)優(yōu)。評估模型的常見方法包括精度、召回率、F1 值、ROC 曲線和 AUC 等指標(biāo)。在評估過程中,還需要進(jìn)行超參數(shù)調(diào)優(yōu),例如學(xué)習(xí)率、正則化參數(shù)等,以優(yōu)化模型性能。模型部署:在模型評估和調(diào)優(yōu)后,需要將模型部署到實(shí)際環(huán)境中。這包括將模型集成到應(yīng)用程序中、構(gòu)建 API 接口、進(jìn)行批量推理或流式推理等。模型監(jiān)控和維護(hù):一旦模型被部署到實(shí)際環(huán)境中,需要進(jìn)行模型監(jiān)控和維護(hù)。這包括監(jiān)控模型的性能、更新模型、修復(fù)錯誤和改進(jìn)模型等操作。部署機(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)。
機(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ū)動機(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ù)雜度和容錯度。實(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ù)集,即使少量的錯誤訓(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ù)字形式才能處理。可以對圖像進(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)。
有工具來幫助完成這個(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)用與模型的框架。
TensorFlow是最好的深度學(xué)習(xí)框架。它支持所有流行的模型(CNN、RNN、LSTM等),并允許您使用Python或C++進(jìn)行開發(fā)。從高端服務(wù)器到移動設(shè)備,均可部署TensorFlow解決方案。如果您剛剛上手,TensorFlow是一個(gè)不錯的起點(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īng)過訓(xùn)練并滿足了準(zhǔn)確性要求,即可部署到生產(chǎn)系統(tǒng)中。但是到了這一步就需要審核解決方案,以確保其符合要求??紤]到?jīng)Q策是由模型來做以及對人們的影響,這一點(diǎn)尤為重要。
有些機(jī)器學(xué)習(xí)模型是透明的,可以理解(例如,決策樹)。但深度神經(jīng)網(wǎng)絡(luò)等其他模型被認(rèn)為是“黑箱”,決策是由數(shù)百萬個(gè)無法用模型本身解釋的計(jì)算做出的。因此,過去一度可以接受定期審核,但是,連續(xù)審核正在迅速成為這些暗箱情況下的標(biāo)配,因?yàn)殄e誤是不可避免的。一旦發(fā)現(xiàn)錯誤,這些信息可以用作調(diào)整模型的數(shù)據(jù)。
另一個(gè)考慮是解決方案的生命周期。模型會衰退,輸入數(shù)據(jù)會發(fā)生變化,從而導(dǎo)致模型性能的變化。因此,必須接受解決方案隨著時(shí)間的推移會變得羸弱,機(jī)器學(xué)習(xí)解決方案必須隨著周圍世界的變化而不斷做出改變。
為了部署機(jī)器學(xué)習(xí)解決方案,我們從一個(gè)問題開始,然后考慮可能的解決模型。接下來是獲取數(shù)據(jù),經(jīng)過正確清理和分割,就可以使用機(jī)器學(xué)習(xí)框架訓(xùn)練和驗(yàn)證模型。并非所有的框架都是相同的,您可以根據(jù)您的模型和經(jīng)驗(yàn)來選擇和應(yīng)用。然后,使用該框架部署機(jī)器學(xué)習(xí)解決方案,通過適當(dāng)?shù)膶徍?,解決方案可以在真實(shí)世界中使用實(shí)時(shí)數(shù)據(jù)進(jìn)行運(yùn)算。
今天的人工智能,其實(shí)是把現(xiàn)實(shí)生活中的問題量化成了可計(jì)算的問題,然后用計(jì)算機(jī)算出來。數(shù)學(xué)模型則架起了中間的橋梁。
現(xiàn)實(shí)生活中,很多問題都可以通過建模解決。比如計(jì)算遠(yuǎn)程火炮彈道問題,計(jì)算日食、月食出現(xiàn)的時(shí)間和地點(diǎn)等。我們只要把相應(yīng)公式用計(jì)算機(jī)語言寫一遍,再代入?yún)?shù),就能計(jì)算出來。
然而,更多問題的解決方法是不確定的。即使我們找到了相應(yīng)的數(shù)學(xué)模型,也不知道應(yīng)該代入什么參數(shù)。比如語音識別、人臉識別和機(jī)器翻譯等。因此,我們需要讓計(jì)算機(jī)通過自主學(xué)習(xí),從大量數(shù)據(jù)中得到相應(yīng)參數(shù)。這個(gè)過程,就是機(jī)器學(xué)習(xí)。
機(jī)器學(xué)習(xí)旨在發(fā)現(xiàn)數(shù)據(jù)存在和利用的模式,并用它們進(jìn)行學(xué)習(xí)及做出預(yù)測。機(jī)器學(xué)習(xí)的過程,就是用計(jì)算機(jī)算法不斷地優(yōu)化模型,讓它越來越接近真實(shí)情況的過程。它與人類學(xué)習(xí)的道理如出一轍。
考察人的學(xué)習(xí)通常方式是考試,如果分?jǐn)?shù)不及格,就需要進(jìn)一步學(xué)習(xí)。機(jī)器學(xué)習(xí)也要這樣來衡量,它的目標(biāo)用專業(yè)術(shù)語來說,就是“期望值最大化”。
機(jī)器學(xué)習(xí)的效果取決于兩個(gè)方面:一方面是學(xué)習(xí)的深度。機(jī)器學(xué)習(xí)并不能“一口吃成個(gè)胖子”,它的訓(xùn)練算法需要迭代執(zhí)行。這如同人在學(xué)習(xí)時(shí)要通過復(fù)習(xí)來“溫故而知新”一樣。機(jī)器學(xué)習(xí)迭代的次數(shù)越多,即學(xué)習(xí)得越深入,得到的數(shù)學(xué)模型效果越好。另一方面是數(shù)據(jù)的質(zhì)與量。正如我們做大量優(yōu)質(zhì)習(xí)題,成績就會提高。機(jī)器學(xué)習(xí)也是如此,訓(xùn)練數(shù)據(jù)量越大,學(xué)習(xí)效果就會越好。
根據(jù)數(shù)學(xué)模型的特點(diǎn),機(jī)器學(xué)習(xí)有兩種方法:一種是利用已知模型進(jìn)行訓(xùn)練;另一種是在模型未知的情況下,設(shè)計(jì)一些簡單通用的模型結(jié)構(gòu),然后使用大量的數(shù)據(jù)進(jìn)行訓(xùn)練,訓(xùn)練成什么樣就是什么樣。這便是我們常聽到的人工智能“黑箱”問題,即使訓(xùn)練有效,也不清楚里面是什么。
深度學(xué)習(xí)就是后一種機(jī)器學(xué)習(xí)的方法。人工智能涵蓋的領(lǐng)域十分廣泛,深度學(xué)習(xí)只是其中的一個(gè)分支,屬于機(jī)器學(xué)習(xí)的范疇。人工智能需要有“獨(dú)立思考”能力與機(jī)器學(xué)習(xí)技術(shù)的支持,深度學(xué)習(xí)便是幫助機(jī)器實(shí)現(xiàn)“獨(dú)立思考”的一種方式。