# 統計學習與深度學習簡介 {%hackmd @themes/orangeheart %} ###### tags: `Statistical Learning and Deep Learning` 統計學習是指一套用於建模和理解複雜數據集的工具,其是一個近年來不斷蓬勃發展的統計學子領域,並與計算機科學和機器學習相互融合。該領域包括許多方法,如正則化回歸、分類、圖形模型和最近的深度學習。 ## 統計學習(statistical learning)的內涵 所謂統計學習,係指透過資料建構機率模型(probabilistic model)進行預測(prediction)或分析(analysis)。統計學習與機器學習的差異在於,[機器學習](https://zh.wikipedia.org/zh-tw/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0)主要是設計和分析一些讓電腦可以自動「學習」的演算法,而機器學習的「學習」是指涉讓電腦自己學習預測模型。 ![](https://i.imgur.com/DYInerg.png) ### 從資料建模 為何我們要從資料建模,而不直接透過簡單的方式描述資料呢?當然,直觀上來說是可行的,比如我們今天要針對公司某項產品的顧客評價進行情緒分析,給定正面與負面詞表就可以大致勾勒出這項產品在顧客心中的地位。不過設想一下,今天公司不可能僅針對一項產品進行分析,必定是將多項產品進行綜合的分析,在如此複雜的情境之下,我們勢必要用一個更一般化(generalized)的方式去描述資料,一方面能夠節省時間,另一方面則可以提高精確度。又或者舉另一個例子,由於語言會隨著時間而有不同的發展,比如說「森77」這個詞彙是近幾年才發展出來的一個負面網路用語,面對多變的環境我們必須在建構模型上面有所調整。 ### 統計學習的分析方法之一 當我們拿到資料之後,必定會先審視一下這份資料運用何種方式比較適當,從而能夠提高模型的效率與準確度。底下介紹的幾個分析方法的分類並非絕對,只是一般而言在統計學習上最常見的分類方式。 #### 監督式學習(supervised learning) 監督式學習大致可以分為以下兩種類型。第一種是迴歸模型(regression model),其目標是透過特徵(features)預測特定數值。比如說電影公司要預測即將上映電影開賣前兩周的票房,因此預測的目標就是票房總收入(box office gross),特徵就可以是演員、劇情等等。 ![](https://i.imgur.com/pI4Hx24.png) 另一類的監督式學習的方式是分類問題(classification),其是在給定特徵之下,將資料分門別類。例如上面關於情緒分析的例子,我們可以將詞彙分類為正面(positive)、中性(neutral)與負面(negative)。 ![](https://i.imgur.com/130a0CX.png) #### 非監督式學習(unsupervised learning) 所謂非監督式學習,是沒有給定事先標記過的訓練範例,自動對輸入的資料進行分類或分群。第一個方式為聚類分析(clustering),我們希望從資料中看出群聚的狀況。 <figure class="second"> <img src="https://i.imgur.com/5HENKUW.png" width="270"/><img src="https://i.imgur.com/h5Rp1KG.png" width="270"/> </figure> 另一種方式係降維(dimension reduction)與視覺化(visualization)。所謂降維顧名思義就是降低高維度資料的維度,目的在於將複雜維度的資料變成我們人類生處於的三維空間。例如文字資料就是高維度資料,一般而言我們在處理文字的時候,是利用虛擬變數或稱作獨熱編碼(one-hot encoding)的方式進行處理,我們可以用 0 跟 1 的組合代表一個字。舉例來說,如果我們有以下的字詞 `one dog` 與 `one cat`,發現到我們能夠將上述的兩個詞彙變成以下的編碼模式: - `one`: `[1, 0, 0]` - `cat`: `[0, 1, 0]` - `dog`: `[0, 0, 1]` 這個方法看起來很好用,但實際上會產生高維度向量(high-dimensional vectors)的問題,將資料庫變得更加龐大。另一方面可能在資料表示(data representation)上顯示其缺點,上面的例子中,`one`、`dog` 與 `cat` 彼此之間的距離都是 $\sqrt{2}$,但 `dog` 跟 `cat` 在現實生活當中距離應該是最近的,因此我們會將類似的字詞百放在一起解決這個問題。以下是中文字詞分類的演示,訓練資料是 2005 至 2012 年在 tw.yahoo.com 中的新聞,總共的字數為 87,848,812 個中文字,不重複的中文字字數為 9,405 個(word-embedding),將 200 維的向量投影到二維平面上(t-SNE),可以看到「陳」這個姓氏附近的姓氏如下: ![](https://i.imgur.com/YesJ8rQ.png) <figure class="second"> <img src="https://i.imgur.com/yv9el1Z.png" width="270"/><img src="https://i.imgur.com/liI7uIr.png" width="270"/> </figure> #### 增強學習(reinforcement learning) 人類在進行決策時,常常會根據目前「環境」(environment) 的「狀態」 (state) 執行「動作」 (action),執行動作會造成兩個結果:一是人們會得到「環境」給我們的回饋,也就是人類會得到「報酬」 (reward) ,接著我們所執行的動作也會去改變「環境」,使得「環境」進入到一個新的「狀態」。一般人會根據「環境」給予的「報酬」,修正自己執行的「策略」,試圖極大化自己的「長期報酬」。增強學習希望讓機器,或者稱為「代理人」 (agent) ,模仿人類的這一系列行為。[^1] ![](https://i.imgur.com/11sxkg7.png) 事實上,在經濟領域中,跨期決策(intertemporal decision)就是一個增強學習的例子。 ![](https://i.imgur.com/PxsOJ0V.png) ### 統計學習的分析方法之二 另一種分類統計學習的方式即是將這些方法區分為 instance-based learning 與 model-based learning。前者是指將訓練中的所有資料都記起來,可以想像成是~~可憐的台灣學生~~認真準備期中、期末考的學生,在考前將上課所學的知識記在腦海裡。 ![](https://i.imgur.com/dMqKCd6.png) 後者不同於 instance-based learning,其不會記憶所有的資料,而是將模型背後的參數(parameters)記起來,迴歸模型就是最好的例子,當我們將資料丟入設定好的 OLS 迴歸模型後,最後得出的係數(coefficient)就是我們會記憶的參數。 ![](https://i.imgur.com/IGQSuNL.png) ### 統計學習的分析方法之三 最後一種常見的分類方式是批量學習(batch-learning) 和 增量學習(incremental learning)。前者可以理解為填鴨式學習,一次性的將資料輸入進模型,後者則是批次將資料丟入模型中,這種方式多用在資料蒐集的階段,或是訓練資料的中後期,因擔心資料量太大導致電腦運算不過來,因此採用這種方式降低運算上的負擔。 ## 資料量(power of data)的迷思 一般咸認,當我們在建立模型時,資料量必須越大越好,越複雜的模型亦是如此。一個簡單的例子是,在英文中有許多易混淆(confusion)的單字,我們的任務就是要訓練一個消歧義(disambiguation)的模型。比如以下的字詞集合:`{principle, principal}`、`{then, than}`、`{to, two, too}`、`{weather, whether}` 等等,根據下方的趨勢圖,可以看到當資料量越大的時候,精確度就越高。 ![](https://i.imgur.com/2fOSGNp.png) ## 學習筆記 這份筆記集是基於臺大盧信銘教授於 111-1 學期所開設的「[統計學習與深度學習](https://nol.ntu.edu.tw/nol/coursesearch/print_table.php?course_id=725%20U3670&class=&dpt_code=7050&ser_no=25808&semester=111-1&lang=CH)」課程所撰寫的筆記。 ### [K-Nearnest neighbors(KNN)演算法](https://hackmd.io/@yueswater/KNN) ## 參考書目 * *Pattern Recognition and Machine Learning* by Christopher M. Bishop; ISBN 0-387-31073-8. * *Hands-on Machine Learning with Scikit-Learn & Tensorflow* by Aurelien Geron; ISBN 978-1-491-96229-9. * *Deep Learning* by Ian Goodfellow, Yoshua Bengio, and Aaron Courville; https://www.deeplearningbook.org/ * *Dive into Deep Learning* by Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola; https://d2l.ai/ and https://github.com/dsgiitr/d2l-pytorch [^1]:節錄自[人工智慧與增強學習1:什麼是增強學習?](https://taweihuang.hpd.io/2016/09/16/%E4%BA%BA%E5%B7%A5%E6%99%BA%E6%85%A7%E8%88%87%E5%A2%9E%E5%BC%B7%E5%AD%B8%E7%BF%92-1%EF%BC%9A%E4%BB%80%E9%BA%BC%E6%98%AF%E5%A2%9E%E5%BC%B7%E5%AD%B8%E7%BF%92%EF%BC%9F/)