前一篇文章當中,我摘要了 Coursera 上【ML Study Jam 機器學習進階培訓計劃】訓練課程當中的前兩部課程的重點,而另外三部課程的重點彙整,就集結在這篇文章當中!
1. How Google does Machine Learning
2. Launching into Machine Learning
3. Intro to TensorFlow
4. Feature Engineering
5. Art and Science of Machine Learning
簡單地說,就是在模型當中變數相乘、或者將單獨的變數賦予高次方,藉而創造出新的特徵。這種方法可以簡化資料的複雜度、但是提高模型的彈性。
但 Feature Crosses 也非萬靈丹,過度使用 Feature Crosses 有可能導致模型產生「過適」的情形。為了避免該情形發生,通常會將模型的複雜度,添加到模型的損失函數當中,以在模型的複雜度(complexity)與泛用性(generalizability)之間取得平衡。
在機器學習領域,Generalization、Regularization、Normalization、Standardization 這四樣流程到底有什麼差異?
簡單來說,可以區分成以下兩類:
Normalization 和 Standardization 是針對數據的前置處理,從而使數值都落入到統一的數值範圍,從而在建模過程中,各個特徵量沒差別對待。消除一些數值差異帶來的特種重要性偏見,加快訓練速度,促進演算法的收斂。
Regularization 是在損失函數(Loss function 或稱為 Cost function)裡面加入懲罰項,增加建模的模糊性,從而把捕捉到的趨勢從局部細微趨勢,調整到整體大概趨勢。雖然一定程度上的放寬了建模要求,但是能有效防止過適的問題,並增加模型準確性。
而我在前一篇文章當中即有提到,Generalization 是對模型的普適化,是指透過各式方法來增進模型對於新數據時,依舊能保有一定程度的準確度,並避免過適的情況發生。廣義而言,Regularization、Normalization、Standardization都包含在 Generalization 的範圍內。
而針對 Normalization,當中提到的是 L1 與 L2 Normalization,更詳細的說明與比較,可以參考下列連結:
課程當中就進一步提到,在 Deep Learning 當中如何透過調整 Learning rates 與資料的 Batch size 來改善模型。
課程的後半部,專注在訓練Deep Learning模型的一些細節,尤其在使用梯度下降法(Gradient descent)尋求最適解的時候,這一塊的內容細節稍多,我就借用課程當中提到的一個彙整表格來介紹這部份:
--
作為本系列課程的心得總結,我想該課程帶給我最大的收穫,就是我從當中瞭解到 Google Cloud Platform、TensorFlow、Deep Learning、Big Query、Cloud Dataflow、Apache Beam 等工具大致上的使用方法,以及對 Deep Learning 有個更完整的認識這不是廢話嗎???。
這樣的心得內容對我而言一點也不理所當然,我自己的資料科學之路,是從資料分析這個領域發跡,再加上我主要的資歷科學啟蒙工是 R 與 SQL。雖然 Python 的語法的可讀性很高,但是「看得懂」與「能夠自己寫出來」是兩碼子事,再加上本系列課程實質上介紹的是如何透過上述工具與平台、來建立一個完整的資料科學架構與流程,這當中會需要一點數據工程(Data Engineering)的先備知識,對於並非正統 IT 背景的我,仍需要花較多的時間,來理解諸如 Cloud Dataflow、Apache Beam 的操作細節。
另一點是方法論的部分,本系列課程所主打的是Deep Learning,但這套機器學習方法,正好就是我過去較少接觸的部分(或者說,刻意不去接觸)。對於 Deep Learning 與 Python,過去我的想法是,「既然大家都會,而且都搶著做這一塊,那我為什麼要去跟人家擠這一塊?尤其我還是在先天條件不足的情況下?不如我把我較熟悉的、較擅長的那一塊練好,專門做這一塊。」
於是,工具部份我選擇了 R;機器學習方法論的部分我選擇了 Bayesian Network、SVM、K-mean、Logistic Regression、以及我本身最熟悉的 Operation Research 領域開始摸索。但過去半年多來的求職經驗告訴我,要在同一個圈子裡討飯吃,大家都懂的東西,你最好也懂一點,正是因為市場當中有那樣的工作需求,才會有那麼多的人才供給還有一缸子聽起來很炫砲但不見得多有用的補習班課程跟講座。
1. How Google does Machine Learning
2. Launching into Machine Learning
3. Intro to TensorFlow
4. Feature Engineering
5. Art and Science of Machine Learning
【Intro to TensorFlow】
如題,該部課程介紹近幾年來最火紅的開源 ML 開發工具:TensorFlow。內容不外乎是 TensorFlow 在資料科學模型建構上的優勢、再來介紹其變數、語法,以及非常重要的 Estimator API,這項 Estimator API 是 TensorFlow 1.3 版本之後才有的功能,它能讓使用者可以更快速、方便的建構的模型。我個人認為 TensorFlow 它最強的優勢在於,它的語法和 Python 有 87% 像,這讓許多對於 Python 有一定水準的使用者們能夠快速上手。【Feature Engineering】
接著,可以說是這一系列課程當中,我最喜歡的一項。我的資料科學啟蒙之路,是從資料分析這個領域發跡的,特徵工程(Feature Engineering)這個主題,可以說是資料科學和資料分析這兩個領域當中,交集最大的一個項目之一。該課程主要回答了以下的問題:- 何謂特徵?
- 何謂特徵工程?
- 何謂組合特徵?
- 特徵工程到底是什麼?[轉錄] - AI反斗城 - Medium
- Feature Engineering 特徵工程中常見的方法 – I failed the Turing Test
- Fundamental Techniques of Feature Engineering for Machine Learning
- ML = lot of data, keep outliers and build models for them
- Statistics = “I’ve got all the data I’ll ever get”, throw away outliers
- 機器學習跟統計學差在哪?哈佛博士:機器學習重視預測結果,統計學在乎因果推理 | TechOrange
- 機器學習和統計模型的差異 @ UntiltheQuietComes :: 痞客邦 ::
- 一文讀懂機器學習、資料科學、深度學習和統計學之間的區別 | 程式前沿
- [資料分析&機器學習] 第2.4講:資料前處理(Missing data, One-hot encoding, Feature Scaling)
- 機器學習中的 Label Encoder和One Hot Encoder - 每日頭條
- 大規模特徵編碼問題和工程實踐 - IT閱讀
# Feature Crosses
課程的後半部介紹到了另一個特徵工程的重點:特徵交叉(Feature Crosses,或稱特徵組合)簡單地說,就是在模型當中變數相乘、或者將單獨的變數賦予高次方,藉而創造出新的特徵。這種方法可以簡化資料的複雜度、但是提高模型的彈性。
但 Feature Crosses 也非萬靈丹,過度使用 Feature Crosses 有可能導致模型產生「過適」的情形。為了避免該情形發生,通常會將模型的複雜度,添加到模型的損失函數當中,以在模型的複雜度(complexity)與泛用性(generalizability)之間取得平衡。
- 學習機器學習 - Lesson6 - 反覆咀嚼
- 特徵組合&特徵交叉 (Feature Crosses) | 程式前沿
- Feature Crosses: Encoding Nonlinearity | Machine Learning Crash Course
【Art and Science of Machine Learning】
作為本系列課程的壓軸,該部課程的重點著重在教導學員,如何建構出一個客製化的 Deep Learning 模型。課程的一開始會先介紹,如何對模型 Regularization,再介紹 Hyperparameter(超參數)與 parameter。筆者在觀看這部分課程的時候,就產生了一個很大的疑問:在機器學習領域,Generalization、Regularization、Normalization、Standardization 這四樣流程到底有什麼差異?
簡單來說,可以區分成以下兩類:
Normalization 和 Standardization 是針對數據的前置處理,從而使數值都落入到統一的數值範圍,從而在建模過程中,各個特徵量沒差別對待。消除一些數值差異帶來的特種重要性偏見,加快訓練速度,促進演算法的收斂。
Regularization 是在損失函數(Loss function 或稱為 Cost function)裡面加入懲罰項,增加建模的模糊性,從而把捕捉到的趨勢從局部細微趨勢,調整到整體大概趨勢。雖然一定程度上的放寬了建模要求,但是能有效防止過適的問題,並增加模型準確性。
而我在前一篇文章當中即有提到,Generalization 是對模型的普適化,是指透過各式方法來增進模型對於新數據時,依舊能保有一定程度的準確度,並避免過適的情況發生。廣義而言,Regularization、Normalization、Standardization都包含在 Generalization 的範圍內。
而針對 Normalization,當中提到的是 L1 與 L2 Normalization,更詳細的說明與比較,可以參考下列連結:
- 機器學習里的黑色藝術:normalization, standardization, regularization - GetIt01
- [Day28]機器學習:特徵標準化! - iT 邦幫忙
- 資料預處理——標準化、歸一化、正則化 - IT閱讀
- Generalization in Deep learning (1) – Ang's learning notes
- [精進魔法] Regularization:減少 Overfitting ,提高模型泛化能力 - iT 邦幫忙
# Hyperparameter vs parameter
Hyperparameter 這個概念對於純粹商管領域的朋友們可能會比較陌生,它和一般的parameter又有甚麼差異?簡單來說,兩者最大的差異為是否由訓練階段學習而來?- 參數是訓練模型時學習出的,譬如權重(weight)與偏差值(bias)。
- 超參數則是由人為給定,例如神經網路的隱藏層數、損失函數、卷積核的大小、學習率等等。
- What is the Difference Between a Parameter and a Hyperparameter?
- 爾摩儲藏室: CNN筆記 - 超參數 (Hyperparamters)
- 如何選取一個神經網絡中的超參數hyper-parameters - IT閱讀
- 機器學習馬拉松 047 超參數調整與優化 - UXAI – Medium
課程的後半部,專注在訓練Deep Learning模型的一些細節,尤其在使用梯度下降法(Gradient descent)尋求最適解的時候,這一塊的內容細節稍多,我就借用課程當中提到的一個彙整表格來介紹這部份:
Problem
|
Gradient can vanish
|
Gradient can
explore
|
ReLu layers can
die
|
Insight
|
Each additional
layer can successively reduce signal vs. noise
|
Learning rates
are important here
|
Monitor fraction
of zero weight in TensorFlow
|
Solution
|
Using ReLu
interested of sigmoid/tanh can help
|
Batch
normalization (useful knob) can help
|
Lower your
learning rates
|
--
作為本系列課程的心得總結,我想該課程帶給我最大的收穫,就是我從當中瞭解到 Google Cloud Platform、TensorFlow、Deep Learning、Big Query、Cloud Dataflow、Apache Beam 等工具大致上的使用方法,以及對 Deep Learning 有個更完整的認識
這樣的心得內容對我而言一點也不理所當然,我自己的資料科學之路,是從資料分析這個領域發跡,再加上我主要的資歷科學啟蒙工是 R 與 SQL。雖然 Python 的語法的可讀性很高,但是「看得懂」與「能夠自己寫出來」是兩碼子事,再加上本系列課程實質上介紹的是如何透過上述工具與平台、來建立一個完整的資料科學架構與流程,這當中會需要一點數據工程(Data Engineering)的先備知識,對於並非正統 IT 背景的我,仍需要花較多的時間,來理解諸如 Cloud Dataflow、Apache Beam 的操作細節。
另一點是方法論的部分,本系列課程所主打的是Deep Learning,但這套機器學習方法,正好就是我過去較少接觸的部分(或者說,刻意不去接觸)。對於 Deep Learning 與 Python,過去我的想法是,「既然大家都會,而且都搶著做這一塊,那我為什麼要去跟人家擠這一塊?尤其我還是在先天條件不足的情況下?不如我把我較熟悉的、較擅長的那一塊練好,專門做這一塊。」
於是,工具部份我選擇了 R;機器學習方法論的部分我選擇了 Bayesian Network、SVM、K-mean、Logistic Regression、以及我本身最熟悉的 Operation Research 領域開始摸索。但過去半年多來的求職經驗告訴我,要在同一個圈子裡討飯吃,大家都懂的東西,你最好也懂一點,正是因為市場當中有那樣的工作需求,才會有那麼多的人才供給