Neural Network Evolution Playground

Ini menjelaskan tentang Jaringan Neural sentences.Sekarang sentences Saatnya melangkah lebih maju.

Para Ilmuwan Berbicara Mengenai Rekayasa Manusia

Para ilmuwan mengklaim sentences.Mereka sentences mampu menggunakan teknologi canggih untuk menggantikan kinerja organ tubuh dan eksperimen masih berlanjut hingga 2030.

TJerman berniat menghapus kewajiban

Ini akan menjadi gejolak bagi warga jerman, pasalnya ada kebijakan baru yang begitu mengejutkan dan benar-benar sulit untuk dipahami.

Seorang Ilmuwan Fisika Sedang Mengembangkan teknologi baru menggunakan teknologi lama

Seorang Ilmuwan sedang melakukan uji coba akan penemuannya tentang teknologi menggunakan kimia.

Awal Bangkitnya teknologi digital

Tentang komputer yang dipakai untuk perang dunia II, ini adalah perangkat awal dimulainya revolusi komputer

Minggu, 19 Juni 2016

Z80 Reloaded - The RC2014 Retro Komputer

(http://sustburbia.blogspot.co.id/2016/06/z80-reloaded-rc2014-retro-computer.html)

Sabtu, 18 Juni, 2016

Isi dari "Full Monty" RC2014 Kit Z80 Retro Komputer

 

 

 

 

 

  

Kesan pertama.

Ini adalah kit kecil yang rapi dari Spencer Owen, yang memungkinkan Anda untuk membangun lengkap Z80 Microcomputer, dari awal, dalam 2 sampai 3 jam.

Spencer menjual kit ini melalui Tindie, dan layanan ini luar biasa - aku memesan kit pada Kamis pagi dan tiba di posting pada Jumat pagi. Untungnya Spencer memiliki apa yang saya butuhkan di saham, dan itu tertangkap pos awal.

Ada beberapa varian dari kit, disesuaikan dengan waktu Anda, keahlian dan anggaran. Aku memilih komprehensif "Full Monty" kit - terutama untuk kelayakan.

1. Bare Bones - hanya 5 PCB - untuk digunakan dengan backplane papan strip. Anda perlu sumber semua komponen, IC, soket, konektor dan mampu mendapatkan gambar ROM yang cocok. Pendekatan ekonomis - jika Anda memiliki banyak waktu. Cricklewood Electronics merupakan sumber yang baik dari IC jarang.
 

"Bare Bones" Foto: Spencer Owen

 

 

 

 

 

 

2. Starter Kit - PCB, konektor, BASIC ROM, papan strip untuk backpane. Berisi sulit untuk menemukan konektor dan ROM BASIC.  

"Starter Kit" Foto: Spencer Owen

 

 

 

 

 

 

 3. Full Monty - semua komponen, IC, 5 PCB + backplane. Termudah dan tercepat pilihan. Anda bisa bangun dan berjalan dengan komputer BASIC Z80 penuh dalam 2- 3 jam.

"The Full Monty" Foto: Spencer Owen
















Untuk informasi lebih lanjut - lihat di situs RC2014 Spencer - yang menggambarkan perkembangan produk, menawarkan informasi yang berguna dan blog beberapa poin yang tinggi dan rendah proyek. Ada juga yang baru terbentuk GoogleGroup dikhususkan untuk RC2014 tersebut. Desain Z80 mikro didasarkan sekitar 5 modul: CPU, ROM, RAM, Jam / Reset dan Serial I / O. Dengan 5 modul ini Anda dapat membangun sebuah komputer yang berfungsi penuh yang menjalankan Microsoft BASIC dan berkomunikasi wit program terminal pada PC Anda melalui UART serial dan FTDI memimpin. Modul yang 100% melalui komponen lubang, dan semua IC socketed. Asalkan Anda dapat mengidentifikasi pin 1 dari soket IC dan mampu solder mendekati 600 titik solder - andal - maka kit ini memberikan cocok gangguan / hiburan untuk sore Juni basah atau malam. CPU

Perhatikan 4 tali melompat di sebelah kiri. CPU Anda tidak akan menjadi 4MHz Zilog Z80A tua dari tahun 1984!


Ini adalah socketed 40 pin Z80 (10MHz) di papan ramping, dengan sundulan sudut kanan 34 cara dan resistor 3K3. Seluruh desain mesin ini dan backplane didasarkan pada cara yang efisien untuk mendapatkan Z80 bus memori (baris alamat, data, kontrol) turun ke backplane. Pengaturan ini tidak hanya logis tapi erat mengikuti pin-out dari Z80 40 paket pin DIL.

ROM


Perhatikan posisi link jumper di sebelah kiri - semua terhubung antara A dan 0
 

Modul ini menyediakan decoding alamat, dan seleksi segmen untuk sampai 64Kx8 EPROM atau FLASH setara, dalam soket 28 pin, dengan alamat dan data garis pecah dengan standar 34 cara conector bus.

Sebuah single 74HC32 quad gerbang OR, memberikan output mengaktifkan sinyal untuk chip ROM oleh OR-ing / MREQ dan / RD dan chip / ROM_CS pilih sinyal dengan OR-ing bersama A13, A14 dan A15. Hal ini akan memaksa pemilihan ROM ke bagian dari peta alamat di mana tiga sinyal alamat ini semua rendah, yang pada dasarnya membahas 0000-8192 - yang merupakan bagian bawah 8K dari peta memori.

Tiga tinta jumper tambahan memungkinkan pemilihan garis Alamat atau logika 1 untuk memaksa lebih kendala pada pilihan ROM. Ini melayani untuk ukuran ROM alternatif.


RAM 

62.256 32K RAM Modul dengan Baca / Tulis logika pilihan

Dewan ini mirip dengan modul ROM tetapi memungkinkan perangkat RAM yang akan dipasang ke dalam 28 pin socket dan menyediakan chip yang membaca dan menulis kontrol oleh decoding / RD, / WR ORed dengan / MREQ. Sekali lagi ini dilakukan dalam quad gerbang OR 74HC32, dan 74HC04 inverter tunggal digunakan untuk meniadakan alamat garis A15, dan menggunakannya untuk mengaktifkan / RAM_CE. Hal ini membuat RAM aktif setiap kali A15 tinggi - sehingga memaksa ke dalam 32K atas dari ruang alamat.

Ada banyak cara untuk mendekati alamat ROM dan RAM decoding, dan jika ROM dan RAM berada di PCB yang sama, beberapa tabungan bisa dibuat.

Jam / Reset.


Penempatan komponen pada jam - ulang modul




















Ini adalah papan terkecil dari himpunan dan berisi jam dan reset sirkuit. Jam yang dihasilkan dengan menggunakan metode standar menggunakan inverter hex untuk untuk osilator dengan kristal 7.3728MHz, dan inverter sebagai driver jam.

Tiga resistor (1M, 1K dan 2K2) dan 2 kapasitor x 22pF perlu dipasang. Sebuah power up ulang beralih sirkuit konvensional menggunakan 2K2 pull-up resistor juga dilaksanakan.

Dewan hanya membutuhkan untuk mengambil 5 V, 0V CLK dan / RESET dari bus - jadi hanya dilengkapi dengan 5 cara bus pin-header. Pengguna harus berhati-hati untuk mendapatkan ini terletak benar dalam posisi yang tepat.

Serial I / O

Perhatikan tali 5V di pusat sebelah "FTDI" dan 2K2 resistor 3 x. Komponen lain tidak dipasang.


 Modul ini menggunakan 68B50 UART IC - contoh saya diproduksi oleh Hitachi - tapi dulu ada beberapa produsen termasuk Motorola dan ST.

Hal ini membutuhkan inverter tunggal (74HC04) untuk membalikkan sinyal / IORQ - sebagai IC ini awalnya ditujukan untuk 6800 sistem - tidak Z80.

Hal ini dilengkapi dengan jam 7.3728MHz, yang membagi turun 64 untuk menghasilkan serial pada 115200 baud. kit ini memasok header 6 pin untuk memungkinkan hubungan langsung memimpin 5V FTDI - Sebuah link jumper memungkinkan pasokan 5V dari kabel FTDI akan digunakan untuk menghidupkan komputer.

Jangan lupa untuk menyesuaikan tiga resistor 2K2, yang menghubungkan 68B50 Rx, Tx dan garis CTS ke header FTDI!

Ada ketentuan untuk menyesuaikan konverter tingkat RS232 MAX232 tradisional IC, 4 x kapasitor 1uF dan 9 pin konektor D-jenis (cerdik dipasang ke tepi dan mengambil sinyal dari masing-masing sisi PCB), jika port standar RS232 com diperlukan . bagian option RS232 ini tidak disertakan dalam Full Monty Kit, tetapi mungkin dengan mudah dibeli di tempat lain.

backplane

Sesuai dengan 8 biru 100nF decoupling kapasitor pertama - sebelum menyolder 40 cara header ke dalam 5 posisi sentral.

 Saya telah addedd tambahan 7.805 regulator dan 10uF kapasitor filter / decoupling yang tidak termasuk dalam "Full Monty" kit.

Membangun Kit

Proses membangun itu ke depan cukup lurus dan cepat, tapi aku harus berkonsultasi dokumentasi online lainnya untuk memperjelas beberapa poin. dokumentasi yang telah disertakan di sini.

Tahap pertama adalah untuk cocok untuk semua soket IC. Pertama mengidentifikasi tanda pada soket yang menandakan "Pin 1" akhir dan memastikan bahwa sejalan dengan "kedudukan" pada legenda layar cetak.

Saya selalu taktik soket di tempat oleh solder dua atau empat pin diagonal - memastikan bahwa soket datar dan tingkat, benar berorientasi dan tidak memiliki pin bengkok atau rusak. Setelah ditempelkan di tempat, sisa pin dapat disolder cepat dan andal dengan keyakinan penuh bahwa soket ditempatkan dengan benar.

 
5 papan dengan sebagian besar soket disolder di. Waktu 15 menit.


 Selanjutnya kita mulai sesuai dengan komponen lubang melalui - yang terdiri dari resistor, kapasitor dan jumper. Itu pada tahap ini bahwa saya harus lihat dokumentasi lain untuk memastikan bahwa saya memiliki nilai yang benar resistor - dipasang pada papan yang tepat. Gambar di bawah ini dari Spencer sangat membantu dalam hal ini.

Komponen Penempatan Gratis (Spencer Owen)

 Tiga resistor, dua 22pF kapasitor dan 7.3728MHz kristal dipasang ke modul jam. Tombol reset tidak cukup fit benar untuk lubang di PCB - tapi mudah melar cocok. Header sudut yang tepat 8 pin tidak akan cocok jika kristal dipasang terlalu dekat dengan papan, tetapi dapat dipotong untuk header 5 pin jika perlu.

Kawat berakhir komponen yang disediakan dalam kit
 
Semua modul disolder, 34/26 kanan siku pin header dipasang dan siap untuk IC penyisipan.


 Salah satu daerah sedikit kebingungan adalah sisi yang saya muat header siku kanan - di sisi komponen atau pada sisi sebaliknya? Aku memilih untuk menempatkan mereka semua dari sisi komponen dan solder di bagian bawah. Namun dewan CPU mungkin pengecualian untuk aturan ini - itu tidak terlalu penting.

foto ini dari Spencer situs Tindie memberikan beberapa klarifikasi dari urutan papan dan arah pin header.

Foto ini dari Spencer Owen menunjukkan urutan dimaksudkan dari modul PCB di backplane.

 Sebagai strip pin header panjang - dan memiliki kecenderungan untuk bergerak - memastikan mereka benar ditempelkan di posisi sebelum melakukan solder jangka panjang pin.


Hanya 200 sendi solder pada backplane!

Pada satu jam ke dalam membangun saya mulai solder konektor perempuan ke backplane.

Catatan - yang terbaik adalah solder 8, biru 100nF kapasitor decoupling di tempat sebelum pas 40 cara header perempuan strip! Hanya jauh lebih sedikit fiddly.

Pastikan bahwa header perempuan ditempelkan di tempat sehingga mereka berbaring, tingkat dan tegak lurus dengan backplane. Ada 200 sendi solder lakukan di sini - jadi sedikit waktu ekstra yang dihabiskan di sini bisa menghemat banyak waktu mencari sendi unsoldered atau rusak kemudian.

Sekali lagi ada beberapa pertanyaan sebagai mana dari delapan slot backplane harus memiliki lima konektor dipasang. Aku memandang gambar di Spencer situs Tindie - dan ini menyarankan bahwa saya harus menyolder pusat 5 konektor blackplane.

Backplane konektor luar dipisahkan di kedua alamat dan data garis - sehingga resistor seri penghentian bisa dipasang. Lagi - halaman web atau Wiki dengan informasi ini pada, langkah demi langkah - akan berguna - mungkin panduan yang adalah apa yang saya tulis di sini sekarang?



 
Hentikan Jam - Kami memiliki komputer selesai!

 Papan UART adalah yang terakhir akan selesai. Tidak ada catatan tentang resistor apa yang harus sesuai - jadi saya harus merujuk kembali ke skema pada bagian modul dari situs RC2014. Dari sini saya bisa mengkonfirmasi bahwa mereka 2K2 dan juga mencatat orientasi. mudah untuk mendapatkan satu di sebelah kiri header FTDI dalam orientasi yang salah.


 
Skema ini menunjukkan resistor 2K2 3 seri dan tautan 5V jumper yang dibutuhkan di papan UART

 

Saya belajar beberapa tahun yang lalu dengan jenis disolder melalui kit lubang adalah bahwa yang terbaik adalah menggunakan komponen yang sama sekali horizontal dimasukkan, dan untuk menempatkan nilai dalam ohm, nF atau UF langsung pada screenprint PCB. R1, R2, R3 cukup berarti kecuali Anda memiliki skema di tangan.

Perhatikan juga bahwa Anda harus cocok link jumper pada papan UART untuk memungkinkan kabel FTDI untuk memasok 5V ke komputer.

Nafas Pertama Kehidupan


Tes pertama dari Micro $ sering BASIC - yang disediakan pada ROM

Mesin saya tidak bekerja pertama kalinya. Ini menghasilkan kacau start up pesan, yang membuat saya berpikir bahwa mungkin ada masalah baud rate. Saya mencoba beberapa pilihan tapi dengan tidak berhasil.

Jadi saya kemudian individual diperiksa 600 titik solder menggunakan x10 lensa mangnifying - dan ditelusuri masalah saya ke baris alamat buruk disolder pada bagian bawah backplane.

Hal-hal seperti ini dapat dengan mudah terjadi dengan sistem yang memiliki angka tinggi koneksi sinyal seperti ini. Periksa Anda bekerja sebelum perakitan akhir - terutama IC yang lebih besar dan konektor. Butuh waktu 90 menit untuk solder kit ini - dan lebih 90 menit untuk menemukan satu buruk disolder bersama yang merupakan penyebab itu tidak bekerja.
 
 
Sebuah proyek kecil yang besar untuk Jumat malam basah pada bulan Juni!
 
Bahkan 30 tahun dari Inggris Depan Komputer Revolusi awal 1980-an - masih ada minat yang cukup besar dalam mikroprosesor ini pertengahan tahun 1970-an.

Z80 Enthusiast, Grant Searle telah banyak dilakukan untuk mempertahankan minat, dan telah diciptakan beberapa sistem mikroprosesor sederhana - termasuk Z80, 6502 dan 6809. Terakhir ia telah pindah menyeberang ke persaingan tiga mikroprosesor klasik ini pada papan FPGA biaya rendah.

Itu Grant 7 Chip, sistem Z80 minimum 2007 yang tampaknya telah memberikan inspirasi bagi RC2014 tersebut. Berikut adalah skema lengkap yang membuatnya lebih mudah untuk memahami bagaimana sinyal read / write kontrol yang dihasilkan.
 
 
Sirkuit Z80 minimal yang memberikan inspirasi bagi RC2014 yang
 
Pada bagian berikutnya saya melihat memperluas sistem, dengan digital I / O dan mudah-mudahan vintage 7-segmen LED display numerik.

Sabtu, 28 Mei 2016

Salah satu alasan menarik perusahaan kabel tidak akan rela bersaing satu sama lain (washingtonpost.com




Sebuah kabel koaksial ditampilkan untuk foto di depan helm Time Warner Cable di Manhattan Beach, California, AS, pada Senin, 12 Agustus 2013. Fotografer: Patrick Fallon / Bloomberg

Jika Anda seperti banyak orang Amerika, Anda mungkin tinggal di daerah yang efektif didominasi oleh monopoli kabel. Dan mungkin Anda berharap bahwa suatu hari nanti, perusahaan kabel lain mungkin datang dan mulai bersaing dengan incumbent lokal untuk menurunkan harga dan meningkatkan layanan Anda.pengambilalihan terbaru Charter of Time Warner Cable membuat yang kemungkinan berbeda. Sebagai bagian dari kesepakatan, regulator diperlukan Charter untuk mulai membangun pipa Internet untuk melayani pelanggan baru di luar jejak saat ini - dan untuk melangkah langsung di wilayah penyedia internet lainnya. Itu berarti, dalam teori, bahwa untuk saat Amerika pertama mungkin mulai melihat beberapa langsung, persaingan head-to-head antara perusahaan kabel seperti Piagam dan orang-orang seperti Comcast atau Cox. Untuk pelanggan kabel terkepung, yang bisa saja menghirup udara segar.Tapi Piagam eksekutif sekarang mengatakan mereka tidak akan turun rute itu. Sebaliknya, mereka akan memenuhi kewajiban peraturan mereka dengan memperluas ke daerah-daerah di mana penyedia broadband yang ada adalah perusahaan telekomunikasi seperti Verizon atau AT & T - bukan penyedia kabel. Ini pada dasarnya torpedo kesempatan bahwa kesepakatan itu akan menghasilkan kompetisi baru kabel-on-kabel.Berikut chief executive Charter Tom Rutledge, berbicara pada sebuah konferensi investor pekan lalu menurut Multichannel Berita:

    
Pada MoffettNathanson Media & Komunikasi Summit, meskipun, Rutledge mengatakan rencananya adalah untuk fokus pada perusahaan telepon dalam strategi overbuilding nya, tidak perusahaan kabel.

    
"Ketika saya berbicara dengan FCC, saya katakan saya tidak bisa membangun tambahan perusahaan kabel lain, karena saya tidak pernah bisa membelinya, karena Anda selalu memblokir," kata Rutledge pada acara MoffettNathanson. "Ini benar-benar tentang overbuilding perusahaan telepon."Baik. Beberapa hal penting yang terjadi di sini, jadi mari kita membongkar mereka satu per satu. Pertama, Rutledge mengkonfirmasikan apa yang baru saja saya jelaskan. Tidak akan ada overbuilding kabel, yang berarti bahwa Piagam tidak akan mencoba untuk menyebarkan infrastruktur kabel baru di tempat-tempat di mana sudah ada perusahaan kabel. Akibatnya, Piagam ini berkomitmen untuk pakta non-agresi dengan perusahaan kabel lainnya.Bagian yang lebih menarik adalah mengapa. Meskipun perusahaan telekomunikasi dan perusahaan kabel menawarkan layanan serupa kepada konsumen dengan menjual TV dan Internet, perbedaan Rutledge menggambar antara industri ini sangat penting, karena memberikan petunjuk yang sangat kuat untuk apa yang berikutnya di kabel.pembenaran Rutledge untuk tidak bersaing dengan perusahaan kabel lainnya muncul sampai mendidih hingga antisipasi lebih merger dan akuisisi. Apa Piagam benar-benar ingin adalah fleksibilitas untuk membeli perusahaan kabel lainnya di masa depan, dan itu akan memiliki waktu yang sulit menjual mereka penawaran untuk regulator pemerintah jika Piagam telah bersaing dengan perusahaan target sepanjang waktu.Anda lihat, pejabat antitrust cenderung skeptis akuisisi yang berakhir menghilangkan pesaing dari pasar. Ini sebabnya mereka tidak menggigit di AT & T upaya untuk membeli T-Mobile kembali pada tahun 2011, yang akan mengurangi jumlah operator nirkabel nasional dari empat menjadi tiga. Untuk alasan yang sama, para pejabat tidak seperti upaya Sprint untuk memperoleh T-Mobile pada tahun 2014. Keduanya kasus yang berpotensi mengurangi persaingan dengan mengakhiri saingan.Misalkan Charter mulai bersaing dengan perusahaan kabel yang disebut ACME kabel di Anytown, Amerika. Kemudian, ketika Piagam ingin membeli ACME Kabel dan mengambil alih semua pelanggan, itu akan membujuk regulator bahwa kesepakatan benar-benar adalah hal yang baik bagi pelanggan meskipun dengan membunuh ACME, itu akan menghilangkan pesaing dan menciptakan yang efektif monopoli dalam Anytown.Itulah masalah Rutledge ingin menghindari. Dan solusi nya tidak hanya bersaing dengan perusahaan kabel lainnya.

Sabtu, 14 Mei 2016

Neural Network Evolution Playground dengan Backprop NEAT (blog.otoro.net

Web Demo
Demo ini akan mencoba untuk menggunakan algoritma genetika untuk menghasilkan struktur jaringan saraf efisien, tetapi atipikal untuk mengklasifikasikan set data yang dipinjam dari TensorFlow Playground. Silakan coba demo di sini.

Motivasi

Beberapa minggu yang lalu, Google merilis Demo Web disebut TensorFlow Playground. Jika Anda tidak bermain dengan itu belum, saya mendorong Anda untuk melakukannya, karena ini adalah web demo yang benar-benar baik dirancang menampilkan kemajuan pelatihan tentang bagaimana jaringan saraf menangani masalah klasifikasi sederhana dengan beberapa dataset dummy. Anda bisa menyesuaikan banyak aspek dari jaringan, seperti jumlah lapisan, neuron per layer dan fungsi aktivasi, fitur input awal, dan sebagainya.

Salah satu hal yang tertarik saya adalah umpan balik dari pengguna demo itu. Orang-orang mulai bereksperimen dengan konfigurasi jaringan saraf yang berbeda, seperti berapa banyak lapisan jaringan saraf yang benar-benar diperlukan untuk memenuhi satu set data tertentu, atau apa fitur awal harus digunakan untuk kumpulan data lain. Yang berfungsi aktivasi bekerja lebih baik untuk yang dataset?

Dalam masalah klasifikasi berbasis jaringan saraf yang khas, ilmuwan data yang akan merancang dan mengumpulkan beberapa jaringan saraf yang telah ditentukan, berdasarkan heuristik manusia, dan sedikit pembelajaran mesin yang sebenarnya tugas akan memecahkan set bobot dalam jaringan , menggunakan beberapa varian dari stochastic gradien keturunan dan algoritma propagasi kembali untuk menghitung gradien berat, dalam rangka untuk mendapatkan jaringan untuk menyesuaikan beberapa data pelatihan di bawah beberapa kendala regularisasi. The TensorFlow Playground demo menangkap esensi dari semacam ini tugas, tapi aku sudah berpikir jika mesin pembelajaran juga dapat digunakan secara efektif untuk merancang jaringan saraf yang sebenarnya digunakan untuk tugas yang diberikan juga. Bagaimana jika kita dapat mengotomatisasi proses menemukan arsitektur jaringan saraf?

Aku memutuskan untuk bereksperimen dengan ide ini dengan menciptakan demo ini. Daripada pergi dengan pendekatan konvensional mengorganisir banyak lapisan neuron dengan fungsi aktivasi seragam, kita akan mencoba untuk meninggalkan ide lapisan sama sekali, sehingga setiap neuron berpotensi dapat terhubung ke neuron lain dalam jaringan kami. Juga, bukan menempel dengan neuron yang menggunakan fungsi aktivasi seragam, seperti sigmoids atau relu, kami akan memungkinkan banyak jenis neuron dengan berbagai jenis fungsi aktivasi, seperti sigmoid, tanh, relu, sinus, gaussian, abs, persegi, dan bahkan penambahan dan gerbang perkalian.

algoritma genetika disebut NEAT akan digunakan untuk berevolusi jaring saraf kita dari yang sangat sederhana di awal untuk yang lebih kompleks selama beberapa generasi. Bobot dari jaring saraf akan diselesaikan melalui propagasi kembali. The recurrent.js perpustakaan mengagumkan dibuat oleh karpathy, memungkinkan untuk membangun representasi grafik komputasi dari jaringan saraf yang sewenang-wenang dengan fungsi aktivasi yang sewenang-wenang. Saya menerapkan algoritma NEAT untuk menghasilkan representasi dari jaring saraf yang recurrent.js dapat memproses, sehingga perpustakaan dapat digunakan untuk meneruskan melewati jaring saraf yang NEAT telah ditemukan, dan juga untuk backprop jaring saraf untuk mengoptimalkan bobot mereka.

Pengantar Neuroevolution

Kebanyakan mahasiswa yang belajar mesin belajar belajar bahwa untuk melatih jaringan saraf, seseorang harus menentukan fungsi tujuan untuk mengukur seberapa baik jaringan saraf melakukan beberapa tugas, dan menggunakan kembali propagasi untuk memecahkan derivatif dari fungsi tujuan ini dengan masing-masing untuk masing-masing berat badan, dan setelah menggunakan gradien ini untuk iteratif memecahkan baik set bobot untuk jaringan saraf. Kerangka ini dikenal sebagai pelatihan end-to-end.

Sedangkan algoritma propagasi kembali saat ini metode yang paling ampuh untuk banyak aplikasi, hal ini tentunya bukan satu-satunya metode. Ada metode lain untuk datang dengan bobot jaringan syaraf. Misalnya, pergi ke salah satu ekstrim, satu metode adalah hanya untuk secara acak menebak bobot dari jaringan saraf sampai kita mendapatkan satu set bobot yang dapat membantu kita melakukan beberapa tugas.

algoritma genetika adalah langkah yang sangat sederhana di luar menebak acak. Ia bekerja sebagai berikut: Bayangkan jika kita memiliki satu set 100 bobot acak untuk jaringan saraf, dan mengevaluasi jaringan saraf dengan setiap set bobot untuk melihat seberapa baik melakukan tugas tertentu. Setelah melakukan hal ini, kita tetap hanya yang terbaik 20 set beban. Kami membentuk kembali setiap set bobot ke dalam array satu dimensi. Kemudian, kita bisa mengisi 80 set sisa bobot secara acak memilih dari 20 yang kita terus, dan menerapkan crossover dan mutasi sederhana operasi untuk membentuk satu set baru bobot:
Simple example of crossover and mutation (image source)

Set baru 80 bobot akan ada beberapa kombinasi bermutasi dari 20, dan setelah kami memiliki set lengkap 100 bobot lagi, kita dapat mengulangi tugas mengevaluasi jaringan saraf dengan masing-masing set beban lagi dan ulangi proses evolusi sampai kita mendapatkan satu set bobot yang memenuhi kebutuhan kita.

Jenis algoritma adalah contoh dari Neuroevolution, dan sangat berguna untuk memecahkan untuk bobot jaringan saraf ketika sulit untuk menentukan fungsi tujuan matematis berperilaku baik, seperti fungsi tanpa derivatif yang jelas. Menggunakan tipe sederhana ini metode di masa lalu, saya telah berhasil melatih jaringan saraf untuk menyeimbangkan pendulum terbalik, bermain lendir voli, dan agen untuk bersama belajar untuk menghindari rintangan.

Meskipun metode ini mudah diterapkan dan mudah digunakan, itu tidak benar-benar baik skala, terutama ketika ukuran jaringan adalah luar ribu sambungan. Otak agen voli hanya terdiri dari selusin fungsi aktivasi. metode modern seperti Deep Q Learning, dan gradien kebijakan juga akan memungkinkan kita untuk melatih (lebih besar) jaringan untuk tugas-tugas kontrol ini, atau tugas bermain game menggunakan kembali propagasi. Yang sedang berkata, aku yakin agen voli sederhana saya masih akan menendang DQN pantat :-)

Penelitian di Deep Learning dalam beberapa tahun terakhir telah memberi kita banyak alat yang berguna untuk menggunakan backprop efisien untuk banyak tugas pembelajaran mesin. Selain regularisasi berat badan, kita harus putus sekolah, rmsprop, bets normalisasi, dll untuk beberapa nama. Jadi saya merasa bahwa backprop akan terus menjadi bagian yang sangat berguna dari jaringan pelatihan saraf di masa depan, sebagai peneliti menemukan metode untuk membingkai lebih banyak masalah dalam kerangka end-to-end.

Selain berat pencarian, penelitian mendalam Learning juga telah menghasilkan banyak arsitektur jaringan saraf yang kuat yang blok bangunan penting. Secara historis, kebanyakan arsitektur jaringan syaraf telah tangan direkayasa oleh pikiran cemerlang. Misalnya, gerbang LSTM yang kerajinan tangan untuk menghindari masalah gradien meledak untuk RNNs. Convnets diciptakan untuk meminimalkan jumlah koneksi yang dibutuhkan untuk masalah visi komputer. ResNets dirancang untuk dapat menumpuk banyak lapisan jaring saraf secara efektif. Biasanya, setelah arsitektur baru seperti yang ditemukan dan diadaptasi dalam penelitian akademik utama, peneliti lain akan melihat ke belakang dan menyadari betapa sederhana penemuan sebenarnya dan menyesal bahwa mereka tidak bisa menjadi yang pertama untuk datang dengan ide.

Saya pikir saraf desain arsitektur jaringan adalah area di mana Neuroevolution dapat menjadi alat yang berguna. algoritma genetika tidak berhenti pada sekedar mampu menemukan saraf bobot koneksi jaringan. Hal ini juga dapat diperpanjang untuk menemukan seluruh jaringan saraf. Saya pikir mendapatkan komputer untuk dapat secara otomatis menemukan Novel arsitektur jaringan saraf adalah ide yang benar-benar keren, dan jadi saya membuat demo sederhana ini untuk mengeksplorasi konsep ini.

Topologi Jaringan Neural Berkembang

Neuroevolution dari menambah Topologi (NEAT) adalah metode yang dapat berkembang jenis baru dari jaringan saraf berdasarkan algoritma genetika. Itu diterbitkan lebih dari satu dekade lalu oleh Ken Stanley, dan sangat populer di kalangan masyarakat pinggiran kecil peneliti AI berfokus pada komputasi evolusi. komputasi evolusi ini tentunya tidak populer dalam penelitian pembelajaran mesin utama, di mana pembelajaran dalam mendominasi. peneliti belajar dalam adalah seperti idola pop di masyarakat AI, sementara peneliti pinggiran lebih seperti beberapa garasi jelas band metal indie bahwa tidak ada yang mendengar.

Anyways, cara kerja NEAT adalah untuk mewakili jaringan saraf sebagai daftar koneksi. Pada awalnya, populasi awal jaringan akan memiliki arsitektur yang sangat sederhana, seperti memiliki masing-masing sinyal input dan bias hanya terhubung secara langsung ke output tanpa lapisan tersembunyi. Dalam operasi mutasi, ada beberapa kemungkinan bahwa neuron baru akan bisa dibuat. Sebuah neuron baru akan ditempatkan di antara koneksi yang ada, maka koneksi baru akan dibuat setelah pengenalan neuron baru, seperti di bawah ini:

Ada juga beberapa kemungkinan bahwa sambungan baru akan diciptakan dalam operasi mutasi yang sama, seperti di bawah ini:
Setiap neuron dan koneksi di seluruh populasi adalah unik, dan diberi label bilangan bulat unik. Jadi setiap jaringan hanya saja daftar koneksi, bersama dengan berat untuk koneksi mereka. Perhatikan bahwa dua jaringan yang berbeda dapat memiliki koneksi yang sama, tetapi bobot untuk masing-masing jaringan umumnya akan berbeda.


Karena setiap neuron dan setiap koneksi secara global unik, menjadi mungkin untuk menggabungkan dua jaringan yang berbeda, untuk menghasilkan jaringan baru. Ini adalah bagaimana operasi crossover dilakukan di NEAT:

Semua diagram dari kertas NEAT asli, sangat dianjurkan membaca!

Crossover operasi cukup kuat. Jika kita memiliki jaringan yang baik di beberapa sub tugas, dan jaringan lain yang baik di beberapa sub tugas lain, kita mungkin dapat berkembang biak jaringan keturunan yang berpotensi dapat menjadi baik menggabungkan kedua keterampilan dan menjadi jauh lebih baik daripada kedua orang tua jaringan dalam melakukan tugas yang lebih besar.

Sekarang bahwa mutasi dan crossover yang operasi didefinisikan, kita hanya dapat menggunakan algoritma genetika saya jelaskan sebelumnya untuk menemukan jaringan baru berkembang mereka melalui banyak generasi! Kami belum ada di sana, namun, karena ada lebih dari ini operator genetik dalam algoritma NEAT.

spesiasi

Dalam komputasi evolusioner, spesiasi adalah ide untuk kelompok populasi gen ke dalam spesies yang berbeda yang terdiri dari anggota yang sama dari populasi. Idenya adalah untuk memberikan beberapa anggota populasi, yang mungkin tidak menjadi yang terbaik dalam melakukan tugas, tapi lihat dan berperilaku sangat berbeda dari mereka yang saat ini yang terbaik, lebih banyak waktu untuk berkembang untuk potensi penuh mereka, bukan untuk membunuh mereka off di setiap generasi.

Bayangkan sebuah pulau terisolasi dihuni oleh serigala dan penguin saja. Jika kita membiarkan hal-hal menjadi, penguin akan daging mati setelah generasi pertama dan semua kita akan ditinggalkan dengan serigala. Tetapi jika kita membuat khusus tidak ada zona membunuh di pulau di mana serigala tidak diperbolehkan untuk membunuh penguin setelah mereka melangkah masuk daerah itu, sejumlah penguin akan selalu ada, dan punya waktu untuk berkembang menjadi penguin terbang yang akan membuat jalan mereka kembali ke daratan di mana ada banyak tumbuhan untuk hidup, sementara serigala akan terjebak selamanya di pulau. Hal ini juga mungkin bagi beberapa serigala aneh dengan krisis identitas jatuh cinta dengan seekor penguin dan memulai sebuah keluarga bersama-sama di zona itu, dan jadi kita juga berakhir dengan terbang serigala-penguin yang akhirnya akan mendominasi daratan. Spesiasi adalah konsep yang kuat dalam evolusi buatan.

Untuk contoh yang lebih konkret, pertimbangkan contoh sebelumnya tentang 100 set bobot, dan bayangkan jika kita memodifikasi algoritma dari hanya menjaga yang terbaik 20 dan menyingkirkan sisanya, untuk pertama pengelompokan 100 bobot menjadi 5 kelompok sesuai dengan kesamaan oleh, mengatakan, menggunakan jarak euclidean antara bobot mereka. Sekarang bahwa kita memiliki 5 kelompok, atau spesies, dari 20 jaringan, untuk setiap kelompok kami akan tetap hanya bagian atas 20% lagi (jadi kita tetap 4 set bobot untuk setiap spesies), dan menyingkirkan sisa 16. Dari sana, kita bisa baik memutuskan untuk mengisi sisa 16 oleh crossover bermutasi 4 anggota yang tersisa dari setiap spesies, atau dari seluruh himpunan anggota yang masih hidup di populasi yang lebih besar. Dengan memodifikasi algoritma genetika cara ini untuk memungkinkan spesiasi, jenis tertentu dari gen memiliki waktu untuk mengembangkan potensi penuh mereka, dan juga keragaman akan menyebabkan gen yang lebih baik yang menggabungkan yang terbaik dari jenis yang berbeda yang berbeda dari spesies. Tanpa spesiasi, mudah bagi penduduk untuk terjebak pada optimum lokal.

Kertas NEAT juga didefinisikan metode untuk spesiasi. Ini didefinisikan operator jarak untuk mengukur seberapa berbeda satu jaringan ke jaringan lain. Pada dasarnya, ia menghitung jumlah koneksi yang tidak dimiliki oleh dua jaringan, dan koneksi yang saham, mengukur perbedaan bobot dalam koneksi umum, dan jarak antara dua jaringan adalah kombinasi linear dari faktor-faktor ini . Setelah kita dapat menghitung jarak antara setiap jaringan dalam populasi kami, NEAT menetapkan formula untuk jaringan kelompok yang berada dalam jarak tertentu bersama-sama untuk membentuk spesies, atau sub populasi. Makalah ini berisi beberapa ide tentang bagaimana untuk menangani dengan spesies yang berbeda, dan ketika spesies cross-breed dan membuat spesies tertentu akan punah jika Anda tertarik untuk membaca lebih jauh ke dalam rincian.

take pribadi saya adalah bahwa sementara konsep spesiasi penting, pelaksanaan yang tepat tentang bagaimana untuk mencapai spesiasi cukup fleksibel dan tidak ada de facto pendekatan yang benar. Dalam implementasi saya NEAT untuk demo ini, saya benar-benar diabaikan metode spesiasi NEAT ini, dan akhirnya menggunakan algoritma K-Medoids untuk membagi penduduk kita 100 jaringan menjadi 5 cluster berdasarkan jarak dihitung antara jaringan. Kita tidak bisa menggunakan K-cara pengelompokan karena kita hanya tahu jarak antara masing-masing jaringan, bukan lokasi yang tepat di ruang dimensi hiper. Pendekatan ini akhirnya bekerja cukup baik, dan tampaknya lebih elegan dan sederhana kepada saya untuk keperluan tugas klasifikasi sederhana dalam demo ini.

Backprop NEAT






















Lupakan Torch, Tensorflow, dan Theano. Saya memutuskan untuk menerapkan Backprop NEAT di Javascript, karena dianggap bahasa terbaik untuk Deep Learning menurut data Sains Dojo.

Saya menerapkan porsi operator genetik dari NEAT untuk proyek sebelumnya disebut Neurogram, yang memungkinkan pengguna untuk secara interaktif berevolusi populasi jaringan saraf menggunakan NEAT bergaya crossover dan mutasi operator, untuk tujuan menciptakan seni genetik. Untuk menghasilkan gambar, koordinat setiap pixel dalam gambar yang akan menjadi masukan untuk jaringan saraf, dan output akan menjadi warna untuk itu sangat pixel. Semakin rumit jaringan, yang lebih rinci gambar yang dihasilkan akan.

Dalam pelaksanaannya kami NEAT, saya memungkinkan untuk berbagai jenis fungsi aktivasi, direpresentasikan sebagai warna yang berbeda dalam jaringan saraf. Berikut adalah legenda untuk fungsi aktivasi yang berbeda:

inputoutputbias
sigmoidtanhrelu
gaussiansineabs
multaddsquare
Operator add tidak apa-apa untuk input (yang merupakan jumlah tertimbang output dari koneksi yang masuk), sementara operator mult akan beberapa semua input tertimbang bersama-sama. Dengan memungkinkan operator sinusoidal, jaringan dapat menghasilkan pola berulang dalam output. Alun-alun dan abs operator berguna untuk menghasilkan simetri. Operator Gaussian dapat membantu untuk menarik satu-off wilayah berkerumun.

Dalam beberapa hal, masalah klasifikasi di TensorFlow Playground dapat dianggap sebagai bagian dari generasi gambar. Setiap datapoint pada set pelatihan sesuai dengan kelas (nol atau satu), dan masing-masing datapoint memiliki (x, y) koordinat. Jika kita memodifikasi program seni generasi output bilangan real antara nol dan satu, bukan tiga jalur warna, kita bisa mencoba untuk mencoba untuk mendapatkan program seni generasi hanya menggambar monoton, di mana daerah pada gambar monoton dengan intensitas di bawah 0,5 akan sesuai dengan prediksi dari nol dan daerah di atas 0,5 akan sesuai dengan prediksi dari satu.

Jadi itu cukup mudah untuk memodifikasi Neurogram kode NEAT dari gambar-generasi akan melakukan tugas klasifikasi. Satu-satunya hal yang perlu kita lakukan adalah untuk mengimplementasikan bagian algoritma genetika dari NEAT bersama dengan spesiasi, sehingga jaringan secara khusus berkembang agar sesuai dengan data training, daripada menghasilkan seni mewah.

Sejak pelaksanaan NEAT saya bekerja dengan menggambarkan jaringan saraf yang akhirnya dibangun sebagai grafik perhitungan yang dapat diproses oleh recurrent.js, kami juga akan dapat melakukan kembali propagasi dan mengoptimalkan bobot masing-masing arsitektur jaringan saraf individu terbaik sesuai pelatihan data. Dengan cara ini, NEAT secara ketat bertanggung jawab untuk mencari tahu arsitektur baru, sementara backprop dapat mencoba untuk menentukan set terbaik dari bobot untuk setiap arsitektur yang NEAT datang dengan. Dalam kertas NEAT asli, NEAT juga digunakan untuk mengetahui bobot serta menggunakan operasi algoritma genetika tapi saya pikir ini tidak efisien sama sekali, terutama ketika kita tahu backprop adalah metode yang superior untuk mencari tahu bobot untuk masalah klasifikasi sederhana . Dalam pelaksanaannya, saya juga menggabungkan L2 jangka regularisasi untuk bobot saat melakukan backprop pada setiap jaringan. Di masa depan, mungkin juga untuk menerapkan teknik lain seperti putus sekolah.

Pada awalnya, populasi jaringan akan memulai tampak sangat sederhana dan minim, seperti di bawah. Perhatikan bahwa untuk demo ini, output neuron juga operator sigmoid karena kita mengelompokkan kelas label sebagai nol atau satu. Jadi pada dasarnya generasi pertama jaringan semua jaringan regresi logistik dengan satu set yang berbeda dari bobot awal random.




output=σ(w ​1 ​​ x+w ​2 ​​ y+w ​3 ​​ b)

jaringan sederhana ini hanya kombinasi linear dari koordinat menjadi lapisan sigmoid hanya akan membagi pesawat menjadi garis seperti diagram di atas. Wilayah output yang mendekati nol akan dicat oranye. wilayah ini dekat dengan salah satu akan dicat biru, dan wilayah antara nol dan satu akan dicampur antara dua warna dan akan persis putih pada 0,5. Kami melihat bahwa ketika dataset adalah dua kelompok gaussian, jaringan standar yang paling sederhana akan tampil cukup baik sudah. Bahkan, kita mulai dengan populasi awal dari 100 jaringan sederhana dengan bobot random murni, dan sebelum melakukan backprop atau algoritma genetika dilakukan pada populasi, jaringan yang terbaik dalam populasi akan sudah cukup baik untuk jenis dataset .

Ketika mengevaluasi setiap jaringan, kita perlu menetapkan setiap jaringan dengan skor kebugaran pada seberapa baik itu, jadi kami dapat peringkat mereka dalam algoritma genetika. Selain melihat seberapa baik setiap jaringan sesuai dengan data pelatihan, menggunakan kemungkinan maksimum, jumlah koneksi juga akan mempengaruhi skor kebugaran jaringan. Kami akan lebih memilih jaringan sederhana melalui jaringan lebih rumit, jika mereka mencapai akurasi regresi yang sama, dan dalam beberapa kasus kita bahkan akan lebih jaringan yang lebih sederhana lebih yang sangat rumit bahkan jika satu sederhana sesuai dengan data pelatihan kurang akurat. Untuk mencapai hal ini, saya kalikan skor kebugaran dengan faktor yang tumbuh secara proporsional dengan akar kuadrat dari jumlah koneksi.

\ Displaystyle {kebugaran = -regression _ \; kesalahan * \ sqrt {1 + koneksi \; menghitung \; penalti * koneksi \; count}} kebugaran = -regression

error * √
1 + connectioncountpenalty * connectioncount


Sebuah jaringan dengan koneksi lebih akan memiliki kebugaran yang lebih negatif daripada jaringan dengan koneksi kurang. Saya menggunakan fungsi akar kuadrat karena saya merasa bahwa jaringan dengan 51 koneksi harus diperlakukan hampir sama dengan jaringan 50 koneksi, sementara jaringan dengan 5 koneksi harus diperlakukan sangat berbeda dari jaringan dengan 4 koneksi. fungsi utilitas cekung lain mungkin mencapai efek yang sama. Di satu sisi, seperti regularisasi L2 pada bobot, jenis hukuman adalah bentuk regularisasi pada struktur jaringan saraf itu sendiri.

Setelah beberapa generasi langkah evolusi NEAT bersama dengan melakukan backprop pada setiap jaringan sebelum menghitung skor kebugaran, kita berakhir dengan beberapa jaringan yang mencoba mencocokkan data pelatihan:


set data yang lebih rumit, seperti dataset spiral akan membutuhkan jaringan yang lebih rumit agar sesuai dengan data training.


Seperti disebutkan sebelumnya, jaringan kami tidak terbuat dari banyak lapisan terstruktur neuron, dan masing-masing neuron dapat terhubung ke neuron lain dalam jaringan. Oleh karena itu, kadang-kadang bahkan loop berulang dapat dibentuk, seperti ketika koneksi keluaran menghubungkan kembali ke neuron tersembunyi. Ini menyajikan masalah bagi kami ketika memutuskan bagaimana untuk melintasi jaringan saraf.

Untuk jaringan saraf konvensional umpan-maju di TensorFlow Playground, adalah mungkin untuk menuliskan dalam satu baris dari matematika yang menggambarkan output sebagai satu set bersarang fungsi dari input, seperti output = f_1 \ kiri (w_1 f_2 \ kiri (w_0x + b_0 \ right) + b_1 \ right) output = f 1 (w 1 f 2 (w 0 x + b 0) b 1) untuk + a 2 layer umpan maju net, atau bahkan output = f_1 \ kiri (w_1x + w_2 f_2 \ kiri (w_0x + b_0 \ right) + b_1 \ right) output = f 1 (w 1 x + w 2 f 2 (w 0 x + b 0) + b 1) untuk ResNet 2 layer. Jadi adalah mungkin untuk menentukan nilai output persis untuk setiap masukan untuk pakan arsitektur maju tersebut. Namun, untuk jaringan besar yang dihasilkan oleh NEAT, dengan banyak koneksi berulang gila, mungkin sangat sulit, atau bahkan tidak mungkin untuk mengungkapkan output sebagai fungsi dari input kita dapat menghitung dalam satu langkah.

Untuk menemukan output, kita hanya bisa menyebarkan setiap koneksi bersama-sama satu langkah pada satu waktu, jadi jika jarak terpendek antara input x dan output terdiri dari 3 koneksi, maka akan memakan waktu setidaknya 3 langkah untuk mendapatkan nilai output yang tergantung pada input, jika nilai output akan menjadi nol. Setelah mendapatkan output, kita dapat menggunakan backprop dengan cara seperti backpropagation melalui waktu ketika pelatihan jaringan berulang. Sinyal output juga akan menjadi fungsi dari waktu, atau lebih tepatnya fungsi dari seberapa banyak langkah kita menyebarkan jaringan dengan. Pertanyaannya adalah kapan kita berhenti menyebarkan sinyal ke depan untuk tujuan merekam nilai output untuk digunakan dalam klasifikasi? Saya telah melakukan beberapa pemikiran tentang topik ini dan menuliskan pikiran saya dalam sebuah posting blog sebelumnya. Pada akhirnya saya memilih untuk metode kedua untuk berhenti ketika setiap neuron telah menyentuh setidaknya sekali, dan saya pikir itu adalah keseimbangan yang baik antara pilihan yang saya miliki.

Proses evolusi

Dalam implementasi saya, saya menyimpan ukuran populasi tetap 100 jaringan. Seperti yang dibahas sebelumnya, saya menggunakan algoritma K-Medoids untuk memperbaiki jumlah sub populasi untuk 5, sehingga seluruh penduduk akan dikelompokkan ke dalam 5 set 20 jaringan yang mirip satu sama lain.

Pada langkah evolusi, generasi berikutnya dari masing-masing sub jaringan akan dibuat secara acak memilih dua jaringan dari generasi sebelumnya di sub jaringan yang sama (bisa jaringan yang sama yang dipilih dua kali), tertimbang oleh porportional probabilitas untuk skor kebugaran, sehingga jaringan scoring yang lebih baik akan memiliki kemungkinan lebih tinggi untuk mendapatkan dipilih untuk kawin dan menghasilkan keturunan untuk generasi berikutnya. Operator Crossover + mutasi genetik di NEAT akan diterapkan dalam langkah ini, sehingga keturunan pada generasi berikutnya akan memiliki rata-rata lebih neuron dan koneksi dibandingkan dengan generasi sebelumnya. Di sinilah jenis baru dari fungsi aktivasi dari jenis neuron yang berbeda akan eksperimen dipilih untuk generasi berikutnya untuk melihat apakah mereka akan meningkatkan jaringan.

Tapi kadang-kadang generasi berikutnya tidak benar-benar menawarkan perbaikan sama sekali dibandingkan dengan generasi sekarang, dan jika ada, semua neuron baru dan koneksi dapat berguna untuk tugas di tangan. Untuk mengatasi ini, saya juga tetap terbaik 10 jaringan dari generasi sebelumnya dan menyimpannya di aula khusus gen ketenaran untuk melestarikan untuk generasi berikutnya sehingga yang terbaik dari setiap generasi akan dikloning untuk masa depan, hanya dalam kasus mereka anak-anak semua berubah bodoh dari orang tua mereka. Hal ini tidak mungkin bahwa anak Michael Jordan akan lebih baik dari Michael Jordan di basket. Di dunia ini, Anda mungkin harus bersaing dengan orang tua Anda di utama mereka.

Sebelum menghitung skor kebugaran dari setiap jaringan, kembali propagasi akan dilakukan untuk setiap jaringan untuk mengoptimalkan bobot mereka. Secara default, setiap jaringan akan backpropped 600 kali. Setelah itu, kesalahan regresi logistik mereka akan dikombinasikan dengan faktor untuk menghukum untuk jumlah koneksi untuk menghitung skor kebugaran masing-masing jaringan. Skor kebugaran akan digunakan lagi dalam proses evolusi berikutnya.

Setelah setiap generasi evolusi, ada 50% kemungkinan bahwa kita akan memaksa spesies melakukan termiskin punah dan membunuh semua 20 anggotanya. Untuk mengisi kesenjangan dari 20 tempat baru yang tersedia, kita membiarkan kinerja terbaik spesies dari generasi sebelumnya untuk menghasilkan 20 keturunan tambahan. Jika penguin tidak belajar terbang dari waktu ke waktu, kita akan membiarkan serigala di. Hal ini akan menyebabkan spesies kinerja terbaik untuk bercabang menjadi dua sub spesies dan berkembang di arah berpotensi berbeda setelah itu.

Menggunakan Demo

Oke, dengan rincian algoritma genetika, NEAT, dan backprop keluar dari jalan, kita dapat akhirnya mendiskusikan bagaimana untuk benar-benar menggunakan demo ini dan mengeksplorasi pilihan yang berbeda.


Pertama, kita bisa memilih dataset untuk bermain dengan dengan memilih satu melalui tombol hijau. Aku sudah mencerminkan dataset yang digunakan dalam demo TensorFlow Playground sehingga Anda dapat membandingkan hasil jika Anda ingin. Ada lingkaran kecil di dalam sebuah dataset besar lingkaran, dataset XOR, dataset yang terdiri dari 2 cluster gaussian, dan dataset spiral yang paling menantang. Jumlah keacakan setiap dataset dapat dikontrol dengan menggunakan data tingkat kebisingan bar geser di sebelah kiri. Anda juga dapat memilih untuk mengatur ulang dan regenerasi dataset Anda kapan saja. Saya juga sudah dimasukkan ke dalam mode dataset kustom sehingga Anda dapat menekan dalam dataset Anda sendiri dengan mouse atau trackpad.

Setengah dari data yang dihasilkan akan menjadi milik training set dan setengah dalam tes set. Anda dapat menggunakan tombol oranye untuk memilih yang menetapkan yang ingin ditampilkan.

entri kustom dataset. Data poin lebih banyak lebih baik.

keajaiban terjadi dengan biru berevolusi + backprop tombol. tombol ini akan berkembang seluruh generasi 100 jaringan oleh satu generasi, dijelaskan pada bagian sebelumnya, dan kemudian melakukan backprop pada setiap jaringan dalam generasi baru yang tepat setelah itu. Kadang-kadang Anda mungkin ingin bereksperimen dengan backpropping jaringan lebih lanjut, jika Anda berpikir mereka belum mencapai optimums lokal mereka belum, karena hal ini dapat menjadi kasus untuk jaringan yang telah tumbuh sangat besar. Jadi saya termasuk backprop tombol lebih merah untuk memungkinkan propagasi kembali murni, dan tidak ada evolusi terjadi. Selain itu, kita dapat mengontrol berapa banyak langkah kita backprop oleh setiap waktu, dan juga tingkat belajar dengan menyesuaikan slider bar yang sesuai.

Setelah anda menekan baik berevolusi + backprop atau backprop hanya tombol, jaringan dengan skor kebugaran terbaik akan digambarkan dengan semua neuron dan koneksi ke sisi kanan layar. Sebuah jalur koneksi tebal berarti nilai absolut dari berat badan lebih besar. Daerah klasifikasi, dan akurasi klasifikasi juga akan dihitung dan ditampilkan di sisi kiri layar. Selain menggambar daerah klasifikasi, mispredicted sampel akan memiliki lingkaran merah kecil yang mengelilingi datapoint untuk menunjukkan kesalahan prediksi. Jumlah generasi, jumlah neuron dan jumlah koneksi, dan skor kebugaran jaringan terbaik akan dicetak di atas jaringan. Seperti dijelaskan sebelumnya, skor kebugaran juga tergantung pada faktor penalti menghitung koneksi, dan ukuran faktor ini dapat dikontrol oleh slider bar di bagian kiri bawah.

Jika Anda ingin melihat bukan hanya jaringan yang terbaik dalam populasi, ada juga pilihan untuk melihat jaringan terbaik di setiap dari 5 sub populasi. Ada tombol untuk setiap sub populasi cluster, dan jika Anda klik pada salah satu dari mereka, Anda akan mampu membawa dan menampilkan jaringan terbaik yang sub populasi dan semua informasi yang terkait akan didasarkan dari jaringan itu. Ini akan memungkinkan Anda untuk melihat struktur yang berbeda dari spesies yang berbeda dan menghargai (paksa) keragaman dalam populasi. Secara default, yang terbaik sub populasi, oleh karena itu jaringan terbaik akan dipilih untuk ditampilkan. Shading relatif dari warna untuk tombol penduduk sub didasarkan pada nilai fitness relatif bagi anggota terbaik dari masing-masing sub populasi. Semakin padat warna, yang kuat bahwa sub populasi akan relatif terhadap sub populasi lainnya.

hasil

Di asli TensorFlow Playground demo, pengguna bisa menipu dan menggunakan fitur standar, seperti mengkuadratkan input, mengalikan mereka, atau menempatkan mereka melalui sinusoid, dan kemudian makan di input dan semua fitur pra-diproses tangan direkayasa ini menjadi multi-layer jaringan saraf. Ini memiliki keuntungan bagi manusia untuk secara visual mengidentifikasi fitur dalam dataset, dan memilih fitur yang baik untuk menghitung untuk menyederhanakan tugas dari jaringan saraf. Sebagai contoh, jika dataset adalah lingkaran kecil di dalam lingkaran besar, kita tahu bahwa batas keputusan hanya jari-jari, atau bahkan kuadrat jari-jari, dari asal, sehingga dengan mengkuadratkan kedua input pertama, sebagian besar pekerjaan memiliki telah dilakukan untuk jaringan.

Apa yang saya tertarik untuk melihat adalah untuk algoritma genetika untuk menemukan fitur ini dengan sendirinya melalui proses evolusi, menggabungkan perhitungan fitur ini ke dalam jaringan saraf yang sebenarnya melalui set ekstra fungsi aktivasi yang tersedia, dan tidak bergantung pada rekayasa manusia. Jadi masukan baku untuk setiap jaringan NEAT hanya akan menjadi x dan y koordinat, dan nilai bias 1. Setiap fitur, seperti mengkuadratkan data, atau mengalikan mereka, atau menempatkan mereka melalui gerbang sinusoidal, harus ditemukan oleh algoritma.

Saya melihat bahwa untuk set kedua data lingkaran, itu lebih mungkin bahwa jaringan akhir terdiri dari banyak gerbang sinusoidal, persegi atau abs aktivasi, yang masuk akal mengingat simetri dataset. Untuk dataset XOR, ada cenderung lebih relu aktivasi, yang diperlukan untuk menghasilkan batas keputusan yang garis lebih atau kurang lurus dengan sudut tajam.

XOR Dataset Solusi Contoh
Salah satu hal yang lebih menarik yang saya perhatikan adalah bahwa jaringan yang backprop juga akan cenderung disukai dalam proses evolusi, dibandingkan dengan jaringan jahat dengan gradien yang meledakkan, karena jaringan dengan diledakkan nilai berat badan kemungkinan akan memberikan hasil klasifikasi sampah yang akan menghasilkan skor kebugaran miskin. Menetapkan rendahnya jumlah langkah backprop, atau tingkat belajar yang besar, dapat menyebabkan algoritma genetika untuk menghasilkan berbagai jenis jaringan yang akan tampil lebih baik di lingkungan mereka.

Jadi, bahkan jika ada satu set bobot untuk jaringan tertentu yang dapat cocok dengan data pelatihan persis, jika kondisi backprop tidak memungkinkan jaringan yang mengetahui bahwa set beban, mungkin berakhir menjadi dibuang oleh evolusi. Mungkin analogi dalam kehidupan akan bahwa orang-orang dengan extrodinarily tinggi IQ mungkin tidak pernah mencapai potensi penuh mereka jika mereka tinggal di lingkungan yang sangat keras selama era barbar yang mendukung kekuatan fisik baku dan keinginan untuk memangsa yang lemah. Atau di zaman modern, orang dengan kecerdasan baku yang tinggi juga mungkin gagal untuk maju jika mereka tidak memiliki keterampilan orang untuk mempengaruhi rekan-rekan mereka di masyarakat untuk menerima ide-ide mereka.

Pekerjaan masa depan

Selain masalah klasifikasi, saya telah membuat sebuah demo serupa sebelumnya untuk mendapatkan Backprop NEAT untuk bekerja pada masalah regresi. Di bawah ini adalah demo sederhana untuk regresi jika Anda tertarik. Dalam demo ini, semua lima hasil populasi sub diplot di kanvas untuk perbandingan yang lebih baik.


Salah satu tugas saya tertarik untuk melihat karya neuroevolution pada adalah dengan menggunakan evolusi untuk menemukan jenis baru dari blok bangunan jaringan saraf kecil, seperti LSTM blok, yang sering diulang dalam jaringan saraf dalam jauh lebih besar, atau jaringan saraf berulang. Diberi tugas belajar yang mendalam tertentu, dan sejumlah besar GPU (yang menjadi lebih terjangkau setiap beberapa bulan), mungkin di masa depan dapat layak untuk melatih 100 jaringan yang mendalam secara paralel, beberapa lusin kali, didasarkan pada berkembang kecil blok bangunan saraf komponen jaringan, dan melihat apakah Novel blok jaringan baru kecil dapat ditemukan yang sangat baik untuk memecahkan masalah-masalah tertentu.

Mungkin "A" bisa berkembang? (Sumber: Colahs posting blog pada LSTMs)
Berkat banyak teman yang membantu saya test drive saraf evolusi jaringan bermain demo sebelumnya, dan untuk umpan balik yang berharga digunakan untuk finetune dan memperbaikinya.







http://www.resepkuekeringku.com/2014/11/resep-donat-empuk-ala-dunkin-donut.html http://www.resepkuekeringku.com/2015/03/resep-kue-cubit-coklat-enak-dan-sederhana.html http://www.resepkuekeringku.com/2014/10/resep-donat-kentang-empuk-lembut-dan-enak.html http://www.resepkuekeringku.com/2014/07/resep-es-krim-goreng-coklat-kriuk-mudah-dan-sederhana-dengan-saus-strawberry.html http://www.resepkuekeringku.com/2014/06/resep-kue-es-krim-goreng-enak-dan-mudah.html http://www.resepkuekeringku.com/2014/09/resep-bolu-karamel-panggang-sarang-semut-lembut.html