# Machine Learning Class1 # Machine Learning 三大步驟 **Step1** 定義一個model即function set **Step2** 定義一個goodness of function損失函數去評估該function的好壞 **Step3** 找一個最好的function # Learning Theory ![](https://i.imgur.com/D4t4Y98.png) 上圖中,同樣的顏色指的是同一個類型的事情 ==藍色方塊==指的是scenario,即學習的情境。++通常學習的情境是我們沒有辦法控制的++,比如做reinforcement Learning是因為我們沒有data、沒有辦法來做supervised Learning的情況下才去做的。如果有data,supervised Learning當然比reinforcement Learning要好;因此手上有什麽樣的data,就決定你使用什麽樣的scenario ==紅色方塊==指的是task,即要解決的問題。你要解的問題,++隨著你要找的function的output而有所不同++。有輸出scalar的regression、有輸出options的classification、有輸出structured object的structured Learning... ==綠色方塊==指的是model,即用來解決問題的模型(function set)。在這些task里面有不同的model,也就是說,同樣的task,我們可以用不同的方法來解它,比如linear model、Non-linear model(deep Learning、SVM、decision tree、K-NN...) # **Scenario 情境** ## Supervised Learning(監督式學習) supervised learning需要大量的training data,這些training data告訴我們說,一個我們要找的function,它的input和output之間有什麽樣的關系 而這種function的output,通常被叫做++label(標簽)++,也就是說,我們要使用supervised learning這樣一種技術,++我們需要告訴機器,function的input和output分別是什麽++,而這種output通常是通過人工的方式標注出來的,因此稱為人工標注的label,它的缺點是需要大量的人工effort ## Semi-supervised Learning(半監督式學習) 舉例:如果想要做一個區分貓和狗的function 手頭上有少量的labeled data,它們標注了圖片上哪只是貓哪只是狗;同時又有大量的unlabeled data(++這unlabeled data都和主題相關++),它們僅僅只有貓和狗的圖片,但沒有標注去告訴機器哪只是貓哪只是狗 在Semi-supervised Learning的技術里面,這些沒有labeled的data,對機器學習也是有幫助的 ![](https://i.imgur.com/9KklaUu.png) ## Transfer Learning(遷移式學習) 假設一樣我們要做貓和狗的分類問題 我們也一樣只有少量的有labeled的data;但是++我們現在有大量的不相關的data++(不是貓和狗的圖片,而是一些其他不相關的圖片),在這些大量的data里面,它++可能有label也可能沒有label++的data Transfer Learning要解決的問題是,這一堆不相關的data可以對結果帶來什麽樣的幫助 ![](https://i.imgur.com/gpyFx84.png) ## Unsupervised Learning(無監督式學習) 區別於supervised learning、Semi-supervised Learning,unsupervised learning希望機器學到無師自通,++在完全沒有任何label的情況下++自己學習,機器到底能學到什麽樣的知識 舉例來說,如果我們給機器看大量的文章,機器看過大量的文章之後,它到底能夠學到什麽事情?它能不能學會每個詞匯的意思? 學會每個詞匯的意思可以理解為:我們要找一個function,然後把一個詞匯丟進去,機器要輸出告訴你說這個詞匯是什麽意思,也許他用一個向量來表示這個詞匯的不同的特性,不同的attribute(屬性)... 又比如,我們帶機器去逛動物園,給他看大量的動物的圖片,對於unsupervised learning來說,我們的data中只有給function的輸入的大量圖片,沒有任何的輸出標注;在這種情況下,機器該怎麽學會根據testing data的輸入來自己生成新的圖片? ## Reinforcement Learning(強化式學習) Supervised Learning:我們會告訴機器正確的答案是什麽 ,其特點是++Learning from teacher++ + 比如訓練一個聊天機器人,告訴他如果使用者說了“Hello”,你就說“Hi”;如果使用者說了“Bye bye”,你就說“Good bye”;就好像有一個家教在它的旁邊手把手地教他每一件事情 Reinforcement Learning:我們沒有告訴機器正確的答案是什麽,機器最終得到的只有一個分數,就是它做的好還是不好,但他不知道自己到底哪里做的不好,他也沒有正確的答案;很像真實社會中的學習,你沒有一個正確的答案,你只知道自己是做得好還是不好。其特點是++Learning from critics(評價)++ + 比如訓練一個聊天機器人,讓它跟客人直接對話;如果客人勃然大怒把電話掛掉了,那機器就學到一件事情,剛才做錯了,它不知道自己哪里做錯了,必須自己回去反省檢討到底要如何改進,比如一開始不應該打招呼嗎?還是中間不能罵臟話之類的 ![](https://i.imgur.com/R24OZUL.png) 再拿下棋這件事舉例,supervised Learning是說看到眼前這個棋盤,告訴機器下一步要走什麽位置;而reinforcement Learning是說讓機器和對手互弈,下了好幾手之後贏了,機器就知道這一局棋下的不錯,但是到底哪一步是贏的關鍵,機器是不知道的,他只知道自己是贏了還是輸了 # **Task 問題** ## Regression(回歸) regression是machine learning的一個task,特點是通過regression找到的function,它的++輸出是一個scalar(數值)++ 比如PM2.5的預測,給machine的training data是過去的PM2.5資料,而輸出的是對未來PM2.5的預測數值,這就是一個典型的regression的問題 ## Classification(分類) regression和classification的區別是,我們要機器輸出的東西的類型是不一樣的,在regression里機器輸出的是scalar,而classification分為兩類: + Binary Classification(二元分類) 在binary classification里,我們要機器輸出的是yes or no,是或否,++兩種選擇++。 比如G-mail的spam filtering(垃圾郵件過濾器),輸入是郵件,輸出是該郵件是否是垃圾郵件 + Multi-class classification(多元分類) 在multi-class classification里,機器要做的是選擇題,等於給他++數個選項++,每一個選項就是一個類別,它要從數個類別里面選擇正確的類別 比如document classification(新聞文章分類),輸入是一則新聞,輸出是這個新聞屬於哪一個類別(選項) ## Structured Learning(結構式學習) 在structured Learning里,我們要機器輸出的是,++一個有結構性的東西++ 在分類的問題中,機器輸出的只是一個選項,而在structured類的problem里面,機器要++輸出的是一個覆雜的物件++ 舉例來說,在語音識別的情境下,機器的輸入是一個聲音信號,輸出是一個句子;句子是由許多詞匯拼湊而成,它是一個有結構性的object,或是機器翻譯、人臉識別(標出不同的人的名稱)... 比如GAN也是structured Learning的一種方法 ![](https://i.imgur.com/owlk94f.png) # **Model(Function set) 選擇模型** 在解任務的過程中,第一步是要選一個function的set,選不同的function set,會得到不同的結果;而選不同的function set就是選不同的model,其中model又分為很多種: + Linear Model(線性模型):最簡單的模型 + Non-linear Model(非線性模型):最常用的模型,包括: + deep learning + SVM + decision tree + K-NN