使用機器學習解決問題的五步驟: 模型訓練 - Matters

文章推薦指數: 80 %
投票人數:10人

深度學習模型也是百百種,依據不同的任務屬性,適用不同類型的模型。

以下舉出常見到的幾個模型: 前饋神經網路(Feed Forward Neural Network, FFNN) : 最早 ... 人工智慧資料科學DataSciencedatascienceDeepLearningMachineLearning機器學習使用機器學習解決問題的五步驟:模型訓練發布於2021年8月19日分佈式入口翻譯 前言&概述 本篇為機器學習入門觀念的第五篇文章。

在前一篇文章中,我們介紹了「建立資料集」的概念與重要性。

在本篇文章中,將會說明「模型訓練」的意義。

資料集到模型訓練建立資料集後,我們通常會將資料集切成兩部分:訓練資料集(TrainingDataset)與測試資料集(TestDataset)。

訓練資料集用來訓練模型,當模型完成訓練過後,我們希望利用一些模型沒看過的資料來檢驗模型的表現。

此時,即是透過測試資料集來檢驗模型的好壞。

模型訓練的意義在「機器學習的模型、訓練與推論」一文中,我們了解到機器學習中「模型」其實就是一個「函式」。

一個函式會接受一個輸入,經過運算後,回傳一個輸出。

函式中有許多「參數」(Parameter),正式這些參數決定函式的輸出是什麼。

因此,模型訓練的概念就是「透過某種方式不停的調整模型中的參數(Parameter) 數值,使的模型的輸出愈來愈精準,也就是最小化損失函數(LossFunction)」。

上面這句話中,出現了兩個重要的名詞: 參數(Parameter) 與損失函數(LossFunction),讓我們好好理解他們的意思!參數(Parameter) :模型其實就是一個函式,函式中存在許多參數,這些參數與函式的輸入進行運算後,得到一個輸出。

舉例來說,我們有一個函式:F1(x)=3x+5其中3與5都是這個函式的參數。

如果輸入6到函式中,則此函式會輸出F1(6)=23。

當然,函式可以更複雜,也就是擁有更多參數:F2(x)=3x2 +2x–10此時,3、2與-10皆為此函式的參數,如果輸入1到函式中,函式會輸出F2(1)=-5。

損失函數(LossFunction) :損失函數(式)是模型訓練中重要的角色。

損失函數可以衡量目前「模型的好壞」。

在上述的F2(x)函式中,三個參數皆可以替換成千萬種不同的數字。

為了找出一組最好的參數,我們可以透過損失函數的協助來找到。

損失函式既然也是函式,就會有輸入與輸出:LossFunction(模型的參數)=模型有多壞輸入目前模型的參數到損失函式中,損失函式回傳該模型有多壞。

因此輸出的數值愈大,表示模型愈差。

因此,我們再看一次模型訓練的概念:「透過某種方式不停的調整模型中的參數(Parameter) 數值,使的模型的輸出愈來愈精準,也就是最小化損失函數(LossFunction)」。

模型訓練步驟的循環將上述的內容統整後,我們可以了解模型的訓練過程就是不斷地重複以下三個步驟: 輸入訓練資料集到模型中透過損失函數計算目前模型的好壞更新模型中的參數使得損失函數的數值降低(提升模型的品質)我們可以自行決定停止的條件,也許是重複10000次後停止,或是當損失函數的數值下降到某個程度後就停止。

模型訓練時的超參數(Hyperparameter)了解模訓練的流程後,接著要介紹實際在實作(coding)時,需要注意的一些事項,以及專有名詞。

首先是「超參數」(Hyperparameter),模型在建立與訓練的過程中,有些參數是我們必須手動設定,模型無法自己學習並調整的參數。

最簡單的例子就是「訓練次數」,模型的訓練次數應該為多少,是我們自己去設定,我們可以根據我們的經驗直接設定一個數值,或是設定某些條件,當模型已經滿足條件時,就停止訓練。

簡單來說,模型就是一個函式,裡面有許多參數,模型裡面的參數是可以在模型訓練的過程中,不斷的調整。

然而,超參數(Hyperparameter)就是我們必須手動設定的參數,無法在模型訓練的過程中自動調整。

常用的Python函式庫在開始寫程式建立模型或是訓練模型時,我嗯有許多套件與框架可以使用,讓我們不必從頭開始撰寫。

以傳統的機器學習模型而言,最常使用的函式庫為:scikit-learn若是深度學習模型,常用的函式庫有: TensorFlowPytorchMxnet在這裡我們就先不深入的介紹,在網路上有非常多的資源,對這些函式庫的使用以及概念有詳細的說明。

常見的模型種類在「使用機器學習的五步驟:定義問題」一文中,我們了解到需要辨識「問題」屬於哪一種機器學習的任務,進而建立相對應的模型。

實際上,機器學習中的模型百百種,「選擇模型」也是一個「不斷嘗試」(Trial-andError)的過程。

我們將百百種的模型大致分為以下三類:線性模型(LinearModel)在我們的機器學習入門觀念介紹中,我們介紹的模型多為此類模型。

這類模型通常也比較簡單,可以用一個數學函式將其表示:F(x)=2x3 +3x2 –10x+5輸入不同的x此函式就會輸出不同的結果。

在使用機器學習的五步驟:定義問題中,我們也利用房價預測的例子說明這類的模型適合處理「線性回歸」(LinearRegression)的問題因此又稱為「線性回歸模型」。

然而,如果是「分類」問題,我們還能夠使用線性模型來解決嗎? 當然是可以的。

如果是「二元分類問題」(BinaryClassification),也就是將輸入模型的資料分成A類別或是B類別,我們可以將線性回歸模型的輸出通過一個「函式轉換」,使得輸出的範圍一定是在0~1區間。

透過這個0~1區間的數字,來表示屬於其中一個類別的機率。

將原來的線性回歸模型(LinearRegressionModel)再加上一個函式轉換形成一個新的模型,我們稱其為羅吉斯回歸模型(LogisticRegressionModel)。

樹狀模型(Tree-BasedModel)樹狀模型也是在此系列文章中,常見的模型。

樹狀模型就是透過像「樹」一樣的結構,將輸入的資料不斷的分類,最後得到一個結果。

舉例來說,如果我們有一個人的基本資料,包含身高、血型、興趣、專長、年齡…,我們想預測他的職業,我們可能經歷以下的過程:1.年齡大於25歲嗎?如果不是,就「是學生」,如果是就「不是學生」。

2.有在寫程式嗎?如果有,就「是工程師」,如果沒有就「是其他」。

我們可以將上述的分類過程,用以下的樹狀結構表示: 深度學習模型(DeepLearningModel)深度學習模型正是近幾年特別火熱的議題。

深度學習模型模仿人類的「大腦」結構,以一層又一層的神經元(Neuron)建構模型。

深度學習模型也是百百種,依據不同的任務屬性,適用不同類型的模型。

以下舉出常見到的幾個模型: 前饋神經網路(FeedForwardNeuralNetwork,FFNN) :最早發明也是最簡單的神經網路,將神經元(Neuron)一層(Layer)又一層(Layer)的疊在一起,層與層之間透過透過權重(Weight)來將資訊向下傳遞。

卷積神經網路(ConvolutionalNeuralNetwork,CNN) :善於從圖像中找到有價值的資訊,廣泛應用在圖像處理的任務中。

循環神經網路(RecurrentNeuralNetwork) :善於從時間序列的輸入資料中,汲取有價值的資訊。

廣泛應用於自然語言處理的任務中。

結語在本篇文章中,我們了解到「模型訓練」的意義,介紹「參數」與「損失函數」的概念。

此外,我們也學習到實作時的一些議題。

例如:超參數、常用的函式庫與模型的種類。

文章後半部屬於比較進階的部分,如果在閱讀吸收上比較困難,不要氣餒!第一次總是比較辛苦。

隨著看到這些名詞與觀念愈來愈多次,你將會漸漸的熟悉起來,累積愈來愈多實力!如果你對於機器學習、深度學習類型的文章有興趣,也可以到我最近剛成立的個人網站上逛逛呦!支持作者喜歡我的文章嗎?別忘了給點支持與讚賞,讓我知道創作的路上有你陪伴。

CCBY-NC-ND2.0版權聲明673看不過癮?一鍵登入,即可加入全球最優質中文創作社區登入



請為這篇文章評分?