Baru-baru ini saya menemukan ide yang diajukan oleh Jaron Lanier yang disebut "pemrograman fenotropik."
Idenya adalah menggunakan antarmuka 'permukaan' alih-alih antarmuka titik tunggal dalam program komputer yang menggunakan statistik untuk menghilangkan kesalahan kecil yang biasanya akan menyebabkan program "klasik" hancur berantakan.
Deskripsi dua baris ada di sini:
Menurut Jaron, 'perbedaan nyata antara ide perangkat lunak saat ini, yaitu kepatuhan protokol, dan ide yang sedang dia diskusikan, pengenalan pola, berkaitan dengan jenis kesalahan yang kita buat' dan jika 'kita tidak "Kami tidak akan menemukan cara berpikir yang berbeda tentang dan membuat perangkat lunak, kami tidak akan menulis program yang lebih besar dari sekitar 10 juta baris kode, tidak peduli seberapa cepat prosesor kami."
Penjelasan yang sedikit lebih panjang ada di sini . Dan penjelasan yang lebih panjang ada di sini .
Jadi, pertanyaannya, melihat melewati konotasi robot-tuan yang jelas yang cenderung dipilih orang, bagaimana orang benar-benar merancang dan menulis "program fenotropik?"
phenotropic program
?Jawaban:
Lanier telah menemukan kata 50 sen dalam upaya untuk melebarkan jaring di sekitar seperangkat ide tertentu yang menggambarkan model komputasi untuk membuat program komputer yang memiliki karakteristik tertentu yang dapat diidentifikasi.
Kata itu berarti:
Idenya sebagian besar berasal dari biologi. Mata Anda berinteraksi dengan dunia, bukan melalui fungsi seperti
See(byte[] coneData)
, tetapi melalui permukaan yang disebut retina. Itu bukan perbedaan sepele; komputer harus memindai semua byte dalamconeData
satu per satu, sedangkan otak Anda memproses semua input secara bersamaan.Lanier mengklaim bahwa antarmuka yang terakhir lebih toleran terhadap kesalahan, karena itu (satu bit yang tergelincir
coneData
dapat merusak seluruh sistem). Dia mengklaim bahwa itu memungkinkan pencocokan pola dan sejumlah kemampuan lain yang biasanya sulit untuk komputer, yang memang demikian.Mekanisme "fenotropis" klasik dalam sistem komputer adalah Jaringan Syaraf Tiruan (JST). Dibutuhkan "permukaan" sebagai input, bukan Antarmuka yang ditentukan. Ada teknik-teknik lain untuk mencapai beberapa ukuran pengenalan pola, tetapi jaringan saraf adalah yang paling selaras dengan biologi. Membuat ANN itu mudah; sulit untuk melakukan tugas yang ingin Anda lakukan dengan andal itu sulit, karena sejumlah alasan:
Jika Anda ingin berpisah dengan biologi, Anda dapat membuang model biologis (yang mencoba mensimulasikan operasi neuron biologis yang sebenarnya) dan membangun jaringan yang lebih erat bersekutu dengan "neuron" sebenarnya dari sistem komputer digital (logika). gerbang). Jaringan-jaringan ini disebut Adaptive Logic Networks (ALN). Cara kerjanya adalah dengan membuat serangkaian fungsi linier yang memperkirakan kurva. Prosesnya terlihat seperti ini:
... di mana sumbu X mewakili beberapa input ke ALN, dan sumbu Y mewakili beberapa output. Sekarang bayangkan jumlah fungsi linier meluas sesuai kebutuhan untuk meningkatkan akurasi, dan bayangkan proses yang terjadi di dimensi yang sewenang-wenang, diimplementasikan seluruhnya dengan gerbang logika AND dan OR, dan Anda memiliki gambaran seperti apa bentuk ALN.
ALNs memiliki karakteristik tertentu yang sangat menarik:
Jadi program fenotropik akan terlihat seperti ini; itu akan memiliki "permukaan" untuk input, arsitektur dan perilaku yang dapat diprediksi, dan itu akan toleran terhadap input berisik.
Bacaan Lebih Lanjut
Pengantar Jaringan Adaptif Logika Dengan Aplikasi untuk Mengaudit Penilaian Risiko
"Berorientasi Objek" vs "Berorientasi Pesan," oleh Alan Kay
sumber
See(List<Cone> cones)
(di mana masingCone
- masing independen satu sama lain), ya?Saya pikir kita berada di awal dari salah satu langkah yang diperlukan untuk sampai ke sana dan itu mengumpulkan banyak data dalam format yang dapat dianalisis. Internet, pencarian Google, Fitbit (Setiap langkah yang Anda ambil, setiap langkah yang Anda lakukan, saya akan mengawasi Anda.), FourSquare, lokasi geo ponsel pintar, posting Facebook, dan data pertanyaan SO semuanya dikumpulkan. Kita tidak berada di dekat jumlah data sensorik yang dikompilasi rata-rata manusia sepanjang hidup, tapi kita semakin dekat.
Mulai kategorikan jutaan gambar burung dan dapatkan umpan balik dari orang-orang yang mengatakan kepada Anda bahwa itu bukan burung dan Anda dapat mulai membuat algoritma. Dari sana kesan yang lebih kabur (saya akan menyebutnya model, tapi itu terlalu tepat untuk apa yang kami coba kode.) Dapat dibuat.
Bagaimana anjing peliharaan tahu banyak tentang pemiliknya? Karena itu sangat memperhatikannya. Anjing telah mendengarkan mobil yang masuk ke jalan masuk dan menghubungkannya dengan pemilik yang membuka pintu depan yang terlihat seperti anjing dapat mengenali mobil dari suaranya. Kami bisa melakukan ini juga, tetapi kami tidak melihat alasan untuk melakukan ini. Dan itulah yang salah dengan perangkat lunak saat ini, tidak memperhatikan apa yang dilakukan pengguna. Itu hanya menunggu pengguna untuk melakukan apa yang diharapkan pengguna.
Sesuatu yang sederhana seperti menyetel jam alarm dapat dilakukan dengan sedikit pengamatan / analisis kebiasaan saya saat ini. Kami menyerah pada pengaturan pengatur waktu VCR sebelum teknologi digantikan oleh digital. Dan apakah itu akan terjadi secepat kita bisa menghubungkan TV Guide dengan VCR? Saya telah menonton acara TV yang sama 4 minggu berturut-turut pada saat yang sama, tetapi yang ke 5 saya bahkan tidak menyalakan TV. Jelas saya ingin itu direkam. Tidak bisakah Anda memberi tahu bahwa saya tinggal lembur di tempat kerja untuk menulis posting ini dan dengan perjalanan pulang pergi yang khas tidak akan sampai tepat waktu? Anda sudah mendapatkan datanya, lakukan perhitungannya.
Kumpulkan lebih banyak data dan kemudian Anda bisa menemukan cara yang lebih baik untuk menganalisis, mengenali, dan menyamarkannya. Kita melampaui apa yang bisa menjadi input hanya dari keyboard dengan kamera ponsel kita dan segera kamera kaca mata. Ini hanya permulaan.
sumber
Berikut ini adalah set slide untuk mendefinisikan Bahasa Pemrograman Probabilistik di Scala .
Ini adalah contoh implementasi pertama yang layak untuk beberapa komponen inti ke sistem yang diusulkan Jaron Lanier.
sumber
Sebuah pemikiran yang saya miliki baru-baru ini:
Jika Anda menggunakan ide tingkat tinggi seperti Haskell's Maybe Monad untuk membungkus panggilan prosedur jarak jauh ke sistem lain. Anda mengirim permintaan ke server. Tapi tidak ada yang kembali (server rusak). Atau Janji kembali (server sedang sibuk) dan program Anda terus bekerja dengan nilai Tidak Ada atau yang Dijanjikan itu. Itu seperti toleransi kesalahan yang dicari Lanier.
Mungkin ada cara untuk merangkum peristiwa-peristiwa lain. Misalnya panggilan jarak jauh yang kembali dengan perkiraan yang semakin disempurnakan dari waktu ke waktu oleh semacam negosiasi latar belakang. yaitu. apa yang muncul kembali adalah sesuatu seperti Janji tetapi tidak hanya "terus bertahan dan bekerja dengan ini dan nilai yang tepat akan segera muncul" tetapi "terus bertahan dan bekerja dengan ini dan perkiraan yang lebih baik akan segera muncul". (Dan lagi, dan lagi). Ini akan dapat menyembunyikan banyak kesalahan dari programmer, seperti halnya protokol jaringan menyembunyikan banyak kegagalan jaringan level rendah dari programmer.
sumber