Cara membuat kecerdasan buatan yang paling sederhana. Apakah mungkin melakukan inseminasi di rumah? Yang terpenting adalah mencoba membuat bot sendiri

Pertanyaan utama bagi pengembang adalah bahasa apa yang harus dipilih untuk membuat AI? Kami akan melihat bahasa populer yang digunakan untuk membuat AI.

Hanya namanya « kecerdasan buatan» dapat membuat Anda pingsan dan menimbulkan banyak ketakutan pada keduanya orang biasa, dan seorang programmer biasa. Tugasnya benar-benar rumit, dan contoh-contoh indah yang ditunjukkan adalah hasil dari ribuan baris kode. Dengan semua ciptaan ini AI bisa menjadi tugas yang sangat nyata, dan dalam beberapa kasus, bahkan sederhana. Banyak proyek yang memerlukan pengetahuan yang mendalam AI, serta bahasa pemrograman.

PELAT

Nenek moyang bahasa pemrograman tempat kecerdasan buatan mulai diciptakan adalah PELAT. LISP dibedakan berdasarkan fleksibilitas penggunaan dan kemudahan perluasan fungsionalitas. Memiliki kemampuan untuk membuat prototipe dan menyiapkan makro dengan cepat telah menghemat banyak waktu dan membawa banyak manfaat bagi AI.

PELAT menjadi bahasa universal, yang mampu mengatasi tugas-tugas yang relatif berat dan ringan dengan baik. Ini memiliki sistem berkualitas tinggi dan canggih berorientasi objek, yang memungkinkan kami mengambil salah satu posisi terdepan dalam pengembangan AI.

Jawa

Keuntungan terbesar dari bahasa ini adalah keserbagunaannya, antara lain:

  • transparansi penggunaan dan penulisan kode;
  • kemampuan untuk mentransfer program dengan mudah;
  • dukungan proyek yang mudah.

Untuk pemula, keuntungan penting dari Java adalah kehadirannya yang banyak pelajaran gratis on line. pelatihan Jawa senyaman dan senyaman mungkin bagi sebagian besar pelajar dan pemula.

Di antara fitur-fitur bahasa yang perlu disoroti:

  • kemudahan debugging;
  • interaksi berkualitas tinggi antara klien dan sistem server sumber;
  • kemudahan penanganan proyek skala besar.

Saat membuat proyek di Java, pengguna dihadapkan pada tampilan yang lebih menarik dan antarmuka yang dapat diakses, yang selalu menarik perhatian penonton.

Prolog

Opsi ini mengacu pada bahasa interaktif yang bekerja menggunakan sistem simbolik. Ini populer untuk digunakan dalam proyek-proyek yang membutuhkan kemampuan logika tinggi. Bahasa ini memiliki dasar yang kuat dan mudah digunakan, dan digunakan secara aktif dalam kaitannya dengan pemrograman tipe non-numerik. Berdasarkan Prolog pembuktian teorema sering dibuat, interaksi dilakukan dengan dapat dimengerti bahasa manusia, digunakan untuk membuat sistem penilaian ahli.

Prolog mengacu pada jenis bahasa deklaratif yang menggunakan formal atau kiasan " pemikiran" AI telah mendapatkan reputasi yang baik di kalangan pengembang karena jenis pekerjaan obstruktifnya yang optimal, algoritma analisis bawaan, non-determinisme, dll. Semuanya bisa diringkas seperti ini: Prolog- platform multifungsi untuk pemrograman AI.

ular piton

Ini secara aktif digunakan dalam pemrograman karena sintaksisnya yang bersih dan struktur tata bahasa program yang logis dan ketat. Desain yang ramah pengguna juga memainkan peran penting.

Hal ini didasarkan pada banyak hal algoritma struktural, kerangka debugging yang tak terhitung jumlahnya, kinerja optimal interaksi antara rendah dan tingkat tinggi menulis kode. Semua keunggulan di atas memberikan pengaruh yang diperlukan dalam bidang penciptaan kecerdasan buatan.

Sejarah perkembangan AI

Awal dari pertunjukan tradisional AI menjadi proyek UNIMATE, yang melihat dunia 1961. Pada pemaparan tersebut, robot pertama kali diproduksi dan mulai diproduksi dalam skala industri. Robot itu digunakan di jalur produksi yang menjadi perhatian " Motor Umum" Val dan variabel dari lingkungan assembler digunakan untuk pembuatan. Saya menyukai bahasanya karena adanya frasa sederhana, refleksi perintah di monitor, dan adanya instruksi yang tidak memerlukan penjelasan tambahan.

4 tahun kemudian ( 1965) kecerdasan buatan "Dendral" diluncurkan. Tugas sistem ini adalah mengidentifikasi struktur molekul dan atom senyawa asal organik. Digunakan untuk menulis PELAT.

« Weizenbaum“Pada tahun 1966, ia meluncurkan proyek Eliza, yang untuk pertama kalinya melibatkan percakapan dengan robot. Model yang paling terkenal adalah “Dokter”, yang memungkinkan Anda menjawab pertanyaan dalam bentuk psikoterapis. Untuk melaksanakan proyek tersebut, perlu membandingkan beberapa contoh pencapaian teknis pada masanya. Eliza pertama kali melihat dunia di SPLIP, tetapi Weizenbaum diluncurkan untuk menyempurnakan daftarnya. Beberapa saat kemudian proyek tersebut didesain ulang untuk platform lain - PELAT.

Robot pertama tipe seluler menjadi " Sheki", itu juga berdasarkan LISP. Logika perancang dibangun pada penyelesaian tugas yang diberikan dan gerakan untuk interaksi, naik dan turun, serta menyalakan dan mematikan lampu, digunakan. Dengan menggunakan " Sheki“Bisa dibuka, ditutup, dipindahkan, dan sebagainya. Robot tersebut bahkan mampu bergerak dengan kecepatan yang setara dengan kecepatan berjalan tenang seseorang - 5 km/jam.

Di masa lalu 15 tahun Berbagai penemuan dipresentasikan: “ Menyangkal"(robot penjaga)," Pemangsa"(drone)," AIBO" (anjing), " ASIMO"dari Honda dan banyak lainnya. Trennya mengarah pada pembangunan arah ini, yang merupakan hal yang dapat kita harapkan dalam waktu dekat dan jauh.

Meskipun pemrogram bisa mendapatkan uang dengan memprogram, AI yang ada bukanlah AI, tidak peduli bungkus permen apa yang digantungkan pada mereka. Opsi yang saya usulkan dapat mengatasi masalah ini.

Sebagai hasil dari penelitian saya, saya berhenti menggunakan frasa “kecerdasan buatan” karena terlalu kabur dan sampai pada rumusan yang berbeda: algoritma belajar mandiri, penelitian dan penerapan hasil yang ditemukan untuk memecahkan masalah yang mungkin terjadi.

Apa itu AI, sudah banyak yang menulis tentang ini. Saya mengajukan pertanyaan secara berbeda, bukan “apa itu AI”, tapi “mengapa AI dibutuhkan?” Saya membutuhkannya untuk menghasilkan banyak uang, agar komputer dapat melakukan segala hal yang tidak ingin saya lakukan sendiri, kemudian membangun pesawat luar angkasa dan terbang ke bintang-bintang.

Nah disini saya akan menjelaskan bagaimana caranya agar komputer bisa memenuhi keinginan kita. Jika Anda berharap untuk melihat di sini gambaran atau penyebutan tentang cara kerja kesadaran, apa itu kesadaran diri, apa artinya berpikir atau bernalar, maka ini bukan di sini. Berpikir bukanlah tentang komputer. Komputer menghitung, menghitung, dan menjalankan program. Jadi mari kita pikirkan bagaimana membuat sebuah program yang dapat menghitung urutan tindakan yang diperlukan untuk mewujudkan keinginan kita.

Dalam bentuk apa tugas kita masuk ke komputer - melalui keyboard, melalui mikrofon, atau dari sensor yang ditanamkan di otak - ini tidak penting, ini masalah sekunder. Jika kita bisa membuat komputer memenuhi keinginan yang tertulis dalam teks, maka kita bisa mengatur tugasnya sehingga membuat program yang juga memenuhi keinginan, tapi melalui mikrofon. Analisis gambar juga tidak diperlukan.

Mengklaim bahwa agar AI yang diciptakan dapat mengenali gambar dan suara, algoritma tersebut harus disertakan terlebih dahulu di dalamnya, sama dengan mengklaim bahwa setiap orang yang menciptakannya mengetahui sejak lahir bagaimana program tersebut bekerja.

Mari kita rumuskan aksiomanya:
1. Segala sesuatu di dunia ini dapat dihitung menurut beberapa aturan. (tentang kesalahan nanti)
2. Perhitungan menurut aturan adalah ketergantungan yang jelas dari hasil pada data awal.
3. Ketergantungan yang tidak ambigu dapat ditemukan secara statistik.
Dan sekarang pernyataannya:
4. Terdapat fungsi untuk mengubah teks deskripsi menjadi aturan - sehingga tidak perlu mencari ilmu yang sudah lama ditemukan.
5. Ada fungsi untuk mengubah masalah menjadi solusi (inilah pemenuhan keinginan kita).
6. Aturan prediksi data arbitrer mencakup semua aturan dan fungsi lainnya.

Mari kita terjemahkan ini ke dalam bahasa programmer:
1. Segala sesuatu di dunia ini dapat dihitung menggunakan beberapa algoritma.
2. Algoritma selalu memberikan hasil yang sama ketika mengulang data aslinya.
3. Jika ada banyak contoh data awal dan hasilnya, maka dengan waktu pencarian yang tak terbatas, Anda dapat menemukan seluruh rangkaian algoritma yang mungkin mengimplementasikan ketergantungan antara data awal dan hasilnya.
4. Terdapat algoritma untuk mengubah deskripsi teks menjadi algoritma (atau data informasi lainnya) - agar tidak mencari algoritma yang diperlukan secara statistik, jika seseorang telah menemukan dan mendeskripsikannya.
5. Anda dapat membuat program yang dapat memenuhi keinginan kita, baik dalam bentuk teks maupun bentuk suara, asalkan keinginan tersebut diwujudkan secara fisik dan dalam jangka waktu yang diperlukan.
6. Jika Anda berhasil membuat program yang dapat memprediksi dan belajar memprediksi ketika data baru masuk, maka setelah waktu yang tidak terbatas, program tersebut akan mencakup semua algoritma yang mungkin ada di dunia kita. Nah, jika waktunya tidak terbatas untuk penggunaan praktis dan dengan beberapa kesalahan, maka dapat dipaksa untuk menjalankan algoritma program pada langkah 5 atau yang lainnya.

Dan satu hal lagi, IMHO:
7. Tidak ada cara lain untuk belajar sepenuhnya secara mandiri dan mandiri dari seseorang, kecuali dengan mencari aturan dengan kekerasan dan mengujinya secara statistik untuk prediksi. Dan Anda hanya perlu mempelajari cara menggunakan properti ini. Properti ini adalah bagian dari cara kerja otak.

Apa yang perlu diprediksi. DI DALAM otak manusia sejak lahir, aliran informasi mulai mengalir - dari mata, telinga, sentuhan, dll. Dan semua keputusan dibuat olehnya berdasarkan data yang diterima sebelumnya. Dengan analogi, kita membuat sebuah program yang memiliki masukan informasi baru satu byte pada satu waktu - aliran masukan byte demi byte. Segala sesuatu yang diterima sebelumnya disajikan dalam satu daftar yang berkesinambungan. Dari 0 hingga 255 akan tiba informasi eksternal, dan lebih dari 255 akan kami gunakan sebagai penanda kontrol khusus. Itu. Inputnya memungkinkan Anda menulis, katakanlah, dimensi angka hingga 0xFFFF. Dan aliran inilah, atau lebih tepatnya jumlah informasi tambahan berikutnya, yang perlu kita pelajari untuk memprediksi, berdasarkan data yang diterima sebelumnya. Itu. program harus mencoba menebak nomor berikutnya yang akan ditambahkan.

Tentu saja, pilihan lain untuk menyajikan data dimungkinkan, tetapi untuk tujuan ketika inputnya paling banyak berbagai format, kita cukup meletakkan berbagai html dengan deskripsi di sana terlebih dahulu, ini yang paling optimal. Meskipun penanda dapat diganti dengan rangkaian escape untuk tujuan optimasi, penanda tersebut kurang mudah untuk dijelaskan. (Dan juga, bayangkan semuanya dalam ASCII, bukan UTF).

Jadi, pertama-tama, seperti saat lahir, kami memasukkan semua halaman Internet dengan deskripsi ke sana dan memisahkannya dengan penanda teks baru - - agar kotak hitam ini dapat mempelajari semuanya. Saya akan menunjukkan penanda dengan tag, tetapi dipahami bahwa itu hanyalah semacam nomor unik. Setelah sejumlah data tertentu berlalu, kami mulai memanipulasi informasi yang masuk menggunakan penanda kontrol.

Yang saya maksud dengan peramalan adalah suatu algoritma yang tidak hanya mengetahui pola apa yang sudah ada, tetapi juga terus-menerus mencari pola baru. Dan oleh karena itu, jika Anda mengirimkan urutannya ke input program semacam itu
langit biru
rumput hijau
langit-langit
, lalu dia harus mencari tahu apa yang ada di balik penanda itu mengikuti warna dari objek yang ditentukan sebelumnya, dan sebagai pengganti elipsis, ia memprediksi warna langit-langit yang paling mungkin.

Kami mengulangi beberapa contoh kepadanya sehingga dia memahami fungsi mana yang perlu diterapkan dalam tag ini. Dan warna itu sendiri, tentu saja, tidak boleh dia ciptakan, tetapi harus sudah mengetahuinya, setelah mempelajarinya secara mandiri dengan menghitung pola dalam peramalan.

Ketika jawaban diperlukan dari algoritma, masukan dari langkah selanjutnya adalah prediksi dari langkah sebelumnya. Ketik auto-forecasting (mirip dengan kata autokorelasi). Dan pada saat yang sama kami menonaktifkan fungsi pencarian untuk urutan baru.

Contoh lainnya, Anda dapat menunjukkan pertanyaan setelah penanda pertama, dan jawabannya di penanda kedua, lalu jika algoritme ini sangat keren, algoritme ini akan mulai memberikan jawaban bahkan untuk pertanyaan yang paling rumit sekalipun. Sekali lagi, dalam batas fakta yang telah dipelajari.

Anda dapat menemukan banyak trik berbeda dengan penanda kontrol yang dimasukkan ke masukan mekanisme prediktif, dan mendapatkan fungsi apa pun yang diinginkan. Jika Anda bosan membaca tentang alasan algoritmik untuk properti ini, Anda dapat menggulir ke contoh berikut dengan penanda kontrol.

Terdiri dari apa kotak hitam ini? Pertama, perlu disebutkan bahwa tidak mungkin membuat prediksi seratus persen selalu dan dalam semua situasi. Sebaliknya jika hasilnya selalu menghasilkan angka nol, maka ini juga merupakan ramalan. Meskipun dengan kesalahan seratus persen. Sekarang mari kita hitung dengan probabilitas berapa, angka berapa, angka berikutnya berapa. Untuk setiap nomor, kemungkinan besar nomor berikutnya akan ditentukan. Itu. kita bisa memperkirakannya sedikit. Ini adalah langkah awal dari perjalanan yang sangat panjang.

Pemetaan yang tidak ambigu antara data masukan dengan hasil suatu algoritma, hal ini sesuai dengan definisi matematis dari kata fungsi, hanya saja definisi suatu algoritma tidak tunduk pada kepastian kuantitas dan penempatan data masukan dan keluaran. Contohnya juga, misalkan ada piring kecil: warna objek, kita akan meletakkan banyak garis di dalamnya: biru langit, hijau rumput, putih langit-langit. Ini ternyata merupakan fungsi pemetaan satu-ke-satu lokal yang kecil. Dan tidak masalah bahwa kenyataannya warnanya sering kali tidak sama - akan ada meja lain di sana. Dan database apa pun yang berisi properti tersimpan dari sesuatu adalah sekumpulan fungsi, dan memetakan pengidentifikasi objek ke propertinya.

Untuk menyederhanakan, lebih lanjut dalam banyak situasi, alih-alih menggunakan istilah algoritma, saya akan menggunakan istilah fungsi, seperti fungsi satu parameter, kecuali ditentukan lain. Dan semua penyebutan seperti itu perlu dipahami sebagai perluasan algoritma.

Dan saya akan memberikan gambaran kasarnya, karena... pada kenyataannya, saya belum menerapkan semua ini... Tapi semuanya logis. Perlu juga diingat bahwa semua perhitungan dilakukan berdasarkan koefisien, dan bukan benar atau salah. (bahkan mungkin jika disebutkan dengan jelas mana yang benar dan salah).

Algoritme apa pun, terutama yang beroperasi pada bilangan bulat, dapat didekomposisi menjadi serangkaian kondisi dan transisi di antara keduanya. Operasi penjumlahan, perkalian, dll. juga didekomposisi menjadi subalgoritma kondisi dan transisi. Dan operator hasil lainnya. Ini bukan pernyataan pengembalian. Operator kondisional mengambil nilai dari suatu tempat dan membandingkannya dengan nilai konstan. Dan operator hasil menambahkan nilai konstan di suatu tempat. Lokasi pengambilan atau lipatan dihitung relatif terhadap titik dasar atau relatif terhadap langkah algoritma sebelumnya.

Struktur t_node ( tipe int; // 0 - kondisi, 1 - penyatuan hasil ( struct ( // operator kondisi t_node* source_get; t_value* bandingkan_nilai; t_node* next_if_then; t_node* next_if_else; ); struct ( // operator hasil t_node* dest_set ;
Di luar kepalaku, kira-kira seperti ini. Dan dari elemen-elemen tersebut algoritma dibangun. Hasil dari semua penalaran tersebut akan diperoleh struktur yang lebih kompleks, dan ini untuk presentasi awal.

Setiap titik prediksi dihitung menggunakan beberapa fungsi. Suatu fungsi memiliki kondisi yang melekat padanya yang menguji apakah fungsi tersebut berlaku pada titik tersebut. Penggabungan umum mengembalikan salah - tidak berlaku, atau hasil perhitungan fungsi. Dan peramalan aliran berkelanjutan adalah pemeriksaan berurutan terhadap penerapan semua fungsi yang telah ditemukan dan penghitungannya, jika benar. Begitu seterusnya untuk setiap poin.

Selain syarat penerapan, ada juga jaraknya. Antara data awal dan hasil, jarak ini bisa berbeda, dengan fungsi yang sama diterapkan tergantung kondisi. (Dan dari kondisi ke awal atau prediksi juga ada jarak; kita tersirat, tapi hilangkan dalam penjelasan. Dan jarak bisa bersifat dinamis).

Saat terakumulasi jumlah besar fungsi, jumlah kondisi yang menguji penerapan fungsi ini akan meningkat. Namun, dalam banyak kasus, kondisi ini dapat disusun dalam bentuk pohon, dan pemotongan rangkaian fungsi akan terjadi sebanding dengan ketergantungan logaritmik.

Ketika pembuatan dan pengukuran awal fungsi dilakukan, alih-alih operator hasil, distribusi hasil aktual diakumulasikan. Setelah mengumpulkan statistik, kami mengganti distribusi dengan hasil yang paling mungkin, dan mengawali fungsi dengan suatu kondisi, juga menguji kondisi untuk probabilitas hasil maksimum.

Ini adalah pencarian fakta korelasi tunggal. Setelah mengumpulkan banyak single seperti itu, kami mencoba menggabungkannya ke dalam grup. Mari kita lihat mana yang bisa kita pilih: kondisi umum dan jarak total dari nilai asli ke hasil. Dan juga, kami memeriksa bahwa dalam kondisi dan jarak seperti itu, dalam kasus lain di mana nilai aslinya diulang, tidak ada distribusi hasil yang luas. Itu. dalam penggunaan tertentu yang sering, ini sangat identik.

Koefisien identitas. (Di sini ada identitas dua arah. Namun lebih sering bersifat satu arah. Saya akan memikirkan kembali rumusnya nanti.)
Banyaknya setiap pasangan XY dikuadratkan dan dijumlahkan.
Bagi dengan: jumlah kuadrat setiap nilai X ditambah jumlah kuadrat Y dikurangi pembagiannya.
Itu. JUMLAH(XY^2) / (JUMLAH(X^2) + JUMLAH(Y^2) - JUMLAH(XY^2)).
Koefisien ini berkisar dari 0 hingga 1.

Dan sebagai hasilnya, apa yang terjadi. Dengan menggunakan fakta berfrekuensi tinggi, kami yakin bahwa dalam kondisi dan jarak seperti ini, fakta tersebut tidak ambigu. Dan fakta langka lainnya - tetapi totalnya akan lebih banyak daripada fakta yang sering terjadi - memiliki kesalahan yang sama dengan fakta yang sering ditemui dalam kondisi ini. Itu. kita dapat mengumpulkan dasar perkiraan berdasarkan fakta-fakta tunggal yang ditemui dalam kondisi ini.

Biarlah ada basis pengetahuan. Langit sering kali berwarna biru, dan sampah tropis langka terlihat di suatu tempat berwarna abu-abu kecoklatan-merah tua. Dan mereka ingat, karena... Kami memeriksa aturannya - ini dapat diandalkan. Dan prinsipnya tidak tergantung pada bahasanya, baik itu bahasa Cina atau bahasa asing. Dan nantinya, setelah memahami kaidah penerjemahan, akan dimungkinkan untuk menyadari bahwa satu fungsi dapat dirangkai bahasa yang berbeda. Perlu diingat bahwa basis pengetahuan juga dapat direpresentasikan dalam bentuk algoritma - jika nilai asli begini dan begitu, maka hasilnya begini dan begitu.

Selanjutnya, sebagai hasil dari penghitungan aturan-aturan lain, kita menemukan bahwa dalam pengaturan dan kondisi yang berbeda, identitas yang sudah terlihat muncul. Dan sekarang kita tidak perlu mengetik basis data yang besar untuk mengonfirmasi identitas, cukup mengetikkan selusin fakta individu, dan melihat bahwa dalam sepuluh fakta ini, pemetaan terjadi ke nilai yang sama dengan fungsi sebelumnya. Itu. fungsi yang sama digunakan dalam kondisi lain. Properti ini berarti bahwa dalam deskripsi kita dapat mendeskripsikan properti yang sama dengan ekspresi yang berbeda. Dan terkadang mudah untuk mencantumkannya dalam tabel di halaman Internet. Selanjutnya, pengumpulan fakta pada fungsi ini dapat dilakukan untuk beberapa kasus penggunaan.

Ada akumulasi kemungkinan berbagai kondisi dan lokasi relatif terhadap fungsi, dan Anda juga dapat mencoba menemukan polanya. Tidak jarang, aturan pemilihannya serupa untuk fungsi yang berbeda, hanya berbeda pada beberapa atribut (misalnya, kata yang mengidentifikasi properti atau judul dalam tabel).

Secara umum, kami menemukan banyak fungsi satu parameter. Dan sekarang, seperti dalam pembentukan fakta tunggal menjadi fakta berparameter tunggal, sama saja di sini, kita akan mencoba mengelompokkan fakta berparameter tunggal berdasarkan sebagian kondisi dan sebagian jarak. Bagian yang umum adalah kondisi baru, dan bagian yang berbeda adalah parameter kedua dari fungsi baru - fungsi dua parameter, dimana parameter pertama akan menjadi parameter satu parameter.

Ternyata setiap parameter baru dalam multiparameter ditemukan dengan linearitas yang sama dengan pembentukan fakta tunggal menjadi fakta tunggal (baik, atau hampir sama). Itu. menemukan parameter-N sebanding dengan N. Yang, dalam mengejar sangat banyak parameter, hampir menjadi jaringan saraf. (Siapa pun yang ingin memahaminya.)

Fungsi konversi.

Tentu saja, sangat menyenangkan ketika kami diberikan banyak contoh yang sesuai, misalnya teks kecil terjemahan dari bahasa Rusia ke bahasa Inggris. Dan Anda dapat mulai mencoba menemukan pola di antara keduanya. Namun pada kenyataannya, semuanya tercampur dalam aliran informasi yang masuk.

Jadi kami mengambil satu fungsi dan menemukan jalur antar data. Kedua dan ketiga. Sekarang mari kita lihat apakah di antara mereka, salah satunya, kita dapat menemukan bagian jalan yang sama. Cobalah untuk menemukan struktur X-P1-(P2)-P3-Y. Dan kemudian, temukan struktur serupa lainnya, dengan X-P1 dan P3-Y serupa, tetapi P2 berbeda. Dan kemudian kita dapat menyimpulkan bahwa kita sedang berhadapan dengan struktur yang kompleks, di mana terdapat ketergantungan. Dan kami akan menggabungkan kumpulan aturan yang ditemukan, dikurangi bagian tengah, ke dalam grup dan menyebutnya fungsi konversi. Dengan cara ini, penerjemahan, kompilasi, dan entitas kompleks lainnya terbentuk.

Di sini, ambil selembar teks Rusia dan terjemahannya ke dalam bahasa asing. Tanpa tutorial, sangat sulit untuk menemukan pemahaman tentang aturan penerjemahan dari lembar ini. Tapi itu mungkin. Dan sama seperti yang Anda lakukan, hal ini perlu diformalkan menjadi algoritma pencarian.

Ketika saya berurusan dengan fungsi sederhana, lalu saya akan terus memikirkan penelusuran konversi hingga saya memiliki sketsa dan pemahaman bahwa hal ini juga mungkin.

Selain pencarian fungsi statistik, Anda juga dapat membentuknya dari deskripsi, menggunakan fungsi konversi menjadi aturan - fungsi membaca. Statistik untuk penciptaan awal fungsi membaca dapat ditemukan berlimpah di Internet dalam buku teks - korelasi antara deskripsi dan aturan yang diterapkan pada contoh dalam deskripsi tersebut. Itu. ternyata algoritma pencarian harus melihat sumber data dan aturan yang diterapkan padanya dengan cara yang sama, yaitu. semuanya harus ditempatkan dalam grafik data yang homogen dalam hal jenis akses. Dari prinsip yang sama, hanya sebaliknya, mungkin ada aturan untuk konversi terbalik aturan internal di dalam deskripsi eksternal atau program eksternal. Dan juga untuk membentuk pemahaman tentang sistem, apa yang diketahui dan apa yang tidak – sebelum meminta jawaban, Anda dapat menanyakan apakah sistem mengetahui jawabannya – ya atau tidak.

Fungsi-fungsi yang saya bicarakan sebenarnya bukan hanya satu bagian dari algoritma yang dapat ditemukan, tetapi dapat terdiri dari serangkaian fungsi lainnya. Yang, pada gilirannya, bukanlah pemanggilan prosedur, melainkan rangkaian transformasi, seperti pada linux berfungsi dengan pipa. Misalnya, saya secara kasar menjelaskan prediksi kata dan frasa sekaligus. Namun untuk mendapatkan perkiraan hanya satu simbol, Anda perlu menerapkan fungsi mengambil satu simbol ini ke frasa ini. Atau fungsinya telah belajar memahami tugas dalam bahasa Inggris, dan spesifikasi teknis dalam bahasa Rusia. Kemudian TK Rusia->Terjemahkan ke Bahasa Inggris->Jalankan TK dalam Bahasa Inggris->Hasil.

Fungsi mungkin tidak tetap dalam definisi, dan dapat didefinisikan lebih lanjut atau didefinisikan ulang seiring tersedianya informasi tambahan atau ketika kondisi secara umum berubah - fungsi terjemahan belum final, dan juga dapat berubah seiring waktu.

Penilaian probabilitas juga dipengaruhi oleh keterulangan satu set fungsi yang berbeda- membentuk atau mengonfirmasi jenis.

Perlu juga disebutkan bahwa beberapa kumpulan dunia nyata, dan bukan halaman Internet, diurutkan dan mungkin kontinu, atau dengan karakteristik kumpulan lainnya, yang entah bagaimana meningkatkan penghitungan probabilitas.

Selain pengukuran langsung aturan yang ditemukan menggunakan contoh, saya berasumsi adanya metode evaluasi lain, seperti pengklasifikasi aturan. Dan mungkin pengklasifikasi dari pengklasifikasi ini.

Lebih banyak nuansa. Peramalan terdiri dari dua tingkatan. Tingkat ditemukannya aturan dan tingkat pencarian aturan baru. Namun pencarian aturan baru pada hakikatnya adalah program yang sama dengan kriterianya masing-masing. Dan saya akui (walaupun saya belum memikirkannya secara matang) bahwa semuanya mungkin lebih sederhana. Yang dibutuhkan adalah level nol yang akan dicari algoritma yang mungkin mencari semua keragamannya, yang pada gilirannya akan menciptakan aturan akhir. Atau mungkin bahkan rekursi multi-level atau fraktal.

Mari kembali ke kontrol penanda. Sebagai hasil dari semua argumen tentang algoritma ini, ternyata melalui mereka kita meminta kotak hitam ini untuk melanjutkan urutan dan menghasilkan perhitungan berdasarkan fungsi yang ditentukan oleh kesamaan. Suka melakukannya seperti yang ditunjukkan sebelumnya.

Ada cara lain untuk mendefinisikan suatu fungsi dalam mekanisme ini - dengan mengeluarkan fungsi melalui definisi. Misalnya:
Terjemahkan ke dalam bahasa Inggris meja meja
Jawab pertanyaan warna langit biru
Buatlah program sesuai spesifikasi teknis Saya ingin kecerdasan buatan ...

Penggunaan sistem ini untuk menyelesaikan masalah kita terdiri dari algoritma berikut. Kami membuat deskripsi tentang definisi pengidentifikasi khusus untuk menggambarkan tugas. Lalu, kami membuat deskripsi tugas dan memberinya pengenal baru. Kami membuat deskripsi tindakan yang dapat diterima. Misalnya (walaupun tidak praktis), perintah prosesor itu sendiri merupakan deskripsi dari Internet, dan manipulator terhubung ke komputer, yang dapat dikontrol melalui port. Dan setelahnya, kita bisa menanyakan sistem apa yang perlu dilakukan tindakan berikutnya, untuk membawa masalah lebih dekat ke solusi dengan mengacu pada masalah dengan pengidentifikasi. Dan juga tanyakan setiap saat apakah Anda memerlukan informasi tambahan yang diperlukan untuk perhitungan tindakan lebih lanjut - informasi tentang pengetahuan umum atau tentang keadaan pemecahan masalah saat ini. Dan kami mengulang permintaan tindakan dan permintaan informasi ke dalam beberapa loop eksternal. Keseluruhan skema ini dibangun berdasarkan definisi teks, dan oleh karena itu dapat diluncurkan menggunakan fungsi yang diperoleh berdasarkan definisi. Dan satu-satunya jalan keluar adalah perintah - pertanyaan tentang multi-probabilitas teks menghilang. Masalah skala peramalan yang diperlukan saat ini tidak dibahas - jika terdapat fungsi peramalan yang diperlukan dan memadai, secara logis hal itu akan berhasil.

Jika seseorang melihat dalam AI bukan cara untuk memecahkan masalah, tetapi beberapa karakteristik seseorang, maka kita dapat mengatakan bahwa perilaku dan kualitas manusia juga diperhitungkan dan dapat diprediksi. Dan dalam literatur terdapat cukup banyak deskripsi tentang properti ini atau itu. Oleh karena itu, jika kita mendeskripsikan dalam sistem properti mana yang kita inginkan, maka sistem akan menirunya sejauh pengetahuannya. Dan itu akan mereproduksi perilaku rata-rata abstrak, atau dengan mengacu pada orang tertentu. Nah, atau jika Anda mau, Anda bisa mencoba meluncurkan superintelligence - jika Anda mendefinisikannya.

Anda dapat memprediksi sesuatu yang terjadi setelah beberapa waktu. Benda bergerak dengan kecepatan dan percepatan, dan segala macam lainnya kemungkinan perubahan apa pun seiring berjalannya waktu. Luar angkasa juga bisa diprediksi. Misalnya, Anda masuk ke ruangan asing yang di dalamnya terdapat meja yang salah satu sudutnya ditutupi selembar kertas. Anda tidak melihat sudut ini, tetapi Anda dapat memperkirakan secara mental bahwa kemungkinan besar sudut tersebut berbentuk persegi panjang yang sama dengan sudut lainnya (tidak membulat), dan warna sudut ini sama dengan sudut lainnya. Tentu saja, peramalan ruang terjadi dengan kesalahan - tiba-tiba sudut meja itu terkelupas, dan ada noda cat di atasnya. Namun peramalan waktu proses juga selalu mengalami kesalahan. Percepatan gravitasi bumi tidak selalu 9,81, tetapi bergantung pada ketinggian di atas permukaan laut dan pegunungan di dekatnya. DAN alat ukur Anda tidak akan pernah bisa membuatnya benar-benar akurat. Itu. Peramalan ruang dan proses dalam waktu selalu terjadi kesalahan, dan entitas prediksi yang berbeda memiliki kesalahan yang berbeda pula. Tapi intinya sama - algoritma ditemukan secara statistik.

Ternyata memprediksi aliran byte kita sama dengan memprediksi ruang informasi. Ini mengkodekan ruang dan waktu. Jika Anda melihat semacam struktur di sana, biarkan itu menjadi bagian dari sebuah program. Bagian dari program ini adalah ruang yang diproyeksikan, seperti sebuah meja. Seperangkat aturan untuk memprediksi struktur ini membentuk aturan struktur ini - kira-kira seperti itu ekspresi reguler. Untuk menentukan struktur struktur ini, prediksi bukan hanya satu nilai, tetapi sekumpulan nilai valid dihitung. Pada saat mendeskripsikan algoritme, saya belum menyadari peran terpisah dari struktur di dalamnya, dan oleh karena itu saya tidak sampai di sana. Tetapi dengan menambahkan properti ini, pemahaman lengkap tentang gambar tersebut terbentuk, dan seiring waktu saya akan mencoba menulis ulangnya. Harap dicatat bahwa yang kami maksud dengan struktur adalah dapat diperluas secara kondisional - jika properti ini dan itu memiliki nilai ini dan itu, maka paket properti lainnya ditambahkan.

Secara umum, segala sesuatu yang mungkin terjadi di dunia kita dijelaskan berdasarkan jenis, struktur, konversi, dan proses. Dan semua sifat ini tunduk pada aturan yang ditemukan sebagai hasil prediksi. Otak melakukan hal yang sama, tetapi tidak dengan metode yang tepat, karena... itu adalah perangkat analog.

Akankah dia melakukan penelitian dengan sengaja tanpa menetapkan tugas seperti itu? Tidak, karena dia tidak punya keinginan sendiri, tetapi hanya tugas yang diberikan. Apa yang menjadi tanggung jawab kita dalam mewujudkan keinginan dan minat kita sendiri itulah yang kita sebut kepribadian. Anda juga dapat memprogram kepribadian ke dalam komputer. Dan apakah itu akan mirip dengan manusia, atau semacam analog komputer, itu akan tetap menjadi tugas yang ditetapkan.

Dan aktivitas kreatif kita dalam seni adalah penelitian yang sama, hanya saja kita mencari entitas yang mempengaruhi emosi, perasaan dan pikiran kita.

Belum ada instruksi akhir untuk memproduksi program semacam itu. Masih banyak pertanyaan, baik tentang algoritma itu sendiri maupun tentang penggunaannya (dan tentang multivarian teks). Seiring berjalannya waktu, saya akan semakin memperjelas dan merinci uraiannya.

Arah alternatif untuk mengimplementasikan peramalan adalah penggunaan jaringan saraf berulang (misalnya, jaringan Elman). Dalam arah ini, Anda tidak perlu memikirkan sifat peramalan, tetapi ada banyak kesulitan dan nuansa di sana. Namun jika arah ini diterapkan, maka kegunaan lainnya tetap sama.

Kesimpulan dari artikel tersebut:
1. Peramalan adalah cara untuk menemukan semua kemungkinan algoritma.
2. Dengan memanipulasi masukan perkiraan, Anda dapat mengeluarkan algoritma ini dari sana.
3. Properti ini dapat digunakan untuk berbicara dengan komputer.
4. Properti ini dapat digunakan untuk menyelesaikan masalah apa pun.
5. AI akan menjadi apa pun yang Anda definisikan, dan setelah didefinisikan, AI dapat diselesaikan sebagai sebuah masalah.

Beberapa orang akan mengatakan bahwa menggunakan kekerasan untuk menemukan pola apa pun akan memakan waktu terlalu lama. Berbeda dengan ini, saya dapat mengatakan bahwa seorang anak memerlukan waktu beberapa tahun untuk belajar berbicara. Berapa banyak pilihan yang bisa kita hitung dalam beberapa tahun? Aturan yang ditemukan dan siap pakai diterapkan dengan cepat, dan untuk komputer jauh lebih cepat dibandingkan manusia. Namun mencari yang baru disana-sini membutuhkan waktu yang lama, namun apakah sebuah komputer akan bertahan lebih lama dari manusia, kita tidak akan tahu sampai kita membuat algoritma seperti itu. Selain itu, saya perhatikan bahwa brute force diparalelkan dengan sempurna, dan ada jutaan penggemar yang akan menyalakan PC rumah mereka untuk tujuan ini. Dan ternyata beberapa tahun ini masih bisa dibagi menjadi sejuta. Dan aturan yang ditemukan oleh komputer lain akan dipelajari secara instan, tidak seperti proses serupa pada manusia.

Yang lain akan mulai berpendapat bahwa ada miliaran sel di otak yang ditujukan untuk paralelisasi. Lalu pertanyaannya, bagaimana uang miliaran tersebut digunakan ketika mencoba belajar bahasa asing tanpa buku teks dengan menggunakan contoh? Seseorang akan duduk lama melihat hasil cetakan dan menuliskan kata-kata yang berhubungan. Pada saat yang sama, satu komputer akan melakukan hal ini secara berkelompok dalam waktu sepersekian detik.

Dan analisis gambar - gerakkan sepuluh bola bilyar dan hitung berapa banyak tumbukan yang akan terjadi. (melindungi dari suara). Dan dua lusin atau tiga... Dan apa hubungannya miliaran sel dengan itu?

Secara umum, kecepatan otak dan multiparalelismenya merupakan isu yang sangat kontroversial.

Ketika Anda berpikir untuk membuat komputer yang berpikir, Anda menyalin ke dalamnya apa yang telah dipelajari seseorang sepanjang hidup, dan tidak mencoba memahami mekanisme apa yang memungkinkan komputer tersebut terakumulasi darinya. memulai program- makan dan tidur. Dan mekanisme ini sama sekali tidak didasarkan pada aksioma logika formal. Tapi tentang matematika dan statistik.

PPS: menurut saya tidak ada definisi ilmiah tentang istilah “Kecerdasan Buatan”. Yang ada hanyalah fiksi ilmiah. Dan jika Anda membutuhkan kenyataan, lihat paragraf 5 di kesimpulan artikel.

PPPS: Saya memahami banyak penafsiran berbeda setelah menulis artikel ini. Katakanlah menemukan hubungan tanya-jawab adalah sebuah perkiraan. Atau apa definisi ilmiah yang lebih tepat tentang menarik diri fungsi yang diperlukan dari beragamnya fungsi peramalan yang ditemukan selama proses pencarian. Tidak mungkin menulis artikel tersendiri untuk setiap momen pemahaman yang kecil, tetapi tidak mungkin menulis untuk semuanya secara umum, karena tidak dapat digabungkan menjadi satu judul. Dan semua pemahaman tersebut memberikan jawaban bagaimana mendapatkan jawaban dari kekuatan komputasi komputer atas pertanyaan-pertanyaan yang diajukan, yang jawabannya tidak selalu bisa dibaca di dalam. deskripsi yang ada, seperti yang kami katakan untuk proyek Watson. Cara membuat program yang, dengan satu penyebutan atau gerakan jari, mencoba memahami dan melakukan apa yang mereka inginkan.

Suatu saat nanti program seperti itu akan dibuat. Dan mereka akan menyebutnya sekadar gadget lain. Bukan AI.

****
Sumber mengenai topik ini, serta pengembangan lebih lanjut dari presentasi, dapat ditemukan di situs web

Kecerdasan buatan menciptakan jaringan saraf pada 15 Desember 2017

Kita telah hidup untuk melihat momen ketika kecerdasan buatan menciptakan jaringan sarafnya sendiri. Meski banyak orang mengira ini adalah hal yang sama. Namun kenyataannya, tidak semuanya sesederhana itu dan sekarang kami akan mencoba mencari tahu apa itu dan siapa yang dapat menciptakan siapa.


Insinyur dari divisi Google Brain mendemonstrasikan AutoML pada musim semi ini. Kecerdasan buatan ini dapat menghasilkan AI uniknya sendiri tanpa campur tangan manusia. Ternyata, AutoML mampu menciptakan NASNet, sebuah sistem visi komputer, untuk pertama kalinya. Teknologi ini secara serius melampaui semua analog yang sebelumnya dibuat oleh manusia. Sistem berbasis kecerdasan buatan ini bisa menjadi asisten yang sangat baik dalam pengembangan, misalnya, mobil otonom. Hal ini juga berlaku dalam robotika - robot akan mampu mencapai tingkat yang benar-benar baru.

AutoML dikembangkan menggunakan sistem pembelajaran penguatan yang unik. Kita berbicara tentang manajer jaringan saraf yang secara mandiri mengembangkan jaringan saraf baru yang dirancang untuk tugas-tugas spesifik tertentu. Dalam kasus yang telah kami tunjukkan, AutoML bertujuan untuk menghasilkan sistem yang mengenali objek dalam video secara real-time dengan paling akurat.

Kecerdasan buatan sendiri mampu melatih jaringan saraf baru, memantau kesalahan, dan memperbaiki pekerjaan. Proses pelatihan diulang berkali-kali (ribuan kali) hingga sistem dapat beroperasi. Menariknya, ia mampu melewati jaringan saraf serupa yang tersedia saat ini, namun dikembangkan dan dilatih oleh manusia.

Pada saat yang sama, AutoML mengevaluasi kinerja NASNet dan menggunakan informasi ini untuk meningkatkan jaringan anak perusahaan; proses ini diulangi ribuan kali. Ketika para insinyur menguji NASNet pada kumpulan gambar ImageNet dan COCO, kinerjanya mengungguli semua sistem visi komputer yang ada.

Google secara resmi telah menyatakan bahwa NASNet mengenali dengan akurasi 82,7%. Hasil tersebut 1,2% lebih tinggi dari rekor sebelumnya yang dibuat oleh peneliti dari Momenta dan Oxford pada awal musim gugur tahun ini. NASNet 4% lebih efisien dibandingkan rekan-rekannya dengan akurasi rata-rata 43,1%.

Ada juga versi NASNet yang disederhanakan, yang diadaptasi untuk platform seluler. Ini mengungguli rekan-rekannya sedikit lebih dari tiga persen. Dalam waktu dekat akan dapat digunakan sistem ini untuk produksi mobil otonom, yang memerlukan visi komputer. AutoML terus memproduksi jaringan neural turunan baru, berupaya mencapai tingkatan yang lebih tinggi lagi.

Hal ini tentu saja menimbulkan pertanyaan etis terkait kekhawatiran terhadap AI: bagaimana jika AutoML menciptakan sistem dengan kecepatan sedemikian rupa sehingga masyarakat tidak dapat mengimbanginya? Namun banyak perusahaan besar mencoba mempertimbangkan masalah keamanan AI. Misalnya, Amazon, Facebook, Apple, dan beberapa perusahaan lainnya adalah anggota Kemitraan AI untuk Memberi Manfaat bagi Manusia dan Masyarakat. Institute of Electrical and Electrical Engineers (IEE) telah mengusulkan standar etika untuk AI, dan DeepMind, misalnya, mengumumkan pembentukan sebuah kelompok yang akan menangani masalah moral dan masalah etika terkait dengan penerapan kecerdasan buatan.

Namun, banyak perusahaan besar yang mencoba mempertimbangkan masalah keamanan AI. Hal ini tentu saja menimbulkan pertanyaan etis terkait kekhawatiran terhadap AI: bagaimana jika AutoML menciptakan sistem dengan kecepatan sedemikian rupa sehingga masyarakat tidak dapat mengimbanginya? Institute of Electrical and Electrical Engineers (IEE) telah mengusulkan standar etika untuk AI, dan DeepMind, misalnya, mengumumkan pembentukan kelompok yang akan menangani masalah moral dan etika terkait penerapan kecerdasan buatan. Misalnya, Amazon, Facebook, Apple, dan beberapa perusahaan lainnya adalah anggota Kemitraan AI untuk Memberi Manfaat bagi Manusia dan Masyarakat.

Apa itu kecerdasan buatan?

Penulis istilah “kecerdasan buatan” adalah John McCarthy, penemu bahasa Lisp, pendiri pemrograman fungsional dan pemenang Turing Award atas kontribusinya yang luar biasa pada bidang penelitian kecerdasan buatan.
Kecerdasan buatan adalah suatu cara untuk membuat komputer, robot yang dikendalikan komputer, atau program mampu berpikir secerdas manusia.

Penelitian di bidang AI dilakukan dengan mempelajari kemampuan mental manusia, kemudian hasil penelitian tersebut digunakan sebagai dasar pengembangan program dan sistem cerdas.

Apa itu jaringan saraf?

Ide jaringan saraf adalah untuk merakit struktur kompleks dari berbagai hal elemen sederhana. Tidak mungkin hanya satu bagian otak saja yang dapat dianggap cerdas, namun orang-orang biasanya mendapatkan hasil yang sangat baik dalam tes IQ. Namun demikian, hingga saat ini gagasan untuk menciptakan pikiran “dari ketiadaan” biasanya diejek: lelucon tentang seribu monyet dengan mesin tik sudah berusia seratus tahun, dan jika Anda mau, kritik terhadap jaringan saraf bahkan bisa ditemukan pada Cicero, yang dengan sinis menyarankan untuk melemparkan token berisi huruf ke udara sampai wajah Anda membiru, sehingga cepat atau lambat akan muncul teks yang bermakna. Namun, di abad ke-21, ternyata karya klasik tersebut bersikap sarkastik dengan sia-sia: ini adalah pasukan monyet dengan token yang, dengan kegigihan, dapat mengambil alih dunia.
Faktanya, jaringan saraf dapat dirakit bahkan dari kotak korek api: ini hanyalah seperangkat aturan sederhana yang digunakan untuk memproses informasi. Sebuah “neuron buatan”, atau perceptron, bukanlah perangkat khusus, tetapi hanya beberapa operasi aritmatika.

Cara kerja perceptron sangat sederhana: ia menerima beberapa angka awal, mengalikan masing-masing angka dengan “nilai” angka tersebut (lebih lanjut tentang itu di bawah), menjumlahkannya, dan bergantung pada hasilnya, menghasilkan 1 atau -1. Misalnya, kita memotret bidang yang jelas dan menunjukkan neuron kita beberapa titik dalam gambar ini - yaitu, kita mengirimkan koordinat acak sebagai dua sinyal. Lalu kita bertanya: “Neuron yang terhormat, apakah ini langit atau bumi?” “Minus satu,” jawab boneka itu sambil menatap awan kumulus dengan tenang. “Jelas bahwa itu adalah bumi.”

“Menunjukkan jari ke langit” adalah aktivitas utama perceptron. Anda tidak dapat mengharapkan keakuratan apa pun darinya: Anda dapat dengan mudah melempar koin. Keajaiban dimulai pada tahap berikutnya, yang disebut pembelajaran mesin. Kami mengetahui jawaban yang benar, artinya kami dapat menuliskannya ke dalam program kami. Jadi ternyata untuk setiap tebakan yang salah, perceptron benar-benar menerima penalti, dan untuk tebakan yang benar - bonus: “nilai” sinyal yang masuk bertambah atau berkurang. Setelah ini, program dijalankan rumus baru. Cepat atau lambat, neuron pasti akan “memahami” bahwa bumi dalam foto berada di bawah dan langit di atas - yaitu, ia akan mulai mengabaikan sinyal dari saluran yang melaluinya koordinat x dikirimkan ke sana. Jika Anda menyelipkan foto lain ke robot secanggih itu, maka robot tersebut mungkin tidak akan menemukan garis horizon, namun yang pasti tidak akan bingung antara bagian atas dan bawah.

DI DALAM pekerjaan nyata rumusnya sedikit lebih rumit, namun prinsipnya tetap sama. Perceptron hanya dapat melakukan satu tugas: mengambil angka dan menyusunnya menjadi dua tumpukan. Hal yang paling menarik dimulai ketika ada beberapa elemen seperti itu, karena angka yang masuk bisa jadi merupakan sinyal dari “blok penyusun” lainnya! Katakanlah satu neuron akan mencoba membedakan piksel biru dari piksel hijau, neuron kedua akan terus mengotak-atik koordinatnya, dan neuron ketiga akan mencoba menilai mana di antara kedua hasil tersebut yang lebih mendekati kebenaran. Jika Anda mengatur beberapa neuron pada piksel biru sekaligus dan menjumlahkan hasilnya, Anda akan mendapatkan seluruh lapisan di mana “siswa terbaik” akan menerima bonus tambahan. Dengan demikian, jaringan yang cukup luas dapat menyaring segudang data dan memperhitungkan semua kesalahannya.

Jaringan saraf dapat dibuat menggunakan kotak korek api - maka Anda akan memiliki trik di gudang senjata Anda yang dapat Anda gunakan untuk menjamu tamu di pesta. Para editor MirF telah mencobanya dan dengan rendah hati mengakui keunggulan kecerdasan buatan. Mari kita ajarkan materi irasional untuk memainkan permainan "11 tongkat". Aturannya sederhana: ada 11 pertandingan di meja, dan dalam setiap gerakan Anda dapat mengambil satu atau dua pertandingan. Orang yang mengambil yang terakhir menang. Bagaimana cara memainkannya melawan “komputer”?

Sangat sederhana.

Ambil 10 kotak atau cangkir. Pada masing-masingnya kami menulis angka dari 2 hingga 11.

Kami menaruh dua kerikil di setiap kotak - hitam dan putih. Anda dapat menggunakan benda apa saja, asalkan berbeda satu sama lain. Itu saja - kita memiliki jaringan sepuluh neuron!

Jaringan saraf selalu menjadi yang pertama. Pertama, lihat berapa sisa korek api dan ambil kotak dengan nomor itu. Pada langkah pertama itu akan menjadi kotak nomor 11. Ambil kerikil apa saja dari kotak yang diinginkan. Anda bisa memejamkan mata atau melempar koin, yang utama adalah bertindak sembarangan.
Jika batunya berwarna putih, jaringan saraf memutuskan untuk melakukan dua kecocokan. Jika hitam - satu. Tempatkan kerikil di sebelah kotak agar Anda tidak lupa “neuron” mana yang mengambil keputusan. Setelah itu, orang tersebut berjalan - dan seterusnya sampai korek api habis.

Sekarang sampai pada bagian yang menyenangkan: belajar. Jika jaringan memenangkan permainan, maka jaringan tersebut harus diberi hadiah: lemparkan satu kerikil tambahan dengan warna yang sama yang jatuh selama permainan ke “neuron” yang berpartisipasi dalam permainan ini. Jika jaringan hilang, ambil kotak yang terakhir digunakan dan keluarkan batu yang tidak berhasil dari sana. Bisa jadi kotak tersebut sudah kosong, maka neuron “terakhir” dianggap sebagai neuron sebelumnya. Pada permainan berikutnya, ketika mengenai kotak kosong, jaringan saraf akan otomatis menyerah.

Itu saja! Mainkan beberapa permainan seperti ini. Pada awalnya Anda tidak akan melihat sesuatu yang mencurigakan, tetapi setelah setiap kemenangan, jaringan akan membuat gerakan yang lebih sukses - dan setelah sekitar selusin permainan Anda akan menyadari bahwa Anda telah menciptakan monster yang tidak dapat Anda kalahkan.

Sumber:

Dalam serangkaian artikel, kita akan membahas pendekatan baru dalam AI, pemodelan kepribadian, dan pemrosesan BIG Data yang tidak tersedia bagi sebagian besar pakar AI dan publik. Nilai dari informasi ini adalah bahwa semuanya telah diuji dalam praktik dan sebagian besar perkembangan teoretis telah diterapkan dalam proyek terapan.

Banyak dari Anda telah mendengarnya teknologi modern, yang saat ini dikaitkan dengan konsep kecerdasan buatan, yaitu: sistem pakar, jaringan saraf, algoritma linguistik, sistem hybrid, teknologi kognitif, simulasi (bot obrolan), dll.

Ya, banyak perusahaan menggunakan teknologi di atas untuk memecahkan masalah pemrosesan informasi klien mereka. Beberapa perusahaan tersebut menulis bahwa mereka sedang menciptakan atau telah menciptakan solusi di bidang kecerdasan buatan. Tapi apakah itu kecerdasan?

Hal pertama yang akan kita lakukan adalah mendefinisikan apa itu kecerdasan.

Bayangkan ada komputer dengan kecerdasan. Dan Anda memiliki pilihan untuk berkomunikasi dengannya melalui suara atau pesan teks.
Pertanyaan:
  • Apakah perlu untuk memasukkan fitur-fitur bahasa ke dalam program kecerdasan komputer (menggambarkan semantik, tata bahasa, morfologi) atau dapatkah komputer mempelajari bahasa secara mandiri melalui interaksi dengan seseorang?
  • Jika Anda diberi tugas untuk mengajarkan bahasa pada komputer, apa yang akan Anda lakukan?
  • Andai saja Anda ikut pelatihan, dia akan seperti apa?
Sekarang, jawablah kembali pertanyaan-pertanyaan ini, satu-satunya perbedaan adalah Anda harus mengajar:
  • Burung beo ras murni, secara teoritis mampu berkomunikasi.
  • Bayi yang baru lahir.
Kami baru saja melakukan beberapa karya intelektual, dan saya berharap banyak dari Anda yang memperoleh pengetahuan baru. Dan inilah alasannya:
  • Pertama, saya meminta Anda untuk membayangkan (membayangkan) “apa yang akan terjadi jika…”. Anda bertindak dalam kondisi yang berubah. Mungkin Anda kekurangan informasi dan pengetahuan, itu sulit bagi Anda.
  • Kedua, Anda ternyata mampu belajar, kognisi, Anda menemukan analogi yang Anda kenal atau menemukannya dalam teks, atau mungkin Anda menggunakan Internet atau meminta nasihat teman.
Ada banyak pendekatan untuk mendefinisikan kecerdasan. Kami akan menentukan fitur utamanya...

Pertama kecerdasan adalah kemampuan belajar dan berimajinasi.

Untuk membuat algoritma yang memodelkan kecerdasan, hal pertama yang perlu Anda lakukan adalah beri dia kemampuan untuk belajar, Anda tidak perlu menginvestasikan pengetahuan apa pun ke dalamnya.

Mari kita kembali ke contoh anak kita untuk menggambarkan proses pembelajaran lebih detail.
Prinsip-prinsip apa yang berlaku ketika seorang anak belajar memahami dan berbicara suatu bahasa?

  1. Semakin sering dia mendengar sebuah kata dalam konteks berbeda, semakin cepat dia mengingatnya. Kata pertama yang dia ucapkan kemungkinan besar adalah “ibu”.
    "Ibu mencintaimu"
    “Ibu akan mencuci tanganmu”
    "Ibu menciummu"
    “Di mana ibu?”
    Pembelajaran terjadi karena redundansi data.
  2. Semakin banyak saluran arus informasi yang terlibat, semakin efektif pelatihannya:
    anak itu mendengar: “Ibu sayang kamu.”
    anak itu melihat senyuman ibunya.
    anak merasakan kehangatan yang terpancar dari ibunya.
    Bayi merasakan rasa dan bau ASI.
    anak itu berkata, “Bu.”
  3. Anak tidak akan dapat langsung mereproduksi kata tersebut dengan benar. Dia akan mencoba, mencoba. “M”, “Bu”, “Ibu”, “M”... “Ibu”. Pembelajaran terjadi dalam tindakan, setiap upaya selanjutnya disesuaikan hingga kita memperoleh hasil. Metode coba-coba. Sangat penting untuk menerima umpan balik dari kenyataan.
  4. Jangan besarkan anakmu, mereka akan tetap sepertimu. Anak berusaha menjadi seperti orang-orang disekitarnya. Dia meniru mereka dan belajar dari mereka. Inilah salah satu mekanisme pemodelan kepribadian, yang akan kita bahas lebih detail di artikel berikut.

Apa peran imajinasi?

Bayangkan Anda sedang mengendarai mobil di jalan raya yang asing. Anda melewati tanda batas kecepatan 80 km/jam. Berkendara lebih jauh dan Anda melihat tanda batas kecepatan lainnya, tetapi tanda itu berlumuran lumpur dan hampir mustahil untuk dilihat. Anda bergerak dengan kecepatan 95 km/jam. Apa yang akan kamu lakukan? Saat Anda mengambil keputusan, seorang petugas polisi melihat dari balik semak-semak, dan Anda melihat senyum cerah di wajahnya. Sebuah “gambar tanda” langsung terbentuk di kepala Anda, dan Anda memahami mengapa seorang polisi berdiri di sana, dan bahwa Anda perlu segera menginjak rem. Anda memperlambat kecepatan hingga 55 km/jam, senyuman di wajah polisi itu langsung menghilang, dan Anda melanjutkan perjalanan.

Dan contoh menarik lainnya dari karya imajinasi dari dunia binatang adalah pengamatan burung murai. Seekor burung murai, di hadapan burung murai lainnya, menguburkan makanannya di tanah kosong. Semua burung murai terbang menjauh, tetapi murai kami kembali ke gurun dan menyembunyikan makanannya. Apa yang telah terjadi? Dia membayangkan (membayangkan) “apa yang akan terjadi jika” burung murai lain terbang masuk, yang melihat di mana dia menyembunyikan makanannya. Dia mencontohkan situasinya dan menemukan solusi untuk menghindari hal ini.

Imajinasi adalah pemodelan situasi dalam kondisi sewenang-wenang.

Seperti yang telah Anda lihat, kecerdasan bukanlah basis pengetahuan, kecerdasan bukanlah serangkaian reaksi terprogram atau mengikuti aturan yang telah ditentukan sebelumnya.

Kecerdasan adalah kemampuan belajar, kognisi dan beradaptasi terhadap perubahan kondisi dalam proses pemecahan kesulitan.

Tidakkah Anda berpikir bahwa ketika mendefinisikan kecerdasan, kita kehilangan beberapa komponen penting atau lupa membicarakan sesuatu?

Ya, kita kehilangan persepsi dan lupa berbicara tentang ingatan.

Bayangkan melihat melalui lubang intip dan melihat bagian dari sebuah surat:

Surat apa ini?

Mungkin "K"?

Tentu saja tidak, ini adalah karakter Jepang untuk “keabadian.”

Anda baru saja diberi tugas (masalah). Kemungkinan besar, Anda menemukan gambaran serupa dari huruf "K" di kepala Anda dan menjadi tenang.

Intelek Anda merasakan segala sesuatu dalam gambar dan mencari gambar serupa dalam ingatan; jika tidak ada, maka pengikatan (jangkar) terbentuk pada yang sudah ada gambar yang ada dan berkat ini kamu ingat informasi baru, mendapatkan keterampilan atau pengalaman.

Gambar adalah visi subjektif dari dunia nyata, yang dirasakan melalui indera (saluran informasi).

Persepsi bersifat subjektif karena bergantung pada urutan pembelajaran, urutan munculnya gambaran dalam kehidupan seseorang dan pengaruhnya.

Persepsi dimulai dengan pengenalan pola terang/gelap. Buka matamu – terang, tutup matamu – gelap. Selanjutnya, seseorang belajar mengenali gambar yang semakin kompleks - “ibu”, “ayah”, bola, meja, anjing. Kami menerima data referensi, dan semua gambar berikutnya adalah suprastruktur dari gambar sebelumnya.

Dari sudut pandang ini, belajar adalah proses membangun hubungan baru antara gambaran yang dirasakan dan gambaran yang sudah ada dalam ingatan.

Memori berfungsi untuk menyimpan gambar dan hubungannya.

A imajinasi adalah kemampuan untuk menyelesaikan gambar yang belum selesai.

Ringkasnya, berikut eksperimen lain dari dunia hewan:

Simpanse dimasukkan ke dalam sangkar, dan di dalam sangkar mereka menggantungkan seikat pisang cukup tinggi dari lantai. Simpanse itu melompat pada awalnya, tetapi dengan cepat menjadi lelah dan sepertinya kehilangan minat pada pisang dan duduk, hampir tidak memperhatikannya. Namun selang beberapa saat si kera mengambil sebatang tongkat yang tertinggal di dalam sangkar dan menggoyang-goyangkan pisang tersebut hingga terjatuh. Di lain waktu, untuk mendapatkan pisang, simpanse berhasil menyambungkan dua batang kayu, karena setiap batang satu per satu tidak cukup untuk menjangkau keduanya. Hewan itu mengatasi lebih dari itu tugas yang menantang, tiba-tiba meletakkan sebuah kotak di bawah pisang dan menggunakannya sebagai pijakan.

Simpanse menunjukkan gambar “seikat pisang” yang familiar. Tetapi gambar itu ternyata tidak lengkap untuknya - gambar tersebut tidak dapat diperoleh dan dimakan. Namun karena ini adalah satu-satunya sumber makanan yang tersedia, gambaran yang belum selesai ini meningkatkan ketegangan internal dan menuntut penyelesaian.

Sarana untuk memecahkan masalah (melengkapi gambar) selalu tersedia, namun munculnya solusi memerlukan transformasi gambar yang ada (perlu belajar dengan menggunakan imajinasi). Simpanse harus membayangkan (dalam hati membuat daftar semuanya pilihan yang memungkinkan): “apa yang akan terjadi jika saya mengambil tongkat”, “apa yang akan terjadi jika…” dan asumsi yang paling mungkin diuji dalam praktik, coba dapatkan masukan, bayangkan lagi, coba, dapatkan masukan dan seterusnya sampai kita Ayo melengkapi gambar (belajar).

Jika mengenali gambar hieroglif “keabadian” adalah masalah hidup dan mati bagi Anda, maka Anda pasti akan menemukan cara untuk melakukannya.

Mari beralih dari bahasa yang lebih populer ke bahasa teknis dan merumuskan konsep dasar yang akan kita gunakan lebih lanjut:

  • Persimpangan informasi yang berlebihan dari yang berbeda saluran informasi menciptakan sebuah gambar.
  • Pelatihan adalah transformasi arus informasi menjadi bidang informasi.
  • Bidang informasi (memori) – penyimpanan gambar dan hubungannya.
  • Imajinasi -...
    - “Pembaca yang budiman, lengkapi sendiri gambaran imajinasi Anda, dengan menggunakan informasi berlebih dari pengalaman hidup Anda dan artikel ini.”
  • Kecerdasan adalah kemampuan belajar dan berimajinasi.

Di awal artikel, kami mencantumkan teknologi yang saat ini terkait dengan kecerdasan buatan, sekarang Anda dapat menilai secara mandiri seberapa cocok teknologi tersebut dengan konsep kecerdasan.

Pada artikel selanjutnya kita akan membahas masalah seperti pencarian cerdas informasi di Internet. Kami akan mendefinisikan kriteria kecerdasan, mengembangkan pendekatan praktis dan “merasakan” penerapan nyata dari penerapan prinsip-prinsip yang dijelaskan dalam artikel ini.

Artikel tersebut tidak berpura-pura menjadi kebenaran, ini adalah bagian dari pengembangan dan penelitian kami. Tulis komentar, lengkapi materi dengan contoh atau pemikiran Anda sendiri. Pelajari dan bayangkan...

  • tutorial

Pernahkah Anda memikirkan betapa mudahnya menulis kecerdasan buatan Anda sendiri yang akan membuat keputusan dalam permainan? Tapi itu sangat sederhana. Biarkan dia menerima dulu solusi acak, tetapi nanti Anda bisa mendidiknya, mengajarinya menganalisis situasi, dan kemudian dia akan mulai membuat keputusan secara sadar. Pada artikel ini saya akan memberi tahu Anda bagaimana saya menulis bot saya, dan juga menunjukkan bagaimana Anda dapat menulis bot Anda sendiri dalam beberapa menit. Komputer kita akan memainkan tiruan dari game Tron, atau lebih tepatnya bagian di mana Anda harus mengalahkan musuh dengan sepeda motor.

Di bawah potongan ada 10 megabyte file gif.

Tentang permainan

Dalam game ini, Anda mengontrol sepeda motor yang meninggalkan dinding cahaya. Lapangan permainannya terbatas, dan lawan Anda memiliki sepeda motor yang sama. Sepeda motor terus bergerak, Anda hanya bisa berbelok. Ruang kosong di lapangan semakin menipis, dan menghindari rintangan menjadi semakin sulit. Orang yang bertahan paling lama adalah pemenangnya. Saya membuat tiruan dari game multipemain berbasis browser menggunakan node.js dan socket.io. Kontrol dua tombol - belok kiri dan belok kanan.

Antarmuka bot

Karena saya menggunakan socket.io, saya memproses pemain di server dalam bentuk mengerjakan array objek soket khusus yang dibuat socket.io. Dari objek-objek tersebut, saya hanya menggunakan fungsi id, emit dan broadcast. Artinya, tidak sulit bagi game itu sendiri untuk mengimplementasikan antarmuka soket dan menggunakannya dalam pemrosesan, seolah-olah pengguna lain sedang bermain. Saya menamai kelasnya BotSocket.
Metode memancarkan (peristiwa, data) Bot melakukan tindakan yang hampir sama dengan klien saat menerima data masuk dari server, yaitu:
  1. Menyimpan data tentang semua sepeda motor yang dimainkan saat menambahkannya
  2. Menyimpan tautan ke sepeda motor Anda saat Anda menambahkannya
  3. Update data semua motor main
  4. Menyetel ulang status saat memulai ulang game
Untuk mengirimkan perintah kontrol sepeda motor Anda ke server, Anda perlu menyimpan tautan ke objek game tempat perintah tersebut diproses pengguna biasa. Metode kelas Permainan Saya punya nama onControl(soket, data) jadi saya menambahkan metode ke BotSocket
BotSocket.prototype.control = fungsi(data) ( this.game.onControl(ini, data); );
Ketika perintah diterima dari server untuk memperbarui data sepeda motor (mereka telah dipindahkan), saya memeriksa apakah saya memiliki sepeda motor di bawah kendali saya, apakah belum bertabrakan dan apakah sudah dipindahkan, dan, jika berhasil, saya menyebut metode utama agar AI berfungsi - memperbarui().
Antarmukanya sudah siap, sekarang Anda dapat menambahkan AI itu sendiri.

Kecerdasan buatan

Tidak peduli seberapa keras kedengarannya, dalam permainan, pemain yang dimainkan oleh komputer biasanya disebut AI, atau bot. Objek BotSocket memiliki data permainan yang diperlukan untuk membuat keputusan. Hanya ada tiga solusi yang mungkin:
  1. Tidak ada hubungannya, langsung saja
  2. Belok ke kanan
  3. Belok kiri

Ketika saya memutuskan untuk menulis bot, saya tidak tahu bagaimana hal itu bisa dilakukan. Saya mencoba kode yang sangat sederhana:
BotSocket.prototype.update = function() ( var r = Math.random(); if (r > 0.95) ( this.control(("button": "right")); ) else if (r >
Perilakunya kira-kira seperti ini:

Saya memandangnya dan merasakan kegembiraan yang luar biasa; menurut saya dia sekarang sudah mandiri. Tampaknya dia sendiri berusaha untuk bertahan hidup, berjuang di sana seolah-olah hidup. Pemandangan yang menyentuh.

Tapi saya ingin dia hidup semaksimal mungkin. Saya mulai mencari informasi tentang bagaimana AI ditulis untuk game. Saya menemukan artikel yang menjelaskan pendekatan berbeda. Tapi saya mencari sesuatu yang sangat sederhana. Saya menemukan di Habré di salah satu artikel tentang bot untuk game seperti Zuma yang menyebutkan metode gelombang. Algoritma Aka Lee. Saya menganggapnya sangat sederhana dan tepat. Ini adalah algoritma untuk menemukan jalur terpendek dari satu titik ke titik lain di sepanjang lapangan, di mana sel dapat bebas atau terisi. Intinya sederhana. Kita mulai dari titik tujuan, berikan nilai 1 padanya, dan tandai semua sel bebas yang berdekatan dengan angka satu lebih tinggi. Kemudian kami mengambil semua tanda bebas tetangga dan menandainya lagi. Jadi kami memperluas ke seluruh bidang sampai kami mencapai tujuan kami. Dan kami membangun jalur dengan mencari dari jalur tetangga dengan mengurangi angkanya hingga mencapai 1. Saya melihat algoritme untuk menemukan jalur terpendek dalam grafik, tetapi yang ini sepertinya paling cocok bagi saya.

Saya mentransfer algoritma salin-tempel dari halaman ke wiki, memberinya nama BotSocket.prototype.algorithmLee. Untuk bidang tersebut saya pertama kali membuat objek medan perang, yang saya tandai dengan setiap pembaruan poin yang ditempati dengan koordinatnya. Dan dalam algoritma Lee, dia mengurangi bidang ini menjadi bidang yang sama, tetapi dengan langkah 1.

Entah bagaimana, penting untuk menentukan tujuannya. Saya memutuskan untuk memilihnya secara acak pada interval tertentu. Membuat metode untuk pencarian acak titik bebas di lapangan:
BotSocket.prototype.getDesiredPoint = function() ( var point = ; var H = Object.keys(this.battleground).length - 1; var W = Object.keys(this.battleground).length - 1; var x, y , saya, j; var ditemukan = salah; var iter = 0; lakukan ( saya = ini.getRandomInt(1, W); j = ini.getRandomInt(1, H); x = saya * ini.moveStepSize; y = j * this.moveStepSize; if (ini.battleground[x][y] === this.BG_EMPTY) ( ditemukan = true; ) iter++ ) while (!ditemukan && iter< 100); point = ; return point; };

Sekarang saya bisa menulis ulang pembaruan:
BotSocket.prototype.update = function() ( if (!this.desiredPoint || this.movements % this.updDestinationInterval === 0) ( this.desiredPoint = this.getDesiredPoint(); ) if (!this.desiredPoint) ( return; ) var currentPoint = ; var path = this.algorithmLee(currentPoint, this.desiredPoint); if (path && typeof path !== "tidak terdefinisi") ( this.moveToPoint(path); ) else ( this.desiredPoint = ini .getDesiredPoint();
Metode disebutkan di sini pindahToPoint, yang berbelok sesuai kebutuhan untuk mencapai titik pertama dari jalur terpendek berdasarkan arah saat ini.

Kemudian saya memutuskan untuk membuat bot lebih agresif dan alih-alih mencari titik acak yang diinginkan, saya mencari titik di depan musuh untuk menghalangi jalan mereka. Atau agar mereka tidak bermain-main terlalu lama.

Bot sisi klien

Saya memutuskan untuk mencoba mentransfer bot ke bagian klien. Karena proyeknya ada di node.js, saya juga dapat menggunakan kode tertulis untuk bot di sisi klien. Untuk melakukan ini, saya memperluas BotSocket dengan file klien terpisah yang mengganti metodenya memancarkan() Dan kontrol() untuk berinteraksi dengan benar dengan server tanpa referensi ke game.
Semuanya berfungsi dengan baik secara lokal, tetapi setelah penerapannya server jarak jauh ada gambar yang aneh:

Setelah berpikir lama, saya menyadari bahwa itu adalah penundaan. Bot mengirimkan perintah belok, tetapi tiba setelah memperbarui posisinya di server, itulah sebabnya sering kali tidak dapat mencapai jalur langsung ke titik yang diinginkan. Tapi saya ingin bot normal di sisi klien. Oleh karena itu, saya memutuskan untuk memperhitungkan penundaan tersebut. Untuk melakukan ini, saya menulis lagi ekstensi BotSocket. Artikelnya semakin panjang, jadi saya akan menjelaskan solusi utamanya. Sebelum memanggil algoritma Lie titik saat ini Saya mengganti posisi prediksi dengan mempertimbangkan posisi dan arah saat ini, serta pengganda penundaan. Pengganda latensi adalah berapa kali latensi dikalikan dengan tingkat pembaruan posisi server. Saya juga perlu memprediksi titik masa depan dalam metode ini pindahToPoint().

Prediksinya berhasil jika Anda bermain sendiri. Namun jika ada peserta lain, bot tidak memperhitungkan hal ini dan diarahkan ke tempat yang setelah beberapa waktu sudah dilewati pemain lain. Untuk mengatasi masalah ini, saya memodifikasi metode yang menandai sel-sel bidang sebagai terisi. Saya mulai menandai mereka sibuk dalam radius tertentu dari pergerakan sepeda motor. Radiusnya tergantung pada pengali penundaan.
Sebelumnya, saya melengkapi bot dengan fungsi debugging, yaitu menggambar titik yang diinginkan dan menempati titik di lapangan. Versi bot klien saya yang berbasis latensi sekarang bergerak seperti ini:


Anakku, sisanya adalah server.

Yang terpenting adalah mencoba membuat bot sendiri

Tujuan utama artikel ini adalah untuk membangkitkan minat menulis bot. Saya telah melakukan banyak hal untuk mengatasi kemalasan Anda. Untuk melakukan ini, saya menambahkan kemampuan untuk memuat skrip saya sendiri dengan bot, yang akan memperluas kelas klien dasar saya. Buka proyek dan klik teks “Tampilkan opsi untuk ruangan dengan milikmu sendiri bot”, lalu ke tombol “Buat ruang untuk menguji bot Anda sendiri”. Sebuah ruangan akan dibuat di mana Anda dapat dengan mudah menggunakan bot, secara default bot Anda akan menjadi bot tanpa latensi. Sekarang saatnya untuk kode Anda.
Dua opsi sederhana untuk menggunakan kode Anda dalam tindakan, gunakan apa saja:
  1. Unggah file js ke server mana pun yang dapat diakses oleh browser Anda. Tempelkan URL ke skrip Anda di game di sebelah tombol “Muat skrip AI Anda”. Setelah mengklik tombol ini, objek baru akan dibuat dan diisi botSocket, yang metodenya akan dipanggil awal().
  2. Gunakan konsol browser (Firebug – F12, Firefox – Ctrl+Shift+K, Chrome – Ctrl+Shift+J, lainnya – ).

Jika Anda telah memutuskan metode masukan kode Anda, coba ganti metode kelas BotSocket. Hal paling sederhana untuk memulai:
BotSocket.prototype.update = function() ( var r = Math.random(); if (r > 0.95) ( this.control(("button": "right")); ) else if (r > 0.90) ( this.control(("tombol": "kiri"));

Setelah ini, buat ulang objek botSocket dengan memasukkan
botSocket = nol;
Dalam hal ini, kode pada halaman akan membuat ulang dan mengisi objek dengan sendirinya. Ini akan mengubah perilaku standar bot menjadi acak. Dan terserah imajinasi atau pengetahuan mendalam Anda.
Anda juga dapat menghubungkan skrip bot saya yang ditingkatkan, dengan mempertimbangkan penundaan, dengan memasukkan https://raw.github.com/rnixik/tronode-js/master/public/javascripts/MyBotSocketClient.js ke dalam url bot

Kesimpulan

Saya menceritakan bagaimana saya membuat AI saya di server, lalu bagaimana saya mentransfernya ke klien dan bagaimana saya mencoba mengajarkannya untuk bermain dengan mempertimbangkan ping tinggi. Saya sangat berharap saya dapat menarik minat Anda, dan Anda mencoba menulis AI Anda sendiri, jika Anda belum pernah melakukan ini sebelumnya. Tentu saja, game kelas atas menggunakan pendekatan yang sangat berbeda, tetapi ada baiknya memulai dari yang kecil.

Jika Anda tidak memiliki node.js, Anda dapat menggunakan aplikasi yang saya terapkan:

1) tronode.livelevel.net - paling banyak VPS murah di DigitalOcean,
2) tronode-js.herokuapp.com - unit virtual gratis di Heroku.

Yang pertama, kemungkinan besar, mungkin tidak dapat mengatasi beban terlebih dahulu, dan yang kedua di beberapa komputer mengatur ulang transport socket.io ke polling xhr, karena itu permainannya sangat lambat.
Jika Anda ingin tahu lebih banyak tentang cara saya memprogram logika permainan, Anda dapat membaca. Ada juga informasi tentang penerapan node.js dan sedikit tentang bagian grafis.

Jika Anda tidak memiliki akun di Habré, Anda dapat mengajukan pertanyaan atau mengirimkan saran menarik Anda kepada saya melalui email [dilindungi email].

Tag: Tambahkan tag

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat