Bagaimana cara mengklasifikasikan data yang berbentuk spiral?


9

Saya telah bermain-main di taman bermain tensorflow . Salah satu set data input adalah spiral. Tidak peduli apa pun parameter input yang saya pilih, tidak peduli seberapa lebar dan dalam jaringan saraf yang saya buat, saya tidak bisa cocok dengan spiral. Bagaimana data ilmuwan cocok dengan data dari bentuk ini?


Jawaban:


11

Ada banyak pendekatan untuk masalah seperti ini. Yang paling jelas adalah membuat fitur baru . Fitur terbaik yang dapat saya buat adalah mengubah koordinat menjadi koordinat bola .

Saya belum menemukan cara untuk melakukannya di taman bermain, jadi saya baru saja membuat beberapa fitur yang harus membantu dengan ini (fitur dosa). Setelah 500 iterasi akan jenuh dan berfluktuasi pada skor 0,1. Ini menunjukkan bahwa tidak ada perbaikan lebih lanjut yang akan dilakukan dan kemungkinan besar saya harus membuat layer tersembunyi lebih luas atau menambahkan layer lain.

Tidak mengherankan bahwa setelah menambahkan hanya satu neuron ke lapisan tersembunyi Anda dengan mudah mendapatkan 0,013 setelah 300 iterasi. Hal serupa terjadi dengan menambahkan layer baru (0,017, tetapi setelah iterasi 500 secara signifikan lebih lama. Juga tidak mengejutkan karena lebih sulit untuk menyebarkan kesalahan). Kemungkinan besar Anda bisa bermain dengan kecepatan belajar atau melakukan pembelajaran adaptif untuk membuatnya lebih cepat, tetapi ini bukan intinya di sini.

masukkan deskripsi gambar di sini


Koordinat bola! Mengingatkan saya pada kalkulus sarjana.
Souradeep Nanda

4
@SouradeepNanda Anda akan menemukan banyak hal matematika yang menurut orang tidak berguna di sekolah sangat penting di ML
Salvador Dali

Hanya untuk mereka yang penasaran seperti saya, saya mencoba mereplikasi hasil , tetapi segala sesuatunya tidak berjalan dengan lancar
codevision

4

Jaringan neural idealnya harus dapat mengetahui fungsi itu sendiri tanpa kami menyediakan fitur bola. Setelah beberapa percobaan, saya dapat mencapai konfigurasi di mana kami tidak memerlukan apa pun kecuali dan . Jaring ini bertemu setelah sekitar 1500 zaman yang cukup panjang. Jadi cara terbaik mungkin masih menambahkan fitur tambahan tapi saya hanya mencoba mengatakan bahwa masih mungkin untuk bertemu tanpa mereka.X1X2

Solusi tanpa fitur tambahan


3

Dengan menipu ... thetaadalah , adalah .arctan(y,x)r(x2+y2)

Secara teori, dan harus bekerja, tetapi, dalam praktiknya, mereka entah bagaimana gagal, meskipun, kadang-kadang, itu berhasil.x2y2

masukkan deskripsi gambar di sini


Bisakah Anda menguraikan bagaimana Anda "menipu"? Bagaimana Anda menambahkan fitur ini? Apakah Anda mengunduh taman bermain dari GitHub dan memodifikasinya? Atau ada cara yang lebih langsung untuk melakukan ini?
Jim

Saya bertanya-tanya bagaimana cara menerapkan hack ini juga. Sudah mencoba melakukannya di dalam browser tetapi tidak beruntung dengan itu. Kemudian saya memutuskan untuk memotong kode sumber dan menambahkan fitur input baru. Anda bisa melihatnya di sini
Cankut

0

solusi spiral bermain vanilla tensorflow

Ini adalah contoh taman bermain vanilla Tensorflow tanpa fitur tambahan dan tanpa modifikasi. Lari untuk Spiral adalah antara 187 hingga ~ 300 Zaman, tergantung. Saya menggunakan Lasso Regularization L1 sehingga saya bisa menghilangkan koefisien. Saya mengurangi ukuran bets sebanyak 1 untuk menjaga output dari pas. Dalam contoh kedua saya, saya menambahkan beberapa noise ke set data kemudian menaikkan L1 untuk mengimbangi.

masukkan deskripsi gambar di sini


0

The solusi aku mencapai setelah satu jam dari percobaan biasanya menyatu hanya 100 zaman .

Ya, saya tahu itu tidak memiliki batas keputusan yang paling halus di luar sana, tetapi ia bertemu dengan sangat cepat.

! [0,6% kesalahan tes

Saya belajar beberapa hal dari percobaan spiral ini: -

  • Lapisan keluaran harus lebih besar dari atau sama dengan lapisan input . Setidaknya itulah yang saya perhatikan dalam kasus masalah spiral ini.
  • Pertahankan tingkat pembelajaran awal yang tinggi , seperti 0,1 dalam kasus ini, kemudian saat Anda mendekati kesalahan tes rendah seperti 3-5% atau kurang, kurangi tingkat pembelajaran dengan satu takik (0,03) atau dua. Ini membantu dalam melakukan konvergensi lebih cepat dan menghindari lompatan minimum global.
  • Anda dapat melihat efek dari menjaga tingkat pembelajaran tetap tinggi dengan memeriksa grafik kesalahan di kanan atas.
  • Untuk ukuran batch yang lebih kecil seperti 1, 0,1 adalah tingkat pembelajaran yang terlalu tinggi karena model gagal untuk bertemu karena melompati minima global.
  • Jadi, jika Anda ingin mempertahankan tingkat pembelajaran yang tinggi (0,1), pertahankan ukuran batch yang tinggi (10) juga. Ini biasanya memberikan konvergensi yang lambat namun lebih halus.

Kebetulan solusi yang saya buat sangat mirip dengan yang diberikan oleh Salvador Dali .

Mohon tambahkan komentar, jika Anda menemukan intuisi atau alasan lagi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.