Pada saat ini, metode berbasis gradien stokastik hampir selalu merupakan algoritma pilihan untuk pembelajaran yang mendalam. Ini berarti bahwa data datang sebagai kumpulan, gradien dihitung dan parameter diperbarui. Ini berarti Anda juga dapat menghitung kehilangan data karena setiap batch dipilih. Di bawah kerangka kerja ini, ada dua cara bagaimana kerugian dihitung yang dapat saya pikirkan yang dapat menyebabkan fenomena ini bahwa kesalahan pelatihan lebih besar daripada kesalahan validasi. Di bawah, saya menunjukkan bahwa Keras, pada kenyataannya, tampaknya menghitung kesalahan dalam sampel dengan cara-cara ini.
1.) Kesalahan pelatihan dirata-ratakan di seluruh zaman, dan sekaligus pada akhir zaman, tetapi kesalahan validasi hanya di akhir zaman. Perhatikan bahwa kesalahan validasi memiliki manfaat diperbarui sepenuhnya, sementara kesalahan pelatihan mencakup perhitungan kesalahan dengan lebih sedikit pembaruan. Tentu saja, asimptotik, efek ini umumnya harus menghilang.
2.) Kesalahan pelatihan dihitung sebelum pembaruan batch dilakukan. Dalam metode berbasis gradien stokastik, ada beberapa kebisingan gradien. Sementara seseorang mendaki bukit, ada kemungkinan besar bahwa seseorang mengurangi kerugian global yang dihitung atas semua sampel pelatihan. Namun, ketika seseorang menjadi sangat dekat dengan mode, arah pembaruan akan negatif sehubungan dengan sampel di batch Anda. Tapi karena kita terpental sekitar mode, ini berarti rata-rata kita harus memilih arah yang positif sehubungan dengan sampel yang keluardari batch. Sekarang, jika kita akan memperbarui sehubungan dengan sampel dalam batch yang diberikan, itu berarti mereka telah didorong oleh potensi banyak pembaruan batch yang mereka tidak termasuk, dengan menghitung kerugian mereka sebelum pembaruan, ini adalah saat stochastic metode telah mendorong parameter yang paling mendukung sampel lain dalam dataset Anda, sehingga memberi kami bias ke atas kecil dalam kerugian yang diharapkan.
Perhatikan bahwa sementara tanpa gejala, efek (1) hilang, (2) tidak! Di bawah ini saya menunjukkan bahwa Keras tampaknya melakukan keduanya (1) dan (2).
(1) Menunjukkan bahwa metrik dirata-rata pada setiap batch dalam zaman, bukan sekaligus pada akhir. Perhatikan perbedaan BESAR dalam akurasi sampel vs val_accuracy yang mendukung val_accuracy pada zaman pertama. Ini karena beberapa kesalahan dalam sampel dihitung dengan sedikit pembaruan batch.
>>> model.fit(Xtrn, Xtrn, epochs = 3, batch_size = 100,
... validation_data = (Xtst, Xtst))
Train on 46580 samples, validate on 1000 samples
Epoch 1/3
46580/46580 [==============================] - 8s 176us/sample
- loss: 0.2320 - accuracy: 0.9216
- val_loss: 0.1581 - val_accuracy: 0.9636
Epoch 2/3
46580/46580 [==============================] - 8s 165us/sample
- loss: 0.1487 - accuracy: 0.9662
- val_loss: 0.1545 - val_accuracy: 0.9677
Epoch 3/3
46580/46580 [==============================] - 8s 165us/sample
- loss: 0.1471 - accuracy: 0.9687
- val_loss: 0.1424 - val_accuracy: 0.9699
<tensorflow.python.keras.callbacks.History object at 0x17070d080>
(2) Menampilkan kesalahan dihitung sebelum pembaruan untuk setiap batch. Perhatikan bahwa untuk zaman 1, ketika kami menggunakan batch_size = nRows
(yaitu, semua data dalam satu kumpulan), kesalahan dalam sampel sekitar 0,5 (perkiraan acak) untuk zaman 1, namun kesalahan validasi adalah 0,82. Oleh karena itu, kesalahan dalam sampel dihitung sebelum pembaruan batch, sedangkan kesalahan validasi dihitung setelah pembaruan batch.
>>> model.fit(Xtrn, Xtrn, epochs = 3, batch_size = nRows,
... validation_data = (Xtst, Xtst))
Train on 46580 samples, validate on 1000 samples
Epoch 1/3
46580/46580 [==============================] - 9s 201us/sample
- loss: 0.7126 - accuracy: 0.5088
- val_loss: 0.5779 - val_accuracy: 0.8191
Epoch 2/3
46580/46580 [==============================] - 6s 136us/sample
- loss: 0.5770 - accuracy: 0.8211
- val_loss: 0.4940 - val_accuracy: 0.8249
Epoch 3/3
46580/46580 [==============================] - 6s 120us/sample
- loss: 0.4921 - accuracy: 0.8268
- val_loss: 0.4502 - val_accuracy: 0.8249