---
# System prepended metadata

title: Machine Learning Class1

---

# 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


