目前我們 machine learning 的技術已經發展了非常久的時間,我們有非常多的模型可以幫我們做預測,包含像是 regression、classification、clustering、semi-supervised learning、reinforcement learning。這些都可以幫助我們去做出預測,或是從資料當中去挖掘知識跟資訊。這些模型需要數學與統計作為基礎。

當你使用這些模型之後你會發現,你輸入的資料會大大的影響整個 performance,像是你給的 feature 不夠好,模型的表現就變得很糟糕,或是模型要預測的資訊根本不在這些 data 當中,那麼模型根本就預測不出來,所以玩過 machine learning 的人就會知道 feature engineering 的重要性。

以往 feature engineering 是需要人自己手動處理的,如今我們也希望由 machine learning 的模型中自動學出來。大家可以看到我們的技術進展:從以往的手寫程式進展到經典的 machine learning 技術,這是一個巨大的飛躍。

From Deep Learning by Ian Goodfellow and Yoshua Bengio and Aaron Courville




他幫我們解決了什麼問題呢?

以往的手寫程式需要工程師非常的聰明,他需要知道在 input 與 output 之間的所有規則,然後把這些規則化成可以執行的程式,這些實作的過程需要花非常大量的人力跟腦力。



然而,我們進展到 machine learning 的技術,我們試圖去收集一些資料,這些資料符合我們預期的 input 與 output 之間的關係。



他可以幫我們將中間的 過程 連接起來,我們不需要去 手刻 或是 事先知道 這些過程,更何況自然界很多過程都是 人類沒辦法理解的 或是 還不知道的



這些過程在數學家的眼中就稱為 函數,對於機器學習專家來說,input 與 output 之間有無限多種函數的可能。哪一種可能才是最符合我們資料的長相的?我們希望挑出最有可能的那一種,就把那就把那一種當成是模型,並且輸出,這樣我們就能讓機器自動去學出 input 與 output 的對應關係,這是一個飛躍性的進展。


Feature engineering

接著我們意識到:我們還是需要手動去處理 feature。經典的 machine learning 模型只幫我們處理了 將 feature 對應到 output 的關係,我們還是得藉由 feature extraction 的技術來轉換,而我們很難知道什麼樣的feature extraction 才真正能夠把資料中我們想要的資訊萃取出來,這部分就進到 representation Learning 的範疇。


Automatic feature extraction

在 feature extraction 的過程中,常常我們面對的是高維度的向量,由於我們很難去理解高維度的向量之間的轉換,導致我們在轉換的時候會遇上困難,我們根本不知道需要轉換成什麼樣維度的向量,我們也不知道中間需要什麼樣的轉換函數。在數學領域當中,有相關的領域稱為微分幾何,所以常常我們會討論在數學上的 manifold,representation learning 就是希望連同 feature extraction 以及 modeling 可以一併處理,也就是藉由 modeling 的過程會到回饋(從 gradient descent 等等方法),去引導 feature extraction 的過程,進而去學到 feature-feature 之間轉換的 模式


Deep learning

Deep learning 就是一種 representation Learning。他希望 data 在高維度的轉換當中,可以去萃取出足夠而抽象的資訊,去進行預測。而 deep learning 只是將 feature-feature 之間的轉換模式以 layer-layer 之間的轉換實現,而高維的 feature vector 以 layer 的形式呈現。所以越深的網路代表著經過多次的函數處理跟萃取,所萃取的資訊的抽象程度越高,抽象程度越高,就越接近人類所想像的。