使用機器學習解決問題的五步驟: 模型訓練 - DataSci Ocean
文章推薦指數: 80 %
本篇為機器學習入門觀念的第五篇文章。
在前一篇文章中, ... 用機器學習解決問題的第三步驟:模型訓練 ... 若是深度學習模型,常用的函式庫有:.
LEFTSIDEBAR
使用機器學習解決問題的五步驟:模型訓練
Jan27·20min
source:Pixabay
前言&概述
用機器學習解決問題的第三步驟:模型訓練
本篇為機器學習入門觀念的第五篇文章。
在前一篇文章中,我們介紹了「建立資料集」的概念與重要性。
在本篇文章中,將會說明「模型訓練」的意義。
資料集到模型訓練
建立資料集後,我們通常會將資料集切成兩部分:訓練資料集(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
若是深度學習模型,常用的函式庫有:
TensorFlow
Pytorch
Mxnet
在這裡我們就先不深入的介紹,在網路上有非常多的資源,對這些函式庫的使用以及概念有詳細的說明。
常見的模型種類
在「使用機器學習的五步驟:定義問題」一文中,我們了解到需要辨識「問題」屬於哪一種機器學習的任務,進而建立相對應的模型。
實際上,機器學習中的模型百百種,「選擇模型」也是一個「不斷嘗試」(Trial-andError)的過程。
我們將百百種的模型大致分為以下三類:
線性模型(LinearModel)
在我們的機器學習入門觀念介紹中,我們介紹的模型多為此類模型。
這類模型通常也比較簡單,可以用一個數學函式將其表示:F(x)=2x3+3x2–10x+5
輸入不同的x此函式就會輸出不同的結果。
在使用機器學習的五步驟:定義問題中,我們也利用房價預測的例子說明這類的模型適合處理「線性回歸」(LinearRegression)的問題因此又稱為「線性回歸模型」。
然而,如果是「分類」問題,我們還能夠使用線性模型來解決嗎? 當然是可以的。
如果是「二元分類問題」(BinaryClassification),也就是將輸入模型的資料分成A類別或是B類別,我們可以將線性回歸模型的輸出通過一個「函式轉換」,使得輸出的範圍一定是在0~1區間。
透過這個0~1區間的數字,來表示屬於其中一個類別的機率。
將原來的線性回歸模型(LinearRegressionModel)再加上一個函式轉換形成一個新的模型,我們稱其為羅吉斯回歸模型(LogisticRegressionModel)。
樹狀模型(Tree-BasedModel)
樹狀模型也是在此系列文章中,常見的模型。
樹狀模型就是透過像「樹」一樣的結構,將輸入的資料不斷的分類,最後得到一個結果。
舉例來說,如果我們有一個人的基本資料,包含身高、血型、興趣、專長、年齡…,我們想預測他的職業,我們可能經歷以下的過程:
年齡大於25歲嗎?如果不是,就「是學生」,如果是就「不是學生」。
有在寫程式嗎?如果有,就「是工程師」,如果沒有就「是其他」。
我們可以將上述的分類過程,用以下的樹狀結構表示:
樹狀模型
深度學習模型(DeepLearningModel)
深度學習模型正是近幾年特別火熱的議題。
深度學習模型模仿人類的「大腦」結構,以一層又一層的神經元(Neuron)建構模型。
深度學習模型也是百百種,依據不同的任務屬性,適用不同類型的模型。
以下舉出常見到的幾個模型:
前饋神經網路(FeedForwardNeuralNetwork,FFNN):最早發明也是最簡單的神經網路,將神經元(Neuron)一層(Layer)又一層(Layer)的疊在一起,層與層之間透過透過權重(Weight)來將資訊向下傳遞。
卷積神經網路(ConvolutionalNeuralNetwork,CNN):善於從圖像中找到有價值的資訊,廣泛應用在圖像處理的任務中。
循環神經網路(RecurrentNeuralNetwork):善於從時間序列的輸入資料中,汲取有價值的資訊。
廣泛應用於自然語言處理的任務中。
結語
在本篇文章中,我們了解到「模型訓練」的意義,介紹「參數」與「損失函數」的概念。
此外,我們也學習到實作時的一些議題。
例如:超參數、常用的函式庫與模型的種類。
文章後半部屬於比較進階的部分,如果在閱讀吸收上比較困難,不要氣餒!第一次總是比較辛苦。
隨著看到這些名詞與觀念愈來愈多次,你將會漸漸的熟悉起來,累積愈來愈多實力!
下一篇文章,我們將會探討模型訓練完成的評估階段——模型評估。
DeepLearning
MachineLearning
RIGHTSIDEBAR
延伸文章資訊
- 1深度學習的訓練資料準備與平台之演進發展- 技術探索
深度學習演算法、大數據的值與量及GPU運算技術,是未來AI發展的關鍵 ... 重覆這步驟許多次之後,就擁有了大量模擬該棋局盤面所得到的平均勝率,以此來做為當前盤面的好 ...
- 2使用機器學習解決問題的五步驟: 模型訓練 - DataSci Ocean
本篇為機器學習入門觀念的第五篇文章。在前一篇文章中, ... 用機器學習解決問題的第三步驟:模型訓練 ... 若是深度學習模型,常用的函式庫有:.
- 3零基礎自學深度學習:(一)神經網路基本架構 - Evan
筆者曾於Coursera觀看過臺灣大學資工系林軒田教授授課的「機器學習 ... 以Andrew教授自身的經驗,討論執行ML專案時有哪些重要步驟,及應注意的要點 ...
- 4什麼是深度學習 - 語音處理實驗室
底下我們先介紹深度學習的基本架構,再分別. 就這三個步驟來介紹深度學習。 類神經網絡與神經元. 「深度學習就是讓機器模擬人腦的運作方式,進.
- 53 分鐘搞懂深度學習到底在深什麼 - 泛科技
深度學習其實很簡單,就跟把大象放進冰箱一樣,只需三個步驟:「打開冰箱、放進大象、關上冰箱門。」專攻語音辨識領域深度學習的台大電機系教授李宏毅說, ...