今天終於來到了這個系列的第一部分的尾聲,讓我們先來簡短的回顧,這一部分介紹了些什麼:
最佳化演算法:一個能夠對使用者所定義的 loss function,求得最佳的值,是機械學習的核心。
在此部份中,我們先介紹一個簡單的線性分類器演算法,此演算法會用疊代的方式,來找尋最佳的分類平面。此後,我們又介紹了該演算法的變形,用疊代的方式,逐次在 loss surface 上的點計算梯度的方式,來往最佳值的方向前進。最後,我們則介紹了第一個類神經網路架構,多層感知器,以及類神經網路核心的學習方法,反向傳播學習法和現行深度學習架構的主流 implementation 方式,計算圖。
分類器架構:分類器建模的能力是關係訓練中是否能學習訓練資料分佈變異的重要因素。
在此部分中,我們先從一個簡單的 perceptron,單一神經元的線性分器開始,接著介紹一個由對線性迴歸模型做 log 轉換,並以 cross-entropy 為 objective function 做最佳化的 Logistic regression 分類器,最後在多層感知器 ,則介紹類神經網路中常見的 fully-connected layer,以達到非線性 decision function 的目的。
訓練和評估模型:如何才能算是一個好的模型,訓練時該注意哪些細節,這些具體的實踐事項是順利讓機械網路學習的背後重要功臣。
在此部分中,如何準備訓練資料,以至於不會造成 garbage in, garbage out 的情況,是在進行機械學習,訓練模型前的一個重要步驟,在此,我們利用了 tf.data API 做資料和特徵的前處理。而在評估模型上,我們則在避免過度學習中 了解了 Overfitting 和 Underfitting 的概念,並介紹了相關 data split 的技巧。
接著在總結這個部分,先來就鐵達尼這個預測題目來看看之前利用 tf.estimator API 建立的兩個分類的 performance:LinearClassifier (使用 Logistic regression 實現) 和 DNNClassifier(使用 Feed Forward 實現)。
因為是二元的分類方法,所以在比較兩個分類器的好壞時,通常比較所謂的 0-1 loss,也就是錯誤分類率(mis-classification rate)。相對於錯誤分類率,多數的人會以 1 - 錯誤分類率,也就是正確率來表達。然而,在多數的情況下,只比較正確率並不能反映分類的細部狀況,尤其在分類任務上,當分錯(分類標籤為 0 則被分類器誤分為 1)比沒分對(分類標籤為 1 則被分類器誤非為 0)更加嚴重時(如辨別腫瘤為惡性或良性)。所以通常會用一個 confusion matrix 來總結分類器對每一分類做分類的單獨能力。
我們可以對此 confusion matrix 比正確率,計算正確率描述分類器能力的統計值,如 recall (評估分類器的正確性),precision (評估分類器的精準性)和綜合 recall 和 precision 表現的 F1 score。
最後,為了在正確性和精準性 trade-off 中選擇,為分類器選定恰當的 threshold,也是相當重要的。在此,醫學上則會應用一種稱為 ROC curve 的圖形,並計算圖形下的面積(Aread Under Curve, AUC)
接下來,就是進入這個系列的第二部分,也就是吳恩達教授,deep learning specialization 的 course 4 卷積網路的部分了。