之前的文章都在討論是非題,是A或不是A這樣,這邊要開始介紹multi-class的Neural network。
先來看看這個影片,會讓大家比較有感:
這就是今天的重點,讓我們的神經網路可以區分多種不同類型的物件。
基本上概念是原先binary classification的延伸,再訓練的時候就是跑每個binary classification。
During training, the model runs through a sequence of binary classifiers, training each to answer a separate classification question
比方說一張狗
的圖片丟去訓練,會回來的可能是下列結果:
No
No
Yes
No
可以看出來如果種類太多,就會有效率上的問題。用Neural Network的觀點下去看,就是下面這樣:
Softmax可以看成之前的logistic regression的延伸,logistic regression回來的是機率,機率總和為1.0。這邊softmax則是讓每個class有一個機率,並且他們的機率總和也要是1。
Class | Probability |
---|---|
cat | 0.01 |
bird | 0.02 |
dog | 0.95 |
candy | 0.02 |
也跟上面的圖沒有差太多,就是在output之前套入一個Softmax equation:
嚴謹一點定義,上面說的softmax是Full Softmax(class數量少時適用)。
另一種則是Candidate sampling(class數量多時比較有效率),僅針對positive label算所有的機率,並對隨機選幾個negative labels算機率。這種方法在考慮品種的時候可以使用,考慮狗的品種
不需要把所有貓
的機率都算進去。
那如果像是本文剛開始的影片,一個圖有多個class要判斷的話呢?這樣的話softmax可能又不是用了,反而需要多個logistic regression去分析它。還記得不要套入softmax equation時其實就是logistic regressions嗎?
這次的練習滿貼近生活的,是用Neural Network判斷手寫數字。有興趣可以看一下它怎麼分類、怎麼訓練、怎麼辨識。再回想一下所有的資料不會一開始都這麼美,feature engineering在一開始做了很大部分的努力。
好囉,Machine learning concepts就快結束了,剩下明天的embedding了。