How to choose optimal number of epochs for training deep learning model using early stopping?

mr_nlp: <p>I have trained a model for classification using pytorch for 15 epochs and I got the following results.</p>
<pre><code class="lang-auto">Epoch: 01 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.8484417188167572	46.27649937455544	0.44242000422979655	81.8126314762357
Epoch: 02 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.3785825753211975	80.93352949205939	0.3330468206029189	86.85274661582442
Epoch: 03 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.2687795569499334	86.35365793971523	0.2897682840886869	84.34118941644529
Epoch: 04 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.2083733034133911	89.25453795570579	0.29871052660440145	87.85576875537966
Epoch: 05 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.1793482033411662	90.62846731090985	0.3072881722136548	89.1554929532116
Epoch: 06 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.1568595383564631	91.87457575525828	0.28149403474832835	85.58977772279461
Epoch: 07 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.131117541094621	93.26272659692468	0.2886749090332734	85.51317477530897
Epoch: 08 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.1124691803753376	93.9979780923722	0.2921934198392065	85.9360970828858
Epoch: 09 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.10579593896865845	94.22608917566883	0.3030163010484294	89.53196601823727
Epoch: 10 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.09209968343377113	94.66193046659139	0.3365556134989387	90.01089741152205
Epoch: 11 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.07625301644206046	95.64829359095773	0.33332310224834244	89.54016744056294
Epoch: 12 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.07318100467324257	95.77540255609102	0.37028060304491145	89.94578304043591
Epoch: 13 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.0694477858642737	95.8988953895531	0.3802690231486371	89.90261120713019
Epoch: 14 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.0634955983608961	96.21871614432091	0.37298278353716197	88.09427803394631
Epoch: 15 | Epoch Time: 0m 37s
*******train_loss,train_acc,valid_loss,valid_ac********** 
0.06239921828111013	96.27122675510468	0.35263362683747945	85.75150055866662

</code></pre>
<p>I want to apply early stopping. I would like to know which one is more appropriate and why?</p>
<p>a) early stopping on the basis of validation loss</p>
<p>or</p>
<p>b) early stopping on the basis of validation accuracy</p>
<p><a class="mention" href="/u/ptrblck">@ptrblck</a></p>

tom: <p>I’m not <a class="mention" href="/u/ptrblck">@ptrblck</a> but if you’re willing to also hear form someone else:<br>
If you think of this as an optimization problem, you might think about what metric you want to optimize. I guess the more common criterion is the accuracy (which we cannot use in training because it is not differentiable).<br>
Note that you would need a test set to measure the resulting accuracy is (because using early stopping means you now used the validation set in training).</p>

mr_nlp: <p>Thanks for the information. Can you please explain it in a more clear way?  Are there any drawbacks if I apply early stopping on the basis of validation accuracy? <a class="mention" href="/u/tom">@tom</a></p>