Pagi ini, dalam perjalanan ke kampus Berkeley, saya menyapukan jari di sepanjang daun semak yang harum, dan kemudian menghirup aroma yang sudah dikenal. Saya melakukan ini setiap hari, dan setiap hari kata pertama yang muncul di kepala saya dan melambaikan tangannya sebagai salam. Tetapi saya tahu bahwa tanaman ini bukan bijak, tetapi rosemary, jadi saya memesan
bijak untuk menenangkan diri. Tapi sudah terlambat. Setelah
rosemary dan
sage, saya tidak bisa menghentikan penampilan
peterseli dan
thyme di atas panggung, setelah itu not pertama dari melodi dan wajah muncul di sampul album, dan sekarang saya kembali pada pertengahan 1960-an, mengenakan kemeja dengan mentimun. Sementara itu,
rosemary membawa celah 13 menit dalam memori Rose Mary Woods (meskipun
sekarang , setelah berkonsultasi dengan memori kolektif, saya tahu bahwa itu seharusnya Rose Mary Woods dan
ruang 18 setengah menit ). Dari Watergate, saya melompat ke cerita di halaman utama. Lalu saya perhatikan di kebun yang terawat baik tanaman lain dengan daun hijau kelabu mengembang. Ini juga bukan bijak, tetapi lebih bersih (telinga domba). Namun, orang
bijak akhirnya mendapatkan momen kemenangannya. Dari rumput, saya beralih ke perangkat lunak matematika
Sage , dan kemudian ke sistem pertahanan udara tahun 1950 yang disebut
SAGE , Lingkungan Tanah Semi-Otomatis, yang dikelola oleh komputer terbesar yang pernah dibuat.
Dalam psikologi dan sastra, pengembaraan mental seperti itu disebut
aliran kesadaran (penulis metafora ini adalah William James). Tetapi saya akan memilih metafora yang berbeda. Kesadaran saya, sejauh yang saya rasakan, tidak mengalir dengan lancar dari satu topik ke topik lain, melainkan mengalir melintasi lanskap pikiran, lebih seperti kupu-kupu daripada sungai, kadang-kadang dipaku pada satu bunga dan kemudian ke bunga lain, terkadang terbawa oleh hembusan, terkadang mengunjungi tempat yang sama lagi dan lagi.
Untuk menjelajahi arsitektur ingatan saya sendiri, saya mencoba melakukan eksperimen yang lebih santai dengan asosiasi bebas. Saya mulai dengan resep bunga yang sama - peterseli, sage, rosemary dan thyme - tetapi untuk latihan ini saya tidak berjalan-jalan di taman perbukitan Berkeley; Aku duduk di meja dan mencatat. Diagram di bawah ini adalah upaya terbaik untuk merekonstruksi sepenuhnya pemikiran saya.
peterseli, sage, rosemary, thyme - herbal empat, serta garis dari lagu Simon dan Garfunkel.
Simon dan Garfunkel - Paul Simon dan Seni Garfunkel, duet penyanyi dalam genre rock folk tahun 1960-an dan 70-an.
Bu Robinson adalah lagu oleh Simon dan Garfunkel, serta karakter dari film Mike Nichols "The Graduate".
"Kemana kamu pergi, Joe DiMaggio?" - pertanyaan yang diajukan dalam "Ny. Robinson. "
Simon dan Schuster adalah rumah penerbitan yang didirikan pada tahun 1924 oleh Richard Simon dan Max Schuster (awalnya untuk penerbitan teka-teki silang).
Jackie Robinson adalah pemain legendaris Brooklyn Dodgers.
Robinson Crusoe - novel Daniel Defoe tentang kapal karam (1719).
Keluarga Swiss Robinsons - novel Johan David Weiss tentang kapal karam (1812).
herbal - tanaman aromatik
Tuan Wizard adalah pertunjukan sains Sabtu 1950-an untuk anak-anak yang dipandu oleh Don Herbert.
Alpert - trumpeter Lambang Alpert.
Plastik adalah saran karir yang disarankan oleh The Graduate.
coo-coo-ca-choo - baris dari “Mrs. Robinson. "
Frank Robinson adalah pemain luar di Baltimore Orioles pada 1970-an.
Greig Nettles adalah pemain baseball ketiga New York Yankees di tahun 1970-an.
Dustin Hoffman adalah aktor yang bermain di The Graduate.
Abby Hoffman - "Yipee!"
Leominster adalah kota di Massachusetts yang telah menjadi tempat lahirnya pabrik plastik di Amerika Serikat.
Brooks Robinson adalah pemain baseball ketiga Baltimore Orioles di tahun 1970-an.
Papillon ("The Moth") - sebuah film tahun 1973 di mana Dustin Hoffman memainkan peran sekunder; "Papillon" dalam bahasa Prancis, "kupu-kupu."
Nabokov - Vladimir Nabokov, seorang penulis kelahiran Rusia dan seorang ahli serangga yang mempelajari kupu-kupu.
kupu-kupu, Schmetterling, mariposa, farfalla - “kupu-kupu” dalam bahasa Inggris, Jerman, Spanyol, dan Italia; tampaknya semua dari mereka (dan kata Prancis juga) berasal dari independen.
Apa yang disebut kupu-kupu dalam bahasa Rusia - saya tidak tahu. Atau tidak tahu kapan pertanyaan ini muncul.
"I am the Walrus" adalah lagu Beatles 1967 yang juga memiliki frasa "coo-coo-ca-choo".
Carly Simon adalah seorang penyanyi. Tidak ada hubungan dengan Paul Simon, tetapi adalah putri dari Richard Simon.
"Kau begitu sia-sia" adalah lagu oleh Carly Simon.
Grafik top-down mewakili topik dalam urutan yang muncul di otak, tetapi koneksi antara node tidak membuat urutan linier tunggal. Strukturnya menyerupai pohon dengan rantai pendek dari asosiasi yang berurutan, berakhir dengan kembalinya tajam ke simpul sebelumnya, seolah-olah saya ditarik kembali oleh karet gelang yang diregangkan. Gangguan seperti itu ditandai pada grafik dengan panah hijau; X merah di bawah adalah tempat di mana saya memutuskan untuk menyelesaikan percobaan.
Saya minta maaf kepada mereka yang lahir setelah tahun 1990, banyak topik yang disebutkan mungkin sudah ketinggalan zaman atau misterius bagi Anda. Penjelasan disajikan di bawah grafik, tetapi saya tidak berpikir mereka akan membuat asosiasi lebih jelas. Pada akhirnya, kenangan itu bersifat pribadi, mereka hidup di dalam kepala. Jika Anda ingin mengumpulkan koleksi ide yang relevan dengan pengalaman Anda sendiri, Anda hanya perlu membuat jadwal asosiasi gratis sendiri. Saya sangat merekomendasikan melakukan ini: Anda mungkin menemukan bahwa Anda tidak tahu bahwa Anda tahu sesuatu.
Tujuan dari perjalanan saya sehari-hari menuruni bukit di Berkeley adalah Simons Institute dan Kursus Teori Komputasi, di mana saya berpartisipasi dalam program selama satu semester tentang otak dan perhitungan. Lingkungan seperti itu memunculkan pikiran pikiran. Saya mulai merenung: bagaimana kita bisa membangun model komputasi dari proses asosiasi bebas? Di antara berbagai tugas yang diusulkan untuk diselesaikan oleh kecerdasan buatan, yang ini terlihat cukup sederhana. Tidak perlu untuk rasionalisasi yang mendalam; semua yang perlu kita simulasikan hanyalah melamun dan berkeliaran di awan - inilah yang dilakukan otak saat tidak dimuat. Sepertinya tugas seperti itu mudah diselesaikan, bukan?
Gagasan pertama yang muncul di kepala saya (setidaknya di kepala
saya ) mengenai arsitektur model komputasi seperti itu adalah gerakan acak di sepanjang grafik atau jaringan matematika. Node jaringan adalah elemen yang disimpan dalam memori - ide, fakta, peristiwa - dan komunikasi adalah berbagai jenis asosiasi di antara mereka. Misalnya, simpul
kupu -
kupu dapat dihubungkan dengan
ngengat, ulat bulu, raja dan
ibu dari mutiara, serta dengan transisi yang disebutkan dalam jadwal saya, dan mungkin memiliki koneksi yang kurang jelas, misalnya
, penjelajahan Australia "," Udang "," Mohammed Ali "," pellagra "," tersedak " dan
" ketakutan panggung " . Struktur data host akan berisi daftar pointer ke semua host terkait ini. Pointer dapat diberi nomor dari 1 hingga n; program akan menghasilkan nomor pseudo-acak dalam interval ini dan pergi ke node yang sesuai, di mana seluruh prosedur akan mulai lagi.
Algoritma ini mencerminkan beberapa karakteristik dasar dari asosiasi bebas, tetapi banyak dari mereka tidak diperhitungkan. Model ini mengasumsikan bahwa semua node target sama-sama memungkinkan, yang terlihat tidak masuk akal. Untuk memperhitungkan perbedaan dalam probabilitas, kita dapat menanyakan setiap sisi
saya berat badan
w i , dan kemudian membuat probabilitas sebanding dengan bobot.
Yang lebih rumit lagi adalah kenyataan bahwa bobot bergantung pada konteks - pada sejarah baru-baru ini dari aktivitas mental manusia. Jika saya tidak memiliki kombinasi Ny. Robinson dan Jackie Robinson, akankah saya memikirkan Joe Di Maggio? Dan sekarang, ketika saya menulis ini, Joltin 'Joe (nama panggilan Di Maggio) mengingatkan Marilyn Monroe dan kemudian Arthur Miller, dan sekali lagi saya tidak bisa menghentikan aliran pemikiran. Untuk mereproduksi efek ini dalam model komputer, beberapa mekanisme regulasi dinamis probabilitas seluruh kategori node tergantung pada node lain yang telah dikunjungi baru-baru ini akan diperlukan.
Anda juga harus mempertimbangkan efek kebaruan dari jenis yang berbeda. Sebuah gelang karet harus ditemukan dalam model, terus-menerus menarik saya kembali ke Simon dan Garfunkel dan Mrs. Robinson Mungkin, setiap situs yang baru-baru ini dikunjungi harus ditambahkan ke daftar opsi target, bahkan jika tidak terhubung dengan cara apa pun dengan situs saat ini. Di sisi lain, kecanduan juga kemungkinan: pikiran yang terlalu sering diingat menjadi membosankan, oleh karena itu mereka harus ditekan dalam model.
Tes terakhir lainnya: beberapa ingatan bukanlah fakta atau ide yang terisolasi, tetapi bagian dari cerita. Mereka memiliki struktur naratif dengan peristiwa yang berlangsung dalam urutan kronologis. Untuk node dari ingatan episodik seperti itu, tepi
berikutnya , dan mungkin
sebelumnya , diperlukan. Rantai tulang rusuk seperti itu menyatukan seluruh hidup kita, termasuk semua yang Anda ingat.
Bisakah model komputasi yang sama mereproduksi pengembaraan mental saya? Mengumpulkan data untuk model seperti itu akan menjadi proses yang agak panjang, dan ini tidak mengejutkan, karena butuh waktu seumur hidup untuk mengisi tengkorak saya dengan jalinan tanaman obat, Coats of Arms, Simons, Robinsons, dan Hoffmanns. Jauh lebih banyak daripada jumlah data, saya peduli dengan keseriusan algoritma grafik traversal. Sangat mudah untuk mengatakan: "pilih simpul sesuai dengan probabilitas tertimbang," tetapi ketika saya melihat rincian kotor dari pelaksanaan tindakan ini, saya hampir tidak dapat membayangkan bahwa sesuatu seperti ini terjadi di otak.
Berikut adalah algoritma paling sederhana yang saya tahu untuk pemilihan tertimbang acak. (Ini bukan yang paling efisien dari algoritma ini, tetapi metodenya bahkan lebih kacau. Keith Schwartz menulis
tutorial dan ulasan yang sangat baik tentang topik ini.) Misalkan struktur data yang mensimulasikan node jaringan mencakup daftar tautan ke node lain dan daftar bobot yang sesuai. . Seperti yang ditunjukkan pada gambar di bawah ini, program menghasilkan sejumlah jumlah akumulasi bobot:
0 , w 1 , w 1 + w 2 , w 1 + w 2 + w 3 , d o t s . Langkah selanjutnya adalah menormalkan seri ini dengan membagi setiap angka dengan jumlah total bobot. Sekarang kami memiliki serangkaian angka
p i meningkat secara monoton dari nol menjadi satu. Selanjutnya, program memilih bilangan real acak
x dari interval
[ 0 , 1 ) ;
x harus dalam salah satu interval yang dinormalisasi
p i , dan nilai ini
saya mendefinisikan node yang dapat dipilih berikutnya.
Dalam kode
bahasa pemrograman Julia, prosedur pemilihan simpul terlihat seperti ini:
function select_next(links, weights) total = sum(weights) cum_weights = cumsum(weights) probabilities = cum_weights / total x = rand() for i in 1:length(probabilities) if probabilities[i] >= x return i end end end
Saya menggambarkan detail-detail yang membosankan ini dari jumlah akumulasi dan angka pseudo-acak yang begitu lambat untuk menekankan dengan cara ini sehingga algoritma traversal grafik ini tidak sesederhana seperti yang terlihat pada pandangan pertama. Dan kami masih belum mempertimbangkan topik perubahan probabilitas dengan cepat, meskipun perhatian kami beralih dari topik ke topik.
Bahkan lebih sulit untuk memahami proses pembelajaran - menambahkan node dan tepi baru ke jaringan. Saya mengakhiri sesi asosiasi bebas ketika saya sampai pada pertanyaan yang tidak bisa saya jawab: apa nama kupu-kupu di Rusia? Tapi
sekarang aku bisa menjawabnya. Lain kali saya memainkan game ini, saya akan menambahkan kata
babochka ke daftar. Dalam model komputasi, memasukkan simpul untuk kata
babochka adalah tugas yang cukup sederhana, tetapi simpul baru kami juga harus terhubung ke semua simpul kupu-kupu yang ada. Apalagi
babochka sendiri menambahkan iga baru. Secara fonetis ia dekat dengan
babushka (nenek) - salah satu dari beberapa kata Rusia dalam kamus saya. Akhiran
-ochka adalah kecil, sehingga harus dikaitkan dengan
-ette Perancis dan
-ini Italia. Arti harfiah dari kata
babochka adalah "jiwa kecil", yang menyiratkan jumlah asosiasi yang lebih besar. Bagaimanapun, mempelajari satu kata baru mungkin memerlukan pengindeksan ulang seluruh pohon pengetahuan.
Mari kita coba metode lain. Lupakan tentang melintasi jaringan secara acak dengan spageti dari pointer ke node. Sebagai gantinya, mari kita simpan semua barang serupa di lingkungan. Dari sudut pandang bank memori komputer digital, ini berarti bahwa hal-hal serupa akan disimpan di alamat tetangga. Berikut adalah segmen memori hipotetis yang berpusat pada konsep
anjing . Tempat-tempat tetangga ditempati dengan kata lain, konsep dan kategori yang paling mungkin disebabkan oleh pemikiran anjing (
anjing ):
kucing yang jelas (kucing) dan
anak anjing (anak anjing), berbagai jenis anjing dan beberapa anjing tertentu (Skippy adalah anjing keluarga kami, yang di masa kecil saya), serta, mungkin, asosiasi yang lebih kompleks. Setiap item memiliki alamat digital. Alamat tidak memiliki makna yang dalam, tetapi penting agar semua sel memori diberi nomor secara berurutan.
alamatnya | isinya |
---|
19216805 | tuhan |
19216806 | anjing yang tidak menggonggong di malam hari |
19216807 | Skippy |
19216808 | Lassie |
19216809 | anjing |
19216810 | kucing |
19216811 | anjing |
19216812 | anak anjing |
19216813 | serigala |
19216814 | gua canem |
19216815 | Basset hound |
19216816 | Weimaraner |
19216817 | dogmatis |
Tugas santai berkeliaran di array ini dalam memori bisa sangat sederhana. Ini dapat melintasi alamat memori secara acak, tetapi keuntungannya akan diberikan pada langkah-langkah kecil. Misalnya, alamat yang dikunjungi berikutnya dapat ditentukan dengan pengambilan sampel dari distribusi normal yang berpusat pada lokasi saat ini. Ini kode untuk Julia. (Fungsi
randn()
mengembalikan bilangan real acak yang diperoleh dari distribusi normal dengan nilai rata-rata
m u = 0 dan standar deviasi
s i g m a = 1 .)
function gaussian_ramble(addr, sigma) r = randn() * sigma return addr + round(Int, r) end
Skema semacam itu memiliki fitur menarik. Tidak perlu melakukan tabulasi semua node target yang mungkin sebelum memilih salah satunya. Probabilitas tidak disimpan sebagai angka, tetapi dikodekan oleh posisi dalam array, dan juga dimodulasi oleh parameter
s i g m a , yang menentukan seberapa jauh prosedur ingin bergerak dalam array. Meskipun program masih melakukan aritmatika untuk sampel dari distribusi normal, fungsi seperti itu kemungkinan menjadi solusi yang lebih sederhana.
Namun tetap saja, prosedur ini memiliki kelemahan yang menakutkan. Setelah dikelilingi
anjing dengan semua asosiasi langsungnya, kami tidak meninggalkan ruang untuk asosiasi
mereka . Istilah anjing baik dalam konteksnya sendiri, tetapi bagaimana dengan
kucing dari daftar? Di mana kita meletakkan
anak kucing ,
harimau ,
sembilan nyawa dan
Felix ? Dalam array satu dimensi, tidak ada cara untuk menyematkan setiap elemen memori dalam lingkungan yang sesuai.
Jadi mari kita beralih ke dua dimensi! Membagi alamat menjadi dua komponen, kami mendefinisikan dua sumbu ortogonal. Paruh pertama dari setiap alamat menjadi koordinat
y dan koordinat kedua
x . Sekarang
anjing dan
kucing masih tetangga dekat, tetapi mereka juga memiliki ruang pribadi di mana mereka dapat bermain dengan "teman" mereka sendiri.
Namun, dua pengukuran juga tidak cukup. Jika kita mencoba mengisi semua elemen yang terkait dengan
Kucing di Topi , mereka pasti akan mulai bertabrakan dan bertentangan dengan elemen-elemen terkait dari
anjing yang tidak menggonggong di malam hari . Jelas, kami membutuhkan lebih banyak dimensi - lebih banyak.
Sekarang adalah saat yang tepat untuk mengakui - Saya bukan orang pertama yang berpikir tentang bagaimana ingatan dapat diatur dalam ingatan. Daftar para pendahulu saya dapat dimulai dengan Plato, yang membandingkan ingatan dengan seekor burung; kita mengenali ingatan dengan bulu mereka, tetapi kadang-kadang sulit bagi kita untuk mendapatkannya jika mereka mulai berdebar di sel tengkorak kita. Jesuit abad ke-16, Matteo Ricci, menulis tentang "istana kenangan" di mana kita menjelajahi berbagai ruangan dan koridor untuk mencari harta karun masa lalu. Teori ingatan modern biasanya kurang imajinatif, tetapi lebih detail dan ditujukan pada transisi dari metafora ke mekanisme. Secara pribadi, yang paling saya sukai adalah model matematika yang diperoleh pada 1980-an oleh
Pentti Canerva , yang sekarang bekerja di Redwood Center for Theoretical Neuroscience di Berkeley. Dia datang dengan gagasan
memori terdistribusi jarang , yang saya sebut SDM. Ini berhasil menerapkan geometri luar biasa dari ruang dimensi tinggi.
Bayangkan sebuah kubus dalam tiga dimensi. Jika kita mengasumsikan bahwa panjang sisi sama dengan satuan pengukuran, maka delapan vektor dapat dilambangkan dengan vektor tiga digit biner, dimulai dengan
000 dan berakhir
111 . Pada titik mana pun, mengubah satu bit vektor membawa kita ke titik yang merupakan tetangga terdekat. Mengubah dua bit menggerakkan kita ke tetangga terdekat berikutnya, dan mengganti ketiga bit mengarah ke sudut kubus yang berlawanan - ke titik paling jauh.
Kubus empat dimensi bekerja dengan cara yang sama -
16 simpul ditunjukkan oleh vektor yang berisi semua kombinasi digit biner, dimulai
0000 dan berakhir
1111 . Deskripsi ini sebenarnya digeneralisasikan ke
N dimensi di mana setiap titik memiliki
N bit koordinat vektor. Jika kita mengukur jarak menurut metrik Manhattan - selalu bergerak di sepanjang tepi kubus dan tidak pernah memotong sepanjang diagonal - maka jarak antara dua vektor akan menjadi jumlah posisi di mana dua vektor koordinat berbeda (juga dikenal sebagai jarak Hamming). (Untuk OR eksklusif, simbol , kadang-kadang disebut
sanggul , biasanya digunakan. Ini menampilkan operasi XOR sebagai modulo penambahan biner 2. Kanerva lebih suka ers atau ⊗ dengan dasar bahwa peran XOR dalam komputasi dimensi tinggi lebih seperti penggandaan daripada penambahan Saya memutuskan untuk menghilangkan kontradiksi ini dengan menggunakan simbol & veebar; - cara alternatif untuk menulis XOR, akrab di antara para ahli logika. Ini adalah modifikasi dari simbol ∨ - termasuk OR. Sangat mudah bahwa ini juga merupakan simbol XOR dalam program Julia.) Dengan demikian, unit pengukuran jarak adalah satu bit, dan perhitungan jarak adalah tugas untuk operator ATAU eksklusif biner (XOR, & veebar;), yang memberi kita nilai untuk bit yang berbeda
1 , dan untuk pasangan identik - nilainya
0 :
0 ⊻ 0 = 0 0 ⊻ 1 = 1 1 ⊻ 0 = 1 1 ⊻ 1 = 0
Fungsi pada Julia untuk mengukur jarak antara simpul menerapkan fungsi XOR ke dua vektor koordinat dan mengembalikan kuantitas sebagai hasilnya
1 .
function distance(u, v) w = u ⊻ v return count_ones(w) end
Kapan
N semakin besar, beberapa sifat aneh muncul
N -cube. Pertimbangkan
1000 kubus -dimensi memiliki
2 1000 puncak. Jika kita secara acak memilih dua simpulnya, berapa jarak yang diharapkan di antara mereka? Meskipun ini adalah pertanyaan tentang jarak, tetapi kita dapat menjawabnya tanpa mempelajari geometri - ini hanya tugas menghitung posisi di mana dua vektor biner dibedakan. Untuk vektor acak, masing-masing bit mungkin sama-sama cenderung sama
0 atau
1 , oleh karena itu, diharapkan bahwa vektor akan berbeda di setengah posisi bit. Dalam hal
1000 bit standar jarak vektor
500 bit. Hasil ini tidak mengejutkan kami. Namun,
perlu dicatat bahwa semua jarak antara vektor terakumulasi erat di sekitar nilai rata-rata 500.
Dalam hal
1000 -bit vektor hampir semua pasangan yang dipilih secara acak berada pada jarak dari
450 sebelumnya
550 sedikit. Dalam sampel seratus juta pasangan acak
(lihat grafik di atas), tidak ada satupun yang lebih dekat dari itu
400 sedikit atau lebih jauh dari
600 sedikit. Tidak ada dalam hidup kita di ruang resolusi rendah yang mempersiapkan kita untuk akumulasi probabilitas dalam jarak rata-rata. Di Bumi ini, kita dapat menemukan tempat di mana kita akan benar-benar sendirian, ketika hampir semua berada dalam jarak beberapa ribu kilometer dari kita; namun, tidak ada cara untuk mendistribusikan kembali populasi planet ini sehingga
setiap orang pada saat yang sama berada dalam keadaan seperti itu. Tapi di
1000 ruang -dimensi situasinya hanya itu.
Tak perlu dikatakan, sulit dibayangkan
1000 kubus -dimensi, tetapi kita bisa mendapatkan sedikit pemahaman intuitif tentang geometri, setidaknya untuk contoh lima dimensi. Di bawah ini adalah tabel dari semua koordinat simpul dalam kubus lima dimensi dimensi unit, disusun sesuai dengan jarak Hamming dari titik awal
00 , 000 . Sebagian besar puncak (20 dari 32) berada pada jarak sedang - dua atau tiga bit. Tabel akan memiliki bentuk yang sama pada titik lain yang diambil sebagai titik awal.
Keberatan serius untuk semua diskusi ini.
1000 -Dimensi kubus adalah kita tidak akan pernah bisa membangun sesuatu seperti itu; di alam semesta tidak ada atom yang cukup untuk struktur
2 1000 bagian. Tetapi Kanerva menunjukkan bahwa kita membutuhkan ruang untuk menyimpan hanya elemen-elemen yang ingin kita simpan. Kami dapat merancang peralatan untuk pengambilan sampel acak, misalnya
10 8 simpul (masing-masing memiliki
1000 -bit address) dan tinggalkan sisa kubus dengan infrastruktur hantu yang belum selesai. Kanerva menyebut subset dari simpul yang ada di
sel keras "perangkat keras"
(lokasi keras) . Banyak
10 8 sel padat acak masih akan menunjukkan distribusi jarak terkompresi yang sama dengan kubus penuh; ini persis seperti yang ditunjukkan pada grafik di atas.
Isolasi relatif dari masing-masing simpul dalam sebuah kubus berukuran tinggi memberi kita petunjuk tentang satu kemungkinan keuntungan dari memori terdistribusi jarang: elemen yang disimpan memiliki ruang yang cukup dan dapat didistribusikan di area yang luas tanpa mengganggu tetangganya. Ini benar-benar fitur luar biasa dari SDM, tetapi ada hal lain.
Dalam memori komputer tradisional, alamat dan elemen data yang disimpan dipetakan satu ke satu. Alamat adalah bilangan bulat ordinal dari rentang tetap, katakanlah
[ 0 , 2 64 ) . Setiap bilangan bulat dalam kisaran ini menentukan satu tempat terpisah dalam memori, dan setiap tempat dikaitkan dengan tepat satu alamat. Selain itu, di setiap tempat hanya satu nilai yang disimpan sekaligus; saat menulis nilai baru, yang lama ditimpa.
SDM melanggar semua aturan ini. Ini memiliki ruang alamat yang sangat besar - tidak kurang
2 1000 - tetapi hanya sebagian kecil, acak tempat-tempat ini ada sebagai entitas fisik; itu sebabnya memori disebut
jarang . Sepotong informasi tidak disimpan hanya di satu tempat di memori; banyak salinan didistribusikan di seluruh wilayah - oleh karena itu
didistribusikan . Selain itu, di setiap alamat yang terpisah beberapa elemen data dapat disimpan pada saat yang sama. Artinya, informasi tersebar di wilayah yang luas, dan diperas menjadi satu titik. Arsitektur ini juga mengaburkan perbedaan antara alamat memori dan isi memori; dalam banyak kasus, pola bit yang disimpan digunakan sebagai alamatnya sendiri. Akhirnya, memori dapat merespons ke alamat sebagian atau perkiraan dan sangat mungkin untuk menemukan item yang benar. Sementara memori tradisional adalah "mekanisme pencocokan tepat," SDM adalah "mekanisme kecocokan terbaik" yang mengembalikan elemen yang paling mirip dengan yang diminta.
Dalam bukunya tahun 1988, Kanerva memberikan analisis kuantitatif terperinci dengan ingatan yang jarang didistribusikan
1000 pengukuran dan
1.000.000 sel padat. Sel padat dipilih secara acak dari seluruh ruang.
2 1000 kemungkinan vektor alamat. Setiap sel padat memiliki ruang penyimpanan untuk banyak
1000 vektor bit. Memori secara keseluruhan dirancang untuk penyimpanan setidaknya
10.000 pola yang unik. Di bawah ini saya akan menganggap memori ini sebagai model-SDM kanonik, terlepas dari kenyataan bahwa menurut standar mamalia itu tidak cukup, dan dalam karya yang lebih baru, Kanerva menekankan vektor dengan setidaknya
10.000 pengukuran.
Ini adalah cara kerja memori dalam implementasi komputer sederhana. Perintah
store(X)
menulis vektor ke memori
X , mengingat itu alamat dan konten. Nilai
X disimpan di semua sel padat dalam jarak tertentu ke
X . Dalam model kanonik, jarak ini adalah 451 bit. Ini mendefinisikan "lingkaran akses" yang dimaksudkan untuk menyatukan dalam dirinya sendiri sekitar
1000 sel padat; dengan kata lain, masing-masing vektor disimpan kira-kira dalam
1 / 1000 satu dari sejuta sel padat.
Penting juga untuk dicatat bahwa barang yang disimpan
X belum tentu memilih
1.000.000 vektor biner yang merupakan alamat sel padat. Sebaliknya.
X mungkin salah satu dari
2 1000 kemungkinan pola biner.
Misalkan seribu salinan sudah ditulis ke SDM
X , setelah itu elemen baru tiba
Y , yang juga perlu disimpan dalam set sendiri ribuan sel padat. Antara dua set ini mungkin ada persimpangan - tempat di mana
X , dan
Y . Nilai baru tidak menimpa atau mengganti yang sebelumnya; kedua nilai disimpan. Ketika memori penuh dengan kapasitasnya di
10.000 masing-masing disimpan
1000 kali, dan dalam salinan sel keras khas akan disimpan
10 pola yang unik.
Sekarang pertanyaannya adalah: bagaimana kita menggunakan memori campuran ini? Secara khusus, bagaimana kita mendapatkan nilai yang tepat
X tanpa mempengaruhi
Y dan semua barang lainnya yang menumpuk di satu tempat penyimpanan?
Algoritma pembacaan akan menggunakan properti dari distribusi jarak yang ingin tahu dalam ruang dimensi tinggi. Bahkan jika
X dan
Y adalah tetangga terdekat dari
10.000 pola yang tersimpan, kemungkinan besar akan berbeda sebesar 420 atau 430 bit; oleh karena itu, jumlah sel padat di mana kedua nilai disimpan cukup kecil - biasanya empat, lima atau enam. Hal yang sama berlaku untuk semua pola yang berpotongan dengan
X . Ada ribuan dari mereka, tetapi tidak satu pun dari pola yang berpengaruh hadir di lebih dari beberapa salinan dalam lingkaran akses
X .
Perintah
fetch(X)
harus mengembalikan nilai yang sebelumnya ditulis oleh perintah
store(X)
. Langkah pertama dalam merekonstruksi nilai adalah mengumpulkan semua informasi yang tersimpan di dalam lingkaran akses 451-bit yang dipusatkan
X . Sejak
X Sebelumnya tercatat di semua tempat ini, kami dapat yakin bahwa kami akan menerima
1000 salinannya. Kami juga akan mendapatkan tentang
10.000 salinan vektor
lain yang disimpan di tempat-tempat di mana lingkaran akses bersinggungan dengan lingkaran
X . Tetapi karena persimpangan kecil, masing-masing vektor hadir hanya dalam beberapa salinan. Maka umumnya masing-masing
1000 Agak mungkin
0 atau
1 . Jika kita menerapkan fungsi prinsip mayoritas ke semua data yang dikumpulkan pada setiap posisi bit, maka hasilnya akan didominasi oleh
1000 salinan
X . Kemungkinan menjadi berbeda dari
X hasilnya kira-kira sama
10 - 19 .
Prosedur prinsip mayoritas ditunjukkan secara lebih rinci di bawah ini pada contoh kecil dari lima vektor data masing-masing 20 bit. Output akan menjadi vektor yang berbeda, masing-masing bit yang mencerminkan sebagian besar bit yang sesuai dalam vektor data. (Jika jumlah vektor data genap, maka "gambar" diizinkan oleh pemilihan acak
0 atau
1 .) Skema penulisan dan bacaan alternatif yang ditunjukkan di bawah ini menolak untuk menyimpan semua pola satu per satu. Sebagai gantinya, ia menyimpan jumlah total bit.
0 dan
1 di setiap posisi. Sel padat memiliki
1000 -bit counter diinisialisasi oleh semua nol. Ketika sebuah pola dituliskan di tempatnya, setiap bit counter ditambahkan untuk
1 atau berkurang untuk
0 . Algoritma pembacaan hanya melihat tanda dari setiap bit counter, kembali
1 untuk nilai positif,
0 untuk nilai negatif dan acak ketika bit counter sama
0 .
Dua skema penyimpanan ini memberikan hasil yang identik.
Dalam hal komputasi, versi memori terdistribusi jarang ini terlihat seperti lelucon yang dipikirkan dengan saksama. Untuk diingat
10.000 elemen kita membutuhkan sejuta sel padat, di mana kita akan menyimpan seribu salinan berlebihan dari setiap pola. Untuk mengambil hanya satu item dari memori, kami mengumpulkan data dengan
11.000 pola yang disimpan dan menerapkan mekanisme prinsip mayoritas untuk mengungkapnya. Dan semua ini dilakukan dengan bantuan sekelompok manuver akrobatik hanya untuk mendapatkan vektor yang sudah kita miliki. Memori tradisional bekerja jauh lebih sedikit secara acak: keduanya menulis dan membaca mengakses satu tempat.
Tetapi SDM dapat melakukan apa yang tidak bisa dilakukan oleh memori tradisional. Secara khusus, dapat mengekstrak informasi berdasarkan sebagian atau perkiraan data. Katakanlah vektor
Z adalah versi yang rusak
X di mana telah berubah
100 dari
1000 vektor. Karena dua vektor serupa, perintah
fetch(Z)
akan mengunjungi banyak tempat yang sama di mana ia disimpan
X .
Dengan jarak Hamming 100, kita bisa berharap itu X dan
Z akan dibagikan oleh sekitar 300 sel padat. Berkat persimpangan besar ini, vektor kembalifetch(Z)
(sebut saja ituZ ′ ) akan lebih dekat denganX apa ituZ .
Sekarang kita dapat mengulangi proses ini dengan tim fetch(Z′)
yang akan mengembalikan hasilnyaZ ′ ′ , bahkan lebih dekat keX .
Hanya dalam beberapa iterasi, prosedur akan mencapai X .
Kanerva menunjukkan bahwa urutan operasi baca rekursif yang konvergen akan berhasil dengan kepastian yang hampir lengkap jika pola awal tidak terlalu jauh dari target. Dengan kata lain, ada jari-jari kritis: setiap pemeriksaan memori, mulai dari tempat di dalam lingkaran kritis, akan hampir persis menyatu ke pusat, dan akan melakukannya dengan cukup cepat. Upaya untuk mengembalikan elemen yang disimpan di luar lingkaran kritis akan gagal, karena proses penarikan rekursif akan pindah ke jarak rata-rata. Analisis Kanerv menunjukkan bahwa untuk SDM kanonik, radius kritisnya adalah 209 bit. Dengan kata lain, jika kita mengetahui sekitar 80 persen dari bit, kita dapat membuat ulang seluruh pola.Ilustrasi di bawah ini melacak evolusi urutan ingatan rekursif dengan sinyal sumber selain target. X aktif0 , 5 , 10 , 15 ... 1000 .
Dalam percobaan ini, semua urutan dimulai dengan jarak 205 atau kurang konvergen keX untuk10 atau kurang iterasi(jejak biru). Semua urutan mulai dari jarak awal yang lebih besar berkeliaran tanpa tujuan melalui ruang kosong yang luasKubus 1000 dimensi, tersisa sekitar 500 bit dari mana saja.Transisi dari konvergen ke jalur divergen tidak sepenuhnya jelas, dan ini terlihat dalam grafik compang-camping yang ditunjukkan di bawah ini. Di sini kami memperbesar untuk melihat nasib lintasan dimulai dengan offset masuk175 , 176 , 177 , ... 225 bit. Semua titik awal dalam 209 bit target ditunjukkan dengan warna biru; mulai dari jarak yang lebih jauh berwarna oranye. Sebagian besar jalur biru bertemu, dengan cepat bergerak ke jarak nol, sedangkan sebagian besar jalur oranye tidak. Namun, dekat dengan jarak kritis, ada banyak pengecualian.Grafik di bawah ini menunjukkan tampilan lain pada bagaimana jarak awal dari target memengaruhi kemungkinan konvergensi ke alamat memori yang benar. Di kejauhan170 bit berhasil di hampir semua upaya; di240 hampir semua tidak berhasil. Tampaknya titik persimpangan (di mana kesuksesan dan kegagalan sama-sama memungkinkan) terletak sekitar203 bit, sedikit di bawah hasil Kanerva, sama dengan209 .
(Tidak ada yang misterius dalam perbedaan ini. Dalam perhitungan Kanerv, lingkaran akses seharusnya membatasi dengan tepat 1000 sel padat. Semua sel padat dalam jarak termasuk dalam percobaan saya.r ≤ 451 ; rata-rata ada1070 tempat semacam itu.)
Kemampuan untuk menciptakan kembali ingatan dari informasi parsial adalah elemen yang akrab dalam kehidupan manusia. Anda melihat seorang aktor di sebuah acara televisi, dan Anda mengerti bahwa Anda pernah melihatnya sebelumnya, tetapi tidak ingat di mana. Beberapa menit kemudian Anda sadar: ini adalah Tuan Bates dari Downton Abbey , tetapi tanpa kostum kepala pelayan. Pertemuan lulusan sekolah menengah: melihat seorang pria botak ketat di sisi lain ruangan, dapatkah Anda mengenalinya sebagai teman yang Anda kenal hanya sebagai remaja dengan celana pendek olahraga? Terkadang dibutuhkan banyak upaya untuk mengisi kekosongan. Saya sudah menulis tentang "titik buta" saya sendiri yang tidak dapat dijelaskan untuk mengenang wisteria yang tumbuh, yang hanya dapat saya sebutkan setelah dengan sabar membolak-balik katalog bau palsu: hydrangea, verbena, dan forsythia.Bisakah kemampuan kita untuk memulihkan memori dari input yang tidak lengkap atau berisik bekerja seperti proses rekursif mengingat vektor dimensi tinggi? Ini akan menjadi hipotesis yang menarik, tetapi ada alasan untuk mewaspadai itu. Misalnya, otak tampaknya mampu mengekstrak makna dari sinyal yang jauh lebih sedikit. Saya tidak perlu mendengarkan empat perlima dari “Simfoni Kelima” untuk mengidentifikasinya, empat not pertama sudah cukup. Warna berkedip-kedip di pohon langsung membuat Anda mengingat spesies burung yang sesuai - kardinal, blue jay, carduelis. Napas sedikit pun dengan bau debu kapur membawaku kembali ke ruang kelas yang mengantuk, tempat aku melukis selama setengah hari di mejaku. Ingatan seperti itu dipicu oleh sebagian kecil dari informasi yang mewakili mereka, jauh kurang dari 80 persen.Kanerva menyebutkan fitur lain dari ingatan manusia yang dapat dimodelkan menggunakan SDM: fenomena “berputar di ujung lidah”, intinya adalah Anda tahu bahwa Anda tahu sesuatu, meskipun Anda tidak bisa langsung menyebutnya. Perasaan ini agak misterius: jika Anda tidak dapat menemukan apa yang Anda cari, bagaimana Anda bisa tahu bahwa semuanya tersimpan di otak? Proses penarikan rekursif dari SDM menawarkan kita kemungkinan jawaban. Ketika pola berurutan yang diambil dari memori semakin dekat satu sama lain, kita dapat memastikan bahwa mereka akan menyatu dengan tujuan bahkan sebelum mereka mencapai itu.Dalam upaya mengekstraksi fakta yang membandel dari ingatan, banyak orang mendapati bahwa terus-menerus mengetuk pintu yang sama bukanlah strategi yang bijaksana. Daripada menuntut jawaban langsung - untuk memerintahkan otak Anda - seringkali lebih baik untuk mengesampingkan tugas, berjalan-jalan, mungkin tidur siang; jawabannya mungkin seolah-olah itu tidak diundang. Bisakah pengamatan ini dijelaskan oleh model SDM? Mungkin setidaknya sebagian. Jika urutan pola yang ditarik tidak menyatu, maka penelitian lebih lanjut mungkin terbukti sia-sia. Jika Anda memulai lagi dari titik tetangga di ruang memori, Anda dapat mencapai hasil yang lebih baik. Tetapi ada sebuah misteri di sini: bagaimana menemukan titik awal baru dengan prospek yang lebih baik? Anda mungkin berpikir bahwa cukup sederhana untuk secara acak mengganti beberapa bit dalam pola input dan harapansebagai hasilnya, ia akan lebih dekat ke tujuan, tetapi kemungkinannya kecil. Jika vektor dalam250 bit dari target itu750 bit sudah benar (tapi kita tidak tahuapadari750 bit); dengan perubahan acak, kami memiliki probabilitas3 / 4 datang dekat dan pergi lebih jauh. Untuk membuat kemajuan, Anda perlu tahu ke arah mana harus bergerak, dan masukRuang 1000 dimensi adalah pertanyaan yang sulit.Salah satu aspek arsitektur SDM adalah tampaknya sesuai dengan efek pengulangan atau mendengarkan kembali ke memori. Jika Anda mengulangi puisi itu beberapa kali atau berlatih memainkan musik, Anda dapat berharap bahwa di masa depan Anda akan mengingatnya dengan lebih mudah. Model komputasi harus menunjukkan efek pelatihan yang serupa. Tetapi ini tidak mungkin dalam memori komputer tradisional: tidak ada keuntungan untuk menulis ulang nilai yang sama beberapa kali di alamat yang sama. Di SDM, di sisi lain, setiap pengulangan pola menambahkan salinan lain ke semua sel padat dalam lingkaran akses pola. Akibatnya, sedikit pengaruh dari pola berpotongan terjadi, dan jari-jari penarikan kritis meningkat. Efeknya memiliki efek signifikan:saat menulis ke memori satu salinan pola, jari-jari kritis meningkat dari sekitar200 bit hingga lebih dari300 .
Demikian pula, memainkan satu pola dapat membuat sulit untuk mengembalikan sisanya. Ini mengingatkan pada lupa ketika pola yang dicetak secara aktif mengisi tetangganya dan menangkap bagian dari wilayah mereka. Efek ini juga secara signifikan mempengaruhi SDM, sedemikian rupa sehingga bahkan tampak tidak realistis. Tampaknya suatu vektor yang disimpan delapan atau sepuluh kali memonopoli sebagian besar memori; ia menjadi obsesi, jawaban untuk semua pertanyaan.Keuntungan penting dari memori terdistribusi jarang adalah ketahanannya terhadap kegagalan atau kesalahan perangkat keras. Saya akan marah jika kehilangan satu neuron di otak saya meninggalkan lubang di ingatan saya dan saya tidak bisa mengenali huruf gatau ingat bagaimana mengikat tali sepatu. SDM tidak menderita kerapuhan ini. Ketika setiap pola yang disimpan memiliki seribu salinan, tidak ada satu tempat pun yang penting. Dan faktanya, Anda dapat menghapus semua informasi yang disimpan dalam 60 persen sel padat, dan masih memiliki daya ingat yang sempurna10000 , jika kita menganggap bahwa kita mengirimkan alamat yang benar-benar akurat sebagai sinyal. Dengan sinyal parsial, jari-jari kritis menyusut ketika bintik-bintik yang hilang meningkat. Setelah menghancurkan 60 persen dari situs, jari-jari kritis dikompresi200 + bit hingga sekitar150 bit. Setelah penghancuran 80 persen tempat, memori rusak parah, tetapi tidak hancur.Bagaimana dengan mengambang di awan? Bisakah kita dengan santai berkeliaran di padang rumput dari memori yang jarang terdistribusi, melompat dengan keberuntungan dari satu pola yang tersimpan ke yang lain? Saya akan kembali ke pertanyaan ini.
Sebagian besar di atas ditulis beberapa minggu yang lalu. Pada waktu itu, saya membaca tentang berbagai teori ingatan yang saling bersaing dan mendiskusikan kemampuan mereka dengan rekan-rekan dari Institut Simons. Saya menuliskan pikiran saya tentang hal ini, tetapi menunda publikasi mereka karena keraguan yang terus-menerus: apakah saya memahami matematika dari memori yang jarang didistribusikan dengan benar? Sekarang aku senang aku tidak terburu-buru.Program Brain and Computing berakhir pada Mei. Para pesertanya pergi: Saya kembali ke New England, di mana sage dan rosemary adalah tanaman pot kecil, dan bukan semak-semak rimbun yang tergantung di jalan setapak. Pagi saya berjalan ke kampus Berkeley, kesempatan sehari-hari untuk merefleksikan sifat ingatan dan pembelajaran, menjadi "engrams" yang disimpan di suatu tempat di kepala saya (namun, saya masih tidak tahu di mana mencarinya).Namun, saya tidak menyerah pencarian saya. Setelah meninggalkan Berkeley, saya terus membaca tentang teori ingatan. Saya juga menulis program untuk mempelajari memori terdistribusi Pentti Canerva yang jarang dan ide-idenya yang lebih luas tentang "komputasi hyperspace". Bahkan jika proyek ini gagal mengungkapkan kepada saya rahasia ingatan manusia, itu pasti akan mengajari saya sesuatu tentang seni navigasi matematika dan komputasi dalam ruang dimensi tinggi.Diagram di bawah ini menunjukkan cara "benar" untuk menerapkan SDM, seperti yang saya pahami. Elemen utama adalah matriks silang, di mana baris sesuai dengan sel memori padat, dan kolom membawa sinyal yang mensimulasikan bit individu dari vektor input. Ada sejuta baris dalam memori kanonik, yang masing-masing ditugaskan secara acakAlamat 1000 bit, dan1000 kolom Versi demo ini terdiri dari 20 baris dan 8 kolom.Proses yang digambarkan dalam diagram terdiri dari menyimpan satu vektor input ke dalam memori kosong. Delapan bit input secara bersamaan dibandingkan dengan semua 20 alamat sel padat. Ketika bit input dan bit alamat bertepatan - nol dengan nol atau satu dengan satu - kita meletakkan sebuah titik di persimpangan kolom dan baris. Kemudian kami menghitung jumlah titik di setiap baris, dan jika jumlahnya sama dengan atau melebihi nilai ambang batas, maka kami menulis vektor input dalam register yang terkait dengan baris ini (bidang biru) . Dalam contoh kami, nilai ambang adalah 5, dan dalam 8 dari 20 alamat setidaknya ada 5 kecocokan. MasukNilai ambang memori 1000- bit akan sama451 , dan hanya sekitar seperseribu dari semua register yang akan dipilih.Keajaiban arsitektur ini adalah bahwa semua perbandingan bit - dan ada satu miliar di antaranya dalam model kanonik - terjadi secara bersamaan. Oleh karena itu, waktu akses untuk membaca dan menulis tidak tergantung pada jumlah sel padat dan bisa sangat kecil. Jenis pengaturan umum ini, yang dikenal sebagai memori asosiatif atau pengalamatan konten, digunakan di beberapa area komputasi, seperti mengaktifkan pendeteksi partikel di Large Hadron Collider dan mentransmisikan paket melalui router di Internet. Dan diagram sirkuit dapat dikaitkan dengan struktur otak tertentu. Kanerva menunjukkan bahwa otak kecil sangat mirip dengan matriks seperti itu. Garis-garisnya datar, sel Purkinje berbentuk kipas, dikumpulkan seperti halaman-halaman buku; kolom adalah serat paralel yang meregangkan seluruh sel Purkinje. (Namun, otak kecil bukanlah wilayah otak mamalia,di mana memori kognitif dianggap berada.)Akan lebih bagus untuk membangun simulasi SDM berdasarkan lintas-arsitektur ini; Sayangnya, saya tidak tahu bagaimana menerapkannya pada peralatan komputer yang saya miliki. Dalam prosesor tradisional, tidak ada cara untuk secara bersamaan membandingkan semua bit input dengan bit sel keras. Sebagai gantinya, saya harus melalui jutaan sel padat secara berurutan, dan membandingkan ribuan bit di setiap tempat. Ini berarti perbandingan sejuta bit untuk setiap elemen yang disimpan atau diambil dari memori. Tambahkan ke ini waktu untuk menulis atau membaca sejuta bit (ribuan salinan)1000- bit vektor), dan Anda mendapatkan proses yang agak lambat. Berikut adalah kode untuk menyimpan vektor: function store(v::BitVector) for loc in SDM if hamming_distance(v, loc.address) <= r write_to_register!(loc.register, v) end end end
Implementasi ini memakan waktu sekitar satu jam untuk menginventarisir memori 10.000 pola hafalan. (Program lengkap dalam bentuk notebook Jupyter tersediadi GitHub.)Apakah ada algoritma yang lebih baik untuk mensimulasikan SDM pada perangkat keras biasa? Salah satu strategi yang memungkinkan memungkinkan untuk menghindari pencarian berulang untuk satu set sel padat di dalam lingkaran akses vektor yang diberikan; sebaliknya, ketika vektor pertama kali ditulis ke memori, program menyimpan pointer ke masing-masing dari ribuan tempat penyimpanannya. Di masa depan, dengan referensi ke vektor yang sama, program dapat mengikuti1000 pointer tersimpan, dan tidak memindai seluruh array sejuta sel padat. Harga dari skema caching ini adalah kebutuhan untuk menyimpan semua petunjuk ini - dalam SDM kanonik mereka10 juta. Ini cukup nyata, dan mungkin layak jika Anda ingin menyimpan dan mengambil hanya nilai yang diketahui. Tetapi pikirkan tentang apa yang terjadi sebagai respons terhadap permintaan memori perkiraan dengan penarikan rekursifZ ′ dan
Z ′ ′ dan
Z ′ ′ ′ , dan seterusnya.
Tidak satu pun dari nilai-nilai perantara ini akan ditemukan dalam cache, sehingga pemindaian penuh dari semua sel padat masih akan diperlukan.Mungkin ada cara yang lebih sulit untuk memotong jalan. Dalam sebuah artikel ulasan baru-baru ini, " Perkiraan Pencarian Tetangga Terdekat dalam Dimensi Tinggi " oleh Alexander Andoni, Peter Indyk dan Ilya Razenstein, teknik yang menarik disebutkan disebut hashing sensitif lokalitas (hashing berdasarkan lokalitas), tetapi sejauh ini saya tidak cukup mengerti bagaimana menyesuaikannya dengan tugas SDM.
Kemampuan untuk memulihkan memori dari sinyal parsial menyakitkan fitur manusia dari model komputasi. Mungkin itu dapat diperluas untuk menyediakan mekanisme yang masuk akal dari pengembaraan di sekitar ruang pikiran, di mana satu pemikiran mengarah ke yang berikutnya.Awalnya saya pikir saya tahu bagaimana ini bisa berhasil. Pola penyimpanan SDMX menciptakan area tarik-menarik di sekitarnya, tempat studi memori rekursif mulai dari radius kritis bertemuX . Di
10.000 penarik ini, saya bisa bayangkan bagaimana mereka membagi ruang memori menjadi matriks modul individu seperti busa sabun berukuran tinggi. Area untuk setiap elemen yang disimpan menempati volume terpisah, dikelilingi di semua sisi oleh area lain dan berbatasan dengan mereka, dengan batas yang jelas antara domain yang berdekatan. Untuk mendukung proposisi ini, saya dapat melihat bahwa jari-jari rata-rata wilayah tarik-menarik, ketika konten baru ditambahkan ke memori, dikompresi, seolah-olah gelembung dikompresi karena crowding.Visi proses di dalam SDM seperti itu menyarankan cara sederhana untuk berpindah dari satu domain ke domain lain: Anda perlu secara acak mengalihkan sejumlah bit vektor untuk memindahkannya dari objek wisata saat ini ke objek tetangga, dan kemudian menerapkan algoritma penarikan rekursif. Mengulangi prosedur ini akan menghasilkan traversal acak dari banyak topik yang tersimpan dalam memori.Satu-satunya masalah adalah bahwa pendekatan ini tidak berhasil. Jika Anda memeriksanya, maka itu benar-benar akan berkeliaran tanpa tujuanJaringan 1000 dimensi, tetapi kita tidak akan pernah menemukan apa pun yang tersimpan di sana. Seluruh rencana didasarkan pada pemahaman intuitif yang salah tentang geometri SDM. Vektor yang disimpan dengan wilayah tariknyatidakdikemas rapat seperti gelembung sabun; sebaliknya, mereka adalah galaksi-galaksi terisolasi yang tergantung di alam semesta yang luas dan bebas, dipisahkan oleh ruang-ruang kosong yang luas di antara mereka. Perhitungan singkat menunjukkan sifat situasi yang sebenarnya. Dalam model kanonik, jari-jari kritis menentukan wilayah tarikan kira-kira sama dengan200 .
Volume dari satu wilayah, diukur sebagai jumlah vektor di dalamnya, adalahsum200k=1(1000k)
yang kira-kira sama 10216 .
Karena itu semuanya 10000 area menempati volume 10220 .
Ini adalah jumlah yang besar, tetapi masih sebagian kecil 1000kubus -dimensi. Di antara semua simpul kubus, hanya1 dari
1080terletak dalam 200 bit dari pola yang disimpan. Anda dapat berkeliaran selamanya tanpa menemukan salah satu dari area ini.(Selamanya? Oh, ya, ya, itu mungkin tidak selamanya. Karena hypercube adalah struktur yang terbatas, cara apa pun melalui itu harus cepat atau lambat menjadi periodik, atau jatuh ke titik tetap dari mana ia tidak pernah pergi, atau tersesat dalam siklus berulang Vektor yang disimpan adalah titik tetap, di samping itu, ada banyak titik tetap lainnya yang tidak sesuai dengan pola yang signifikan. berbalik.)Mencoba menyelamatkan ide buruk ini, saya melakukan beberapa percobaan lagi. Dalam satu kasus, saya sewenang-wenang menyimpan beberapa konsep terkait ke alamat tetangga ("tetangga", yaitu, dalam 200 atau 300 bit). Mungkin di dalam kluster ini, saya bisa melompat dengan aman dari titik ke titik. Namun pada kenyataannya, seluruh cluster terkondensasi menjadi satu wilayah besar daya tarik untuk pola sentral, yang menjadi lubang hitam yang menghisap semua teman-temannya. Saya juga mencoba bermain dengan nilair(jari-jari lingkaran akses untuk semua operasi baca dan tulis). Dalam model kanonikr=451 .
Saya berpikir bahwa menulis ke lingkaran yang sedikit lebih kecil atau membaca dari lingkaran yang sedikit lebih besar akan memberikan ruang yang cukup untuk hasil yang acak, tetapi harapan ini juga tidak terwujud.Semua upaya ini didasarkan pada kesalahpahaman ruang vektor dimensi tinggi. Upaya untuk menemukan kelompok nilai-nilai tetangga di hypercube tidak ada harapan; pola yang disimpan terlalu spasi dalam volume. Penciptaan cluster padat yang sewenang-wenang juga tidak ada gunanya, karena menghancurkan properti yang membuat sistem menarik - kemampuan untuk menyatu dengan elemen yang tersimpan dari mana saja di area sekitar objek wisata. Jika kita ingin membuat algoritma cloud-wandering untuk SDM, maka kita perlu menemukan cara lain.
Dalam mencari mekanisme alternatif dari aliran kesadaran, Anda dapat mencoba untuk menambahkan sedikit teori grafik ke dunia memori terdistribusi jarang. Kemudian kita dapat mengambil satu langkah mundur, kembali ke ide asli dari pengembaraan mental dalam bentuk jalan-jalan acak di sekitar grafik atau jaringan. Elemen kunci untuk menyematkan grafik tersebut di SDM ternyata menjadi alat yang akrab bagi kita: operator ATAU eksklusif.Seperti disebutkan di atas, jarak Hamming antara dua vektor dihitung dengan mengambil bitor XOR dan menghitung unit yang dihasilkan. Tetapi operasi XOR tidak hanya memberikan jarak antara dua vektor, tetapi juga informasi lainnya; itu juga menentukan orientasi atau arah garis yang menghubungkannya. Secara khusus, operasiu⊻v memberikan daftar vektor bit yang perlu diubah untuk mengkonversi u masuk
vdan sebaliknya. Bisa juga dirasakan1 dan
0 dalam vektor XOR sebagai urutan arah yang harus Anda ikuti untuk melacak jalur dari u sebelumnya
v .
XOR selalu menjadi favorit saya dari semua fungsi Boolean. Ini adalah operator yang berbeda, tetapi tidak seperti pengurangan, XOR simetris:u⊻v=v⊻u .
Selain itu, XOR adalah fungsi terbalik sendiri. Konsep ini mudah dimengerti dengan fungsi dengan satu argumen:f(x) adalah fungsi kebalikannya sendiri jika f(f(x))=x, yaitu, setelah menerapkan fungsi dua kali, kita dapat kembali ke tempat kita mulai. Untuk fungsi dengan dua argumen, seperti XOR, situasinya lebih rumit, tetapi masih benar bahwa melakukan tindakan yang sama dua kali mengembalikan keadaan semula. Khususnya, jikau⊻v=w lalu u⊻w=v dan
v⊻w=u .
Tiga vektor - u ,
v dan
w- Menciptakan alam semesta tertutup kecil. Anda dapat menerapkan operator XOR untuk pasangan mereka dan mendapatkan elemen ketiga dari set tersebut. Berikut ini adalah upaya untuk menggambarkan ide ini. Setiap meniru persegi10000bit vektor berbaris sebagai 100 x 100 tabel piksel terang dan gelap. Tiga pola tersebut tampak acak dan independen, tetapi pada kenyataannya, masing-masing panel adalah XOR dari dua lainnya. Misalnya, di kotak paling kiri, setiap piksel merah bersesuaian dengan hijau atau biru, tetapi tidak pernah keduanya.Properti self-invertibility memberitahu kita cara baru untuk mengatur informasi dalam SDM. Misalkan kata kupu - kupu dan papillon bahasa Prancisnya disimpan dalam vektor acak yang acak. Mereka tidak akan dekat satu sama lain; jarak di antara mereka kemungkinan sekitar 500 bit. Sekarang kita menghitung XOR vektor kupu - kupu ini ⊻ papillon ; hasilnya adalah vektor lain yang juga dapat disimpan dalam SDM. Vektor baru ini menyandikan koneksi Inggris-Prancis . Sekarang kami memiliki alat terjemahan. Memiliki vektor untuk kupu - kupu , kami melakukan XOR untuknya dengan vektor Inggris-Prancis dan mendapatkan papillon . Trik yang sama bekerja pada arah yang berlawanan.Pasangan kata dan hubungan di antara mereka membentuk inti dari jaringan semantik. Mari kita tingkatkan sedikit. Kita dapat menyimpan kata caterpillar di alamat yang berubah-ubah , lalu menghitung kupu - kupu ⊻ ulat dan sebut hubungan dewasa-muda baru ini . Apa yang disebut ulat dalam bahasa Prancis ? Ulat dalam bahasa Prancis adalah chenille . Kami menambahkan fakta ini ke jaringan dengan menyimpan chenille di ulat ⊻ Inggris-Perancis . Sekarang adalah waktu untuk sihir: jika kita mengambil papillon ⊻ chenille , kita belajar bahwa kata-kata ini dihubungkan oleh hubungan orang dewasa-remaja , meskipun mereka tidak secara eksplisit menunjukkan hal ini. Keterbatasan ini dikenakan oleh geometri struktur itu sendiri.Grafik dapat diperluas lebih lanjut dengan menambahkan lebih banyak kata-kata yang berhubungan dengan Inggris-Prancis ( dog-chien, horse-cheval ) atau lebih banyak pasangan dewasa-muda: ( dog-puppy, tree-sapling ). Anda juga dapat menjelajahi banyak hubungan lain: sinonim, antonim, saudara kandung, sebab-akibat, mangsa predator, dan sebagainya. Ada juga cara yang bagus untuk menggabungkan beberapa peristiwa ke dalam urutan kronologis dengan hanya melakukan XOR pada alamat pendahulu dan penerus node.Cara menghubungkan konsep XOR adalah hibrida dari teori geometri dan grafik. Dalam teori matematika grafik biasa, jarak dan arah tidak signifikan; satu-satunya hal yang penting adalah ada atau tidak adanya tepi yang menghubungkan antar node. Di SDM, di sisi lain, tepi yang mewakili koneksi antara node adalah vektor dengan panjang terbatas dan directivity dalam1000ruang -dimensi. Untuk node dan tautan yang diberikan, operasi XOR "mengikat" node ini ke posisi tertentu di tempat lain di hypercube. Struktur yang dihasilkan benar-benar kaku - kita tidak dapat memindahkan node tanpa mengubah semua koneksi yang berpartisipasi. Dalam kasus kupu-kupu dan ulat bulu, konfigurasi empat simpul pasti menjadi jajar genjang, di mana pasangan di sisi yang berlawanan memiliki panjang dan arah yang sama.Karakteristik unik lain dari grafik yang terkait dengan operasi XOR adalah bahwa node dan edge memiliki representasi yang sama persis. Dalam sebagian besar implementasi ide-ide komputer dari teori grafik, dua entitas sangat berbeda; sebuah node dapat berupa daftar atribut, dan sebuah edge dapat menjadi sepasang pointer ke node yang terhubung dengannya. Dalam SDM, baik node dan edge hanyalah vektor dimensi tinggi yang dapat disimpan dalam format yang sama.Ketika digunakan sebagai model memori manusia, XOR binding memberi kita kemampuan untuk menghubungkan dua konsep melalui koneksi apa pun yang dapat kita pikirkan. Banyak koneksi di dunia nyata asimetris; mereka tidak memiliki properti self-invertibility yang dimiliki XOR. Vektor XOR dapat menyatakan bahwa Edward dan Victoria adalah orang tua dan anak, tetapi tidak memberi tahu siapa di antara mereka yang siapa. Lebih buruk lagi, vektor XOR menghubungkan tepat dua node dan tidak pernah lagi, sehingga induk dari beberapa anak menempatkan kami pada posisi yang tidak menyenangkan. Kesulitan lain adalah menjaga integritas semua cabang dari grafik besar satu sama lain. Kami tidak bisa begitu saja menambahkan node dan edge; mereka harus dilampirkan ke grafik dalam urutan yang benar. Memasukkan panggung kepompong antara kupu-kupu dan ulat akan membutuhkan penulisan ulang sebagian besar polanya;Anda harus memindahkan beberapa node ke tempat-tempat baru di dalam hypercube dan menghitung ulang vektor koneksi yang menghubungkannya, sambil memastikan bahwa setiap perubahan pada sisi bahasa Inggris mencerminkan dengan benar pada bahasa Prancis.Beberapa masalah ini diselesaikan dengan teknik berbasis XOR lain yang Kanerva sebut bundling. Idenya adalah untuk membuat semacam database untuk menyimpan pasangan atribut-nilai. Entri buku mungkin memiliki atribut seperti penulis , judul, dan penerbit, masing-masing dipasangkan dengan nilai yang sesuai. Tahap pertama dari bundling data adalah XOR yang terpisah dari setiap pasangan atribut-nilai. Kemudian vektor yang diperoleh dari operasi ini digabungkan untuk membuat vektor ringkasan tunggal menggunakan algoritma yang sama yang dijelaskan di atas untuk menyimpan beberapa vektor dalam sel SDM yang solid. Melakukan XOR dari nama atribut dengan vektor gabungan ini, kami memperoleh perkiraan nilai yang sesuai cukup dekat untuk menentukannya dengan metode penarikan rekursif. Dalam percobaan dengan model kanonik, saya menemukan itu1000 Vektor bit dapat menyimpan enam atau tujuh pasangan nilai atribut tanpa banyak risiko kebingungan.Binding dan bundling tidak disebutkan dalam buku Kanerva 1988, tetapi ia membicarakannya secara rinci dalam artikel yang lebih baru. (Lihat bagian "Bacaan Tambahan" di bawah ini.) Ini menunjukkan bahwa dengan dua operator ini, banyak vektor dimensi tinggi mengambil struktur bidang aljabar, atau setidaknya perkiraan untuk bidang. Contoh kanonik bidang adalah seperangkat bilangan real bukan dengan operasi penambahan dan perkalian, serta operator kebalikannya. Bilangan real membuat set tertutup di bawah operasi ini: penjumlahan, pengurangan, perkalian, atau pembagian dua bilangan real memberikan bilangan real lain (dengan pengecualian pembagian dengan nol, yang selalu menjadi pelawak di geladak). Demikian pula, himpunan vektor biner ditutup untuk menghubungkan dan bundling, kecualibahwa kadang-kadang, untuk mengembalikan anggota suatu set, hasil yang diekstraksi dari vektor banding perlu "dibersihkan" oleh proses penarikan rekursif.
Bisakah menautkan dan menggabungkan membantu kita mendapatkan algoritma cloud-wandering? Mereka memberi kami alat dasar untuk menavigasi grafik semantik, termasuk kemampuan untuk melakukan traversal acak. Dimulai dari sembarang simpul dalam grafik XOR yang terhubung, algoritma traversal acak memilih di antara semua tautan yang tersedia di sengatan ini. Pilihan acak dari vektor komunikasi dan eksekusi XOR dari vektor ini dengan alamat simpul membawa kita ke simpul lain di mana prosedur dapat diulang. Demikian pula, dalam pasangan “nilai-nilai” bundling, atribut yang dipilih secara acak memanggil nilai yang sesuai, yang menjadi simpul berikutnya yang sedang diselidiki.Tetapi bagaimana suatu algoritma mengetahui hubungan mana atau algoritma mana yang tersedia untuk seleksi? Hubungan dan atribut diwakili dalam bentuk vektor dan disimpan dalam memori seperti objek lainnya, jadi tidak ada cara yang jelas untuk mendapatkan vektor ini kecuali Anda tahu apa itu sebenarnya. Kita tidak bisa mengatakan memori "tunjukkan semua koneksi." Kita hanya bisa menunjukkan polanya dan bertanya “adakah vektor seperti itu? Pernahkah Anda melihat sesuatu seperti ini? "Dalam memori komputer tradisional, kita bisa mendapatkan dump memori: buka semua alamat dan tampilkan nilai yang ditemukan di setiap tempat. Tetapi untuk memori terdistribusi tidak ada prosedur seperti itu. Fakta yang menyedihkan ini diberikan kepada saya dengan susah payah. Ketika membangun model komputasi SDM, saya berhasil mendapatkan cukup baik untuk mendapatkan kemampuan untuk menyimpan beberapa ribu pola yang dihasilkan secara acak dalam memori saya. Tetapi saya tidak dapat mengekstraknya karena saya tidak tahu harus meminta apa. Solusinya adalah membuat daftar terpisah di luar SDM itu sendiri, di mana semua yang saya simpan akan ditulis. Tetapi anggapan bahwa otak akan menyimpan ingatan dan indeks ingatan ini tampaknya tidak masuk akal. Mengapa tidak menggunakan indeks saja, karena jauh lebih mudah?Karena keterbatasan ini, tampaknya memori terdistribusi jarang dilengkapi untuk melayani indera, tetapi tidak imajinasi. Itu dapat mengenali pola-pola yang sudah dikenal dan menyimpan yang baru yang akan dikenali dalam pertemuan di masa depan bahkan dari sinyal parsial atau rusak. Berkat tautan atau bundling, memori juga dapat melacak tautan antara pasangan item yang disimpan. Tetapi semua yang ditulis dalam memori hanya dapat diambil dengan mengirimkan sinyal yang sesuai.Ketika saya melihat poster Pascasarjana , saya melihat Dustin Hoffman menatap kaki Anne Bancroft dengan kaus kaki. Stimulus visual ini menggairahkan himpunan bagian neuron di korteks serebral, sesuai dengan ingatan saya tentang aktor, karakter, plot, soundtrack dan 1967. Semua aktivitas otak ini dapat dijelaskan oleh arsitektur memori SDM, jika kita mengasumsikan bahwa himpunan bagian neuron dapat direpresentasikan dalam beberapa bentuk abstrak sebagai vektor biner acak yang panjang. Tetapi orang tidak dapat dengan mudah menjelaskan fakta bahwa saya dapat menyebabkan semua sensasi yang sama di otak tanpa melihat gambar ini. Bagaimana saya secara khusus mengekstrak sekuens acak panjang ini dari jalinan besar vektor, tidak tahu persis di mana mereka?
Ini mengakhiri perjalanan panjang saya - sebuah catatan keraguan dan kekecewaan. Tidak mengejutkan Anda bahwa saya tidak berhasil mencapai esensi. Ini adalah topik yang sangat kompleks.Pada hari pertama program Brain and Computing di Simons Institute, Jeff Lichtman, yang bekerja melacak sirkuit di otak tikus, mengajukan pertanyaan: apakah ilmu saraf sudah mencapai momen Watson-Crick? Dalam genetika molekuler, kami telah mencapai titik di mana kami dapat menghilangkan untai DNA dari sel hidup dan membaca banyak pesan di dalamnya. Kita bahkan dapat merekam pesan kita sendiri dan menyisipkannya kembali ke tubuh. Kemampuan serupa dalam ilmu saraf adalah mempelajari jaringan otak dan membaca informasi yang tersimpan di dalamnya - pengetahuan, ingatan, pandangan dunia. Mungkin kita bahkan dapat menulis informasi langsung ke otak.Ilmu pengetahuan bahkan tidak mendekati pencapaian tujuan ini, dengan sukacita banyak orang. Termasuk saya: Saya tidak ingin pikiran saya tersedot keluar dari kepala saya melalui elektroda atau pipet dan digantikan oleh #fakenews. Namun, saya benar - benar ingin tahu cara kerja otak.Program Simons Institute telah membutakan saya dengan keberhasilan neuroscience baru-baru ini, tetapi juga membuat saya sadar bahwa salah satu pertanyaan paling serius masih belum terjawab. Proyek-proyek konektivitas Lichtmann dan lainnya membuat peta terperinci jutaan neuron dan koneksi mereka. Teknik-teknik perekaman baru memungkinkan kita untuk mendengarkan sinyal yang dipancarkan oleh neurosit individu dan mengikuti gelombang eksitasi melintasi area luas otak. Kami memiliki katalog jenis neuron yang cukup komprehensif dan kami tahu banyak tentang fisiologi dan biokimia mereka. Semua ini mengesankan, tetapi masih ada teka-teki. Kita dapat merekam sinyal saraf, tetapi sebagian besar kita tidak tahu apa artinya. Kita tidak tahu bagaimana informasi dikodekan dan disimpan di otak. Ini mirip dengan mencoba memahami diagram sirkuit komputer digital tanpa pengetahuan tentang aritmatika biner dan logika Boolean.Model memori terdistribusi Pentti Canerva yang jarang adalah salah satu upaya untuk mengisi beberapa celah ini. Ini bukan satu-satunya upaya seperti itu. Alternatif yang lebih dikenal adalah pendekatan John Hopfield - konsep jaringan saraf sebagai sistem dinamis, mengambil bentuk penarik meminimalkan energi. Kedua ide ini memiliki prinsip dasar yang sama: informasi tersebar di sejumlah besar neuron dan dikodekan dalam bentuk yang tidak jelas bagi pengamat eksternal, bahkan ia akan mendapatkan akses ke semua neuron dan sinyal yang melewatinya. Skema serupa, yang pada dasarnya matematika dan komputasi, secara konseptual terletak di tengah antara psikologi tingkat tinggi dan teknik saraf tingkat rendah. Lapisan ini mengandung nilai.Bacaan tambahanHopfield, JJ (1982). Neural networks and physical systems with emergent collective computational abilities.
Proceedings of the National Academy of Sciences 79(8):2554–2558.
Kanerva, Pentti. 1988.
Sparse Distributed Memory . Cambridge, Mass.: MIT Press.
Kanerva, Pentti. 1996. Binary spatter-coding of ordered
K -tuples. In C. von der Malsburg, W. von Seelen, JC Vorbruggen and B. Sendhoff, eds.
Artificial Neural Networks—ICANN 96 Proceedings , pp. 869–873. Berlin: Springer.
Kanerva, Pentti. 2000. Large patterns make great symbols: An example of learning from example. In S. Wermter and R. Sun, eds.
Hybrid Neural Systems , pp. 194–203. Heidelberg: Springer.
PDFKanerva, Pentti. 2009. Hyperdimensional computing: An introduction to computing in distributed representation with high-dimensional random vectors.
Cognitive Computation 1(2):139–159.
PDFKanerva, Pentti. 2010. What we mean when we say “What's the Dollar of Mexico?”: Prototypes and mapping in concept space. Report FS-10-08-006, AAAI Fall Symposium on Quantum Informatics for Cognitive, Social, and Semantic Processes.
PDFKanerva, Pentti. 2014. Computing with 10,000-bit words. Fifty-second Annual Allerton Conference, University of Illinois at Urbana-Champagne, October 2014.
PDF Plate, Tony. 1995. Holographic reduced representations. IEEE Transactions on Neural Networks 6(3):623–641. PDF
Plate, Tony A. 2003. Holographic Reduced Representation: Distributed Representation of Cognitive Structure . Stanford, CA: CSLI Publications.