看學員 code的途中
:「安安,話說你們知道深度學習的AI模型是怎麼產生的嗎」
:「透過對神經網路使用反向傳播法使梯度下降然後就好啦。」
:「阿然後咧?」
:「還有然後嗎???」
:「這樣的理解就好像三寶司機跟別人說開車很容易:
「只要打 D檔控制油門、踩剎車就好啦」
這樣的感覺,這樣你是很難把模型訓練好的,因為就像開車在高速公路和一般道路有差異一樣,針對不同的問題我們也需要更細微的調整深度學習模型。」
:「痾好像很有道理,可是老師都是這樣講的啊。」
:「所以剛才你們說的邏輯概念上是沒錯的,這是很標準的答案,但其實可以更細的去思考他。我這邊用kears*的模型建置方法來類比一下。
(*Keras是建立深度學習的一個技術框架,用來輔助進行深度學習程序開發。)
反向傳播法是一套理論基礎,真正用來計算的是所謂的梯度下降。梯度下降在Keras的模型建置流程裡面,屬於optimizer(最佳化器)。所以在Keras最佳化器裡面會包含:
1. gd (gradient descent) 傳統梯度下降
2. sgd (stochastic gradient decent) 隨機梯度下降
3. adam (adaptive moment estimation) 適應性慣量估計
之類的演算法,用來輔助計算。」
:「那最佳化器是在最佳化什麼東西?梯度嗎?」
:「不是梯度喔,他是在最佳化loss(loss function) 損失函數*
你可以想像,既然深度學習是一個需要「學習」的過程,我們自然要告訴模型他現在「有多錯」。於是我們會有一個損失函數來「量化」有多錯這件事。」
:「可是分類(Classification)和回歸(Regression)的問題完全不一樣啊,而且還有二元類別和多類別的問題。」
:「沒錯,所以loss function在keras裡面也有很多種,包括:
1. mean-squre-error 這是回歸用的
2. categorical_crossentropy 這是分類用的
當然你也可以客製化自己的。不過你知道,loss function有一個分身叫做metrics,就像二師兄所言:
「永和有永和路,中和也有永和路。」
「中和有中和路,永和也有中和路。 」
但他們的意義卻截然不同。」
:「台灣內戰我傻眼,那他們有什麼差別阿?」
:「metrics的中文是指標,同樣是用來計算目前模型的損失(有多錯),但它是用來告訴AI工程師現在模型的狀況的。而loss function的損失基本上是直接對口到最佳化器。提供最佳化器最小化損失的線索。」
:「喔喔,所以loss function(損失函數)是給機器看的,metrics(指標)是給人看的。」
:「沒錯沒錯。」
延伸閱讀:
https://stats.stackexchange.com/questions/379264/loss-function-and-evaluation-metric
https://stackoverflow.com/questions/51256695/loss-metrics-and-scoring-in-keras