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

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

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

以下舉出常見到的幾個模型: 前饋神經網路(Feed Forward Neural Network, FFNN) : 最早 ... LEFTSIDEBAR 使用機器學習解決問題的五步驟:模型訓練 Jan27·20min source:Pixabay 前言&概述 用機器學習解決問題的第三步驟:模型訓練 本篇為機器學習入門觀念的第五篇文章。

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

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

AD 資料集到模型訓練 建立資料集後,我們通常會將資料集切成兩部分:訓練資料集(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次後停止,或是當損失函數的數值下降到某個程度後就停止。

AD 模型訓練時的超參數(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



請為這篇文章評分?