Re: [問題] Validation set 到底在做什麼?
ot大的建議讓我弄懂了neural net訓練時
為什麼都要附上一組validation set
(如果我又錯了 再請g大幫我validate一下!)
是的 我們就假設 如果沒有validation set會發生什麼事
另外我們再來假設 我們有無窮無盡的時間或是運算資源
沒有validation set 我們可以訓練neural net嗎?
答案是可以的 YES!
訓練到底需要什麼:
(1) 訓練資料
(2)預先設好的超參數 (e.g. layer size, layer type, mini batch size 等等;
特別注意 我沒有設定epoch size; 或者我們把epoch size設為無限大(反正我們有無限
的時間和運算資源);
(1)(2) 弄好就可以開始epoch by epoch 的訓練了;
每次搞定一個epoch 我們就會得到一個模組
我們讓它訓練到天荒地老; 產生無數個模組;
用數學集合的方式來表示的話,我們就會得到下面的集合.
trained_models=
{<epoch_i, train_preplexity_i, train_accuracy_i, Same_HyperParameter> |for i
in N }
這個時候問題就來了!!!
trained_models 是一個無限大的集合 我們想要從中挑一個最好成員 那該怎麼挑呢?
這些成員的超參數都一樣 所以超參數不能用來作為挑選的依據
那有哪些特徵是可能有用的呢?
train_preplexity, train_accuracy 可能有用 但很可能不準 因為我們會有overfitting
的問題; epoch number也不能用, 因為也不一定高的epoch越好, 一樣是overfitting的問
題.
每個epoch的模組都一模一樣!!!
這樣就像唐伯虎點秋香 每個都戴上面具 那個才是我們的秋香呢?
隨便選一個 大家拼人品嗎? 挑到石榴姊怎麼辦?
唐伯虎就大喊了 "別人笑我太瘋癲 我笑他人看不川 ..."
看誰抖了一下
我們可以用類似的方式
預先準備好一個validation set,每個epoch訓練好,就要它預測validation set看看
現在加進了validation set, 我們的模組集合就會變成這樣
{<epoch_i, train_preplexity_i, train_accuracy_i, validation_preplexity_i,
validation_accuracy_i, Same_HyperParameter> |for i in N }
現在我們就可以從validation preplexity 和 accuracy 來判斷要挑那個好.
注意這裡,我們依然*不是*挑超參數,因為這組模組集合的成員的超參數還是依然一模一樣
現在我的理解就變成跟著一起訓練的validation set的作用就是用來挑ephoch number了
還有 這裡的validation 跟 cross validation 沒有關聯; 因為我們沒有*cross*
用的一直是同一份的validation dataset
這個就僅僅算是*hold-out validation*
以上是算是澄清事實吧
要是講錯了 再麻煩大家指點!
######################################
以下我再來提問 兩個問題
(a)用偷偷把validation set塞回去 這樣好嗎? 會有什麼問題?
如果這個validation set就是拿來挑 那個ephoch好,
那我們現在可以作弊一下
我們先使用validation set 找到最佳的ephoch number
記住這個黃金數字
現在把validation set放到training set 兩個合在一起
(這樣我們就有更多樣本了)
再把這個新的較大的training set再重新一次
反正我們已經*預先*知道那個epoch最好了
用偷偷把validation set塞回去 這樣好嗎? 會有什麼問題?
實作上 這是慣用手法嗎?
(b)用了validation set 就*一定*能挑到最好的了嗎?
我認為覺得不是 這跟我們的validation set挑的好不好非常有關
要是人品不好 正好挑到不具代表性的樣本來做validation
那我們的validation preplexity 和 accuracy 也就不可靠了
(以後我要罵人都要罵 "祝你的validation set都挑到壞樣本!"
推文就說 "希望你的validation set挑的特別好!")
這個也呼應了pipidog大前文說的 validation set 怎麼挑是個大學問
validation成績最好 應該也不是一定最好的模組吧
要避免挑到極端樣本的機會 還是得來弄一下n-fold cross-validation
但是弄了n folds 之後訓練時間就增加了n倍
除了增加時間成本外 這樣的作法可能會有什麼問題呢?
實作上 這是慣用手法嗎?
※ 引述《outrunner (ot)》之銘言:
: ※ 引述《lucien0410 (lucein)》之銘言:
: : 可是可是我的問題沒有回答到 (是我一開始沒問對問題)
: 不如你來回答問題, 你怎麼知道模型要訓練到什麼時候(epoch size)?
: : 換個方式講
: : 假設我有兩份已知資料(AB兩份資料)
: : A拿來訓練
: : B拿來測試
: : B的測試結果告訴我們成果到底怎樣 公平的驗證
: : B就是終極測試
: 這樣做當然很好, 但代價也很昂貴.
: 回到上面的問題, 你需要驗證多少次? 每個epoch驗證一次?
: 更別提很多時候是沒辦法這樣做的.
: (ex. B沒有答案. 有的話我會拿來做訓練)
: : 但其實訓練A之前 可以調整很多hyperparameter
: : 所以就先把A切成 a b
: : 拿a 訓練 b 測試 找尋最佳的hyperparameter
: : 找到後 再依這樣的設定訓練A (期待B的測試會最好)
: : 但是OpenNMT要求在訓練小寫a時也必須提供val set
: : 這就是我的問題了
: 他就是邊訓練邊測試啊, 不然你怎麼知道訓練得如何了?
: 其實就是把你想手動做的事情自動化啦.
: 如果你有看他的說明書:
: Validation files are required and used to evaluate
: the convergence of the training.
: It usually contains no more than 5000 sentences.
: 第一句就是前面講的.
: 第二句的意思是做這個很浪費時間. (別誤會, 是學問很大的意思)
: 然後"找尋最佳的hyperparameter"也不是很重要,
: 想太多不如先train下去, train久了就有fu了.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 68.230.60.98
※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1522376082.A.FDF.html
※ 編輯: lucien0410 (68.230.60.98), 03/30/2018 10:28:42
→
03/30 12:08,
6年前
, 1F
03/30 12:08, 1F
→
03/30 12:08,
6年前
, 2F
03/30 12:08, 2F
推
03/30 12:46,
6年前
, 3F
03/30 12:46, 3F
推
03/30 16:51,
6年前
, 4F
03/30 16:51, 4F
→
03/30 16:51,
6年前
, 5F
03/30 16:51, 5F
→
03/30 16:52,
6年前
, 6F
03/30 16:52, 6F
→
03/30 16:52,
6年前
, 7F
03/30 16:52, 7F
→
03/30 16:53,
6年前
, 8F
03/30 16:53, 8F
→
03/30 16:56,
6年前
, 9F
03/30 16:56, 9F
→
03/30 16:57,
6年前
, 10F
03/30 16:57, 10F
→
03/30 16:57,
6年前
, 11F
03/30 16:57, 11F
推
03/31 12:56,
6年前
, 12F
03/31 12:56, 12F
→
03/31 12:56,
6年前
, 13F
03/31 12:56, 13F
→
03/31 12:57,
6年前
, 14F
03/31 12:57, 14F
推
03/31 17:15,
6年前
, 15F
03/31 17:15, 15F
→
03/31 17:20,
6年前
, 16F
03/31 17:20, 16F
→
03/31 17:20,
6年前
, 17F
03/31 17:20, 17F
→
03/31 17:21,
6年前
, 18F
03/31 17:21, 18F
→
03/31 17:21,
6年前
, 19F
03/31 17:21, 19F
→
03/31 17:23,
6年前
, 20F
03/31 17:23, 20F
推
03/31 17:26,
6年前
, 21F
03/31 17:26, 21F
推
03/31 17:36,
6年前
, 22F
03/31 17:36, 22F
→
04/01 11:54,
6年前
, 23F
04/01 11:54, 23F
→
04/01 11:55,
6年前
, 24F
04/01 11:55, 24F
→
04/01 11:57,
6年前
, 25F
04/01 11:57, 25F
推
04/01 12:57,
6年前
, 26F
04/01 12:57, 26F
→
04/01 12:58,
6年前
, 27F
04/01 12:58, 27F
→
04/01 12:59,
6年前
, 28F
04/01 12:59, 28F
→
04/01 12:59,
6年前
, 29F
04/01 12:59, 29F
→
04/01 12:59,
6年前
, 30F
04/01 12:59, 30F
→
04/01 12:59,
6年前
, 31F
04/01 12:59, 31F
→
04/01 13:38,
6年前
, 32F
04/01 13:38, 32F
→
04/03 01:18,
6年前
, 33F
04/03 01:18, 33F
→
04/03 01:18,
6年前
, 34F
04/03 01:18, 34F
推
04/03 12:48,
6年前
, 35F
04/03 12:48, 35F
→
04/03 13:22,
6年前
, 36F
04/03 13:22, 36F
→
04/03 13:24,
6年前
, 37F
04/03 13:24, 37F
推
04/03 15:37,
6年前
, 38F
04/03 15:37, 38F
→
04/03 15:37,
6年前
, 39F
04/03 15:37, 39F
→
04/03 16:35,
6年前
, 40F
04/03 16:35, 40F
→
04/03 16:37,
6年前
, 41F
04/03 16:37, 41F
→
04/03 16:38,
6年前
, 42F
04/03 16:38, 42F
推
04/03 23:20,
6年前
, 43F
04/03 23:20, 43F
→
04/03 23:20,
6年前
, 44F
04/03 23:20, 44F
→
04/03 23:21,
6年前
, 45F
04/03 23:21, 45F
→
04/03 23:21,
6年前
, 46F
04/03 23:21, 46F
推
04/03 23:26,
6年前
, 47F
04/03 23:26, 47F
→
04/03 23:26,
6年前
, 48F
04/03 23:26, 48F
→
04/04 00:49,
6年前
, 49F
04/04 00:49, 49F
討論串 (同標題文章)
DataScience 近期熱門文章
PTT數位生活區 即時熱門文章