Amaliy mashg`ulot. Sun’iy intellekt sohasidagi tadqiqotlarning asosiy yo`nalishlari Sun'iy aql


Download 1.61 Mb.
bet6/10
Sana27.08.2023
Hajmi1.61 Mb.
#1670695
1   2   3   4   5   6   7   8   9   10
Bog'liq
Amaliy mashg`ulot. Sun’iy intellekt sohasidagi tadqiqotlarning a

Musiqa
Rassomchilik
2015 yilda Google jamoasi neyron tarmoqlarni mustaqil ravishda tasvirlarni yaratish qobiliyatini sinovdan o'tkazdi. Keyin sun'iy aql ko'p sonli turli xil rasmlar misolida o'qitildi. Biroq, mashinadan biron bir narsani tasvirlashni "so'rashganda", u atrofimizdagi dunyoni qandaydir g'alati tarzda tushuntiradi. Masalan, dumbbelllarni chizish vazifasi bo'yicha ishlab chiquvchilar metalni inson qo'li bilan bog'laydigan tasvirni oldilar. Ehtimol, bu mashg'ulot bosqichida dumbbelllar yordamida tahlil qilingan rasmlarning qo'llari va neyron tarmog'i buni noto'g'ri talqin qilganligi bilan bog'liq.
2016 yil 26-fevral kuni San-Frantsiskoda o'tkazilgan maxsus kim oshdi savdosida Google vakillari sun'iy intellekt yordamida chizilgan psixikaviy rasmlardan 98 ming dollarni xayriya ishlariga topshirdilar. Eng muvaffaqiyatli avtomobil rasmlaridan biri quyida keltirilgan.

Google tomonidan sun'iy aqlni bo'yash.
Ushbu maqolada men genetik algoritmdan foydalanib oddiy sun'iy intellekt (AI) etishtirish tajribasi bilan o'rtoqlashaman, shuningdek har qanday xatti-harakatni shakllantirish uchun zarur bo'lgan minimal buyruqlar to'plami haqida gapirib beraman.
Ishning natijasi shundan iboratki, AI qoidalarni bilmagan holda tic-tac-toe o'yinini mustaqil ravishda o'zlashtirdi va unga qarshi o'ynagan botlarning kamchiliklarini topdi. Ammo men bundan ham sodda ishni boshladim.
Ko'rsatmalar to'plami
Hammasi AI bo'lishi mumkin bo'lgan buyruqlar to'plamini tayyorlash bilan boshlandi. Yuqori darajadagi tillarda yuzlab turli xil operatorlar mavjud. Kerakli minimalni ta'kidlash uchun men Assembler tiliga murojaat qilishga qaror qildim. Biroq, unda ko'plab buyruqlar mavjudligi ma'lum bo'ldi.
Menga ma'lumotlarni o'qish va chiqarish, xotira bilan ishlash, hisoblar va mantiqiy operatsiyalarni bajarish, o'tish va ko'chadan bajarish uchun AI kerak edi. Men Brainfuck tiliga duch keldim, unda faqat 8 ta buyruq mavjud va har qanday hisob-kitoblarni amalga oshira oladi (ya'ni Turing to'liq). Aslida, bu genetik dasturlash uchun javob beradi, lekin men yanada oldinga bordim.
Men hayron bo'ldim: har qanday algoritmni amalga oshirish uchun buyruqlarning minimal soni qancha bo'lishi kerak? Ma'lum bo'lishicha - bitta!
URISC protsessorida faqat bitta buyruq mavjud: agar berilgan son kamaytirilgan bo'lsa, keyingi buyruqni olib tashlang va o'tkazib yuboring. Bu har qanday algoritmni qurish uchun etarli.
Oleg Mazonka yanada olg'a bordi, BitBitJump guruhini tuzdi va Turingga ko'ra uning to'liq ekanligini isbotladi. Buyruq uchta manzilni o'z ichiga oladi, birinchisidan ikkinchi xotira manziliga bir bit nusxa ko'chiradi va boshqaruvni uchinchi manzilga o'tkazadi.
Olegning g'oyalarini o'rganib, ishni soddalashtirish uchun men SumIfJump guruhini ishlab chiqdim. Buyruq to'rtta operandni o'z ichiga oladi: A, B, C, D va quyidagilarni bajaradi: hujayradan ma'lumotni A manziliga B manziliga qo'shadi, agar qiymat belgilangan * dan katta bo'lsa, u C manziliga o'tadi, aks holda u D manziliga o'tadi.
Izoh
* Bu holda 128 ishlatilgan - bu genom uzunligining yarmi.

Operand A N0 xotira xujayrasiga kirganda, ma'lumotlar kiritiladi va N1 katakka o'tganda, u holda chiqish amalga oshiriladi.
Quyida FreePascal-dagi SumIfJump kodi (Delphining bepul analogi).
RunProg protsedurasi (lar: TData); var a, b, c, d: TData; begin Inc (NStep); agar NStep\u003e MaxStep, keyin ProgResult-ni boshlang: \u003d "MaxStep"; Chiqish oxiri; a: \u003d s; b: \u003d s + 1; c: \u003d s + 2; d: \u003d s + 3; a: \u003d Prog [a]; b: \u003d Prog [b]; c: \u003d Prog [c]; d: \u003d Prog [d]; agar a \u003d 0 bo'lsa, unda ProgResult boshlang: \u003d "Kirish"; Chiqish oxiri; agar a \u003d 1 bo'lsa, unda ProgResult boshlang: \u003d "Chiqish"; Chiqish oxiri; Prog [b]: \u003d Prog [b] + Prog [a]; agar Prog [b]< ProgLength div 2 then RunProg(c) else RunProg(d); end;
SumIfJump o'zini o'zi o'zgartiradigan kodni amalga oshiradi. Oddiy dasturlash tilida mavjud bo'lgan har qanday algoritmlarni bajarishi mumkin. Kodni o'zgartirish oson va har qanday manipulyatsiyaga qarshi turadi.

Download 1.61 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling