前面說完了一個大概, 基本上也底定了我想研究人工智慧的方向, 接著我想從基礎知識開始記錄起, 我是個怪人, 對於有興趣的東西不希望太過不求甚解, 反倒比較期望了解他的原理, 期待能擦出一些不同的火花。
實際上我在這裡提到的指標, 會包含Accuracy、Precision、Recall 、 F1-score。
正如前面講到, 機器學習的目標, 就是希望透過擷取到的資料特徵, 來預測目標的模樣, 那想當然我要知道模型(Model)好不好, 就會去判斷他預測的準不準, 而想知道準不準, 想當然就會像考試一樣, 每題都會有正確答案, 然後我們來看看模型預測的答案和我正確答案相差多少, 比如說, 我的正確答案是True ( O ), 而模型預測卻是False (X), 那他就錯了一題, 而 我的正確答案是True ( O ), 而模型預測也預測 True (O), 那他就對了一題。
有趣的是, 從以上我講的爛例子, 模型不一定預測都對, 有可能他預測是 True , 但實際答案是 False , 也可能他預測是 True , 但實際答案是 True , 綜合不同預測結果, 可以得到四種結果, 也就是混淆矩陣 Confusion Matrix。
實際 True | 實際 False | |
預測 True | TP (True Positive) | FP (False Positive) |
預測 False | FN (False Negative) | TN (True Negative) |
如果還是很混淆, 不然用個很貼近生活的例子來看好了, 相信很多人經過一段時間的新聞洗禮後, 對這些詞都很熟悉才對….。
實際陽性 | 實際陰性 | |
快篩陽性 | 確診 TP (True Positive) | 偽陽 FP (False Positive) |
快篩陰性 | 偽陰 FN (False Negative) | 未感染 TN (True Negative) |
在往下寫之前, 我們需要先搞清楚指標的用途, 在深度學習中, 指標往往是用來衡量一個模型預測的準確度, 而用準確度得到指標後, 我們的功課就會開始著重在怎麼樣去提升指標的數值。
假設今天我們將一群人抓過來逐個檢測, 一個是陽性(Positive), 一個是陰性(Negative), 在我們的測試結果就只有這兩種,再從中去抓出偽陽(Fasle Positive)和偽陰(False Negative) 的人, 最終就會形成像上面的圖, 也就是混淆矩陣(Confusion Matrix), 那綜合以上4種狀況, 我們可以得出幾種指標。
Accuracy, 算是比較常見的指標, 主要是把正確找到的陽性 (TP) 數量, 正確找到的陰性(TN) 數量, 兩者相加後, 來除以所有的檢驗個數, 公式如下;
Accuracy =( TPs+TNs ) / Total N.
換句話說, 假設今天檢驗100人, TP 有 20人, TN 有5人, 那 Accuracy 就是0.25。
超低, 算出來是這樣沒錯,只是要澄清, 這個超低主要是因為你有75人混在FP、FN裡面, 可見這預測模型是有問題的, 但這是一個最大而化之的方法, 而我們沒辦法從這指標去衡量偽陽(Fasle Positive)和偽陰(False Negative) 的狀況, 只能知道哪些陽性和陰性是真的被抓出來了, 只能去改善衡量的標準, 但沒法從根本去減少偽陽和偽陰。
換句話說, 今天你觀察模型的主要訴求是希望能抓得越精確越好, 那你就可以用 Accuracy 來做為衡量指標, 但因為模型任務不盡相同, 所以用 Accuracy 並不會是一個最完善的解法。
Precision(準確率)就會從另一個角度來看這4種狀況, 主要是把真陽性(TP)和偽陽(FP)的個數聯合起來做運算,公式如下:
Precision =( TPs) / TPs+FPs
這個指標先把真陽性(TP)去和真陽性(TP)和偽陽(FP)總和做相除, 說起來很混亂, 但是可見當Precision指標越來越大時, 代表模型預測到的偽陽性就越來越少, 趨近於1時, 代表偽陽的個數超級少, 也意味我們模型排除假陽性的能力強, 假設今天你想要改善或是觀察模型的假陽性狀況時, 就可以用這個指標做為衡量標準。
譬 譬如你要做一個人臉辨識的門鎖功能, 這時你就要思考怎麼把假陽性降到最低, 當降到最低時,才能有效避免門鎖誤辨認, 就放行讓他人通過。
Recall(召回率), 也是做了跟Precision相似的事情, 只是算式不同, 邏輯意義也不相同,在這裡主要是把真陽性(TP)和真陽性(TP)和偽陰(FN)相加去做相除。
Recall =( TPs) / TPs+FNs
在Recall裏面, 若是當FN越來越少時, 則指標也會越來越大, 也就是說, 真陽性的比例會越來越高, 指標越來越大時, 代表模型預測到的偽陽性就越來越少, 趨近於1時, 代表偽陰的個數超級少, , 也意味我們模型排除假陰性的能力強,假設今天你想要做的是改善模型的假陰性狀況時, 就會需要用這指標來衡量。
譬如你要評估一個模型能否有效抓出網路惡意攻擊時, 這時你就要思考怎麼把假陰性降到最低, 當降到最低時, 能找到的惡意攻擊自然是最有效的。
F1-score則又是另一個更進階的衡量指標了,主要是把Recall和Precision做加權平均,這樣的好處可以調和前述兩個指標, 因為若是 Recall、 Precision 其一偏小, 就無法同時兼顧兩種指標, 故進行調和後, F1的變化依然會在0~1之間, 而越趨近1 ,代表模型越穩健, 評估能力也越好。