Perbedaan antara teknik backpropagation

17

Hanya untuk bersenang-senang, saya mencoba mengembangkan jaringan saraf.

Sekarang, untuk backpropagation saya melihat dua teknik.

Yang pertama digunakan di sini dan di banyak tempat lain juga.

Apa yang dilakukannya adalah:

  • Ini menghitung kesalahan untuk setiap neuron output.
  • Ini mempropagandakannya ke jaringan (menghitung kesalahan untuk setiap neuron dalam).
  • Ini memperbarui bobot dengan rumus: (di mana perubahan berat, kecepatan belajar, kesalahan neuron menerima input dari sinaps dan menjadi output yang dikirim pada sinaps).
  • Mengulangi untuk setiap entri dataset, sebanyak yang diperlukan.

Namun, jaringan saraf yang diusulkan dalam tutorial ini (juga tersedia di GitHub) menggunakan teknik yang berbeda:

  • Ini menggunakan fungsi kesalahan (metode lain memang memiliki fungsi kesalahan, tetapi tidak menggunakannya untuk pelatihan).
  • Ini memiliki fungsi lain yang dapat menghitung kesalahan akhir mulai dari bobot.
  • Ini meminimalkan fungsi itu (melalui gradient descent).

Sekarang, metode mana yang harus digunakan?

Saya pikir yang pertama adalah yang paling banyak digunakan (karena saya melihat berbagai contoh menggunakannya), tetapi apakah itu bekerja juga?

Secara khusus, saya tidak tahu:

  • Bukankah lebih tunduk pada minimum lokal (karena tidak menggunakan fungsi kuadratik)?
  • Karena variasi setiap bobot dipengaruhi oleh nilai output neuron outputnya, bukankah entri dataset yang kebetulan menghasilkan nilai lebih tinggi pada neuron (bukan hanya output) memengaruhi bobot lebih dari entri lain?

Sekarang, saya lebih suka teknik pertama, karena saya merasa lebih mudah diimplementasikan dan lebih mudah untuk dipikirkan.

Padahal, jika memang ada masalah yang saya sebutkan (yang saya harap tidak), apakah ada alasan sebenarnya untuk menggunakannya pada metode kedua?

Aspie96
sumber

Jawaban:

6

Dua contoh pada dasarnya menyajikan operasi yang sama:

  • Dalam kedua kasus jaringan dilatih dengan gradient descent menggunakan backpropagated squared error yang dihitung pada output.
  • Kedua contoh menggunakan fungsi logistik untuk aktivasi simpul (turunan dari fungsi logistik sadalah s(1 - s). Turunan ini jelas sangat mudah untuk dihitung, dan ini adalah bagian dari alasan mengapa begitu banyak digunakan (hari ini fungsi aktivasi ReLU lebih populer). , terutama dengan jaringan konvolusional).
  • Metode pertama juga menggunakan momentum .

Perbedaan utama yang dapat saya lihat adalah bahwa dalam kasus backpropagation pertama adalah iteratif sedangkan pada contoh kedua dilakukan dalam mode batch.

Video terakhir dalam seri oleh Welch Labs memperkenalkan metode kuasi-Newtonian yang menawarkan keuntungan menemukan fungsi biaya minimum dengan menghitung Hessian (matriks turunan orde kedua dari kesalahan sehubungan dengan bobot). Namun, ini terasa seperti membandingkan apel dan jeruk - turunan gradien vanila tidak menggunakan informasi tingkat kedua.

tidak bisa dipercaya
sumber