1:在nn訓練中我們很常用的是訓練集合以及測試集合,在訓練集合上訓練模型(我個人認為模型就是訓練的方法以及對應的引數值,更偏重於引數值吧),訓練好之後拿到測試集合上驗證模型的泛華(就是該模型可以拿去實戰的效果)的能力。
2:但是對於上述情況,舉個例子,比如是在訓練乙個多層網路,我們用類似minfunc的方法來訓練,那麼這個優化包會直接根據我們的輸入直接迭代出來乙個很好地結果了,此時模型就訓練好了。但是如果運用sgd這些方法去訓練的話,到底迭代多少次算好?有時候可能也不收斂,只是中間過程中的乙個引數值是效果最好的,那我們如何知道這個引數值?
3:個人認為有了驗證集,真的很適合來使用sgd來訓練,在訓練過程中,比如訓練了乙個epoch,那麼來把訓練好的引數用於驗證集上,然後儲存在驗證集合上的精度,只要改精度滿足一定條件,那麼訓練就可以終止。
4:關於訓練集、驗證集以及測試集合的選擇,這個網上資料很多,不在這裡說了。
補充乙個偽**:
for each epoch
for each training data instance
propagate error through the network
adjust the weights
calculate the accuracy over training data
for each validation data instance
calculate the accuracy over the validation data
if the threshold validation accuracy is met
exit training
else
continue training
訓練集 驗證集 訓練 驗證 測試集
注意事項 1.訓練 驗證 測試集必須分布相同,比如收集如下幾個區域的使用者資料,在分割訓練 驗證 測試集的時候不能將us uk用於訓練,india 驗證,china 測試,這樣的話由於各個地區分布不同,產生的結果也不好。更明智的做法是每個地區的資料單獨分割訓練 驗證 測試集,保證資料同一分布。2.驗...
訓練集 驗證集 測試集
訓練集loss 驗證集loss 測試集loss 乙個好的網路,二者的差距應該是很低的。但一般情況下因為網路不可避免地存在一定程度上的過擬合,所以肯定是train loss低於test lost,但如果低太多,就得考慮是過擬合的問題還是因為樣本的特徵空間不統一的問題。驗證集基本是在每個epoch完成後...
訓練集,驗證集,測試集
普通引數就是可以被梯度下降所更新的,也就是訓練集所更新的引數。超引數是指訓練開始之前設定的引數,不在梯度下降的更新範圍內,比如網路層數 網路節點數 迭代次數 學習率等等 1.訓練集 確定模型後,用於訓練普通引數 2.驗證集 交叉驗證集cv 驗證集在每個epoch訓練完成後,用來測試一下當前模型的準確...