Kako napisati umjetnu inteligenciju. Umjetna inteligencija. Kontradikcije i problemi stvaranja. Zašto umjetna inteligencija pobjeđuje ljude

Umjetna inteligencija stvorila je neuronsku mrežu 15. decembra 2017

Doživjeli smo trenutak kada umjetna inteligencija stvara vlastitu neuronsku mrežu. Iako mnogi misle da je to ista stvar. Ali u stvari, nije sve tako jednostavno, a sada ćemo pokušati da shvatimo šta je to i ko koga može stvoriti.


Inženjeri iz odjela Google Brain demonstrirali su AutoML ovog proljeća. Ova umjetna inteligencija može proizvesti vlastitu jedinstvenu umjetnu inteligenciju bez ljudske intervencije. Kako se nedavno ispostavilo, AutoML je po prvi put uspio stvoriti NASNet, sistem kompjuterskog vida. Ova tehnologija značajno nadmašuje sve analoge koje su ranije stvorili ljudi. Ovaj sistem zasnovan na veštačkoj inteligenciji može biti odličan asistent u razvoju, recimo, autonomnih automobila. Primjenjivo je i u robotici - roboti će moći dostići potpuno novi nivo.

Razvoj AutoML-a je baziran na jedinstvenom sistemu učenja uz pomoć. Riječ je o upravitelju neuronske mreže koji samostalno razvija potpuno nove neuronske mreže dizajnirane za određene specifične zadatke. U našem slučaju, AutoML ima za cilj da proizvede sistem koji prepoznaje objekte u video grafu što je preciznije moguće u realnom vremenu.

Sama umjetna inteligencija bila je u stanju da trenira novu neuronsku mrežu, nadgledajući greške i ispravljajući rad. Proces učenja se ponavljao mnogo puta (hiljade puta) sve dok sistem nije bio spreman za upotrebu. Zanimljivo je da je uspjela zaobići sve slične neuronske mreže koje su trenutno dostupne, ali razvijene i obučene od strane ljudi.

U isto vrijeme, AutoML procjenjuje performanse NASNet-a i koristi ove informacije za poboljšanje mreže podružnica; ovaj proces se ponavlja hiljade puta. Kada su inženjeri testirali NASNet na ImageNet i COCO setovima slika, on je nadmašio sve postojeće sisteme kompjuterskog vida.

Google je zvanično objavio da NASNet prepoznaje sa preciznošću od 82,7%. Rezultat je 1,2% veći od prethodnog rekorda, koji su početkom ove jeseni postavili istraživači iz Momente i specijalista Oxforda. NASNet je 4% efikasniji od svojih kolega sa prosječnom preciznošću od 43,1%.

Postoji i pojednostavljena verzija NASNeta, koja je prilagođena mobilnim platformama. Nadmašuje analogne za nešto više od tri posto. U bliskoj budućnosti ovaj sistem će biti moguće koristiti za proizvodnju autonomnih vozila, za koje je važna dostupnost kompjuterskog vida. AutoML nastavlja da proizvodi nove nasledne neuronske mreže, nastojeći da osvoji još veće visine.

Ovo, naravno, postavlja etička pitanja vezana za zabrinutost oko AI: šta ako AutoML gradi sisteme takvom brzinom da društvo jednostavno ne može da ih prati? Međutim, mnogi velike kompanije pokušajte da uzmete u obzir sigurnosne brige AI. Na primjer, Amazon, Facebook, Apple i neke druge korporacije su članovi Partnerstva za AI u korist ljudi i društva. Institut za elektrotehniku ​​i inženjerstvo (IEE) predložio je etičke standarde za AI, a DeepMind je, na primjer, najavio stvaranje grupe koja će se baviti moralnim i etičkim pitanjima vezanim za primjenu umjetne inteligencije.

Međutim, mnoge velike kompanije pokušavaju da uzmu u obzir sigurnosne probleme AI. Ovo, naravno, postavlja etička pitanja vezana za zabrinutost oko AI: šta ako AutoML gradi sisteme takvom brzinom da društvo jednostavno ne može da ih prati? Institut za elektrotehniku ​​i inženjerstvo (IEE) predložio je etičke standarde za AI, a DeepMind je, na primjer, najavio stvaranje grupe koja će se baviti moralnim i etičkim pitanjima vezanim za primjenu umjetne inteligencije. Na primjer, Amazon, Facebook, Apple i neke druge korporacije su članovi Partnerstva za AI u korist ljudi i društva.

Šta je vještačka inteligencija?

Termin "vještačka inteligencija" skovao je John McCarthy, pronalazač jezika Lisp, osnivač funkcionalnog programiranja i dobitnik Turingove nagrade za njegov ogroman doprinos polju istraživanja umjetne inteligencije.
Umjetna inteligencija je način da se napravi kompjuter, kompjuterski kontrolirani robot ili program koji može inteligentno razmišljati poput čovjeka.

Istraživanje AI se provodi proučavanjem mentalne sposobnostičovjeka, a zatim se dobijeni rezultati ovog istraživanja koriste kao osnova za razvoj inteligentnih programa i sistema.

Šta je neuronska mreža?

Ideja iza neuronske mreže je sastavljanje složene strukture od vrlo jednostavnih elemenata. Jedan dio mozga teško se može smatrati razumnim - ali ljudi obično rade iznenađujuće dobro na IQ testovima. Ipak, do sada je ideja o stvaranju uma „ni iz čega“ obično bila ismijavana: vic o hiljadu majmuna s pisaćim mašinama star je već stotinu godina, a po želji, kritike neuronskih mreža mogu se naći i u Ciceron, koji je sarkastično predložio bacanje žetona sa slovima u zrak dok ne poplavi, kako bi prije ili kasnije ispao smislen tekst. Međutim, u 21. veku se pokazalo da se klasici uzalud rugaju: to je armija majmuna sa žetonima koji uz dužnu upornost mogu zavladati svetom.
U stvari, neuronska mreža se čak može sastaviti iz kutija šibica: to je samo skup jednostavnih pravila po kojima se informacije obrađuju. "Umjetni neuron", ili perceptron, nije poseban uređaj, već samo nekoliko aritmetičkih operacija.

Perceptron ne radi nigdje lakše: prima nekoliko početnih brojeva, svaki množi s "vrijednošću" ovog broja (više o tome u nastavku), zbraja i, ovisno o rezultatu, daje 1 ili -1. Na primjer, fotografiramo otvoreno polje i pokažemo našem neuronu neku tačku na ovoj slici – to jest, šaljemo mu nasumične koordinate kao dva signala. I onda pitamo: "Dragi neurone, ima li neba ili zemlje?" "Minus jedan", odgovara lutka, spokojno gledajući u kumulusni oblak. - Jasno je da je zemlja.

"Zabadanje prsta u nebo" glavno je zanimanje perceptrona. Ne možete očekivati ​​nikakvu tačnost od njega: isto tako možete baciti novčić. Magija počinje u sljedećoj fazi, koja se zove mašinsko učenje. Na kraju krajeva, znamo tačan odgovor - što znači da ga možemo zapisati u našem programu. Dakle, ispada da za svako pogrešno nagađanje perceptron doslovno prima kaznu, a za ispravnu - premiju: "vrijednost" dolaznih signala se povećava ili smanjuje. Nakon toga, program se nastavlja nova formula... Prije ili kasnije, neuron će neminovno "shvatiti" da je zemlja na fotografiji ispod, a nebo na vrhu - to jest, jednostavno će početi da ignoriše signal iz kanala kroz koji se x-koordinate prenose do to. Ako stavite još jednu fotografiju tako sofisticiranom robotu, onda možda neće pronaći liniju horizonta, ali sigurno neće pobrkati vrh i dno.

U stvarnom životu, formule su malo složenije, ali princip ostaje isti. Perceptron može obaviti samo jedan zadatak: uzeti brojeve i staviti ih u dvije hrpe. Najzanimljivije počinje kada postoji nekoliko takvih elemenata, jer dolazni brojevi mogu biti signali iz drugih "cigli"! Recimo da će jedan neuron pokušati da razlikuje plave piksele od zelenih, drugi će nastaviti da petlja po koordinatama, a treći će pokušati da proceni koji su od ova dva rezultata bliži istini. Ako postavite nekoliko neurona na plave piksele odjednom i sumirate njihove rezultate, dobit ćete cijeli sloj u kojem će "najbolji učenici" dobiti dodatne bonuse. Dakle, prilično raširena mreža može pokupiti čitavo brdo podataka i uzeti u obzir sve svoje greške.

Neuronska mreža se može napraviti pomoću kutija šibica - tada ćete u svom arsenalu imati trik kojim možete zabavljati goste na zabavama. Urednici MirF-a su to već isprobali - i ponizno priznaju superiornost vještačke inteligencije. Naučimo nerazumnu materiju da igra igru ​​11 štapova. Pravila su jednostavna: na stolu je 11 mečeva, a u svakom potezu možete uzeti jednu ili dvije. Pobjednik je onaj koji je uzeo posljednju. Kako ovo odigrati protiv "kompjutera"?

Veoma jednostavno.

Uzimamo 10 kutija ili šoljica. Na svakom pišemo broj od 2 do 11.

U svaku kutiju stavljamo po dva kamena - crni i bijeli. Možete koristiti bilo koje stavke sve dok se međusobno razlikuju. To je to - imamo mrežu od deset neurona!

Neuronska mreža uvijek hoda prva. Prvo pogledajte koliko je šibica ostalo i uzmite kutiju s tim brojem. Na prvom potezu, to će biti kutija broj 11. Uzmite bilo koji kamenčić iz potrebne kutije. Možete zatvoriti oči ili baciti novčić, glavna stvar je da djelujete nasumično.
Ako je kamen bijeli, neuronska mreža odlučuje uzeti dvije utakmice. Ako crni - jedan. Stavite kamenčić pored kutije kako ne biste zaboravili koji je "neuron" donio odluku. Nakon toga, osoba hoda - i tako sve dok ne ponestane šibica.

A sada počinje zabava: učenje. Ako mreža pobijedi u igri, onda mora biti nagrađena: bacite još jedan kamenčić iste boje u one "neurone" koji su učestvovali u ovoj igri, a koji su pali tokom igre. Ako mreža izgubi, uzmite posljednju korištenu kutiju i odatle uklonite neuspješni kamen. Može se ispostaviti da je kutija već prazna - tada se "posljednji" neuron smatra prethodnim sličnim neuronom. Tokom sljedeće igre, udarivši u praznu kutiju, neuronska mreža će se automatski predati.

To je sve! Igrajte nekoliko ovakvih igrica. U početku nećete primijetiti ništa sumnjivo, ali nakon svake pobjede mreža će povlačiti sve uspješnije poteze - a nakon desetak partija shvatit ćete da ste stvorili čudovište koje ne možete pobijediti.

Izvori:

U nizu članaka istražit ćemo nove pristupe u umjetnoj inteligenciji, modeliranju ličnosti i obradi VELIKIH podataka koji nisu dostupni većini AI profesionalaca i javnosti. Vrijednost ovih informacija je u tome što je sve testirano u praksi, a većina teorijskih razvoja implementirana je u primijenjenim projektima.

Mnogi od vas su čuli za savremene tehnologije koje se danas povezuju sa konceptom veštačke inteligencije, a to su: ekspertni sistemi, neuronske mreže, lingvistički algoritmi, hibridni sistemi, kognitivne tehnologije, simulacije (čet botovi) itd.

Da, mnoge kompanije koriste gore navedene tehnologije za rješavanje problema obrade informacija svojih klijenata. Neke od ovih kompanija pišu da stvaraju ili su kreirale rješenja umjetne inteligencije. Ali da li je to inteligencija?

Prva stvar koju ćemo uraditi je da definišemo šta je inteligencija.

Zamislite da postoji kompjuter sa inteligencijom. I imate opciju da s njim komunicirate glasom ili putem tekstualnih poruka.
pitanja:
  • Da li je potrebno ugraditi jezičke karakteristike u obavještajni program kompjutera (da opiše semantiku, gramatiku, morfologiju) ili bi mogao sam naučiti jezike kroz interakciju s osobom?
  • Kada biste dobili zadatak da podučavate računar jeziku, šta biste radili?
  • Da si samo učestvovao na treningu, na koga bi ličio?
Sada ponovo odgovorite na ova pitanja, sa jedinom razlikom koju biste morali da podučavate:
  • Čistokrvni papagaj, teoretski sposoban za komunikaciju.
  • Novorođena beba.
Ti i ja smo upravo obavili neki intelektualni posao i nadam se da su mnogi od vas stekli nova znanja. I zato:
  • Prvo sam vas zamolio da zamislite (zamislite), "šta će se dogoditi ako...". Djelovali ste u promijenjenom okruženju. Možda vam je nedostajalo informacija i znanja, bilo vam je teško.
  • Drugo, pokazalo se da ste sposobni za učenje, spoznaju, sami ste pronašli neku analogiju koja vam je poznata ili ste je sreli u tekstu, a možda ste koristili internet ili pitali prijatelja za savjet.
Postoji mnogo pristupa definiranju inteligencije. Definisaćemo njegove glavne karakteristike...

Kao prvo inteligencija je sposobnost učenja i zamišljanja.

Da bi se stvorio algoritam za modeliranje inteligencije, prvo što treba učiniti je obdari ga sposobnošću učenja, nije potrebno znanje za ulaganje u to.

Vratimo se na primjer našeg djeteta kako bismo detaljnije opisali proces učenja.
Koji principi funkcionišu kada dijete nauči da razumije i govori jezik?

  1. Što češće čuje riječ u različitim kontekstima, brže će je zapamtiti. Riječ koju će prvi izgovoriti najvjerovatnije će biti "mama".
    "mama te voli"
    "Mama će ti oprati ruke"
    "mama te ljubi"
    "Gdje je mama?"
    Do učenja dolazi zbog redundantnosti podataka.
  2. Što je više kanala protoka informacija uključeno, to je trening efikasniji:
    dijete čuje: "Mama te voli."
    dete vidi osmeh majke.
    beba osjeća toplinu koja dolazi od majke.
    beba okusi i miriše majčino mlijeko.
    dijete kaže "mama".
  3. Dijete neće moći odmah pravilno reprodukovati riječ. On će pokušati, pokušati. "M", "Mama", "Mama", "M" ... "Mama". Učenje se odvija u akciji, svaki naredni pokušaj se prilagođava dok ne dobijemo rezultat. Metoda pokušaja i greške. Veoma je važno dobiti povratnu informaciju od stvarnosti.
  4. Ne obrazujte svoju djecu, ona će i dalje biti kao vi. Dijete teži da bude poput ljudi oko sebe. On ih oponaša i uči od njih. Ovo je jedan od mehanizama za modeliranje ličnosti, o čemu ćemo detaljnije govoriti u narednim člancima.

Koja je uloga mašte?

Zamislite da se vozite nepoznatim putem. Prođite znak ograničenja brzine od 80 km/h. Vozite dalje i vidite još jedan znak ograničenja brzine, ali je poprskan blatom i gotovo ga je nemoguće razaznati. Putujete brzinom od 95 km/h. Šta ćeš uraditi? Dok ste donosili odluku, jedan policajac je pogledao iza žbunja, a vi ste vidjeli blistav osmijeh na njegovom licu. „Slika znaka“ vam se momentalno upotpunila u glavi i shvatili ste zašto je ovde policajac i da hitno morate pritisnuti kočnicu. Spustiš brzinu na 55 km/h, osmeh sa policajčevog lica momentalno nestane i nastaviš da voziš.

I još jedan zanimljiv primjer maštoviti rad iz životinjskog svijeta je promatranje svraka. Svraka je zakopala hranu u pustoši ispred ostalih svraka. Sve svrake su odletjele, ali se naša svraka vratila u pustoš i sakrila hranu. Šta se desilo? Zamislila (zamislila), "šta će biti ako" dođe još jedna svraka, koja je vidjela gdje je sakrila hranu. Simulirala je situaciju i pronašla rješenje kako je izbjeći.

Mašta simulira situaciju pod proizvoljnim uvjetima.

Kao što ste već vidjeli, inteligencija nije baza znanja, nije skup programiranih reakcija ili slijeđenja unaprijed definiranih pravila.

Inteligencija je sposobnost učenja, spoznavanja i prilagođavanja promjenjivim uvjetima u procesu rješavanja poteškoća.

Ne čini vam se da smo u definisanju inteligencije bilo šta izgubili iz vida važne komponente ili ste zaboravili nešto reći?

Da, propustili smo percepciju i zaboravili da pričamo o pamćenju.

Zamislite da gledate kroz špijunku i vidite dio pisma:

Šta je ovo pismo?

Možda "K"?

Naravno da ne, ovo je japanski hijeroglif za "vječnost".

Upravo ste dobili zadatak (problem). Najvjerovatnije ste pronašli sličnu sliku slova "K" u svojoj glavi i smirili se.

Vaš intelekt sve percipira sa slikama i traži sličnu sliku u sjećanju, ako je nema, tada se formira sidro za postojeće slike i zahvaljujući tome pamtite nove informacije, stječete vještine ili iskustvo.

Slika je subjektivna vizija stvarnog svijeta, koja se opaža uz pomoć osjetila (kanala protoka informacija).

Percepcija je subjektivna, jer zavisi od redosleda treninga, redosleda pojavljivanja slika u životu osobe i njihovog uticaja.

Percepcija počinje prepoznavanjem svijetlih/tamnih uzoraka. Otvorene oči - svijetle, zatvorene - tamne. Nadalje, osoba uči da prepoznaje sve složenije slike - "mama", "tata", lopta, stol, pas. Dobijamo referentne podatke, a sve naredne slike su nadgradnja na prethodne.

Sa ove tačke gledišta, učenje je proces izgradnje novih odnosa između percipiranih slika i slika koje su već u pamćenju.

Memorija se koristi za pohranjivanje slika i njihovih odnosa.

A mašta je sposobnost da se završi nedovršena slika.

Da rezimiramo, evo još jednog eksperimenta iz životinjskog svijeta:

Šimpanze su stavljene u kavez, a gomila banana je okačena u kavez prilično visoko od poda. Šimpanza je prvo skočila, ali se brzo umorila i kao da je izgubila interesovanje za banane i sela, jedva obraćajući pažnju na njih. Ali nakon nekog vremena, majmun je uzeo štap ostavljen u kavezu i ljuljao banane dok nisu pale. Drugi put, da bi dobila banane, čimpanza je uspjela spojiti dva štapa, jer svaki štap pojedinačno nije bio dovoljan da do njih dođe. Životinja se snašla i sa težim zadatkom, neočekivano je stavila kutiju ispod banana i iskoristila je kao stepenicu.

Šimpanzama je pokazana poznata slika "gomile banana". Ali slika za nju se pokazala nepotpunom - ne mogu se dosegnuti i pojesti. Ali budući da je ovo bio jedini raspoloživi izvor hrane, nedovršena slika je povećala unutrašnju napetost i zahtijevala završetak.

Sredstva za rješavanje problema (upotpunjavanje slike) su uvijek bila dostupna, ali je nastanak rješenja zahtijevao transformaciju postojećih slika (trebalo je učiti uz pomoć mašte). Šimpanza je morala da zamisli (mentalno nabroji sve moguće opcije): "šta će se desiti ako uzmem štap", "šta će se dogoditi ako..." i najverovatnije pretpostavke da proveri u praksi, pokuša da dobije povratnu informaciju, ponovo zamisli , pokušajte, dobiti povratnu komunikaciju i tako dalje dok ne završimo sliku (učimo).

Ako je za vas prepoznavanje slike hijeroglifa "vječnost" bilo pitanje života i smrti, onda ćete sigurno pronaći način da to učinite.

Sa popularnijeg jezika, preći ćemo na tehnički i formulirati osnovne koncepte koje ćemo koristiti u nastavku:

  • Ukrštanje suvišnih informacija iz različitih informacijskih kanala stvara sliku.
  • Učenje je transformacija tokovi informacija u informativno polje.
  • Informaciono polje (memorija) - skladištenje slika i njihovih odnosa.
  • Mašta - ...
    - "Dragi čitaoče, dovršite sami sliku svoje mašte, koristeći suvišne informacije iz svog životnog iskustva i ovog članka."
  • Inteligencija je sposobnost učenja i zamišljanja.

Na početku članka naveli smo tehnologije povezane s umjetnom inteligencijom danas, sada možete samostalno procijeniti koliko odgovaraju konceptu inteligencije.

U sljedećem članku ćemo razmotriti takav zadatak kao što je inteligentna pretraga informacija na Internetu. Definirat ćemo kriterije inteligencije, razviti praktične pristupe i "osjetiti" stvarnu aplikaciju koja implementira principe opisane u ovom članku.

Članak ne tvrdi da je istinit, on je dio našeg razvoja i istraživanja. Napišite komentare, dopunite materijal svojim primjerima ili razmišljanjima. Naučite i zamislite...

Šta se krije iza izraza "vještačka inteligencija" ili AI (vještačka inteligencija), ne znaju svi. Većina ljudi vjerovatno misli o AI kao o kompjuteru koji je programiran da "misli" sam za sebe, donosi inteligentne odluke i odgovara na podražaje. Ova ideja nije sasvim tačna. Nijedan kompjuter i nijedna mašina ne mogu zaista da razmišljaju – jer za to je potrebna svest koju „mašina bez duše“ nema. Kompjuter može raditi samo ono što mu osoba kaže.

AI programiranje na prvi pogled

AI programiranje nije učenje kompjutera kako da razmišlja. Umjesto toga, bit će programirano da uči i rješava specifične probleme samostalno na osnovu svog iskustva. Ali i ovdje ne govorimo o njihovom vlastitom razmišljanju, već o imitaciji. Ovo se također odnosi na odluke koje AI donosi. može odmjeriti opcije i onda napraviti izbor. Međutim, njegov izbor će se uvijek temeljiti na onim parametrima koji su prethodno programirani.

Dakle, umjetna inteligencija može raditi samo ono što je unaprijed određeno za kompjuter, ali bolje, preciznije i brže od ljudi. Usput, ako želite naučiti kako programirati, pogledajte naše savjete za programere početnike.

Korištenje umjetne inteligencije

Umjetna inteligencija se već koristi u mnogim područjima, kao što je kompleks kompjuterske igrice i pretraživače. U AI programiranju, kompleks disciplina igra važnu ulogu, a ne samo informatika ili matematika. Filozofija, psihologija, neurologija i lingvistika su od velikog značaja.

Umjetna inteligencija se dijeli na neuronsku i simboličku (jaku i slabu). Prvi pokušava oponašati strukture i funkcije ljudskog mozga. Potonji se fokusira na odgovarajući problem i rezultat.

U svakodnevnom životu, na primjer, umjetna inteligencija se programira i koristi u robotici. Služi za kontrolu proizvodnih procesa ili jednostavno obavlja svakodnevnim zadacima... također se koristi za renderiranje. Najpopularniji primjer je prepoznavanje lica ili otiska prsta.

Drugi korak u stvaranju vještačke inteligencije su sistemi zasnovani na znanju. Zatim se programski podaci unose u program. To omogućava umjetnoj inteligenciji da logično i neovisno daje odgovore postavljena pitanja... Međutim, čak i ovi "nezavisni odgovori" temelje se samo na znanju kojim je umjetna inteligencija izvorno bila obdarena.

U ovom dijelu, ni manje ni više, govori se o algoritmu koji je u osnovi intelektualne aktivnosti. Paralelno, pokušat ćemo odgovoriti na pitanje kako bi se slične pojave mogle pojaviti u prirodnoj inteligenciji. Mi, naravno, nećemo otkriti sve tajne inteligencije, nećemo stvoriti mozak sumraka, ali ćemo saznati principe, glavni smjer kuda dalje kopati. Naučit ćemo više o ljudskoj inteligenciji. Biće i praktičnih skica algoritama koji se mogu programirati na računaru upravo sada.

Ali prvo, ukratko, gdje smo stigli u prethodnim dijelovima (). I sam sam već zaboravio šta je tu bilo, pa ću morati da se podsetim, inače neću moći ni da pričam dalje. :) Ko se sjeća - preskoči ovaj dio.

Šta je bilo u prethodnim delovima

Penrose, u svojim divnim knjigama, vjeruje da je mozak sposoban donositi apsolutno istinite sudove, i tvrdi da su u srcu misaonih procesa fizički procesi koji mogu izvoditi vječne proračune u konačnom vremenu. Štaviše, ovi procesi se ne računaju samo na šta, već na apsolutnu i nepobitnu istinu u pravom smislu te riječi. A mozak može "povući" ove procese da razmišljaju. I zato su takvi procesi neophodni za funkcioniranje mozga. I, iako su takvi procesi nepoznati današnjoj fizici, Penrose vjeruje da je dublji nivo svemira drugačija stvarnost zasnovana na takvim procesima.

U mnogome je Penrose u pravu za ovu drugu stvarnost, a čak i više od toga, nekako ćemo ispričati ništa manje zanimljive i slične ideje o tome šta leži u temeljima svemira. Ali svejedno, Penrose je požurio, preskočio, da tako kažem, nekoliko koraka. Ogromna većina (ako ne i sva) intelektualne aktivnosti može se objasniti svakodnevnijim i svakodnevnijim stvarima.

Nesumnjiva zasluga Penrosea je što je uvjerljivo objasnio zašto intelektualna aktivnost ne može se ni na koji način zasnivati ​​na formalnoj logici (ili drugim riječima, na striktnim algoritmima). Preciznije, Penrose je pokazao da je apsolutno istinita logika (koja je, po Penroseovom shvatanju, intelektualna aktivnost) nemoguća na osnovu poznatih fizičkih procesa. Ali mi smo to shvatili na svoj način, naime, da intelektualnoj aktivnosti nije potrebna apsolutno istinita logika. Ili, drugim riječima, ljudska inteligencija je vjerodostojna, daje dobre aproksimacije istini, ali vjerovatnoća greške još uvijek postoji. I to radikalno mijenja stvar, naime, potpuno mijenja pristupe kako objasniti prirodnu inteligenciju i kako izgraditi umjetnu inteligenciju. I takva inteligencija se može modelirati na Turingovom stroju, programiranom na običnom kompjuteru, međutim, bolje je imati arhitekturu veće snage i s inherentnim paralelizmom, na primjer, kvantnu ili optičku.

Prisjetimo se sada šta se krije iza frke oko istine, a ne istine logike. Matematički i kompjuterski proračuni, ljudske refleksije, logičke konstrukcije i zaključci povezani su sa konceptom algoritma ili formalnog sistema (u stvari, oni su jedno te isto). Izvršenje algoritma (to je ujedno i primjena pravila formalnog sistema) je model svih vrsta proračuna, refleksija i drugih fizičkih procesa (ili, barem, prilično dobra aproksimacija). Algoritam je skup instrukcija koje neki apstraktni računar (Turingova mašina) može izvršiti korak po korak.

Postoji koncept strogog algoritma (to je takođe potpun i konzistentan formalni sistem). Na istom skupu ulaznih podataka, strogi algoritam za finale broj koraka će dati isti odgovor. Kada se primeni na formalne sisteme i logičko rezonovanje, to znači da se u konačnom vremenu za početne uslove može naći istinit (dosledan i nedvosmislen) odgovor. Takvi proračuni se također nazivaju determinističkim.

Ali postoje i nedeterministički (nestrogi) algoritmi u kojima ovi uslovi nisu ispunjeni (oni su nekompletni / kontradiktorni formalni sistemi). Za algoritam, nepoštivanje uslova konačnosti znači da se ne zna da li će algoritam završiti svoje izračunavanje, a nije jasno kako da se to unapred sazna. Nedeterministički algoritam može završiti svoje računanje, ili može zauvijek lutati, ali ono što će tačno učiniti je zagonetka koja se može nagađati zauvijek. Za formalne sisteme, dokaz istinitosti ili neistinitosti originalne izjave je jednog dana neshvatljiv ili će trajati zauvijek. Nedosljednost znači da unutar formalnog sistema možete pokupiti različite lance pravila koja će, za početnu izjavu, dati i istinit i lažan odgovor. Za algoritam to znači da se na istim podacima mogu dobiti različiti rezultati.

Mnogi, uključujući Penrosea, kažu da je intelektualna aktivnost zasnovana na strogoj formalnoj logici. Ali ovdje je globalna zasjeda. Gedelova dugo dokazana teorema kaže da formalni sistem ne može biti potpun i dosljedan u isto vrijeme. Kompletnost znači da formalni sistem zna sve o svojoj oblasti stručnosti. Uključivanje takvog sistema može suditi o istini o sebi. Ako formalni sistem kreira neko spolja, onda on može da funkcioniše, dajući ispravne rezultate i nimalo ne mareći da li ga je taj neko ispravno napravio. Ako formalni sistem pokuša da se uveri da je urađen ispravno, neće uspeti. Zato što je naš sistem dosljedan, ali nije potpun. Ako je sistem u stanju da proceni ispravnost samog sebe (kompletan), onda će takav sistem imati unutrašnje kontradikcije, a rezultati njegovog delovanja nisu nužno tačni. Zašto? Uključujući i zato što pitanje samoispitivanja (samospoznaja, samorefleksija) spada u kategoriju vječnih kalkulacija.

Šta iz ovoga slijedi? Ispostavilo se (prema Penroseu) da je ljudska inteligencija potpun i dosljedan sistem, jer može generirati istinite izjave i istovremeno pratiti svoju ispravnost. Ali prema Gödelovoj teoremi, to je nemoguće. Dakle, potrebno je uključiti nepoznate fizičke procese za rad intelekta, koji u kratkom trenutku može osvrnuti se u vječnost, pronaći odgovor i vratiti ovaj odgovor u mozak. Ali, kao što smo već napomenuli, intelekt ne mora biti potpun i dosljedan, iako se vrlo uvjerljivo može pretvarati da je istinit i nepogrešiv.

Druga zasjeda je da fizika ne poznaje entitete na kojima operiše formalna logika. Naime, formalno razmišljanje se često zasniva na konceptima prirodnih brojeva, konceptima istine i neistine. Prirodni brojevi su oni kod kojih je 1 + 1 = 2, 2 + 1 = 3 itd. Istina = 1, Netačno = 0, Negativna istina = Netačno. Sve jedinice su apsolutno jednake jedna drugoj, permutacija članova zbira se ne mijenja, itd. Ali nevolja je u tome što u našem svijetu ne postoje takve čestice, takve stvari ili procesi koji bi se mogli nedvosmisleno povezati s prirodnim brojevima, a da su pritom pravila aritmetike ispunjena za ove entitete u bilo kojem rasponu. U nekim rasponima, aritmetika je približno tačna, ali izvan raspona počinju globalni kvarovi. Dakle, formalna logika, grubo govoreći, funkcioniše sama po sebi ne shvatajući šta, entitete, čija je suština prilično nejasna. Štaviše, sama aritmetika ne pripada potpunim i konzistentnim sistemima, npr zabavna činjenica... I općenito, čini se da takvi koncepti kao što su apsolutna istina, prirodni brojevi, u principu, ne mogu postojati. Kako i zašto će biti u narednim dijelovima.

Šta iz ovoga slijedi? Svi procesi, svi proračuni koji se odvijaju čak i u mozgu, čak iu kompjuterima, su po sebi ili nekompletni ili kontradiktorni, iako daju dobru uvjerljivu aproksimaciju potpunim i konzistentnim proračunima.

Zašto Penrose ne voli konfliktne formalne sisteme, zašto im Penrose uskraćuje pravo da budu osnova intelektualne aktivnosti? Kao što se sjećamo, u kontradiktornom formalnom sistemu, za iste podatke, možete izvesti i istinite i netačne izjave, sve do činjenice da je 1 = 2, itd. Na osnovu toga, Penrose nagoveštava da će konfliktni sistemi hoće uvijek(!) proizvesti oprečne rezultate. Iz toga, Penrose ima vrlo usko tumačenje haotičnih procesa, smatra da su to samo slučajni procesi koji se u prosjeku mogu modelirati strogim formalnim sistemom.

Zapravo, kontradiktorni sistemi u većini slučajeva mogu konvergirati do pravog rezultata, uopće nije neophodno da će unutrašnje kontradikcije odmah dominirati i uništiti sistem. Mogu postojati sistemi u kojima su kontradikcije svedene na minimum. Čak i kada se pokreću na apstraktnom računaru, oni će ostati nedeterministički, nekompletni i nekonzistentni, ali će u većini slučajeva proizvesti prihvatljiv rezultat. Zašto je Penrose odlučio da će konfliktni sistemi uvijek biti uništeni vlastitim kontradikcijama? Penrose ćuti o ovome...

Dalje više. Kao što smo vidjeli u prethodnim dijelovima, procesi našeg svijeta, bilo u kompjuterima ili u mozgu, svi su po sebi nejasni i kontradiktorni. Ali u većini slučajeva se izdaju tačan rezultat... To je zbog činjenice da se ovi procesi sastoje ili od višestrukih ponavljanja sličnih proračuna, ili od velikog broja sličnih elemenata, na način da kombinacija ovih ponavljanja ili elemenata u većini slučajeva daje stabilan i ispravan rezultat. Istovremeno, naravno, ostaje vrlo mala šansa da će mala unutrašnja kontradikcija porasti i uništiti cijeli sistem. Ali u većini slučajeva, čini se da je sistem usklađen, elementi, djelujući jedni na druge, minimiziraju unutrašnje kontradikcije. Nisu svi procesi u našem svijetu visoko harmonizirani, ali takvih procesa ima, a ono što se dešava u kompjuterima i u mozgu pripada njima. Odakle takva harmonizacija u našem svijetu - tema sledeći delovi... Postoji i mala šansa da u našim pogledima na svijet, u našoj intelektualnoj aktivnosti, globalno griješimo u nečemu, da postoji mala crvotočina u našim prosudbama, koja može iz temelja preokrenuti cijelu našu ideju o svemiru. Ali više o tome u narednim dijelovima.

U početku se ljudsko razmišljanje zasniva upravo na takvim procesima. Nema dugih logičkih lanaca, nema jasnih pravila. Umjesto toga, postoje kratki lanci situacije-reagovanja, bez dugih ciklusa obrade. Elementi ovih lanaca imaju veliki broj ulaza, a unutar elementa ulazni podaci su podeljeni na mnogo paralelnih, dupliranih, rasplinutih putanja, koje na izlazu daju jasno rešenje. Ove elemente nazivamo kratkim i širokim uvjerljivim pravilima. Takva pravila se ne bave logičkim zaključivanjem, već se "pamte" gotovo rešenje na njima poznate situacije. Mehanizam učenja takvih pravila je također daleko od jasnog logičnog zaključka i opisan je u prethodnim dijelovima.

Takvi procesi su dobri za interakciju sa stvarnim svijetom, ali formalna logika im je teška. Međutim, ljudska inteligencija može raditi u formalnom logičkom modu, može emulirati kompjuterske proračune. Možda, ali na račun mnogo "težih" procesa. Da bi se izbacili proračuni jednostavne logičke sheme, jednostavnog programa u mozgu, uključeni su bezbroj kratkih rasplinutih pravila, koja u svojoj kombinaciji daju rezultat sličan radu stroge logike. A budući da ova pravila uopće nisu namijenjena formalnoj logici, njihov broj uključenih u oponašanje formalne logike bit će mnogo veći nego u interakciji sa stvarnim svijetom. I stoga, različite životinje nisu sposobne za logično razmišljanje, za to je potreban sofisticirani ljudski mozak. Iako su svakodnevni zadaci koje različite životinje rješavaju u prolazu izvan moći kompjutera.

Ali takvi "teški" procesi imaju i prednost. Sastoji se u tome da mozak može proizvesti nove logičke konstrukcije i kompjuterske programe visok stepen uvjerljivost, dok je jednostavan, ali efikasan algoritam u stanju da svoj posao obavlja samo besmisleno. Složenost izvedenih konstrukcija je mnogo redova veličine manja od stepena procesa koji su inicijalno uključeni u mozak. Upravo ta razlika u složenosti rješava kontradikciju da kontradiktorni intelektualni procesi stvaraju prave logičke konstrukcije. Ako se ova razlika u složenosti ne uzme u obzir, onda nema načina da se shvati odakle ove prave konstrukcije dolaze.

Zadatke koji zahtijevaju složene logičke konstrukcije, osoba rješava doslovno metodom "naučnog udarca". Naime, smislite neku najjednostavniju opciju, izbacite njenu računicu u mozgu, vidite pogrešne trenutke, smislite sljedeću (ne nužno ispravnu opciju), ponovo emulirajte računicu itd. Uz dobru obuku, takve konstrukcije se pretvaraju u kategoriju brzih automatskih radnji koje ne zahtijevaju sudjelovanje svijesti (i, ipak, njihova je složenost ionako ogromna), tipične situacije se pamte i počinju izgleda da mozak radi kao normalan kompjuter (u skladu sa formalnom logikom), iako to uopšte nije slučaj.

Dešava se i kada je mozak dugo "napetljan", "ubrzan" za neki zadatak, postoji oznaka početnih podataka, neuspjeli pokušaji, nejasne slutnje i čežnje da je istina negdje u blizini. A onda prasak, i bljesak uvida, sve dolazi na svoje mjesto i nova istina se rađa. Može se činiti da je ova istina rođena trenutno i da je došla iz viših sfera. Ali zapravo, efekat je isti, bljesku uvida je prethodio dug i naporan rad koji je uključivao, mijenjao i stvarao bezbroj kratkih i uvjerljivih pravila, pokušavao ih nekako spojiti, uskladiti, uglavnom bezuspješno. I sada dolazi trenutak kada se sva ova pravila već harmonično spajaju jedno s drugim, spajaju u jedan harmoničan proces i svi zajedno odaju novu istinu.

Umjetna inteligencija, slijedeći takve principe, mogla bi se programirati na konvencionalnim računarima. Naravno, ovaj program će u početku biti usmeren na neodređenost i prisustvo unutrašnjih kontradikcija. Dok su postojeći kompjuterski programi, iako neodređeni i kontradiktorni, napisani savremeni programi sa ciljem da ih učini manje neodređenim i manje kontradiktornim. Naravno, za umjetnu inteligenciju je bolje da koristi efikasniju arhitekturu koja to dozvoljava veliki broj paralelni i međusobno povezani procesi. Na primjer, kvantni ili optički. Jednoprocesorski elektronski računari se takođe mogu programirati da budu inteligentni, ali će im verovatno nedostajati snaga.

Više o "teškim" procesima i harmonizaciji bit će detaljnije riječi kasnije, a sada krenimo s dizajniranjem umjetne inteligencije.

Intelligence Bricks

Počnimo tako što ćemo se ukratko prisjetiti do čega smo već došli u ovoj oblasti, a šta nedostaje. Sve je to detaljno opisano u prethodnim dijelovima. Podsjećamo vas na ovo kako bismo razumjeli zašto je to tako, a ne drugačije. Uostalom, sam algoritam inteligencije nije tako kompliciran, glavna stvar u njemu su principi, morate razumjeti u kojem smjeru se kretati i kakve rezultate očekivati.

Programski jezici... Postoje proceduralni i predikatski. U proceduralnim jezicima program je napisan kao strogi niz instrukcija, između kojih mogu postojati uslovni skokovi.

Predikatski jezici imaju skup nezavisnih pravila, od kojih svako ima svoj opseg. Izvršitelj na predikatskim jezicima provjerava sva pravila za usklađenost sa trenutnom situacijom i primjenjuje neophodna pravila koji mijenjaju situaciju (unutrašnje stanje), i na taj način mogu graditi dugačke logičke lance od pravila. Naravno, ovo je teže za izvođača nego izvršavanje proceduralnog programa.

Proceduralni jezici su dobri tamo gdje je algoritam dobro poznat i zahtijeva brzo i efektivna implementacija... Predikatski jezici su dobri tamo gdje je potrebno pohraniti ljudsko znanje, logička pravila, a zatim izvući zaključke na osnovu znanja (na primjer, procijeniti različite ulazne situacije). Zgodno im je dodati nova znanja, bez ponovnog pisanja cijelog programa u cjelini. Postoje čak i modifikacije u kojima se, nakon uvođenja novih znanja, cjelokupna baza znanja dovodi u konzistentno stanje. Donedavno su se predikatski jezici (poput Prologa) smatrali budućnošću umjetne inteligencije.

Ali činjenica je da se proceduralni i predikatski jezici međusobno izražavaju jedan u drugom i da imaju iste probleme svojstvene algoritmima (formalni sistemi, vidi gore i dolje).

Prvo, suočeni smo sa problemom zaustavljanja. Algoritam uvijek može lutati u potrazi za rješenjem, iako se može nalaziti u blizini, u susjednoj grani. Ali algoritam će odgovarati potpunom i dosljednom formalnom sistemu. Ali za nas nema smisla (za sada vjerujemo da ne možemo vječno računati u konačnom vremenu). Ako napravimo neku vrstu obrezivanja "dugih" grana, tada će algoritam postati praktičniji, ali će izgubiti potpunost i dosljednost, neće postati istinit, već vjerojatan. I ovdje ne govorimo o tome da će se vjerovatnoća pogrešne odluke malo povećati, već o tome da će algoritam moći proizvesti suštinski pogrešne odluke.

Drugo, predikatska pravila koja čine logičke jedinice su previše "uska". U prirodnoj inteligenciji, logičke jedinice imaju na naređenja više ulaznih uslova i ovi ulazi se obrađuju prema fuzzy kriterijumima. Štaviše, takvom predstavom znanje se „zamrlja“, gubi na jasnoći i formalizmu.

Postojeća fuzzy logika (postoji takav odeljak u nauci) nije pogodna za upotrebu u predikatskim jezicima, zato. Bilo koja nejasnost, kada se susreće sa drugom nejasnošću u logičkom zaključivanju, može generisati mnoge alternativne opcije, različite logičke lance. Štaviše, ove opcije mogu lako rasti poput lavine. Postojeća fuzzy logika, koliko ja znam, nema nikakve veze sa paraleliziranjem lanaca ili njihovim kombinovanjem unatrag. Sve što fuzzy logika radi je da radi sa istim logičkim izrazima, ali umjesto logičke nule i jedan, koristi realni raspon od nule do jedan i aritmetičke operacije za kombinovanje brojeva iz ovog raspona.

Postoje varijante "složene" logike, kod kojih kada se implikacija obrne, nastaje nesigurnost, koja se izražava kao nešto poput zamišljene jedinice, a koja se uključuje u dalja proračuna, uz mogućnost paralelizacije i spajanja lanaca. Ali za sada, ova tema zahtijeva dalje razotkrivanje.

Treće, nemamo algoritam koji bi mogao da trenira (kreira) druge algoritme, u odsustvu osobe, već kada postoji skup situacija za obuku (reprezentativni skup parova ispravnih ulaznih i izlaznih vrednosti).

Sistemi za prepoznavanje uzoraka... Dobro prilagođen kao logička jedinica za našu umjetnu inteligenciju. Oni su u stanju da dobro klasifikuju ulaznu situaciju i izdaju rešenje za izlaz. Istina, samo ako nije potrebna dugotrajna obrada, jer takvi sistemi nemaju unutrašnju memoriju (stanja) i transformacije ovog stanja, već su refleks stimulans-odgovor. Ali prepoznavaoci se savršeno nose sa klasifikacijom. Oni čak mogu da obrađuju složene slike (kao što je prepoznavanje osobe sa slike lica). Metode obuke za sisteme za prepoznavanje obrazaca su efikasne i dobro poznate. Obučen na skupu poznatih primjera, prepoznavač može uhvatiti skrivene obrasce i kvalitativno generalizirati iskustvo na nepoznate primjere.

Principi učenja... Kada znate željeni (referentni) rezultat i stvarni rezultat inteligentnog sistema, možete izračunati grešku ovog sistema i ispraviti sistem tako da radi u pravom smjeru.

Metode korekcije (obuke) su tačne (nazivaju se i lokalne) i globalne. Lokalne metode su sposobne za izračunavanje grešaka u cijelom sistemu i stoga su brze i efikasne. Globalne metode ne znaju kako to da urade, slučajno mijenjaju parametre cijelog sistema, vide koliko je uspješno promjena utjecala na rad sistema i na osnovu toga odlučuju da li da sačuvaju ovu promjenu.

Lokalna metoda se odnosi na metodu gradijentnog spuštanja, kada se smjer greške može izračunati i propagirati od ulaza u suprotnom smjeru kroz cijeli sistem. Ova metoda, iako je "samo" vjerodostojna, daje dobre rezultate u praksi, na primjer, za obuku višeslojnih perceptrona (koji se često nazivaju neuronskim mrežama). Ali nije uvijek primjenjiv (kao i druge lokalne metode), budući da struktura greške i način njenog ispravljanja možda nisu poznati.

Ali imamo globalne nastavne metode, genetski algoritam i simulaciju žarenja, oni su svejedi, ali vrlo pohlepni za računskim resursima. Mogu raditi kada se gotovo ništa ne zna o tome kako ispraviti grešku. Genetski algoritam je efikasniji, pogotovo ako znate nešto o strukturi problema koji se rješava.

Princip skale... Znači da se ponovnim ponavljanjem sličnih procesa ili kombinacijom velikog broja sličnih elemenata može postići vrlo stabilan (ili vrlo vjerojatan) rezultat. Sličan element/proces ne znači u prosjeku sličan, to znači da elementi mogu biti kontradiktorni i konkurirati jedni drugima, mogu biti nestabilni, ali su na kraju ipak kombinovani (usklađeni) u rješenje sa visokim stepenom uvjerljivosti . Na primjer, u logičkim krugovima računara sve su elementarne čestice nestabilne, ali je njihov poluživot ili vrlo dug, ili je broj čestica u logičkom elementu vrlo velik, tako da raspad pojedinačne čestice praktično ne dolazi do izražaja. dati kvar u logičkim kolima. Drugi primjer, u umjetnim neuronskim mrežama, zasebna neuronska veza ima mali utjecaj na odluke, same veze mogu biti kontradiktorne, ali na kraju neuronska mreža proizvodi uglavnom ispravne odluke.

Hajde da sumiramo. Imamo predikatske jezike koji su prikladni za složeno rasuđivanje i internu obradu stanja. Postoje sistemi za prepoznavanje obrazaca koji se mogu koristiti kao logičke jedinice za predikatske jezike. Postoje svejedine nastavne metode za koje se nadamo da će automatski kreirati (obučiti) nove algoritme. Postoji princip skale, koji će nam, uz gubitak kompletnosti i konzistentnosti, omogućiti da zadržimo visoku vjerovatnoću naših rješenja umjetne inteligencije.

Algoritam inteligencije

Dozvolite mi da se ukratko podsetim suštine genetskog algoritma. Postoji takva metoda - slučajna pretraga. Nasumično rješenje se generiše, procjenjuje, a zatim se nasumično mijenja. Ako je rezultat bolji, odluka se pamti. Zatim se ciklus ponavlja. Ova metoda se koristi kada nije jasno kako izračunati rješenje "prema nauci". To traje veoma dugo. A ako pokrenete veliki broj paralelno različita rješenja? Za one od njih koji napreduju u uspjehu (kvalitet rješenja je dobar ili se vremenom poboljšava ili u poređenju sa "komšijama"), pravimo kopije-kopije, i mijenjamo (slučajno) ove instance pomalo. Ona rješenja koja izgledaju loše na pozadini drugih, ili ne poboljšavaju kvalitet rješenja tokom vremena, te instance podvrgavamo sve više nasumičnih promjena ili ih potpuno brišemo, a na njihovo mjesto stavljamo novogenerirani slučajni rješenja. Naravno, manje je vjerovatno da će se loše odluke propagirati. Postoji još jedna operacija (takođe primijenjena nasumično), kada se komadić odgrize iz dva različita rješenja, a ova dva komada se zalijepe u novo rješenje. Prelazak se zove. Što je rješenje bolje, veća je vjerovatnoća da će doći do ukrštanja. Kao rezultat, može se skočiti da se dobije rješenje koje ima najbolji rezultat nego oba njegova roditelja. Ali može se desiti i obrnuto. Ako je rješenje ispalo bolje, onda se dalje množi, ako je lošije, onda takvo rješenje, s vrlo moguće uklonjeno. Takva pretraga je najefikasnija kada poznajemo strukturu rješenja i primjenjujemo operacije slučajne promjene (mutacije) i ukrštanja, ne usitnjavajući rješenje po bitovima, već uzimajući u obzir ovu strukturu.

Zbog činjenice da se rješenja ne samo sprovode paralelno, već se stalno uspoređuju i razmjenjuju jedno s drugim, takva pretraga daje fantastičan skok u performansama u odnosu na slučajnu pretragu i ispostavlja se da može riješiti najteže probleme. Čini se da tipično nasumično rješenje, u prosjeku, nije ništa zanimljivo, a njegova efikasnost je izuzetno niska. Ali čim mnoga rješenja počnu da komuniciraju jedno s drugim, brzo se pojavljuje netipičan rezultat (dobro rješenje) i napreduje. Penrouz inače savjetuje da se u prosjeku proučavaju haotični procesi, da se proučavaju tipični slučajevi, ističući da osim tipičnih slučajeva oni ne mogu generirati ništa, što je, naravno, nepravedno. Ova pretraga je ilustracija principa skale, jednog od tipičnih procesa harmonizacije.

To je ono što se zove genetski algoritam, koji može pronaći efikasna rješenja u raznim oblastima, kada se ne zna ni kako pronaći pravo rješenje "po nauci". Ili uopće ne postoji takav "naučni" način, kao što je slučaj sa automatskim pisanjem programa. Za efektivnost genetskog algoritma, prvenstveno je činjenica da se život na Zemlji (a potom i um) pojavio po takvim principima. Zašto je takav proces usklađivanja moguć, tema je narednih dijelova.

Postoji takav pravac u umjetnoj inteligenciji - genetsko programiranje. Svako rješenje nije skup parametara, već cijeli program napisan proceduralnim programskim jezikom. Sa svim svojim petljama, uslovnim skokovima i unutrašnjim stanjem u varijablama. Shodno tome, rezultat odluke je rezultat izvršenja ovog programa. Za kreiranje programa korišćen je genetski algoritam koji je od velikog broja nasumično generisanih programa kreirao program, tj. najbolji način rješavanje ovog problema. U tom članku koji sam vidio zadatak je bio da se kontroliše volan automobila. One. rezultat odluke nije jedan odgovor na input, već proces koji se razvlači kroz vrijeme. Genetski algoritam je uspio i kreirao je program koji je ispravno kontrolirao volan. Zadatak nije toliko kompliciran, na neuronskim mrežama rade sličnu stvar (iako tamo još uvijek postoji neko unutrašnje stanje, a pravila interakcije stanja sa mrežom piše osoba). Ali indikativno je da je program automatski kreiran sa internim stanjem, različitim petljama i granama.

Nažalost, nisam pratio stanje na ovoj temi i ne mogu vam reći ništa drugo. Zainteresovani mogu potražiti izraz "genetsko programiranje". Stoga, dalje idemo dalje od onoga što smo proučavali i ulazimo u područje pretpostavki. Sasvim je moguće da su neke od ovih pretpostavki već poznate, a ja se bavim izumom točka. Ali i dalje je zanimljivo. :)

Pogledajmo koja svojstva imaju programi dobijeni genetskim algoritmom. Takvi programi mogu imati beskonačne (ili veoma duge) petlje u sebi, tako da bi procjena prikladnosti trebala izbaciti programe koji se izvode veoma dugo bez stvaranja vidljiv rezultat... Potez je, generalno, ispravan, ali, nažalost, izbacuje potencijalno zanimljive dugačke logičke lance (kako ih kasnije uzeti u obzir). Nadalje, prilikom ukrštanja, grane programa će biti nepromišljeno usitnjene, generirajući često besmislen kod. I ako za jednostavan zadatak to nije toliki problem, onda će se za složenije zadatke ispostaviti ili veliki broj neprikladnih rješenja, jer najmanja promjena može potpuno pokvariti performanse programa, a vjerojatno će biti od male koristi u kraj. Ili će program imati veliki broj suvišnih grana, "smeća" koje će se nezamislivo međusobno kombinirati u pravo rješenje. Ovo "smeće" u procesu evolucije naučiti preživjeti uvedene promjene, kako promjena ne bi fatalno razbila program. Ali u svakom slučaju, morat ćemo se oprostiti od ideje o "tankim" logičkim lancima, koji bi predstavljali iste jasne programe koje čovjek piše. Rezultat automatskog pisanja programa bit će daleko od takvih lanaca. Naravno, pojavit će se algoritmi za rudarenje podataka koji će moći minimizirati ovu kontradiktornu hrpu u jasan algoritam, ali ovaj jasan algoritam, za dalje poboljšanje u automatski način rada, moraćete da ga vratite u "razmazani" prikaz (ili će se razmazivanje desiti samo od sebe, u procesu daljeg treninga). I postoji sumnja da će algoritam izvučen uz pomoć data mininga imati uži "perspektivu" od svoje originalne, "razmazane" verzije. Sličan fenomen je opisan u prethodnim dijelovima o prepoznavanju obrazaca.

Kao što se sjećamo, predikatski jezici su fleksibilniji prema promjenama i prilagođeniji evidentiranju ljudskog znanja, jer se ne sastoje od krutog okvira programa, već od nezavisnih pravila koja se automatski pokreću u odgovarajućoj situaciji (uslovi) javlja. Genetski algoritam radi efikasnije ako operacije uzimaju u obzir strukturu rješenja. Pisanje u proceduralnom obliku prisiljava genetski algoritam da bezumno usitnjava program, stvarajući mnoge neizvodljive varijante. Stoga ćemo program napisati u predikatnom obliku i prilagoditi genetski algoritam da uzme u obzir takvu strukturu. Naime, različiti programi rješenja moći će razmjenjivati ​​ne bitove bitova, već potpuno nezavisna pravila. Nasumične promjene će raditi na nivou pravila. Štaviše, unutar jednog programa možete imati različit broj pravila, bez obzira kojim redoslijedom. A ova pravila mogu biti vrlo sličan prijatelj na prijatelja, i to potpuno drugačije. Možete umnožiti i ukrstiti ne samo same programe, već i pravila unutar jednog programa. A to je zato što kada se program izvrši, oni će se sami postrojiti u ispravan lanac, jer izvršitelj ne hoda glupo kroz grane programa (kao u proceduralnom jeziku), već bira pravila prema trenutnoj situaciji (svako pravilo mijenja situaciju).

Ali najzanimljivije bi bilo napraviti banku pravila zajedničkom za sve programe. U tom slučaju program bi predstavljao podatke o tome koja pravila preferira iz opšte banke, a nije isključeno i informaciju o željenom redosledu njihove primene. U ovom slučaju, kriteriji učinka se mogu primijeniti ne samo na programe, već i na pravila. Uostalom, svako pravilo doprinosi nekoliko različitih programa, a možete izračunati koliko je od tih programa uspješno, a koliko ne. I na osnovu toga donositi zaključke o djelotvornosti pravila, te shodno tome razvijati ne samo programe, već i pravila (tj. umnožavati, ukrštati, slučajno mijenjati sama pravila). Povećanje efikasnosti dolazi iz činjenice da se slična pravila više ne dupliraju u različitim programima, svaki program ima pristup široj banci pravila. Ali što je najvažnije, pravila se vrednuju zajedno, kada se koriste u različitim programima, što (verovatno) dramatično poboljšava kvalitet evaluacije i evoluciju pravila.

Tako smo dobili najjednostavniju verziju umjetne inteligencije, koja je prilično primjenjiva različite igre, uklj. kompjuterski, ekspertni sistemi i sistemi upravljanja procesima. Ovo je pogodno i za modeliranje procesa crne kutije sa internom memorijom, umjesto Markovljevih modela (to su procesi u kojima se vidi šta je na ulazu i izlazu, ali su unutrašnje stanje i procesi nerazumljivi, crna kutija po našem mišljenju ).

Ovdje se može pojaviti logičan prijedlog da bi genetski algoritam mogao odvojiti dijelove programa u nezavisne potprograme i uzeti u obzir njihovu strukturu prilikom promjene programa. Za proceduralno pisanje, ovo može povećati efikasnost, ali još uvijek ne eliminira svoje inherentne nedostatke, jer vam je i dalje potreban kruti niz instrukcija, uvjetnih izjava i petlji, koji se mogu prekinuti slučajnom promjenom. U predikatskoj notaciji, procedure kao takve uopšte ne postoje. Ali, s druge strane, moguće je podijeliti globalnu situaciju na skup hijerarhijskih situacija i na niz situacija, tako da se samo vlastiti skup pravila bavi svakom podsituacijom. Kratkoročno gledano, takva particija bi, takoreći, trebala povećati efikasnost genetskog algoritma. Ali činjenica je da je u stvarnoj inteligenciji interakcija pravila složenije prirode, kojoj je takva podjela i inherentna i ne inherentna. Dakle, nametanjem takve podjele situacije, kratkoročno možemo dobiti koristi, ali će se to u budućnosti miješati. Više o ovome kasnije.

Umjetna inteligencija, verzija 2.0

U predikatnim jezicima (kao što je Prolog) ne postoji niz koraka u programu. Postoji samo skup pravila, a redosled za implementaciju ovih pravila nije ni na koji način prvobitno postavljen.

izgleda ovako:
pravilo n: rezultat ako uvjet;
pravilo m: rezultat ako uvjet;
itd.

Uvjet može biti prilično složen, uključujući i najjednostavnije izraze i druga pravila, uključujući međusobnu rekurzivnu primjenu. Rezultat izvršavanja pravila je takođe složen uslov, koji može ukazivati ​​i na konačnu situaciju i na deo uslova za proveru primenljivosti drugih pravila (i njega samog). Ovi rezultati su jasni i nedvosmisleni.

Ne postoji globalna situacija pri izvršavanju predikatnog programa. Postoji početni uslov, pod kojim tumač traži prvo pravilo koje pronađe sa odgovarajućim uslovom, rezultat ovog pravila se dodaje početnom uslovu. Ponavlja se potraga za odgovarajućim pravilom za novi uslov. Rezultat je lanac zaključivanja koji može dovesti do pravila koje označava postizanje konačnog rezultata. Ako tumaču ponestane svih dostupnih lanaca, tada će se početi vraćati unazad, za svaki ciklus tražeći sljedeći prikladno pravilo izgradnju novih lanaca.

Zapazite ponovo da je stanje (situacija) početni uslov plus lanac primijenjenih pravila. Prilikom vraćanja unazad, lanac primijenjenih pravila se mijenja u skladu s tim.

Prilikom povezivanja pravila, tumač može pasti u beskrajnu pretragu, iako je rješenje blizu. Dakle, ako je tumač "pametan", onda može ili prepoznati mjesta potencijalnog petlje, ili može voditi nekoliko lanaca odluka paralelno, birajući od njih na kraju onaj koji će brže dovesti do konačne situacije. S druge strane, osoba koja piše skup pravila mora voditi računa da smanji vjerovatnoću petlje.

Na primjer, problem oko misionara i ljudoždera, kada na jednom brodu trebate prevesti gomilu misionara i kanibala na drugu stranu. Čamac može primiti samo dvije osobe. Ako na obali ima više kanibala nego misionara, onda će misionari biti pojedeni. Prilikom rješavanja zadatka u predikatskom jeziku zapisuju se dopuštene situacije tako da se misionari ne jedu (uključujući i rekurzivno) i dopuštena kretanja čamca (u čamcu uvijek treba biti jedna ili dvije osobe). Zatim sam tumač gradi stablo izvodljivih odluka sve dok ne dođe u situaciju da je cijela gomila na drugoj strani. Lanac pravila u ovom slučaju nosi slijed transporta misionara i kanibala preko rijeke.

Pošto su pravila jasno povezana jedno s drugim u procesu pronalaženja rješenja, u predikatskim jezicima, već na nivou pravila, postavlja se hijerarhija i redoslijed njihove primjene, nešto slično grupisanju u procedure u proceduralnim jezicima. Ali čim ulančavanje između pravila učinimo manje jasnim, ovo grupiranje se gubi. A kako će tačno nastati iznova (ili kako mu pomoći da se formira) već je novo pitanje.

U predikatskim jezicima nema petlji, nema uslovnih skokova, nema tvrdo kodiranog niza radnji. Izvođač uvek "zna" šta mu je činiti, jer bira sledeći korak za trenutnu situaciju. Izvođač bira samo jedan korak, jer će u sljedećem procijeniti promijenjenu situaciju i izabrati novi korak, ma koliko se situacija neočekivano promijenila. Ovo će također pomoći izvođaču da izađe ako dio njegovog programa nije uspio ili donese pogrešnu odluku. Umjesto da katastrofalno padne u pogrešnom smjeru, izvođač će još jednom procijeniti situaciju, a vrlo je moguće da će sljedeći korak ipak popraviti ovu situaciju.

Naravno, procesi koji su uključeni su kompjuterski mnogo intenzivniji od proceduralnog pisanja programa. I u svom izvornom obliku u predikatskim jezicima, nije sve tako glatko kao što je opisano u prethodnom paragrafu.

Nedostatak predikatskih jezika je u tome što je opseg pravila vrlo uzak, i oni se nižu u predugačke lance. U inteligenciji, s druge strane, preovlađuju kratki lanci zaključivanja, u kojima logička jedinica procjenjuje vrlo širok spektar ulaznih uslova, štaviše, prema nejasnim i nelinearnim kriterijima.

Stoga je sljedeći korak u izgradnji vještačke inteligencije zamjena uskih jasnih pravila nejasnim i širokim, te skraćivanje lanca zaključivanja.

Prvo, napravimo globalno stanje programa (običan niz brojeva). Dio ovog niza su ulazni podaci. Redovno se ažuriraju eksterno. Da li dozvoliti da ih program mijenja nije stvar principa, najvažnije je da se redovno ažuriraju. Dio ovog niza je interno stanje programa. Ostalo je izlaz. Interne i izlazne ćelije se razlikuju samo po tome što se rješenje čita iz izlaznih ćelija. I ulazi i izlazi se uvijek koriste za pisanje/čitanje istog parametra. Na primjer, ulaz #1 - brzina, ulaz #2 - senzor goriva, izlaz #3 - promjena položaja kormila, izlaz #4 - promjena brzine. Brojeve dodjeljujemo proizvoljno, u procesu učenja sam program mora naučiti da razumije gdje su ulaz i izlaz.

Za osnovu pravila uzmite, na primjer, višeslojni perceptron (koji se često naziva jednostavno neuronskom mrežom). Napominjemo da nam je algoritam za obuku takve neuronske mreže unutar programa još uvijek nepoznat. Imaćemo mnogo takvih neuronskih mreža. Zajedno će činiti skup programskih pravila. Svaka neuronska mreža prima cjelokupno globalno stanje programa kao ulaz (broj ulaza je jednak broju ćelija stanja). Neuronska mreža ima nekoliko izlaza. Svaki izlaz također odgovara jednoj od ćelija statusa. Na svakoj iteraciji, izlaz svake neuronske mreže se dodaje globalnom stanju (izlaz može biti negativan). Sve mreže se ispituju istovremeno na osnovu trenutnog stanja i svojim ukupnim uticajem stvaraju novo stanje.

Broj izlaza i njihova dodjela za svaku mrežu inicijalno se bira nasumično. Evolucijske promjene konstruiramo na način da u većini slučajeva ostavljaju nepromijenjenu komutaciju između ćelija globalnog stanja i ulaza/izlaza neuronske mreže. I samo s malom vjerovatnoćom, promjene mogu preurediti ulaz ili izlaz mreže u drugu ćeliju. To je neophodno jer za sada smatramo da je svaka ćelija određeni parametar (čak i ako je interni), dakle, ako prebacimo ulaz/izlaz mreže na drugi parametar, na koji nije navikao, rezultat će biti prilično neuspješno. Nažalost, ovakvim manevrom opet nešto gubimo zanimljiva svojstva prava inteligencija, ali sada dobijamo efikasnost. Kasnije ćemo se vratiti na ove nekretnine.

U toku evolucije, broj ćelija u globalnom stanju se takođe može menjati. Tada se sve neuronske mreže prilagođavaju u skladu s tim. Ako su ćelije klonirane, tada se kloniraju odgovarajući ulazi i izlazi neuronske mreže. Ako se ćelije izbrišu, tada se odgovarajući ulazi/izlazi brišu iz svih mreža.

Postoje i evolucijske promjene koje mogu povećati ili smanjiti broj izlaza jedne neuronske mreže.

Kako će tačno program koji se sastoji od skupa takvih neuronskih mreža proizvesti rješenje? Tačnije, kako nakon sljedeće iteracije shvatiti da je program donio svoju odluku i pročitati ovu odluku iz ulaznih ćelija? Ovo je također zanimljivo pitanje koje zahtijeva eksperimentiranje. Prva razmatranja su sljedeća. Izlazne vrijednosti su stabilizirane. Ili postoje posebni izlazi koji signaliziraju da je odgovor spreman. Ovi izlazi se sami prilagođavaju u procesu evolucije.

Nakon uklanjanja odluka, program bi trebao dalje raditi i, najvjerovatnije, počevši od svog internog stanja. Kako je potaknuti na dalji rad, jer se program stabilizirao u konkretnom rješenju? Prvo, nakon što se odluka ukloni, ulazne ćelije će biti prepisane stvarnim podacima (vjerujemo da dok mreža donosi odluku, ulazni podaci se praktično nisu promijenili). Drugo, možete kreirati posebnu ćeliju za unos u koju ćete postaviti veliki broj na početku iteracije. Nadalje, postoji ili sam da naučite kako promijeniti ovaj broj, ili ga možete smanjiti izvana, dopuštajući mreži da shvati da vrijeme prolazi. Generalno, ideja za eksperimente ima dovoljno.

Sada objašnjenje zašto je to tako.

Prije svega, napustili smo izgradnju lanaca pravila i natjerali svako pravilo da zapiše rezultat svog rada u globalno stanje. Time smo onemogućili izgradnju dugih lanaca povlačenja i vraćanja, ali smo dobili brži odgovor i široku i nejasnu procjenu situacije. Imajte na umu da paralelna obrada nekoliko varijanti, gdje svaka varijanta ima svoje globalno stanje, nikuda nije otišla. Ali nemamo tako široko grananje kao u originalnom tumaču predikata. Ako bismo pokušali da razgranamo lance zaključivanja na široka nejasna pravila, tada bi broj opcija katastrofalno otišao od skale čak i u ranim fazama izgradnje rješenja.

Kao rezultat, dobili smo nešto sasvim drugo, iako se čini da je slično izvornom zaključivanju o predikatima. Ovo nešto više nije sposobno da konstruiše složene i jasne zaključke, ali je sposobno da deluje u složenom okruženju koje se brzo menja, pa čak ima i neke rudimente uverljivog logičkog zaključka, što originalna verzija ne može. Ipak, vratit će nam se zaključak složenih i jasnih zaključaka na neočekivan način, u međuvremenu, rezultirajuća inteligencija će biti bez nje.

Ipak, dobijeno nešto može riješiti logičke probleme (poput igranja šaha) na svoj način, slično kako to osoba radi. Ovakvo razmišljanje se može nazvati situacionim. Ne polazi se od izgradnje dugih logičkih lanaca, već od procjene kakvo je trenutno stanje i kako to stanje promijeniti. Situacija uključuje i eksterne podatke i unutrašnje stanje, ono što je sistem "odlučio" do sadašnjeg trenutka. Vrši se procjena i donošenje odluka gdje dalje svaki korak, za razliku od proceduralnih algoritama i zaključivanja, koji mogu zatrpati dugo rasuđivanje, ispadanje iz realnosti. Stoga slučajne promjene u takvom programu neće postati kobne za performanse, za razliku od proceduralnog zapisa. Čak i ako dođe u neshvatljivu situaciju, ili napravi grešku, takav program neće pasti u stupor, već će pokušati nešto učiniti, jer u procjenu situacije nije uključena mala grana algoritma, već cijeli skup pravila. Čak i ako program isprva izvrši haotično bacanje, prije ili kasnije će se naći u poznatoj situaciji i moći će ga okrenuti u pravom smjeru.

Situaciono razmišljanje se zasniva na tri stvari. Prvo, to je generalizacija situacije na poznati slučaj (kao u sistemima za prepoznavanje obrazaca). Na primjer, iz raznovrsnog rasporeda figura na šahovskoj tabli, misaoni sistem pronalazi nešto zajedničko, daje procjenu situacije, postoji li prijetnja njegovim figurama, postoji li šansa da se izvede napad bez gubitka, onda postoji mogu biti konkretnije situacije-kombinacije. Drugo je iskustvo (biblioteka kratkih vjerodostojnih pravila koja se primjenjuju da se situacija promijeni na bolje bez dugog zaključivanja). Na osnovu procene situacije, predlažu se alternative za promenu ove situacije, na primer, grubi podaci o tome kako se pomeraju delovi. Parser prevodi ove približne podatke u ispravne pokrete figura na šahovskoj tabli (ako se ne mogu pronaći ispravni pokreti, onda se uzima sljedeća alternativa). Slične situacije (a samim tim i rješenja za njih) mogu se dogoditi u bilo kojoj fazi igre, a mi odmah dobijemo rješenje za njih, bez dugog nabrajanja opcija za razne poteze. Da, ove opcije su "samo" uvjerljive, ali uključuju bogato iskustvo sa stvarnih stranaka i prilično su primjenjive na nove stranke. Štaviše, ove situacije uključuju određeno znanje o tome kako će se igra razvijati mnogo poteza naprijed, ali ne na nivou pokretnih figura, već na nivou promjene taktičke situacije (što može uključivati ​​beskonačne cikluse, kao što je održavanje ravnoteže za postizanje remija ) ... A ako ipak dovedu do gubitka, tada će biblioteka biti dopunjena novim pravilima koja će funkcionirati u njihovoj situaciji. Treće, ovo je interna provjera vjerovatnog rješenja nekoliko koraka naprijed (tj. da se smisli nešto, a zatim da se utvrdi koliko će to dobro promijeniti situaciju, održavajući nekoliko alternativnih rješenja, naš sistem još ne zna kako to učiniti , daje samo jednu opciju, ali o tome će biti više).

Usput, možda ste se pitali, proučavajući neuronske mreže, kako ih natjerati da rade ne samo na osnovu ulaznih podataka, već ih i naučiti da probavljaju unutrašnje stanje i izvršavaju složene programe? Bilo mi je zanimljivo. Istina, tada dugo vremena nikada nisam smislio ništa vrijedno kako bih trenirao takvu mrežu. Ali sada postoji odgovor sa malo drugačije strane.

Zašto smo napravili mnogo neuronskih mreža, umjesto jedne velike, koja bi mogla ažurirati cijelo stanje? Činjenica je da je za efikasan rad genetskog algoritma poželjno imati skup nezavisnih pravila, od kojih bi svako bilo odgovorno za neku specifičnu (iako skrivenu od našeg razumijevanja) radnju. Osim toga, takva pravila se mogu razmjenjivati ​​između programa, praviti različite skupove programa od njih, mijenjati i klonirati pojedinačna pravila, pa čak i formirati biblioteku najuspješnijih (ili čak budućih bibliotečkih) pravila. To će biti teško učiniti s jednom velikom neuronskom mrežom. Osim toga, za konvencionalne neuronske mreže, kolektivi imaju tendenciju da rade bolje od konvencionalnih neuronskih mreža.

Iz sličnih razloga, svaka neuronska mreža ima samo mali broj izlaza. One. svako pravilo je nadležno da donese svoju malu odluku. Ali u isto vrijeme, svaka mreža ima inpute iz cijele države, uz očekivanje da ima globalnu viziju situacije, ali u isto vrijeme ne reagira na većinu slučajeva koji se ne odnose na djelokrug određenog pravila. Svaka mreža to mora naučiti u procesu evolucije. Dakle, čak i kada se utiče na globalno stanje, funkcionisaće upravo ona pravila koja su primenjiva u trenutnoj situaciji. Možda bi i broj unosa trebao biti ograničen, po tom pitanju nemam razmišljanja, samo će eksperiment pomoći.

Kao rezultat toga, nakon treninga, trebali biste dobiti program koji se sastoji od skupa neuronskih mreža. Program počinje od početnog stanja, u kojem su postavljene ulazne ćelije, ostale ćelije se mogu nulirati (ili imati male nasumične vrijednosti). Na svakoj iteraciji, globalno stanje se isporučuje na ulaz svih mreža, rezultat rada svih mreža se izračunava, a izlaz svih mreža se odmah dodaje globalnom stanju. Sljedeća iteracija dolazi. Da je rješenje spremno možete razumjeti, na primjer, po činjenici da su se izlazne vrijednosti stabilizirale ili je na poseban izlaz poslan signal koji signalizira da je rješenje spremno. Nakon toga se čitaju izlazne vrijednosti, učitavaju se nove ulazne vrijednosti i program nastavlja raditi s ažuriranim podacima.

Ovaj program se kreira automatski pomoću genetskog algoritma. Glavna stvar je da imamo barem neki kriterij za procjenu efikasnosti primljenih programa (tj. da li je jedan program bolji od drugog), a to je dovoljno da genetski algoritam radi. Za zadatke iz stvarnog svijeta takav kriterij obično postoji. To mogu biti skupovi radnih primjera koji se smatraju dobrim i lošim za različite situacije (sustavi za prepoznavanje obrazaca također uče iz primjera). Nakon što je naučio iz dobro poznatih primjera, program će, poput sistema za prepoznavanje obrazaca, moći generalizirati svoje iskustvo na nepoznate primjere, uključujući i takva generalizacija može biti kvalitativne prirode, uhvatiti skrivene obrasce u nizu primjera i nacrtati neočekivano ( ali tačni) zaključci. Za zadatke koji zahtijevaju precizno logičko zaključivanje i jasno rješenje, to je teže (ali će biti više o tome). Mogu postojati opcije da se programi međusobno bore, na primjer, da igraju šah, a da se onaj koji igra najbolje prepozna kao efikasan, tada nije potrebna eksterna evaluacija.

Genetski algoritam nasumično generiše skup pravila (neuralne mreže) i skup programa. Sva pravila se nalaze u zajedničkom spremištu. Svaki od ovih programa sastoji se od svog specifičnog skupa pravila preuzetih iz zajedničkog spremišta. Sama pravila su u spremištu, program se samo na njih poziva. Za procjenu efikasnosti svi programi se pokreću paralelno (svaki ima svoje stanje i skup ulaza-izlaza). Najbolje ocjene dobijaju oni programi koji rade brže i efikasnije. Oni programi koji dugo razmišljaju ili uopšte ne donose odluke se kažnjavaju.

Loši programi sa vjerovatnije se mijenjaju ili u potpunosti brišu. Na njihovo mjesto dolaze ili novogenerisani programi, ili klonirani iz postojećih. Evaluacija programa može biti kumulativna, tj. akumulirati, dajući programu malo predaha da se razvije. Vjerovatnije je da će dobri programi biti klonirani. Programi se razvijaju od loših ka dobrim.

Nakon što se postigne dovoljno dobro rješenje, odabire se najbolji program kao rezultat genetskog algoritma, koji se u budućnosti koristi za realne probleme.

Kojim evolucijskim promjenama programi mogu biti podvrgnuti? Dodajte ili uklonite pravilo iz spremišta. Ukrštanjem sa drugim programom, naime, uzimaju se dva programa, na osnovu njih nastaje treći koji se sastoji od dijela pravila jednog programa i dijela pravila drugog programa. Pravila koja se dodaju, uklanjaju ili upisuju u program prilikom ukrštanja biraju se nasumično. Iako, ako razmislite, možda će postojati načini da se to radi svrsishodnije, možda će biti i procjena efikasnosti učešća pravila u određenom programu.

Kojim evolucijskim promjenama pravila mogu biti podvrgnuta (neuronske mreže). Kao što je već spomenuto, jedna takva promjena je promjena broja ćelija u unutrašnjem stanju, što utiče na sva pravila. Potreba za povećanjem ili smanjenjem broja ćelija stanja može se manje-više procijeniti dinamikom programa, koliko često se stanja mijenjaju, koliko su međusobno povezana, koliko utiču na izlazne vrijednosti i koliko efektivna populacija programa je općenito. Sljedeće evolucijske promjene su kloniranje pravila, nasumična promjena pravila (naime, "protresanje težine" neuronske mreže, kao kod žarenja, što je niža efikasnost, to je potresanje jače). Kloniranje zajedno s naknadnom promjenom pravila može se vezati za kloniranje programa. Na primjer, u originalnom programu ostaje veza na originalno pravilo, u kloniranom programu - veza na klonirano pravilo. Ili se u izvornom programu pojavljuje veza do klona pravila. Pravila se mogu prekrižiti kada se dio uzme iz dvije neuronske mreže i zalijepi u treću mrežu. U pravilima (neuralne mreže), broj izlaza se može nasumično mijenjati, kao što je gore opisano, broj i struktura internih veza se može promijeniti.

Za svako pravilo, njegova efikasnost se može izračunati na osnovu toga koliko su uspješni programi koji uključuju pravilo. Štoviše, možete uzeti u obzir činjenicu da pravilo može biti uključeno u program, ali biti neaktivno, zbog čega ne utječe na rad programa. Na osnovu takve procjene, možemo namjerno evoluirati banku pravila, naime, češće replicirati uspješna pravila i vjerovatnije da ćemo ukloniti ili promijeniti neefikasna pravila. Takođe možemo kreirati programe zasnovane na najefikasnijim pravilima. Ili, u procesu promjene, vjerovatnije je da će se uključiti u programe najbolja pravila... Imajte na umu da banka pohranjuje pravila s različitim opsegom, ali, ipak, rješava zajednički problem.

Ali što je najzanimljivije, čini se da za svako pravilo možete izračunati ne samo efikasnost, već i grešku! Naime, razumjeti kako ovo pravilo treba da djeluje ispravno pod datim uslovima unosa. Na kraju krajeva, imamo primjere pokretanja pravila (neuralne mreže). dobri programi(smatramo da su to bile ispravne odluke pravila koja čine program) i primjeri rada u lošim programima (smatramo da su to bile pogrešne odluke pravila koja čine program). Shodno tome, možete pokušati ojačati dobre odluke koje je proizvela svaka neuronska mreža i minimizirati loše odluke. Vrijednosti ulaza i izlaza mogu se reproducirati bez ikakvih problema, a na osnovu njih se može konstruirati uzorak za obuku koji se šalje algoritmu povratnog širenja greške. Ovdje je glavni problem otkriti vremenski slijed onoga što je bilo na ulazima i izlazima u set za obuku, a tu može biti nejasnoća. Uostalom, ne možemo pretpostaviti da su sve odluke (ulazno-izlazni parovi) u ispravnoj mreži bile idealno ispravne, au pogrešnoj - idealno netačne. Možda je za to krivo sasvim drugo pravilo, koje je na samom finišu "izbrisalo" ispravnu odluku? Uključivanje u rasplet čitavog niza odluka je beznadežan poduhvat. Stoga ćete morati razmišljati o formiranju uzorka na osnovu ovih vremenskih sekvenci. Čak i ako pri formiranju uzorka za obuku izbacimo mnogo primjera, ostavljajući samo one najnedvosmislenije, to će ipak biti napredak.

Sada da vidimo šta imamo. A sada imamo alat za automatsko pisanje programa koji se može snalaziti u zadacima stvarnog svijeta, fleksibilno se ponašati u širokom rasponu situacija, oporavljati se od grešaka, imati neku vrstu interne logike i predviđanje/modeliranje situacije. Ono što ne mogu je razviti tanke logičke lance, napraviti dugačke zaključke. Iako će za mnoge zadatke takva inteligencija moći glumiti da su se odvijali duboki logički procesi, iako je u stvari primjenjivala samo praznine dobijene tokom treninga. Ovakva inteligencija i samostalnost nije dovoljna, čovjek još treba mnogo toga da uradi. A u hardverskom dijelu, ono što smo dobili nije baš slično onome što je priroda smislila.

Umjetna inteligencija, verzija 3.0

Sada dodajmo stvar koja se zove emulator okruženja. Trebat će nam dvije varijante, jedna za oponašanje vanjskog okruženja, druga za predviđanje. Postojaće i treća sorta, ali o tome kasnije.

Emulator u režimu predviđanja treba da bude u stanju da ispiše očekivano ponašanje spoljašnjeg okruženja malim brojem koraka unapred, znajući istoriju prethodnih stanja i trenutni uticaj na okruženje iz kontrolnog programa. Sada će program djelovati ne odmah na vanjsko okruženje, već prvo na emulator. A na emulatoru možete vidjeti prognozu, da li se okruženje promijenilo u pravom smjeru zbog uticaja programa. Stoga možete imati nekoliko primjera programa obučenih na sličan način, ali različiti jedan od drugog. Za svaki od njih pokrenite vlastiti emulator okruženja u realnom vremenu. I na svakom koraku u vanjskom okruženju izdati utjecaj programa koji će dobiti najbolju ocjenu na emulatoru. Druga opcija je da donesete tu odluku (ne nužno najbolju), koju će programski tim prihvatiti "većinom glasova", tada će ta odluka biti pouzdana.

Emulator u režimu emulacije sličan je predviđanju, ali se koristi u procesu obuke programa kada ne postoji stvarno vanjsko okruženje. U prethodnoj verziji uzeli smo gotove primjere rezanja preuzete iz vanjskog okruženja. Dakle, umjesto ovih primjera, možete kreirati emulator obučen za rekreaciju tipične situacije spoljašnje okruženje. Na kraju krajeva, može biti mnogo primjera, a efikasnije je koristiti kompaktni emulator umjesto ovog otkrića.

Emulator u režimu obuke može se staviti na prave senzore i ostaviti na duže vreme. Logično pitanje - zašto odmah ne staviti potreban program na senzore za trening? Ovdje postoji nekoliko odgovora. Prvo, možda želimo da treniramo sledeću verziju programa, a onda ćemo ponovo morati da vozimo prave uređaje. Drugo, nemoguće je eksperimentirati na stvarnim senzorima, bez obzira da li je program naučio ispravno, ili takvi eksperimenti mogu biti skupi, a emulator može raditi u načinu predviđanja.

Osim toga, emulator se može konfigurirati tako da može, prvo, proizvesti nasumična odstupanja od ponašanja okoline, i, drugo, kombinirati različite vremenske sekvence od ponašanja okoline. Budući da je emulator obučen u vanjskom okruženju, takve kombinacije će biti "izmišljene" uvjerljivo. Što proširuje skup primjera za nastavne programe.

Naravno, sve što se dešava u realnom vremenu ponovo se može snimiti i koristiti za automatsku dodatnu obuku programa.

Programi za emulator mogu se napraviti koristeći istu tehnologiju kao što je gore opisano.

Ako je vanjsko okruženje vrlo složeno (kao kada se igra šah), onda će emulator biti izgrađen korištenjem tehnologije koja je vrlo bliska samom kontrolnom programu. Utoliko će se pri učenju programi međusobno poigravati, a najjači program će opstati. Emulator predviđanja može se podesiti ne samo da traži najbolji potez, već i da se prilagodi stilu igre protivnika. Tako će se, kada se igra sa osobom, odigrati cijela bitka u "mozgu" mašine između mnogih programa i njihovih protivnika, emulatora, prije donošenja konačne odluke.

Tako, korištenjem emulatora vanjskog okruženja, povećavamo kako kvalitetu programa obuke tako i kvalitet donošenja odluka u realnom vremenu.

Postoji li takva paralela u prirodnoj inteligenciji, sa konkurentskim odlučivanjem i emulatorom okruženja? Mislim da jeste, ali teško u ovome direktni oblik... Ono što je nastalo u toku prirodne evolucije svakako je složenije i delotvornije. Ali ovdje smo, radi jednostavnosti i najbržeg postizanja efekta, umjetno uveli konkurenciju i emulator.

Nakon uvođenja emulatora vanjskog okruženja i konkurentnog kolektivnog rješenja, moguće je uvesti nova svojstva naše umjetne inteligencije.

Lutajuća pozadinska rješenja... Nakon donošenja odluke, nije potrebno prisiljavati sve programe da se rekonstruiraju kako bi shvatili sljedeći korak. Možete ostaviti neke (po nekim kriterijima dobre) programe kako biste nastavili razmišljati o prošlim situacijama dugo vremena. Vrlo je moguće da će nešto smisliti, a to će biti korisno ili u trenutnoj (čak i promijenjenoj) situaciji, ili će biti korisno za dalje učenje. Na primjer, program koji zaostaje može razotkriti namjeru neprijatelja ili pronaći zanimljivo taktičko rješenje. Tada će se moći pokušati okrenuti trenutnu situaciju prema ovom rješenju (umjetna inteligencija se "predomislila"), a ako je igra do tada već završena (ili je otišla u drugom smjeru), onda je pronađeno rješenje se može koristiti u obuci. Kako se tačno obe ove opcije provode je tema za odvojene studije. U isto vrijeme, umjetna inteligencija će biti na mreži cijelo vrijeme, i razmišljat će, usavršavati se, voditi dijaloge sa sobom, gotovo kao osoba.

Eksplozija opcija... Možete pokušati otkriti situacije kada je poseban program (ili grupa programa) na račvanju, kada je otkrivena dvosmislena situacija, a ova situacija je prisiljena da se grana u nove grane odlučivanja (program + emulator). Opet, kako otkriti takve situacije, kako ih razgranati, to je tema za posebne studije, neorano polje. Zasad je to samo na nivou ideje, ideje da u slučaju dvosmislenosti intelekt treba da bude u stanju da razgrana varijante. Ali grananje uopće nije isto što i iteracija preko stabla odlučivanja. To je prije kao razmazivanje valne funkcije, kao složena aritmetika, kada operacije s dvosmislenošću (imaginarna jedinica) proizvode nekoliko opcija, koje u budućnosti, prema pravilima iste aritmetike, međusobno djeluju. Takođe, razgranata rešenja u veštačkoj inteligenciji treba da nastave da koegzistiraju, nastavljajući da međusobno komuniciraju (takođe je pitanje kako tačno), a u pravi trenutak vremena, grane se mogu konvergirati u jedno rješenje. Štaviše, grananje se neće dogoditi glupo, kao prilikom pregleda opcija, već upravo u onim trenucima u kojima je to najzanimljivije.

Kako se tačno može detektovati potencijalna tačka grananja? Za konvencionalne neuronske mreže postoje algoritmi koji povećavaju kapacitet neuronske mreže ako nije dovoljan za obradu podataka i smanjuju kapacitet mreže ako je prevelik za donošenje odluka. Promjena kapaciteta u neuronskoj mreži je dodavanje i uklanjanje težina-veza između neurona i samih neurona (čitaj dodavanje/uklanjanje redova u nelinearnoj matrici i nuliranje elemenata koji ne utječu na rješenje). Postoji čitav smjer o neuronskim stablima koje rastu po potrebi. Dakle, u timu programa možete provjeriti o čemu različiti programi "razmišljaju", minimizirati slične situacije i pokušati generirati nove smjerove "misli". U procjeni ovoga, prije svega, pomoći će nam emulatori, moramo pogledati koliko slični daju viziju vanjskog okruženja.

Pojedinačni programi se također mogu provjeriti kako bi se vidjelo koliko nedvosmisleno daju rješenje. Ako program luta između više rješenja, ili ne konvergira ka rješenju, tada se u ovu situaciju mogu baciti dodatni programi, inicijalizirani istom situacijom, ali sa slučajnim odstupanjima kako bi se stimulirao "tok alternativnih misli". Grananje može biti korisno i u obuci, kada će biti moguće utvrditi koliko je program dvosmislen u rješenju, a dvosmislene slučajeve podijeliti na nekoliko nedvosmislenijih programa kako bi uspješnije radili zajedno u timu. Ali opet, sve su to za sada samo lijepe ideje, ideje za eksperimente.

Oni će sanjati

Dobro je kada imamo primjere ispravnog ponašanja, ili možemo oponašati reakciju okoline. Za prirodnu inteligenciju (i budućnost vještačke inteligencije), ovaj luksuz nije uvijek dostupan. Intelekt pokušava nešto da uradi sa okolinom, nešto iz toga proizlazi ispravno, nešto ne, nešto ostaje sa neshvatljivim posledicama. Kako naučiti iz ovoga?

Da bismo to učinili, uvest ćemo treći tip emulatora vanjskog okruženja. Prisjetit će se manifestacija vanjskog okruženja, šta je umjetna inteligencija učinila kao odgovor na te manifestacije i do čega je to dovelo. To ne isključuje činjenicu da će, kako se stekne iskustvo, takav emulator moći kombinirati dvije prethodne varijante - emulaciju i predviđanje okoline, te će biti izgrađen na principima sličnim našoj umjetnoj inteligenciji.

Kako naučiti kada nema jasnih informacija, koje su akcije ispravne, a koje ne? Mala digresija. Hopfield mreže uče iz primjera tako što "sumiraju" sve primjere, bez kritičke evaluacije, bez ispravljanja grešaka. Uvježbana Hopfieldova mreža u djelomičnoj ili šumnoj slici tokom iteracije (konvergencija na energetski minimum date slike) može ponovo kreirati originalnu sliku. Dakle, nakon obuke na mreži, ponekad se dobijaju lažne slike. Kako bi se eliminisale lažne slike, na ulazu se pokreću primjeri obuke, a ako mreža konvergira na lažnu sliku, tada se takva slika prepisuje. Na neki način mreža "sanja" na osnovu prethodno primljenih informacija, a u snu se lažne informacije zamjenjuju tačnim informacijama. Hopfield mreže se koriste za jednostavne slike, ali nas zanima princip.

Ovdje možemo slijediti sličan put. Nakon akumulacije informacija iz vanjskog okruženja, inteligencija se isključuje iz vanjskog okruženja i radi samo sa emulatorom. Emulator reproducira situacije, a ako je intelekt dao dobro rješenje, onda se ovo rješenje pojačava, ako je loše, onda se ovo rješenje zamjenjuje nečim drugim. Za slučajni, na primjer. Glavna stvar je da novo rješenje ne izgleda kao loše. Istovremeno, gradimo promjene na način da se nagomilana dobra rješenja ne izgube, a da se ne pojave nova loša rješenja.

U najmanju ruku, takvo restrukturiranje se može provesti korištenjem genetskog algoritma. Moguće je da je moguća i unakrsna evaluacija svakog pravila koje čini program, tako da će biti moguće precizno izračunati grešku i ispravku za svako pravilo. Uostalom, imamo neke informacije o tome da li je program radio dobro ili loše. Ovdje je teže u smislu da ako je odluku donio tim programa, onda je podatak o ispravnosti odluke poznat samo za pobjednički program. Ali, s druge strane, imamo informacije o ponašanju programa koje je dugo vremena i iz njih je već moguće izvući detalje.

Tako se ispostavlja da ako se umjetna inteligencija stavi u prirodne uvjete, tada će se pojaviti duge faze budnosti, tokom kojih se informacije akumuliraju putem pokušaja i pogrešaka, a nakon njih faze sna, tokom kojih se te informacije kvalitativno probavljaju. Sam proces će se pokazati dugim i mukotrpnim. U prirodnoj inteligenciji, takav mehanizam, nakon što se jednom pojavio u procesu evolucije, brzo je pokazao svoju korisnost i umnožio se za sljedeće generacije. Stvar, takoreći, nije baš teška da bi se pojavila tokom evolucije.

Oni će osjetiti bol

Još jedna opcija obuke kada informacije o ispravnosti radnji nisu dostupne. Da vas podsjetim da se prilikom podučavanja metodom žarenja koriste nasumične promjene parametara u cjelini u cijelom rješenju za ponovnu izgradnju rješenja. Jačina takvih promjena (temperatura) počinje visokom i postepeno opada kada se otopina približava najbolja opcija... Ako nam promjene ne odgovaraju, jačina promjena (temperatura žarenja) se povećava u potrazi za prikladnijom opcijom.

Stoga se u procesu evolucije razvio mehanizam boli. Pogrešna radnja - i odmah osjetimo kako naše neuronske veze proždire okrutni plamen. Ovo potresanje ne prolazi nezapaženo. Posljedice pogrešne radnje bukvalno sagorevaju u našim neuronskim vezama. Toliko da svakako izbjegavamo ponavljanje ovih pogrešnih radnji. Mehanizam je jednostavan, ali efikasan.

U umjetnoj inteligenciji, učenje može biti dopunjeno intenzivnijom stopom nasumičnih promjena, većom stopom svrsishodnih promjena ako intelekt donosi loše odluke. Ovakvi dodaci se mogu primijeniti kako na nivou tima programa, tako i na nivou pojedinačnih programa ili pravila. "Loša" pravila ili programi mogu bukvalno biti spaljeni kao rezultat pogrešnih radnji, u isto vrijeme dobra pravila i program će biti sačuvan i umnožen, ali će se "plašiti" pogrešnih radnji poput vatre.

Na višem nivou inteligencije "bol" će se manifestovati i u smislu da se "glava cepa od ideja", "nemoguće je sabrati misli" itd. Stanje dobre odluke pratiće jasnoća misli, harmonija i „dušni mir“.

Ansambli pravila

Zamislite da se u procesu evolucijskog učenja neki dio pravila klonira tako da ostane međusobno povezan s roditeljskom instancom. Na primjer, ostaju povezani na iste ulaze i izlaze i aktiviraju se gotovo istovremeno. Istovremeno, pravila se i dalje razlikuju jedno od drugog, a njihova daljnja evolucija može ići na različite načine. Sada ćemo to učiniti tako da tokom izmjena ovaj dio pravila ostane uglavnom međusobno povezan, tj. tako da su izlazi, izlazi, aktivacija i izdate odluke uglavnom isti. U tom slučaju, pravila ansambla mogu učestvovati na drugim mjestima, uključujući i druge ansamble.

Ispada da ansambl donosi odluke zajedno sa svim svojim pravilima. Zbog kolektivnog rada rješenje će se pokazati kvalitetnijim (barem je to slučaj za obične neuronske mreže). Ali u isto vrijeme, ansambl će imati i neku novu, kvalitativno drugačiju reprezentaciju situacije, moći će djelovati daleko izvan početne situacije, zbog činjenice da su pravila iz ansambla uključena na drugim mjestima (i ansambli) programa (a to je već pretpostavka u vezi sa ansamblima koji učestvuju u programu). Možemo reći da će vizija situacije biti na višem nivou, generalizovanija, proširenija i obogaćena iskustvom drugih situacija. Tako će, u graničnim ili novim situacijama, ansambl moći generirati (moglo bi se reći, maštati) nova realnost nastavljajući značenje starog koji je vidio tokom treninga.

Ovdje stvari kao što su apstrakcijske kategorije, asocijativno razmišljanje počinju se potajno pojavljivati. Počinju se pojavljivati ​​"teški" logički lanci, koji zbog reda veličine višeg viđenja situacije mogu proizvesti "tanke" logičke lance bliske formalnoj logici i rigoroznim algoritmima.

Kada se suoči s novim situacijama, program će, imajući takve ansamble u rezervi, mnogo lakše prenijeti i generalizirati svoje iskustvo na nove situacije.

Sve su to zasad lijepe pretpostavke, ali, najvjerovatnije, stvari idu u ovom smjeru. Kako su se takvi ansambli formirali i održavali u mozgu još nije jasno (ali slažete se, evolucijski to izgleda prilično jednostavno). Pitanje je i kako se ansambli podržavaju i podučavaju u programu. Očigledno ne postoji jasna fiksacija pravila o ansamblima, sve se rješava dinamički, kombinovanjem pravila koja su kompatibilna za konkretnu situaciju, a sve po istim principima takmičenja i interakcije. Istovremeno, pravila i ansambli se takođe mogu dinamički ugrađivati ​​u hijerarhiju, i, ipak, neće postojati stalna hijerarhija, neće biti meta-nivoa i prelaza između njih, neće biti jasne formalizacije sa dodelom veze sistem-podsistem. Više detalja o tome kako se to može formirati bit će dalje. I morate priznati, sa stanovišta prirodnog toka stvari, sve izgleda prilično jednostavno.

I opet talasi, frekvencije i holografija

U našem programu umjetne inteligencije umjetno je postavljena podjela na konkurentske programe i alternativnu viziju situacije. Na isti način se umjetno uvodi globalno stanje u koje imaju pristup sva pravila i generator takta, koji u svakom novom trenutku aktivira sva pravila i ažurira situaciju. Ali u mozgu nema ničeg sličnog, i, ipak, tamo se prirodno formiralo nešto vrlo slično.

Ono što imamo je svojstvo prirodnog neurona da akumulira potencijal, a kada se prekorači kritični prag, on se isprazni nizom signala na svojim izlazima (sjećate li se frekvencijskih neuronskih mreža u prethodnim dijelovima?). Ove serije, zauzvrat, svaki put podižu (ili snižavaju) potencijale neurona koji su povezani na ulaze originalnog neurona. Pragovi potencijali, učestalost i trajanje pražnjenja su parametri koji izgledaju kao da se podešavaju u procesu učenja.

Dakle, ispada da nisu potrebni ni generator takta, ni petlje i uvjetni prijelazi, ni globalno stanje i prisilna paralelizacija situacije.

Kolekcije takvih neurona već nose unutrašnje stanje, složenu iterativnu logiku i uslovnu obradu.

Štaviše, paketi neurona se mogu kombinovati u alternativne (paralelne) lance, svaki sa svojom vizijom situacije, a na izlazu se svi ti lanci međusobno takmiče za čije rešenje će biti podneto na izlaz. I takva obrada je prilično podložna modeliranju na konvencionalnim računarima. Druga stvar je da će u početku vjerovatno biti zahtjevniji za resursima od obavještajnog modela sa prisilnom paralelizacijom, ali dugoročno će se manje regulirani model, čini se, pokazati efikasnijim.

Sada se prisjetimo ansambala i meta-ansambala. Ispostavilo se da cijeli talasni frontovi lutaju kroz pojedinačne ansamble, koji u različitim ansamblima, u kombinaciji, daju složene valne obrasce, možda čak i složenije od holografskih slika. Upravo ovi valni obrasci dinamički povezuju pojedinačne neurone (ili mreže pravila u našoj umjetnoj inteligenciji) u ansamble i meta-sklopove.

Pogledajte kako je sve ispalo prirodno, a opet pragmatično. Nema potrebe da se zasebno izmišljaju bilo kakve frekvencijske i holografske mreže, nema potrebe da ih mučite i tjerate da prepoznaju slike. Dovoljno je primijeniti efikasan i prirodni tok stvari, kako su se sva ta frekvencijsko-holografska svojstva manifestovala, kao nuspojava.

Početna situacija, jednom u mozgu, dijeli se na mnoge alternativne lance, izaziva čitave oluje valova promjena neuronskih potencijala i kao rezultat dobiva mnogo složeniju i kvalitetniju reprezentaciju. Na izlazu se sva ova obrada opet urušava u uske granice koje treba izdati spoljni svet.

Asocijacije, kategorije, generalizacije i druga filozofija

U dijelu o ansamblima spomenuli smo da bi bilo dobro da pravila učestvuju u različitim dijelovima programa, kako bi pravila naučila kvalitetno generalizirati iskustvo iz potpuno različitih situacija. Naime, oni će biti na putu apstrakcija visokog nivoa kao što su asocijativno mišljenje i kategorizacija. Na primjer, moći će izvući nešto zajedničko iz pojmova "bijelo" i "puhasto" i primijeniti to u situaciji "mušice". Takva obrada učinit će razmišljanje mnogo moćnijim i omogućit će vam da dinamički gradite skupove pravila za potpuno različite situacije.

Da bismo dobili ovakva svojstva, umjetno smo uveli ansamble i njihovo održavanje. Na koje druge načine možete dobiti svojstva koja dozvoljavaju da pravilo, obučeno za određene situacije (koncepte), učestvuje i prekvalificira se u potpuno drugačijim situacijama (za druge koncepte, kao u primjeru o bijelim / paperjastim / mušicama)?

Do sada se pojavljuju dvije opcije.

Opcija jedan, dinamička kombinacija ulaza i izlaza... Zapamtite, na početku smo stavili čvrstu korespondenciju ulaza i izlaza pravila (neuralne mreže) sa ćelijama globalnog stanja? U isto vrijeme, evolucijske promjene su podešene na takav način da se ova korespondencija promijeni na minimum. U sljedećoj verziji, bez globalnog stanja, ulazi i izlazi drugačija pravila-mreže su takođe bile čvrsto povezane jedna s drugom.

Sada dozvolimo da u procesu rada iu procesu učenja ulaza i izlaza mijenjaju svoj položaj jedan u odnosu na drugi. Postavljaju se dva pitanja. Prvo, kako odrediti koliko su kompatibilni elementi rezultirajuće kombinacije, koliko efikasno ovo jedinjenje rješava problem? Drugo, kako brzo pronaći kompatibilne/efikasne kombinacije ulaza i izlaza, jer postoji mnogo kombinacija?

Najjednostavnija opcija je da se svaki ulaz i izlaz pravila uskladi sa funkcijom kompatibilnosti, koja se evolucijski mijenja, a možda postoji način da se ta kompatibilnost preciznije podesi, u procesu učenja, prema rezultatima pravila. (Može li se kompatibilnost izlaza izračunati tokom rada pravila? Da li bi bilo efikasno?) Za ulaze i izlaze u vanjsko okruženje, također je potreban skup kompatibilnosti, koji će biti dio opšteg skupa. Kada je program pokrenut, pravila će biti povezana samo uzimajući u obzir kompatibilnost ulaza-izlaza. Zadatak odabira takve kompatibilnosti nije računski lak, ali ipak nije u potpunosti težak. Možda će Hopfield mrežni algoritmi koji mogu raditi slične stvari pomoći u ovom odabiru.

Sljedeća opcija je kombiniranje na različite načine u procesu učenja ulaza i izlaza različitih pravila i prikupljanje informacija o djelotvornosti (kompatibilnosti) različitih kombinacija. U stvarnom radu, postupite kao gore - kombinujte ulaze u skladu sa kompatibilnošću.

Prethodne opcije su pogodne za implementaciju umjetne inteligencije, ali izgleda da u prirodnoj inteligenciji ne postoji takva kombinacija ulaza i izlaza. Ali postoje mape karakteristika, pogledajte o konvolucijskim mrežama i neokognitronu u prethodnim dijelovima. I čini se da takve karte postoje u prirodnoj inteligenciji.

Značenje karata karakteristika je sljedeće. Postoji skup pravila, postoji skup ćelija za unos. Svako pravilo skenira ulazne ćelije koristeći pokretni prozor, a sve ćelije iz prozora idu na ulaz pravila. Rezultat pravila se upisuje u ćeliju mape karakteristika, koja odgovara položaju prozora na ulaznim ćelijama. Kao rezultat toga, za svako pravilo će se dobiti mapa karakteristika u kojoj će mjesta najboljeg pokretanja pravila imati najveće vrijednosti. U sljedećem sloju, sve mape obilježja čine ulaz za novi skup pravila, koji opet sačinjavaju svoje mape karakteristika. Pravila učenja mogu vratiti grešku unatrag. Kako podučavati takva pravila kao dio programa je otvoreno pitanje.

Mape karakteristika su se dobro pokazale u prepoznavanju slike, sa izobličenjem povezanim s promjenom razmjera, perspektive, rotacije i deformacijama specifičnim za prikazani objekt.

Stoga su mape karakteristika dobar kandidat za eksperimente u dinamičkom kombinovanju ulaza i izlaza za pravila koja čine program.

Opcija dva, frekventna kombinacija ulaza i izlaza... U ovom slučaju, ne morate preuređivati ​​ulaze i izlaze. U frekvencijskim neuronskim mrežama (ili u programima izgrađenim na takvim mrežama), svaki neuron je i najjednostavniji frekvencijski filter i najjednostavniji generator frekvencije. Štaviše, ovaj filter se može istovremeno podesiti na različite harmonike (zbog čega su kapacitet i mogućnosti frekvencijskih mreža veći od onih kod konvencionalnih mreža). Isto tako, svaka kombinacija neurona je i kompleksni frekvencijski filter i složeni generator frekvencije. (U našoj umjetnoj inteligenciji, takav neuron je ekvivalent jednom pravilu predstavljenom malom neuronskom mrežom.)

Stoga, signali koji se odnose na potpuno različite entitete mogu lutati duž istih neurona na različitim frekvencijama. Ali pošto različite frekvencije utiču na iste neurone (kombinacije neurona), različite frekvencije (i entiteti koje obrađuju) utiču jedna na drugu. Stoga, ako je naša inteligencija izgrađena na principima obrade frekvencijskih signala (kao što je gore spomenuto u odjeljku o frekvencijama), onda se čini da ova inteligencija već ima sposobnost generalizacije heterogenih entiteta i neke filozofske apstrakcije. Ipak, mogu postojati dodatna tehnička rješenja koja će ubrzati formiranje ovakvih generalizacija u frekventnim mrežama.

I malo u zaključku. Takve metode rekombinovanja ulaza i izlaza daju ne samo svojstva visokog nivoa, kao što su asocijativno mišljenje i kvalitativne generalizacije, već i prozaičnija. Šta se događa ako se žice pomiješaju u električnom kolu? Ovo će najvjerovatnije biti fatalno za kolo. Ali za mozak to nije neophodno. Eksperimenti (na životinjama) su izvedeni kada je mozak bukvalno isječen na komade i pomiješan, zatim presavijen i životinja je puštena. Nakon nekog vremena, životinja se vratila u normalu i živjela je dalje. Korisna imovina, istina?

Ne postoje meta-nivoi

Jednom sam razmišljao o tome kako je logička hijerarhija izgrađena u inteligentnim sistemima, kako se logičke konstrukcije javljaju kada se drugi izgradi iznad jednog kristalno čistog nivoa, sažimajući nekoliko nivoa ispod. U radovima o umjetnoj inteligenciji (i ne samo), lijepo je opisano kako sistemi evoluiraju, akumuliraju složenost, prelaze s jednog nivoa na drugi.

U stvarnim sistemima se oduvek ispostavilo da, koliko god da su niži nivoi promišljeni, uvek se u njima akumuliraju neka neslaganja, promene koje se ne mogu uskladiti sa gornjim nivoima, te promene pre ili kasnije razbijaju ceo sistem, zahtevajući veliki remont cijele hijerarhije. Izlaz je bio ovaj - ne biti čvrsto vezan za takve hijerarhije, ostaviti slobodu djelovanja kako bi se, ako je potrebno, moglo raditi zaobilazeći formalnu hijerarhiju. I to nije znak loše dizajniranog sistema, to su realnosti života.

Naravno, pravi sistem će minimizirati nered, a to je ono što je. Ali to ne znači da u takvom sistemu u potpunosti nema neformalnih veza. Dobar sistem, uz svu svoju ispravnost, mora nositi element vlastitog uništenja. Element koji stupa na snagu kada sistem više ne može da se nosi sa svojim zadacima, element koji potpuno obnavlja sistem za nove realnosti.

Slično, u vještačkoj inteligenciji, čini se da nema mjesta za bilo kakve logičke nivoe i meta-tranzicije (posebno imajući u vidu prethodni odjeljak o asocijacijama i generalizacijama). Sva pravila (ona su neuroni u našem razumijevanju) istovremeno su uključena u donošenje odluka na bilo kojem nivou. Neuroni pravila mogu se dinamički nizati u različite ansamble, u različite hijerarhije. Ali čak i sa takvim dinamičkim poravnanjem, oni neće imati hijerarhijsku strogost, element sa donjeg nivoa može lako uticati na gornji nivo, toliko da će ga potpuno obnoviti.

U svakom konkretnom slučaju primjene pravila, možete izgraditi vlastitu hijerarhiju. Ali ova hijerarhija nije statična, kao što se dešava sa raznim formalizacijama. U inteligenciji, sve zavisi s koje strane povući, iz kojeg ugla gledati. Svaki ugao ima svoju hijerarhiju, a takvih "uglova gledanja" može biti mnogo. Unutar intelekta, očigledno, ne postoji jasna hijerarhija (to ne znači "hardverski" nivo koji određuje koji deo mozga je odgovoran za koje organe).

Kvantna genetika

Puno zanimljivih stvari je rečeno o kvantnom računarstvu i kvantnim svojstvima inteligencije. Neki čak vjeruju da mozak može direktno "pokrenuti" kvantne procese da razmišlja.

Ukratko, suština kvantnog računarstva se svodi na ovo. Početni podaci se primjenjuju na mali broj elementarnih čestica. U procesu rješavanja podataka, ogromna količina podataka počinje da se obrađuje u isto vrijeme. Različiti puteviŠtaviše, ove metode međusobno komuniciraju, uče od koga je rešenje bolje, od koga je gore, loše odluke se slabe, dobre jačaju.

To se događa zbog činjenice da pri pokretanju kvantnih proračuna svaka čestica u potpunosti "osjeti" stanje svih ostalih čestica koje učestvuju u proračunu, i to trenutno, i bez značajnijeg utroška energije. Kada se rastvor pokrene, čestice su uronjene u "razmazano" ("upleteno") stanje, koje se ne može istražiti iz spoljašnjeg sveta. U razmazanom stanju svaka čestica nema jasno fizičko stanje, svaka čestica je istovremeno u nekoliko stanja i može učestvovati u nekoliko paralelnih procesa (štaviše, ti procesi se međusobno „osećaju“). Štaviše, što više čestica učestvuje u rješenju, to više stanja ista čestica može istovremeno imati.

Ako pokušamo da uđemo u razmazano stanje i vidimo šta je unutra, onda ćemo u svakom trenutku dobiti specifična fizička stanja čestica, bez nagoveštaja mnogih istovremenih stanja. Štaviše, nakon takve intervencije tok odluke će biti potpuno uništen, višestruko stanje se ne može vratiti. Stoga je misterija šta se dešava u intervalu između specificiranja ulaznih podataka i uklanjanja rezultata rješenja. Ispostavilo se da mala količina ulaznih podataka u procesu rješavanja generiše mnogo redova veličine složenije unutrašnje stanje, za koje nije jasno kako se razvija, nije podložno istraživanju i, ipak, daje ispravno rješenje. Stanje koje se uhvati kada se pokušava istražiti razmazano stanje je vjerovatnoće prirode. Uz ispravnu kompilaciju kvantnog algoritma, moguće je učiniti da je vjerovatnoća uklanjanja ispravnog rješenja mnogo veća od vjerovatnoće uklanjanja pogrešnog rješenja (tj. rješenje se mora ukloniti barem nekoliko puta).

Čini se da na ovaj način možete dobiti ogromnu računarsku snagu gotovo besplatno. Ali postoji problem - čestice rješenja moraju biti potpuno izolirane od vanjskog svijeta, inače će vanjski svijet srušiti ispravnost toka rješenja (narušiti koherentnost). Vjeruje se da je potpuna izolacija nemoguća, jer (kako kaže kvantna fizika) svaka čestica, svaki kvant, u početku je razmazan po cijelom svemiru i usko je isprepleten sa svakom drugom česticom koja čini naš univerzum. I, kao posljedica ovog mišljenja, ispada da kvantno računanje ne uranja čestice u stanje razmazano po alternativnim univerzumima, već privlači druge, vrlo specifične čestice iz našeg vlastitog svemira kako bi paralelizirale proračune. Istina, to još uvijek ne otklanja poteškoće u proučavanju unutrašnjeg stanja.

Iz ovoga slijedi nekoliko zanimljivih zaključaka. Kvantno računanje velikih snaga neće nam moći pružiti apsolutno istinito računanje, ali je sasvim prikladno za vjerodostojna rješenja, na primjer, u umjetnoj inteligenciji, kao što je gore opisano. I još jedan zaključak, koji se usko prepliće sa prethodnim – kvantno računarstvo ne može da obezbedi samospoznaju, samorefleksiju, jer su sastavni deo univerzuma, pa samim tim ne mogu da upoznaju sebe i univerzum u celini, jer su njen sastavni deo. To je razlog zašto kvantne nesigurnosti zapravo slijede kada se pokušava izmjeriti stanja kvantnih čestica, kao što smo primijetili u prethodnim dijelovima. Uostalom, nemoguće je u potpunosti spoznati sebe samo uz pomoć samog sebe. Kvantna nesigurnost je zapravo direktna posljedica Gödelove teoreme, koja kaže da formalni sistem ne može spoznati sebe sa apsolutnom istinitom tačnošću.

Vratimo se sada na inteligenciju. Mnogi istraživači su ispravno uočili sličnosti između svojstava kvantnog računarstva i intelektualnih procesa kod ljudi. Za nas najzanimljivije nekretnine su sljedeće. Odluka o ulasku i izlasku je prilično jednostavan skup stanja. Ova jednostavna stanja uranjaju mozak u mnogo složenije stanje koje se ne može istražiti izvana. Pokušaj da se istraži ovo stanje, ili da se ukloni rješenje, opet proizvodi skup jednostavna stanja, štaviše, ova stanja su takođe vjerovatnoća i vjerovatnije je da će dati ispravno rješenje nego pogrešno. Čovjeku je teško shvatiti ovo unutrašnje stanje, za razliku od ulaza/izlaska, ali to je unutrašnje stanje, koje se zove "osjećaj". Kao iu kvantnom računarstvu, postavljanje početnog stanja i uklanjanje rješenja su prilično dugotrajni postupci. Dakle, čovjeku je lako razmišljati "unutar sebe", ali da bi svoje misli prenio napolje, na drugu osobu - treba se potruditi.

Sada ostaje samo napomenuti da su gornja svojstva kvantnog računarstva i ljudske inteligencije praktički jedan prema jedan primjenjiva na prethodno opisani algoritam umjetne inteligencije, koji je bio zasnovan na genetskom algoritmu.

Uostalom, čini se, gdje u mozgu, sa svojim valovima, frekvencijama i neuronima, može nastati neki privid genetskog algoritma, sa svojim hromozomima i alternativnim rješenjima? Ispada, ako pogledate s druge strane, genetski algoritam je samo jedna od manifestacija više opšta klasa procesi.

Ispostavilo se da mozak, da bi pokazao zanimljiva kvantna svojstva, ne mora direktno povlačiti kvantne procese, postoje pragmatičnija objašnjenja. Čak i samo kvantno računanje ne mora privlačiti misticizam o paralelnim svemirima i apsolutnim istinama, jer oni mogu biti organizirani na mikro nivou u neku vrstu genetskog algoritma koji samo pretendira da uroni čestice u razmazano stanje, ali zapravo sadrži sa računarskim resursima njegovog sopstvenog univerzuma.

Vrlo je moguće da će se na spoju kvantnog računarstva, genetskih algoritama i drugih područja umjetne inteligencije pojaviti nova teorija računanja, koja će omogućiti izradu moćnijih kvantnih kompjutera, a na osnovu rigoroznog aparata kvantnoj fizici, kako bi se preciznije objasnili procesi koji se dešavaju u inteligenciji. Uostalom, ono do čega smo do sada došli u poimanju inteligencije liči na anegdotu "Osjećam u svojoj utrobi da će 0,5 + 0,5 biti litar, ali ne mogu to dokazati matematički", kada možemo, ali ne možemo objasni zašto je to tako.

Unutrašnje predstavljanje stvari

Kako mozak predstavlja vanjske stvari? Može se činiti da mozak rekreira fizički model objekata i pojava, što dovodi do mnogo pogrešnih zaključaka. U stvari, unutrašnja reprezentacija uopće nije ista kao fizički model. Interni model je uvjerljiv. Interni model čini analogni koji hvata samo svojstva objekta koja su za nas najvažnija, ona svojstva koja se koriste u svakodnevnom iskustvu. Ovaj unutrašnji model se ponekad naziva "naivna fizika". U granicama svakodnevnog iskustva, takav model daje, iako netačne, ali prilično praktične rezultate. Ali čim pređemo granice svakodnevnog iskustva, takav model propada.

Skup pravila koja formiraju takav model može biti veoma daleko od stvarne fizičke reprezentacije. Zbog toga, unutrašnja reprezentacija nosi u dodatku mnoštvo "fantastičnih" svojstava stvarnih objekata, unutrašnja reprezentacija počinje da "živi sopstveni život". Na primjer, crtani filmovi. Osoba može lako prepoznati lice nacrtano na karikaturi, obučeni ljudi mogu crtati karikature. Ali sistemi za prepoznavanje lica su zbunjujući crtani filmovi. I s pravom, iako postoji uvjerljiv model u prepoznavačima, on je mnogo bliži fizičkom nego ljudskom.

Intrinzična reprezentacija također ima ranije opisani diferencijal složenosti. Sastoji se u činjenici da jednostavniji predmet ili pojava generiše mnogo složeniju unutrašnju predstavu, koja je odgovorna za modeliranje suštine stvari. Uostalom, inteligencija ne može direktno simulirati fiziku. Jednostavna ideja izaziva "osjećaj" suštine stvari, kada osjetite zašto je to tako, ali ne možete objasniti. Složenija reprezentacija može povući predstavljanje stvari na nivo razumevanja, fantazije, na nivo svesnog razmišljanja (primer sa crtanim filmovima).

Zdravo logika

Šta je logika i odakle dolazi najveća intelektualna aktivnost?

Naš intelekt je prošao put od najjednostavnijih "ulaz-izlaz" reakcija do kombinacije ogromnog broja konkurentskih procesa koji razlažu situaciju ulaska u mnogo složeniju unutrašnju reprezentaciju.

Kao rezultat toga, za neke stvari se mogu formirati kompleksi pravila ogromne složenosti (mnogo složeniji od fizike originalne stvari), koji su unutrašnja reprezentacija ove stvari. Kakva tačno ova pravila mogu biti i koliko se približno mogu formirati opisano je gore. Ali glavna stvar je da zbog takve razlike u složenosti između početnog fenomena i njegovog opisa, postaje moguća kvalitativno drugačija reprezentacija ovog fenomena, što omogućava izvođenje novih saznanja o ovom fenomenu s visokim stupnjem uvjerljivosti.

Dozvolite mi da vas podsjetim da je paradoks inteligencije protiv algoritma taj da algoritam može samo glupo simulirati fiziku neke stvari, a da ne shvati suštinu fenomena, ne može izvući nova saznanja o fenomenu, a ne može čak ni garantirati istinitost njegovog rada. . Inteligencija je, zbog mnogo složenije unutrašnje reprezentacije suštine stvari, u stanju ne samo da modelira upravo te stvari, već i da izvede nova saznanja o njima, pa čak i procijeni istinitost sudova o ovoj stvari, i to sa visokom stepen uvjerljivosti.

Tranzicija složenosti, koja razvija reprezentaciju suštine predmeta i pojava, u reprezentaciju, mnogo redova složeniju od originalne "fizike" predmeta i pojava, dobar je kandidat za ulogu razumijevanja. Dolazi do dekompozicije u složenu internu reprezentaciju - postoji razumijevanje i kvalitetno rukovanje suštinom stvari, moguć je fleksibilan odgovor kada se pojave neočekivane situacije. Ne postoji takva dekompozicija - moguće je samo glupo "zbijanje", slijepo pridržavanje algoritma, koji ne daje nova saznanja i ne daje račun o suštini ili istinitosti svog rada, i zbunjuje se kada se pojave novi faktori.

Tupo pridržavanje algoritma ne privlači najveću intelektualnu aktivnost, stoga je brzo i efikasno, gdje je potrebna samo jasna reakcija na tipične situacije. Viša intelektualna aktivnost, uz privlačnost razumijevanja, u stanju je polako da zakiva različite algoritme, ali nije u stanju da ih brzo izvrši. Moguće su i kombinacije ovih metoda.

Sledeće logično pitanje je – da li je moguće razumeti šta se dešava u procesu razumevanja? I isti logičan odgovor - najvjerovatnije da, ali to će zahtijevati takvu reprezentaciju procesa koji se odvijaju u intelektu, koja bi bila mnogo redova veličine superiornija od složenosti izvornih intelektualnih procesa. Odnosno, možemo naučiti nešto o intelektu, možemo nešto učiniti, ali nismo u mogućnosti da u potpunosti i kvalitetno razumijemo rad ljudskog intelekta - jednostavno snaga mozga nije dovoljna. Iako možemo proučavati i koristiti obrasce, kao što sada koristimo kompjutere, bez pune svijesti o procesima koji se u njima odvijaju. Nerealno je zamisliti procese koji se odvijaju u svim milionima tranzistora, iako je sasvim moguće shvatiti kako funkcionišu logičke jedinice kompjuterskih kola i kako se kombinuju u više nivoe. Isto važi i za intelekt.

Iz navedenog postaje jasno zašto je razumijevanje teško objasniti i zašto je razumijevanje lako osjetiti, zašto je moguće postaviti logičke konstrukcije koje prate razumijevanje i zašto je vrlo teško reproducirati cijelu osnovu koja je dovela do razumijevanja. sama. U nastavku će biti cijeli odjeljak o tome. Odavde postaje jasno šta je osećanje, šta je osećanje nekog stanja, zašto je osećanja i senzacije teško izraziti, ali lako osetiti. Općenito, ima mnogo zanimljivih posljedica, koga zanima - pogledajte u pravcu kvantnih svojstava svijesti.

Drugo je pitanje kako tačno ispada da smo svjesni sebe, svjesni svijeta oko nas? Hoće li misleće mašine dobiti ovu vrstu svijesti? Ovo fundamentalno filozofsko pitanje ne spada u domen umjetne inteligencije, ali ćemo ipak pokušati odgovoriti na to u sljedećem dijelu.

Nastavljajući razmišljanje o razlikama u složenosti i razumijevanju, dolazimo do zaključka da će supersložena unutrašnja reprezentacija, na kraju, moći generirati vrlo tanke, moglo bi se reći oštre, superharmonizirane rubove iz unutrašnje reprezentacije stvari. Drugim riječima, idealizacija ili apstrakcija originalnih stvari.

Ove apstrakcije duguju svoje rođenje višestrukoj kombinaciji ogromnog broja unutrašnjih, konfliktnih i kombinovanih procesa. Ali za razliku od rezultata interakcije većine interni procesi, za apstrakcije, rezultat neće biti zamućen (široki), već će biti sakupljen, takoreći, u tački, u jednoj ili nekoliko vrlo jasnih ivica ili vrhova.

Naravno, apstrakcije se, između ostalog, generišu ponovljenim posmatranjem manifestacija njihovih stvarnih prototipova i ponovljenim refleksijama koje uključuju unutrašnje predstavljanje objekata. Štaviše, ponavljanje ovih zapažanja i refleksija je svakako veće nego kod drugih objekata koji ne daju apstrakcije. A priroda pravila koja daju unutrašnju reprezentaciju apstrakcija je vjerovatno uređenija, prilagođenija vrhunskoj harmonizaciji, forma.

Sljedeći korak je da će se takve vršne harmonizacije moći ujediniti u duge lance, djelujući prema vlastitim zakonima. Tako dobijamo novi nivo razmišljanja, apstraktnog ili logičkog. Naravno, ovaj nivo je mnogo teži od običnog razumijevanja, a nije svako stvorenje obdareno razumijevanjem sposobno za složene logičke konstrukcije.

Takvi apstraktni lanci će živjeti po svojim zakonima, negdje nalik na originalne prototipove, negdje se udaljavajući od njih.

Obratite pažnju odakle dolaze logičke konstrukcije. Oni nisu na algoritamskom nivou, pa čak ni na sledećem nivou, nivou razumevanja. Oni su već treći nivo inteligencije, neka vrsta razumevanja nad razumevanjem.

Ostaje da se prisjetimo da se u procesu logičkih konstrukcija mozak samo "pretvara" da radi kao glupi algoritam, kao primitivna mašina za zaključivanje. Zapravo, procesi uključeni u logičke konstrukcije su za ogromne redove veličine složeniji od originalnih logičkih konstrukcija, a zbog takvog skoka složenosti, intelekt uspijeva stvoriti nove logičke konstrukcije i suditi o njihovoj istinitosti s visokim stupnjem tačnosti.

Na isti način, mozak može oponašati rad kompjutera (Turingovih mašina), zbog "teških" procesa, iako se čini da mozak slijedi "suptilne" algoritme (naročito ako je mozak osposobljen za to).

I još malo o suptilnim logičkim konstrukcijama i algoritmima. Neupućenima može se činiti da, kada razmišlja o matematičkim istinama ili kada sastavlja kompjuterske programe, prosvijećeni mudrac sjeda u neku priličnost meditacije i uz pomoć ispravnog rasuđivanja dolazi do ispravnih zaključaka ili dolazi do ispravnog programa. . Zapravo, ono što se dešava više liči na sljedeći dijagram.

  • Smislio "nešto", početnu verziju (ili je čak slučajno generirao).
  • Provjerio sam rad ovog "nečega" oponašajući logičko rasuđivanje, naučio napamet problematična područja.
  • Pokušao sam da poboljšam problematična područja kucanjem (popravio sam ovo "nešto").
  • Provjerio sam poboljšanu verziju i tako dalje.

Na kraju krajeva, mozak je u stanju ne toliko da generiše ispravne logičke lance u hodu, već da provjeri rad ovih lanaca oponašajući logičko rasuđivanje. Druga stvar je da mozak ima ogromnu "biblioteku" šablona za različite situacije, plus gomilu vjerodostojnih pravila o tome kako kombinirati ove šablone jedni s drugima. Primjenom ovih pravila i obrazaca, uz mali broj pokušaja, moguće je izgraditi dobro logičko rasuđivanje i programe. Konkretno, takva pravila mogu uključivati ​​dijagnostiku rada različitih kombinacija predložaka, a mogu se i ažurirat će se dinamički, umjesto pokretanja logičkih konstrukcija na cijeloj količini podataka svaki put.

Ove sedmice mogli ste pročitati izuzetno motivirajući slučaj učenika GeekBrainsa koji je studirao struku, gdje je govorio o jednom od svojih ciljeva koji je doveo do profesije - želji da naučite princip rada i naučite kako sami kreirati botove za igre.

Zaista, želja za stvaranjem savršene umjetne inteligencije, bilo da se radi o modelu igre ili mobilnom programu, potaknula je mnoge od nas na put programera. Problem je šta se krije iza tona nastavnog materijala i surova stvarnost kupaca, sama ta želja zamijenjena je jednostavnom željom za samorazvoj. Za one koji još nisu počeli da ispunjavaju svoje snove iz djetinjstva, evo kratkog vodiča za stvaranje prave umjetne inteligencije.

Faza 1. Razočarenje

Kada govorimo o stvaranju barem jednostavnih botova, oči se zasjaju, a u glavi mu sijevaju stotine ideja o tome šta bi trebao biti u stanju da uradi. Međutim, kada je u pitanju implementacija, ispostavilo se da je matematika ključ za razotkrivanje stvarnog ponašanja. Da, umjetna inteligencija je mnogo teža od pisanja aplikativnih programa – samo znanje o dizajnu softvera vam neće biti dovoljno.

Matematika je naučna odskočna daska na kojoj će se graditi vaše dalje programiranje. Bez znanja i razumijevanja ove teorije, sve ideje će se brzo razbiti o interakciji s osobom, jer umjetni um zapravo nije ništa drugo do skup formula.

Faza 2. Prihvatanje

Kad studentska literatura malo sruši aroganciju, možete početi vježbati. Bacati se na LISP ili druge još se ne isplati – prvo se trebate upoznati s principima AI dizajna. Python je savršen i za brzo učenje i za dalji razvoj - ovo je jezik koji se najčešće koristi u naučne svrhe, za njega ćete pronaći mnoge biblioteke koje će vam olakšati rad.

Faza 3. Razvoj

Sada prelazimo direktno na teoriju AI. One se ugrubo mogu podijeliti u 3 kategorije:

  • Slaba veštačka inteligencija - botovi koje vidimo u kompjuterskim igrama, ili jednostavni pomoćnici poput Siri. Oni ili obavljaju visoko specijalizirane zadatke ili su njihov beznačajan kompleks, a svaka nepredvidljivost interakcije ih zbunjuje.
  • Jaka AI je mašina čija je inteligencija uporediva sa onom ljudskog mozga. Danas nema pravih predstavnika ove klase, ali su računari poput Watsona vrlo blizu ostvarenju ovog cilja.
  • Savršena AI je budućnost, mašinski mozak koji će nadmašiti naše mogućnosti. Upravo o opasnosti takvog razvoja događaja upozoravaju na opasnost Stephen Hawking, Elon Musk i filmska franšiza Terminator.

Naravno, trebali biste početi s najjednostavnijim botovima. Da biste to učinili, zapamtite dobra stara igra"Tic-tac-toe" kada koristite polje 3x3 i pokušajte sami otkriti osnovne algoritme akcija: vjerovatnoću pobjede akcijama bez greške, najuspješnija mjesta na terenu za poziciju figure, treba svesti utakmicu na neriješeno, i tako dalje.

Nekoliko desetina igrica i analizirajući vlastite radnje, vjerojatno možete istaknuti sve važne aspekte i prepisati ih u mašinski kod. Ako ne, nastavite razmišljati, a ovaj link je ovdje za svaki slučaj.

Usput, ako ste i dalje koristili jezik Python, onda možete kreirati prilično jednostavan bot pozivajući se na ovaj detaljni priručnik. Za druge jezike, kao što su C++ ili Java, nećete imati problema s pronalaženjem materijala korak po korak. Osećajući da iza stvaranja veštačke inteligencije ne postoji ništa natprirodno, možete bezbedno da zatvorite pretraživač i započnete lične eksperimente.

Faza 4. Uzbuđenje

Sada kada su stvari krenule s početka, vjerovatno želite da kreirate nešto ozbiljnije. U tome će vam pomoći nekoliko sljedećih resursa:

Kao što razumete čak i iz imena, ovo su API-ji koji će vam omogućiti da kreirate neki privid ozbiljne veštačke inteligencije bez gubljenja vremena.

Faza 5. Rad

Sada, kada već sasvim jasno razumete kako da kreirate veštačku inteligenciju i šta da koristite u isto vreme, vreme je da svoje znanje podignete na novi nivo. Prvo, to zahtijeva studij discipline pod nazivom Machine Learning. Drugo, morate naučiti kako raditi s odgovarajućim bibliotekama odabranog programskog jezika. Za Python koji razmatramo, to su Scikit-learn, NLTK, SciPy, PyBrain i Numpy. Treće, razvoj je neophodan. I što je najvažnije, sada ćete moći čitati literaturu o umjetnoj inteligenciji s punim razumijevanjem materije:

  • Umjetna inteligencija za igre, Ian Millington;
  • Obrasci programiranja igara, Robert Nystorm;
  • AI algoritmi, strukture podataka i idiomi u Prologu, Lisp-u i Javi, George Luger, William Stbalfield;
  • Računarska kognitivna neuroznanost, Randall O'Reilly, Yuko Munakata;
  • Umjetna inteligencija: moderni pristup, Stuart Russell, Peter Norvig.

I da, sva ili skoro sva literatura o ovoj temi je predstavljena na stranom jeziku, tako da ako želite da kreirate AI profesionalno, morate unaprediti svoj engleski do tehničkog nivoa. Međutim, ovo je relevantno za bilo koju oblast programiranja, zar ne?