# 2.5 Learning Multiple Classes 在前面的例子裡,family car 這個 class 是 positive examples,所有不是 family car 的其他種車是 negative examples。 這是一個只有兩個 classes 的問題,但是在 general case 裡,我們可能會有不只兩個 classes。 因此假設我們令 classes 總數為 $K$,用 <font color = "green">$C_i,\ i=1,...,K$</font> 來代表這 $K$ 個 classes,然後我們的 input instance 屬於這些 classes 的其中一個。 > 只能恰好屬於一個,一個 instance 不會同時屬於好幾個 classes。 ![image](https://hackmd.io/_uploads/ryvem5ieR.png) 在用 ML 做 classification 的時候,我們會想 learn 的是++把一個 classes 裡的 instances 和<font color = "red">所有其他</font> classes 的 instances 分開來的邊界是什麼++,所以對 hypothesis $h_i$ 來說,屬於 class $C_i$ 的 training examples 是 positive instances,而所有其他 classes 的 examples 都是 negative instances。 $\rightarrow$ 因此,在 $K$-class 的問題中,我們有 $K$ ++個 hypothesis++ ![2.9](https://hackmd.io/_uploads/rJ-ar5jg0.png) > $i$ 這個 index 有 $K$ 個可能的值(如 $i=1,...,K$),對每個 $i$ 來說,我們會有 $C_i$,也就是第 $i$ 個 class,還有 $h_i()$, 也就是這個 class 對應的 hypothesis > > $\rightarrow$ 每個 $h_i()$ 只會去辨別一個 example 到底是不是屬於這個 class $i$,對所有不是 class $i$ 的 examples,$h_i()$ 只會通通 output $0$,而不會再進一步分類。 所以,我們 total 的 emperical error 就是去加總每個 classes 對每個 instances 的 predictions: ![2.10](https://hackmd.io/_uploads/BywIuqog0.png) > 假設我們先固定外面那層 $\sum$ > $\rightarrow$ 當 $t=1$ 時,我們的 example $x^t$ 固定為 $x^1$,也就是我們固定去看一號 example;接著 $i$ 會從 $1$ 跑到 $K$ > > 當 $i=1$ 時: > $\Rightarrow$ 我們首先用會辨別 class $C_1$ 的 hypothesis $h_1(·)$ 去 predict $x^1$ 是不是屬於 $C_1$,預測出來的結果再去看看是不是跟我們的 required value $r_i^t$(此時是 $r_1^1$)相同。 > > 如果一樣的話,$h_i(x^t)\not=r_i^t=0$,也就是不會增加 emperical error;如果不同,代表預測錯誤,於是 $h_i(x^t)\not=r_i^t=1$,累加到 emperical error。 > > 接著,我們對一樣是一號 example $x^1$ 做同樣的事,只是用二號 hypothesis $h_2(·)$ 去檢查它是否屬於第二個 class $C_2$,⋯⋯,一直做到檢查完 $x^1$ 是否屬於第 $K$ 個 class $C_K$,我們就對 $t=2$ ,也就是第二個 example 重複以上動作。 對於某個給定的 example $x$,理想上<font color = "red">恰好一個</font> $h_i(x),\ i=1,...,K$ 會 output $1$,也就是 $x$ 只屬於某個 class $C_i$。 但是,如果沒有任何一個 $h_i(x)$ 是 $1$,或是有好幾個 $h_i(x)$ 都是 $1$,那麼這樣的 case 就叫做 <font color = "snake">doubt</font>,然後我們的 classifier 就會 <font color = "snake">reject</font> 這樣的 cases。 ![fig 2.9](https://hackmd.io/_uploads/Hy00QoseR.png) 在前面去 learn family car 的例子裡,我們只用一個 hypothesis 去 model 那些 positive examples,所有 negative examples 都不是 family car。 但是我們也可以用兩個 hypotheses,其中一個是對 positive instances,另外一個對 negative instances;這樣的做法++假定了那些 negative instances 的 structure 也可以被另一個 hypothesis 覆蓋++。 舉例來說: 區分 family cars 跟 sports cars,這兩個 classes 都有各自的 structure,好處是如果 input 是一台 luxury sedan,兩個 hypotheses 都能判定為 negative 然後 reject 這個 input。 :::warning 如果在一個 dataset 裡,我們期望所有的 classes 都有相似的 <font color = "orange">++distribution++,也就是 input space 裡的形狀</font>,那麼: $\rightarrow$ 同樣的 hypothesis class 就可以用於所有的 classes。 ::: 舉例來說: 在辨認手寫數字的 dataset 裡,我們會期望每個 digit 都有差不多的 distributions;但是在做醫療診斷的 dataset 裡,假設我們有兩個 classes,一個是健康的人、一個是生病的人,他們可能就會有完全不同的 distributions,因為雖然健康的人的樣子都差不多,但是生病的人每個都是因為不同的原因、有不同的症狀,這也就會反映在 input 上,讓每個 input 都非常不同。