Halo semuanya! Saya ingin berbagi dengan Anda ide saya tentang pembelajaran mesin.
Kemajuan besar dalam pembelajaran mesin sangat mengesankan. Jaringan konvolusional dan LSTM keren. Tetapi hampir semua teknologi modern didasarkan pada penyebaran kesalahan. Berdasarkan metode ini, tidak mungkin untuk dapat membangun mesin berpikir. Jaringan saraf terdiri dari sesuatu seperti otak yang beku, dilatih sekali dan untuk semua, tidak dapat
mengubah pemikiran.
Saya pikir, mengapa tidak mencoba membuat sesuatu seperti otak yang hidup. Semacam rekayasa ulang. Karena pada semua hewan, terlepas dari perbedaan kecerdasan, otak terdiri dari neuron yang kira-kira sama, beberapa prinsip dasar harus menjadi jantung dari kerjanya.
Apa yang saya tidak tahu tentang neuron
Ada beberapa pertanyaan yang belum saya temukan jawabannya dalam literatur populer;
- Jelas, entah bagaimana neuron merespons neurotransmitter, tetapi bagaimana tepatnya? Asumsi sederhana bahwa semakin besar neurotransmitter semakin sering adhesi, jelas tidak tahan terhadap kritik. Jika demikian, pemicuan satu neuron akan memicu pemicuan beberapa tetangga, yang tetangga, dan dalam waktu singkat longsor ini akan menangkap seluruh otak. Tetapi sebenarnya ini tidak terjadi, pada saat yang sama hanya sebagian kecil dari neuron yang bekerja di otak. Mengapa
- Neuron jelas merupakan unit memori, tetapi bagaimana mereka menyimpan informasi? Bagian sentral dari neuron tidak ada yang spesial: inti mitokondria dan sejenisnya. Axon tidak dapat mempengaruhi lonjakan, karena informasi hanya berjalan satu arah, dari inti. Jadi satu-satunya yang tersisa adalah dendrit. Tetapi bagaimana informasi disimpan di dalamnya? Dalam bentuk analog atau digital?
- Jelas, neuron entah bagaimana sedang belajar. Tapi bagaimana tepatnya? Misalkan dendrit tumbuh di tempat-tempat di mana ada banyak neurotransmitter tepat sebelum lonjakan. Tetapi jika demikian, neuron yang dipicu akan tumbuh sedikit dan pada saat neurotransmitter muncul, itu akan menjadi yang paling tebal di antara para tetangga, ia akan menyerap sebagian besar neurotransmitter dan akan bekerja lagi. Dan lagi sedikit tumbuh dewasa. Dan seterusnya hingga tak terbatas, sampai dia mencekik semua tetangganya? Apa ada yang salah di sini?
- Jika satu neuron tumbuh, maka yang tetangga akan berkurang, kepala bukan karet. Sesuatu harus menyebabkan neuron mengering. Apa?
Hanya pengelompokan
Bagi saya, jawaban yang masuk akal untuk semua pertanyaan ini adalah otak bekerja seperti banyak kelompok sederhana. Apakah mungkin untuk mengeksekusi algoritma semacam itu pada sekelompok neuron? Misalnya, metode K-means. Cukup hanya perlu menyederhanakannya sedikit. Dalam algoritma klasik, pusat dihitung secara iteratif sebagai rata-rata dari semua contoh yang dipertimbangkan, tetapi kami akan menggeser pusat segera setelah setiap contoh.
Mari kita lihat apa yang kita butuhkan untuk mengimplementasikan algoritma clustering.
- Pusat cluster, tentu saja, adalah dendrit neuron dalam kelompok kami. Tetapi bagaimana cara mengingat informasi tersebut? Misalkan sel satuan untuk menyimpan informasi dalam dendrit adalah volume cabang dendrit di wilayah sinaps. Semakin tebal cabang, volumenya lebih besar, semakin besar nilainya disimpan. Dengan demikian, setiap dendrit dapat menghafal beberapa jumlah analog.
- Pembanding untuk menghitung kedekatan contoh. Itu lebih rumit. Misalkan setelah data dikirimkan (akson mengeluarkan neurotransmitter), masing-masing neuron akan bekerja lebih cepat, semakin banyak data yang disimpan (pusat gugus) mirip dengan contoh yang diberikan (jumlah neurotransmiter). Harap dicatat bahwa tingkat respons neuron tidak dipengaruhi oleh jumlah absolut neurotransmitter, melainkan oleh kedekatan jumlah neurotransmitter dengan nilai yang disimpan dalam dendrit. Misalkan jika neurotransmitter kecil, maka dendrit tidak memberikan perintah untuk spike. Tidak ada yang terjadi dan jika ada banyak neurotransmitter, lonjakan cabang dendritik terjadi lebih awal daripada cabang dendritik lainnya dan tidak mencapai nukleus. Tetapi jika neurotransmitter tepat, maka semua cabang dendritik akan memberikan lonjakan mini pada waktu yang sama, dan gelombang ini akan berubah menjadi lonjakan neuron yang akan mengikuti akson.
- Komparator multi-input memungkinkan Anda untuk membandingkan hasil dan memilih yang terbaik. Misalkan neuron terdekat memiliki efek penghambatan pada semua tetangga mereka. Jadi, dalam kelompok neuron tertentu, hanya satu yang dapat aktif kapan saja. Yang pertama bekerja. Karena neuron dalam grup berada di dekatnya, mereka memiliki akses yang sama ke semua akson yang datang ke grup ini. Dengan demikian, neuron di mana informasi yang disimpan paling dekat dengan contoh yang dimaksud akan bekerja dalam kelompok.
- Mekanisme perpindahan pusat menuju contoh. Yah, semuanya sederhana. Setelah lonjakan neuron, semua dendrit neuron ini mengubah volumenya. Di mana konsentrasi neurotransmitter terlalu tinggi, cabang tumbuh. Di mana itu tidak cukup, ranting berkurang. Di mana konsentrasi tepat, volumenya tidak berubah. Volume ranting sedikit berbeda. Tapi segera. Lonjakan berikutnya adalah perubahan berikutnya.
Mari kita periksa algoritma yang dihasilkan dalam praktik. Saya membuat sketsa beberapa baris dengan Python. Inilah yang terjadi dengan dua dimensi angka acak:
Dan inilah MNIST:
Sekilas, tampaknya semua hal di atas tidak berubah. Yah, kami punya beberapa data di input, kami entah bagaimana mengubahnya, mendapat data lain.
Tapi memang ada perbedaan. Jika sebelum konversi kami memiliki banyak parameter analog, maka setelah konversi kami hanya memiliki satu parameter, pada saat yang sama dikodekan oleh kode kesatuan. Setiap neuron dalam kelompok dapat dikaitkan dengan tindakan tertentu.
Biarkan saya memberi contoh: Misalkan hanya ada dua neuron dalam kelompok pengelompokan. Sebut mereka "LEZAT" dan "MENAKUTKAN". Untuk memungkinkan otak mengambil keputusan, hanya perlu menghubungkan neuron "EAT" ke yang pertama, dan "RUN" ke yang kedua. Untuk ini kita membutuhkan seorang guru. Tetapi sekarang bukan tentang itu, mengajar dengan guru adalah topik untuk artikel lain.
Jika Anda menambah jumlah cluster, maka keakuratannya akan meningkat secara bertahap. Kasus ekstrem adalah jumlah cluster yang sama dengan jumlah contoh. Namun ada masalah, jumlah neuron di otak terbatas. Seseorang harus terus berkompromi, baik akurasi atau ukuran otak.
Pengelompokan meta
Misalkan kita tidak memiliki satu kelompok pengelompokan, tetapi dua. Dalam hal ini, nilai yang sama diterapkan pada input. Jelas, Anda mendapatkan hasil yang sama.
Mari kita membuat kesalahan kecil acak. Biarkan, kadang-kadang, setiap clusterizer memilih bukan pusat cluster terdekat, tetapi yang mana. Kemudian nilai akan mulai berbeda, seiring waktu perbedaan akan menumpuk.
Dan sekarang, mari kita hitung kesalahan masing-masing clusterer. Kesalahan adalah perbedaan antara contoh input dan pusat cluster yang dipilih. Jika satu clusterer memilih nilai terdekat dan acak lainnya, maka yang kedua akan memiliki kesalahan yang lebih besar.
Silakan menambahkan topeng ke input masing-masing clusterer. Mask adalah seperangkat koefisien untuk setiap input. Bukan nol atau satu, seperti yang biasa digunakan dalam topeng, tetapi beberapa bilangan real dari nol menjadi satu.
Sebelum memberikan contoh pada input clusterer, kami akan mengalikan contoh ini dengan mask. Misalnya, jika topeng digunakan untuk gambar, maka jika untuk beberapa piksel topeng sama dengan satu, maka itu seolah-olah benar-benar transparan. Dan jika topengnya nol, maka piksel ini selalu hitam. Dan jika topengnya 1/2, maka pikselnya setengah gelap.
Dan sekarang tindakan utama, kami akan mengurangi nilai topeng secara proporsional dengan kesalahan pengelompokan. Artinya, jika kesalahannya besar, maka kami akan menurunkan nilainya lebih kuat, dan jika itu nol, kami tidak akan mengurangi sama sekali.
Agar nilai-nilai topeng tidak secara bertahap diatur ulang ke nol, kami akan menormalkannya. Artinya, jumlah nilai mask untuk setiap parameter input selalu sama dengan satu. Jika sesuatu diambil dalam satu topeng, maka itu ditambahkan ke topeng lain.
Mari kita coba lihat apa yang terjadi dengan contoh MNIST. Kami melihat bahwa topeng secara bertahap membagi piksel menjadi dua bagian.
Topeng yang dihasilkan ditampilkan di sisi kanan gambar. Pada akhir proses, clusterizer atas mempertimbangkan kanan bawah, dan clusterizer bawah sisa contoh. Menariknya, jika kita memulai kembali prosesnya, kita akan mendapatkan pemisahan lain. Tetapi pada saat yang sama, kelompok-kelompok parameter diperoleh bukan secara acak, tetapi sedemikian rupa untuk mengurangi kesalahan prediksi. Cluster tampaknya mencoba setiap pixel pada mask mereka, dan pada saat yang sama, pixel tersebut mengambil clusterizer yang paling cocok untuk pixel tersebut.
Mari kita coba masukan dua digit, tidak saling tumpang tindih, tetapi terletak bersebelahan, seperti ini (ini adalah satu contoh, bukan dua):
Sekarang kita melihat bahwa setiap kali, pemisahan terjadi sama. Artinya, jika ada satu, jelas opsi terbaik untuk memisahkan topeng, maka akan dipilih.
Hanya satu hal yang akan acak, apakah topeng pertama akan memilih digit kiri atau kanan.
Saya menyebutnya topeng meta-cluster yang dihasilkan. Dan proses pembentukan topeng dengan meta-clustering. Mengapa meta? Karena pengelompokan bukan dari contoh input, tetapi dari input itu sendiri.
Contohnya lebih rumit. Mari kita coba bagi 25 parameter menjadi 5 meta cluster.
Untuk melakukan ini, kami mengambil lima kelompok lima parameter yang dikodekan oleh kode kesatuan.
Artinya, dalam setiap kelompok ada satu dan hanya satu unit di tempat acak. Selalu ada lima unit dalam setiap contoh yang disajikan.
Pada gambar di bawah ini, setiap kolom adalah parameter input, dan setiap baris adalah topeng meta-cluster. Cluster sendiri tidak ditampilkan.
100 parameter dan 10 cluster meta:
Itu berhasil! Di beberapa tempat, bahkan sedikit menyerupai gambar matriks dari film dengan nama yang sama.
Menggunakan meta-clustering dapat secara dramatis mengurangi jumlah cluster.
Misalnya, ambil sepuluh grup dengan sepuluh parameter, setiap grup memiliki satu unit.
Jika kita memiliki satu clusterizer (tidak ada meta-cluster), maka kita perlu 10
10 = 10.000000000 cluster untuk mendapatkan kesalahan nol.
Dan jika kita memiliki sepuluh cluster, maka kita hanya perlu 10 * 10 = 100 cluster. Ini mirip dengan sistem angka desimal, Anda tidak perlu membuat notasi untuk semua angka yang mungkin, Anda dapat melakukannya dengan sepuluh digit.
Meta clustering sangat baik diparalelkan. Perhitungan paling mahal (membandingkan contoh dengan pusat cluster) dapat dilakukan secara independen untuk setiap cluster. Harap dicatat, bukan untuk pengelompokan, tetapi untuk pengelompokan.
Bagaimana cara kerjanya di otak
Sebelum itu, saya hanya berbicara tentang dendrit, tetapi neuron memiliki akson. Dan mereka juga belajar. Jadi, sangat mungkin bahwa akson adalah topeng dari gugus meta.
Kami menambahkan satu fungsi lagi ke deskripsi operasi dendrite di atas.
Misalkan jika terjadi lonjakan neuron, semua dendrit entah bagaimana memancarkan ke sinaps beberapa jenis zat yang menunjukkan konsentrasi neurotransmitter dalam dendrit. Bukan dari akson ke dendrit, tetapi kembali. Konsentrasi zat ini tergantung pada kesalahan perbandingan. Misalkan semakin kecil kesalahannya, semakin besar jumlah zat yang dipancarkan. Nah, akson bereaksi terhadap jumlah zat ini dan tumbuh. Dan jika substansinya kecil, yang berarti kesalahan besar, maka akson secara bertahap berkurang.
Dan jika Anda mengubah akson dari sejak lahirnya otak, maka seiring waktu, mereka akan pergi hanya ke kelompok-kelompok neuron di mana perlekatan mereka untuk akson ini diperlukan (tidak mengarah pada kesalahan besar).
Contoh: mari kita ingat wajah manusia. Biarkan setiap wajah digambarkan dengan gambar megapiksel. Maka untuk setiap wajah Anda membutuhkan neuron dengan sejuta dendrit, yang tidak realistis. Sekarang, bagi semua piksel menjadi kelompok meta, seperti mata, hidung, telinga, dan sebagainya. Hanya sepuluh cluster meta seperti itu. Biarkan ada sepuluh cluster, sepuluh opsi hidung, sepuluh opsi telinga, dan seterusnya untuk setiap meta-cluster. Sekarang, untuk mengingat wajahnya, neuron dengan sepuluh dendrit sudah cukup. Ini mengurangi memori (dan volume otak) sebanyak lima kali lipat.
Kesimpulan
Dan sekarang, jika kita berasumsi bahwa otak terdiri dari meta-cluster, kita dapat mencoba untuk mempertimbangkan dari sudut pandang ini beberapa konsep yang melekat dalam otak yang hidup:
Cluster perlu terus dilatih, jika tidak data baru tidak akan diproses dengan benar. Untuk melatih kelompok di otak, sampel yang seimbang diperlukan. Izinkan saya menjelaskan jika musim dingin sekarang, maka otak akan belajar hanya dari contoh-contoh musim dingin, dan kelompok yang dihasilkan secara bertahap akan menjadi relevan hanya untuk musim dingin, dan di musim panas semuanya akan buruk bagi otak ini. Apa yang harus dilakukan? Hal ini diperlukan untuk secara berkala tunduk kepada semua cluster tidak hanya baru, tetapi juga contoh-contoh penting lama (kenangan musim dingin dan musim panas). Dan agar perasaan ini tidak mengganggu perasaan saat ini, Anda perlu mematikan indera untuk sementara waktu. Pada hewan, ini disebut
mimpi .
Bayangkan, otak melihat sesuatu yang kecil, ABU-ABU, yang berjalan. Setelah meta-clustering, kami memiliki tiga neuron aktif dalam tiga meta-cluster. Dan berkat ingatan itu, otak tahu bahwa itu enak. Kemudian, otak melihat sesuatu yang kecil, BIRU yang berjalan. Tetapi otak tidak tahu apakah itu enak atau menakutkan. Cukup untuk menonaktifkan sementara meta cluster di mana warna berada, dan hanya yang kecil yang berjalan akan tetap ada. Dan otak tahu itu enak. Ini disebut
analogi .
Misalkan otak mengingat sesuatu, dan kemudian mengubah gugus neuron aktif dalam beberapa kelompok menjadi yang lain, sedangkan dalam meta-cluster yang tersisa ada memori nyata. Dan sekarang, otak telah memperkenalkan sesuatu yang belum pernah dilihat sebelumnya. Dan ini sudah merupakan
imajinasi .
Terima kasih atas perhatian Anda, kodenya ada di
sini .