【AI模型是如何被訓練的 -loss, metrics and optimizer】

王柏鈞
4 min readApr 10, 2020

--

今天好像不太科普,不過如果看完你會開始理解這三個參數

學習目標

  1. 為什麼模型訓練不好(可能是loss選錯了)
  2. 要怎麼呈現模型的好壞(用適合的metirc)
一次幫你搞懂上面這三個東西

看學員 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

--

--

No responses yet