Mempelajari pembelajaran mesin jaringan saraf dalam tensorflow.js: Trik

Untuk melatih jaringan saraf yang dalam dari awal bukanlah tugas yang mudah.

Dibutuhkan banyak data dan waktu untuk belajar, tetapi beberapa trik dapat membantu mempercepat prosesnya, yang akan saya bicarakan di bawah ini.

Peragaan jalannya sebuah labirin sederhana menggunakan trik. Durasi pelatihan jaringan: 1 jam 06 menit. Rekaman dipercepat sebanyak 8 kali.


Untuk setiap tugas, Anda perlu mengembangkan serangkaian trik Anda sendiri untuk mempercepat pembelajaran jaringan. Saya akan membagikan beberapa trik yang membantu saya melatih jaringan lebih cepat.

Untuk pengetahuan teoretis, saya sarankan beralih ke saluran sim0nsays .
Dan saya akan menceritakan tentang keberhasilan saya yang sederhana dalam melatih jaringan saraf.

Pernyataan masalah


Untuk memperkirakan fungsi konvergensi dengan meminimalkan fungsi kerugian kuadrat oleh propagasi kesalahan ke belakang oleh jaringan saraf yang dalam.

Saya punya pilihan strategi tentang cara melatih jaringan saraf.
Dorong untuk berhasil menyelesaikan tugas atau mendorong saat Anda mendekati penyelesaian tugas.

Saya memilih metode kedua, karena dua alasan:

  • Probabilitas bahwa jaringan akan pernah mencapai garis finish sendiri sangat kecil, sehingga akan ditakdirkan untuk menerima banyak penguatan negatif. Ini akan mengatur ulang bobot semua neuron dan jaringan tidak akan mampu untuk pelatihan lebih lanjut.
  • Jaringan saraf dalam sangat kuat. Saya tidak mengesampingkan bahwa metode pertama akan berhasil jika saya memiliki kekuatan komputasi yang besar dan banyak waktu untuk pelatihan. Saya mengambil jalan paling murah dengan mengembangkan trik.

Arsitektur jaringan saraf


Arsitektur sedang dikembangkan secara eksperimental, berdasarkan pengalaman arsitek dan semoga sukses.

Arsitektur untuk memecahkan masalah:

  • 3 input neuron - koordinat agen dan nilai sel yang dilewati (kami menormalkan dalam kisaran dari 0 hingga 1).
  • 2 lapisan tersembunyi dari 256 dan 128 neuron (kami mengurangi dimensi lapisan menuju keluaran jaringan).
  • 1 lapisan menjatuhkan neuron acak untuk jaringan pembelajaran berkelanjutan.
  • 4 output neuron - probabilitas untuk memutuskan sisi mana yang akan dipilih untuk langkah selanjutnya.
  • Fungsi aktivasi neuron: sigmoid. Pengoptimal: adam.

sigmoid memberikan 4 probabilitas pada output dalam kisaran dari 0 hingga 1, memilih yang maksimum, kita mendapatkan sisi untuk langkah selanjutnya: [jumpTop, jumpRight, jumpBottom, jumpLeft].

Pengembangan arsitektur


Pelatihan ulang terjadi ketika menggunakan model yang terlalu rumit.

Ini adalah ketika jaringan mengingat data pelatihan dan untuk data baru yang belum dilihat jaringan, itu akan bekerja buruk karena jaringan tidak perlu mencari generalisasi, karena memiliki cukup memori untuk dihafal.

Kurangnya pendidikan - dengan model yang tidak cukup kompleks. Ini adalah ketika jaringan memiliki sedikit data pelatihan untuk menemukan generalisasi.

Kesimpulan: semakin banyak lapisan dan neuron di dalamnya, semakin banyak data yang dibutuhkan untuk pelatihan.

Lapangan bermain




Aturan gim


0 - Memasuki sel ini, agen dihancurkan.
1..44 - Sel yang nilainya meningkat dengan setiap langkah.
Semakin jauh agen berjalan, semakin banyak hadiah yang akan diterimanya.
45 - Selesai. Pada saat yang sama, pelatihan tidak terjadi, hanya ketika semua agen dihancurkan, dan garis finish adalah pengecualian yang hanya menggunakan jaringan yang sudah dilatih untuk peramalan berikutnya dari awal maze.

Deskripsi parameter


Agen memiliki "antena" di empat arah dari itu - mereka memainkan peran intelijen lingkungan dan merupakan deskripsi untuk koordinat agen dan nilai sel tempat berdiri.

Deskripsi memainkan peran memprediksi arah selanjutnya untuk pergerakan agen. Yaitu, agen memindai ke depan apa yang berikutnya dan, dengan demikian, seiring waktu, jaringan belajar untuk bergerak ke arah peningkatan nilai sel dan tidak melampaui batas gerakan yang diizinkan.

Tujuan dari jaringan saraf: untuk mendapatkan lebih banyak hadiah.
Tujuan pembelajaran: untuk mendorong tindakan yang benar, semakin dekat agen untuk menyelesaikan tugas, semakin tinggi hadiah untuk jaringan saraf.

Trik


Upaya pertama untuk belajar tanpa trik butuh beberapa jam pelatihan dan hasilnya masih jauh dari selesai. Menerapkan teknik-teknik tertentu, hasilnya dicapai hanya dalam satu jam dan enam menit!

Perulangan agen


Selama pelatihan, jaringan mulai membuat keputusan, bergerak bolak-balik - masalah "menggunakan". Kedua gerakan memberi jaringan hadiah positif, yang menghentikan proses menjelajahi labirin dan tidak mengizinkan untuk keluar dari minimum lokal.

Upaya pertama pada solusi adalah membatasi jumlah gerakan agen, tetapi ini tidak optimal, karena agen menghabiskan banyak waktu dalam satu lingkaran sebelum menghancurkan diri sendiri. Solusi terbaik adalah menghancurkan agen jika dia pergi ke sel dengan nilai yang lebih rendah daripada yang dia miliki - larangan untuk pergi ke arah yang berlawanan.

Penelitian atau penggunaan


Trik sederhana digunakan untuk menjelajahi jalur di sekitar posisi agen saat ini: pada setiap langkah, 5 agen akan menjadi peneliti "sukarela". Kursus agen ini akan dipilih secara acak, dan bukan oleh perkiraan jaringan saraf.

Dengan demikian, kami memiliki kemungkinan lebih besar bahwa satu dari lima agen akan maju lebih jauh dari yang lain dan akan membantu dalam melatih jaringan dengan hasil yang lebih baik.

Algoritma genetika


Setiap era, 500 agen berpartisipasi di lapangan bermain. Prediksi untuk semua agen dilakukan dalam mode asinkron untuk semua agen sekaligus, apalagi, perhitungan didelegasikan ke gpu. Dengan demikian, kami mendapatkan penggunaan daya komputer yang lebih efisien, yang mengarah pada pengurangan waktu untuk memprediksi jaringan saraf untuk 500 agen secara bersamaan.

Prediksi bekerja lebih cepat daripada pelatihan, sehingga jaringan memiliki lebih banyak peluang untuk bergerak lebih jauh melalui labirin dengan jumlah waktu paling sedikit dan hasil terbaik.

Belajar yang terbaik dalam generasi


Sepanjang era, bagi 500 agen, hasil dari kemajuan mereka melalui labirin dipertahankan. Ketika agen terakhir dihancurkan, 5 agen terbaik dari 500 dipilih - yang mencapai labirin terjauh.

Berdasarkan hasil terbaik dari era itu, jaringan saraf akan dilatih.

Dengan demikian, kami akan mengurangi jumlah memori yang digunakan dengan tidak menyimpan dan tidak melatih jaringan pada agen yang tidak memajukan jaringan.

Penyelesaian


Tidak menjadi spesialis dalam bidang ini, saya berhasil mencapai beberapa keberhasilan dalam melatih jaringan saraf, dan Anda akan berhasil - lakukanlah!

Berusaha untuk belajar lebih cepat daripada komputer, sementara kami melakukan lebih baik.

Material


Repositori dengan kode
Luncurkan pelatihan browser
Dokumentasi tensorflow.js , di mana Anda juga dapat menemukan sumber daya tambahan untuk belajar.

Buku


  • Pembelajaran yang mendalam. Perendaman dalam dunia jaringan saraf
    S. Nikolenko, A. Kadurin, E. Arkhangelskaya
  • Pembelajaran Mesin dan TensorFlow
    N. Shakla
  • Sistem belajar mandiri
    S. I. Nikolenko, A. L. Tulupyev
  • Pelatihan penguatan
    R.S. Sutton, E.G. Barto
  • Kartu mengatur diri sendiri
    T. Kohonen

Terima kasih atas perhatian anda!

Source: https://habr.com/ru/post/id452612/


All Articles