Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Vijesti
  • Na kom jeziku je pisana umjetna inteligencija? Uvod u AI. Malo poznati jezici za stvaranje umjetne inteligencije

Na kom jeziku je pisana umjetna inteligencija? Uvod u AI. Malo poznati jezici za stvaranje umjetne inteligencije

Dok programeri mogu zaraditi novac programiranjem, tada postojeći AI nije AI, bez obzira na to koji omot od slatkiša je okačen na njih. Opcija koju predlažem može riješiti ovaj problem.

Kao rezultat mog istraživanja, prestao sam da koristim izraz „umjetna inteligencija“ za sebe kao previše neodređen i došao sam do drugačije formulacije: algoritam za samostalno učenje, istraživanje i primjenu rezultata za koje se nađe da rješavaju sve moguće probleme.

Šta je AI, o tome je već mnogo napisano. Ja postavljam pitanje drugačije, ne „šta je AI“, već „zašto je AI potrebna?“ Treba mi da zaradim mnogo novca, pa da kompjuter radi sve za mene što ne želim da radim sam, pa da napravim svemirski brod i odletim do zvezda.

Dakle, ovdje ću opisati kako učiniti da kompjuter ispuni naše želje. Ako očekujete da ćete ovdje vidjeti opis ili spominjanje kako funkcionira svijest, šta je samosvijest, šta znači misliti ili rasuđivati, onda ovo nije ovdje. Razmišljanje nije o kompjuterima. Računari izračunavaju, izračunavaju i izvršavaju programe. Zato razmislimo o tome kako napraviti program koji može izračunati neophodan slijed radnji za ostvarenje naših želja.

U kom obliku naš zadatak dolazi u kompjuter – preko tastature, preko mikrofona ili od senzora ugrađenih u mozak – nije važno, ovo je sporedna stvar. Ako možemo da učinimo da kompjuter ispunjava želje napisane u tekstu, onda mu možemo postaviti zadatak da napravi program koji takođe ispunjava želje, ali preko mikrofona. Analiza slike je takođe nepotrebna.

Tvrditi da bi AI stvoren za prepoznavanje slika i zvukova, takvi algoritmi u početku moraju biti uključeni u njega, isto je kao tvrditi da je svaka osoba koja ih je stvorila od rođenja znala kako takvi programi rade.

Hajde da formulišemo aksiome:
1. Sve na svijetu može se izračunati po nekim pravilima. (o greškama kasnije)
2. Proračun prema pravilu je nedvosmislena zavisnost rezultata od početnih podataka.
3. Sve nedvosmislene zavisnosti mogu se pronaći statistički.
A sada izjave:
4. Postoji funkcija za pretvaranje tekstualnih opisa u pravila - tako da ne morate tražiti znanje koje je već odavno pronađeno.
5. Postoji funkcija za pretvaranje problema u rješenja (ovo je ispunjenje naših želja).
6. Pravilo predviđanja proizvoljnih podataka uključuje sva druga pravila i funkcije.

Prevedimo ovo na programski jezik:
1. Sve na svijetu može se izračunati pomoću nekih algoritama.
2. Algoritam uvijek daje isti rezultat kada se ponavljaju originalni podaci.
3. Ako postoji mnogo primjera izvornih podataka i rezultata za njih, uz beskonačno vrijeme pretraživanja, možete pronaći cijeli skup mogućih algoritama koji implementiraju ovu ovisnost izvornih podataka i rezultata.
4. Postoje algoritmi za pretvaranje tekstualnih opisa u algoritme (ili bilo koje druge informativne podatke) - da se ne traže statistički traženi algoritmi, ako ih je neko već pronašao i opisao.
5. Moguće je kreirati program koji će ispuniti naše želje, bilo u tekstualnom ili glasovnom obliku, pod uslovom da se te želje ostvare fizički iu potrebnom roku.
6. Ako uspete da kreirate program koji može da predvidi i nauči da predviđa kako pristižu novi podaci, onda će nakon beskonačnog vremena takav program uključiti sve moguće algoritme u našem svetu. Pa, ako vrijeme nije beskonačno za praktičnu upotrebu i uz neku grešku, može se natjerati da izvede algoritme programa u koraku 5 ili bilo koji drugi.

I još nešto, IMHO:
7. Ne postoji drugi način da naučite potpuno nezavisno i nezavisno od osobe, osim traženjem pravila grubom silom i statističkim testiranjem za predviđanje. I samo trebate naučiti kako koristiti ovu nekretninu. Ovo svojstvo je dio načina na koji mozak radi.

Šta treba predvidjeti. Od rođenja, ljudski mozak počinje primati tok informacija – iz očiju, ušiju, taktilnih itd. I sve odluke se donose na osnovu prethodno primljenih podataka. Analogno, pravimo program koji ima ulaz novih informacija jedan po bajt - bajt po bajt ulazni tok. Sve što je ranije primljeno prikazano je u obliku jedne kontinuirane liste. Primaće se od 0 do 255 eksternih informacija, a iznad 255 koristićemo posebne kontrolne markere. One. Ulaz vam omogućava da upišete, recimo, do 0xFFFF dimenziju broja. I upravo taj tok, odnosno sljedeću dodatnu količinu informacija, trebamo naučiti da predvidimo na osnovu podataka koje smo ranije primili. One. program mora pokušati pogoditi koji će sljedeći broj biti dodat.

Naravno, moguće su i druge opcije za prikazivanje podataka, ali za potrebe kada se kao ulaz primaju različiti formati, jednostavno prvo tu stavljamo razne html-ove sa opisima, ovaj je najoptimalniji. Iako se markeri mogu zamijeniti escape sekvencama u svrhu optimizacije, manje ih je zgodno objasniti. (I takođe, zamislimo da je sve u ASCII, a ne u UTF-u).

Dakle, prvo, kao pri rođenju, tamo gurnemo sve internet stranice sa opisima i odvojimo ih novim tekstualnim markerom - - da ova crna kutija može sve naučiti. Markere ću označavati oznakama, ali se podrazumijeva da su oni jednostavno neka vrsta jedinstvenog broja. Nakon što prođe određena količina podataka, počinjemo manipulirati dolaznim informacijama pomoću kontrolnih markera.

Pod predviđanjem mislim na algoritam koji zna ne samo koji obrasci su već postojali, već i stalno traži nove. I stoga, ako pošaljete sekvencu na ulaz takvog programa
nebo plava
trava zeleno
plafon
, onda mora shvatiti šta je iza markera prati boju od prethodno navedenog objekta, a na mjestu elipse predviđa najvjerovatniju boju stropa.

Ponovili smo mu nekoliko primjera kako bi shvatio koju funkciju treba primijeniti unutar ovih tagova. A samu boju, naravno, ne bi trebao izmisliti, već bi je već trebao znati, samostalno je proučavajući izračunavajući obrasce u predviđanju.

Kada se od algoritma traži odgovor, ulaz narednih koraka je ono što je bilo predviđanje prethodnog koraka. Upišite auto-prognostikovanje (po analogiji sa riječju autokorelacija). I u isto vrijeme onemogućavamo funkciju pretraživanja za nove sekvence.

Drugi primjer, možete naznačiti pitanje nakon prvog markera, a odgovor u drugom, a onda ako je ovaj algoritam super-mega-kul, trebao bi početi da daje odgovore čak i na najsloženija pitanja. Opet, u granicama već proučenih činjenica.

Možete smisliti mnogo različitih trikova sa kontrolnim markerima koji se unose na ulaz prediktivnog mehanizma i dobiti bilo koju željenu funkciju. Ako vam dosadi čitanje o algoritamskom obrazloženju za ovo svojstvo, možete se pomaknuti do sljedećih primjera s kontrolnim markerima.

Od čega se sastoji ova crna kutija? Prvo, vrijedi napomenuti da nije moguće napraviti stopostotno predviđanje uvijek i u svim situacijama. S druge strane, ako rezultat uvijek daje broj nula, onda će i ovo biti prognoza. Iako sa apsolutno stopostotnom greškom. Sada izračunajmo s kojom vjerovatnoćom, kojim brojem, koji broj slijedi. Za svaki broj će se odrediti najvjerovatniji sljedeći broj. One. možemo to malo predvidjeti. Ovo je prvi korak na veoma dugom putu.

Nedvosmisleno preslikavanje ulaznih podataka u rezultat algoritma, ovo odgovara matematičkoj definiciji funkcije riječi, osim što definicija algoritma nije podložna sigurnosti u količini i smještaju ulaznih i izlaznih podataka. Također primjer, neka bude mali znak: objekt-boja, u njega ćemo staviti mnogo linija: nebesko-plava, travna-zelena, plafonsko-bijela. Ispostavilo se da je ovo mala lokalna funkcija mapiranja jedan na jedan. I nije važno što u stvarnosti boje često nisu iste - tamo će biti i drugi stolovi. I svaka baza podataka koja sadrži pohranjena svojstva nečega je skup funkcija i preslikava identifikatore objekata u njihova svojstva.

Da pojednostavim, dalje u mnogim situacijama, umjesto termina algoritam, koristit ću izraz funkcija, kao što je funkcija s jednim parametrom, osim ako nije drugačije navedeno. I sva takva spominjanja treba shvatiti kao proširivost na algoritme.

I daću približan opis, jer... u stvarnosti, sve ovo tek treba da implementiram... Ali sve je logično. Takođe treba uzeti u obzir da se svi proračuni vrše po koeficijentima, a ne istinitim ili netačnim. (moguće čak i ako je jasno navedeno da je tačno i netačno).

Svaki algoritam, posebno onaj koji radi na cijelim brojevima, može se razložiti na skup uslova i prijelaza između njih. Operacije sabiranja, množenja itd. se takođe razlažu na podalgoritme uslova i prelaza. I još jedan operator rezultata. Ovo nije povratna izjava. Uslovni operator uzima vrijednost odnekud i upoređuje je sa konstantnom vrijednošću. I operator rezultata dodaje konstantnu vrijednost negdje. Lokacija preuzimanja ili preklapanja izračunava se u odnosu na osnovnu tačku ili u odnosu na prethodne korake algoritma.

Struct t_node ( tip int; // 0 - uvjet, 1 - rezultat unija ( struct ( // operator uvjeta t_node* source_get; t_value* compare_value; t_node* next_if_then; t_node* next_if_else; ); struct ( // rezultat operator de t_set* t_value* result_value; ); ) );
Nešto poput ovoga. I od takvih elemenata se gradi algoritam. Kao rezultat svih rasuđivanja, dobiće se složenija struktura, a ovo je za početno izlaganje.

Svaka predviđena tačka se izračunava pomoću neke funkcije. Funkcija ima vezan uslov koji testira da li se funkcija primjenjuje na tu točku. Opća konkatenacija vraća ili false - nije primjenjivo ili rezultat izračunavanja funkcije. A kontinuirano predviđanje protoka je sekvencijalna provjera primjenjivosti svih već izmišljenih funkcija i njihov proračun, ako je istinit. I tako za svaku tačku.

Osim uslova primjenjivosti, postoje i udaljenosti. Između početnih podataka i rezultata, ova udaljenost može biti različita, s istom funkcijom koja se primjenjuje ovisno o uvjetu. (A od uslova do početnog ili predviđenog postoji i distanca; mi ćemo je implicirati, ali je izostaviti u objašnjenjima. A udaljenosti mogu biti dinamičke).

Sa akumulacijom velikog broja funkcija, broj uslova koji testiraju primenljivost ovih funkcija će se povećati. Ali, u mnogim slučajevima, ovi uslovi se mogu rasporediti u obliku stabala, a odsecanje skupova funkcija će se desiti proporcionalno logaritamskoj zavisnosti.

Kada se izvrši početno kreiranje i mjerenje funkcije, umjesto operatora rezultata, akumulira se distribucija stvarnih rezultata. Nakon akumuliranja statistike, distribuciju zamjenjujemo najvjerovatnijim rezultatom, a funkciji prethodimo uslovom, također testirajući uvjet za maksimalnu vjerovatnoću rezultata.

Ovo je potraga za pojedinačnim činjenicama korelacije. Nakon što smo nakupili gomilu takvih singlova, pokušavamo ih spojiti u grupe. Gledamo na koje možemo identificirati opći uvjet i opću udaljenost od početne vrijednosti do rezultata. Takođe, provjeravamo da pod takvim uvjetima i udaljenostima, u drugim slučajevima gdje se originalna vrijednost ponavlja, ne postoji široka distribucija rezultata. One. u određenim čestim upotrebama, vrlo je identičan.

Koeficijent identiteta. (Ovdje postoji dvosmjerni identitet. Ali češće je jednosmjeran. Kasnije ću ponovo razmisliti o formuli.)
Broj svakog para XY se kvadrira i zbraja.
Podijelite sa: zbroj veličina na kvadrat svake vrijednosti X plus zbir količina na kvadrat od Y minus dividenda.
One. ZBIR(XY^2) / (SUM(X^2) + ZBIR(Y^2) - ZBIR(XY^2)).
Ovaj koeficijent se kreće od 0 do 1.

I kao rezultat, šta se dešava. Koristeći visokofrekventne činjenice, uvjerili smo se da su pod ovim uvjetima i udaljenosti ove činjenice nedvosmislene. A preostale rijetke – ali će ih ukupno biti mnogo više nego čestih – imaju istu grešku kao i često susrećene činjenice u ovim uvjetima. One. možemo akumulirati bazu predviđanja na osnovu pojedinačnih činjenica na koje se susrećemo u ovim uslovima.

Neka postoji baza znanja. Nebo je često plavo, a negdje se vidjelo tropsko-rijetko-smeće koje je sivo-braon-grimizno. I zapamtili su, jer... Provjerili smo pravilo - pouzdano je. A princip ne zavisi od jezika, bio on kineski ili vanzemaljski. A kasnije, nakon razumijevanja pravila prevođenja, bit će moguće shvatiti da se jedna funkcija može sastaviti iz različitih jezika. Treba uzeti u obzir da se baza znanja može predstaviti i u obliku algoritama – ako je početna vrijednost takva i takva, onda je rezultat takav i takav.

Nadalje, kao rezultat nabrajanja drugih pravila, nalazimo da pod različitim aranžmanima i uvjetima nastaje već viđeni identitet. Štoviše, sada ne moramo skupljati veliku bazu da bismo potvrdili identitet; dovoljno je prikupiti desetak pojedinačnih činjenica i vidjeti da se unutar ovih deset vrši preslikavanje na iste vrijednosti kao i za prethodnu funkciju. One. ista funkcija se koristi u drugim uslovima. Ovo svojstvo znači da u opisu možemo opisati isto svojstvo različitim izrazima. A ponekad ih je lako navesti u tabelama na internet stranicama. I dalje, prikupljanje činjenica o ovoj funkciji može se obaviti za nekoliko slučajeva upotrebe.

Postoji akumulacija mogućih različitih uslova i aranžmana u odnosu na funkcije, a na njima se takođe mogu pokušati pronaći uzorci. Nerijetko, pravila odabira su slična za različite funkcije, razlikuju se samo u nekim atributima (na primjer, riječ koja identifikuje svojstvo ili naslov u tabeli).

Općenito, pronašli smo gomilu jednoparametarskih funkcija. A sada, kao kod formiranja pojedinačnih činjenica u jednoparametarske, isto je i ovdje, pokušat ćemo grupirati jednoparametarske po dijelu uslova i dijelu udaljenosti. Dio koji je zajednički je novi uvjet, a dio koji je drugačiji je drugi parametar nove funkcije - dvoparametarski, gdje će prvi parametar biti jednoparametarski.

Ispada da se svaki novi parametar u višeparametarskim nalazi sa istom linearnošću kao i formiranje pojedinačnih činjenica u jednoparametarske (dobro, ili skoro isto). One. pronalaženje N-parametra je proporcionalno N. Što, u potrazi za vrlo mnogim parametrima, postaje gotovo neuronska mreža. (Ko hoće shvatiće.)

Funkcije konverzije.

Naravno, sjajno je kada smo dobili mnogo odgovarajućih primjera, recimo malih tekstova prijevoda sa ruskog na engleski. I možete početi pokušavati pronaći obrasce između njih. Ali u stvarnosti, sve je pomešano u ulaznom toku informacija.

Tako smo uzeli jednu funkciju i pronašli put između podataka. Drugi i treći. Sada da vidimo da li među njima, bilo ko od njih, možemo pronaći zajednički dio staza. Pokušajte pronaći strukture X-P1-(P2)-P3-Y. A zatim pronađite druge slične strukture, sa sličnim X-P1 i P3-Y, ali drugačijim P2. I onda možemo zaključiti da imamo posla sa složenom strukturom, između koje postoje zavisnosti. I spojit ćemo skup pronađenih pravila, minus srednji dio, u grupe i nazvati ih funkcija konverzije. Na taj način se formiraju prijevod, kompilacija i drugi složeni entiteti.

Evo, uzmite list sa ruskim tekstom i njegovim prijevodom na nepoznati jezik. Bez tutorijala, izuzetno je teško pronaći razumijevanje pravila prevođenja iz ovih listova. Ali moguće je. I na isti način kao što biste to učinili, ovo treba formalizirati u algoritam pretraživanja.

Kada shvatim jednostavne funkcije, nastavit ću razmišljati o pretraživanju konverzije dok ne dobijem skicu i razumijevanje da je i to moguće.

Osim statističkog pretraživanja funkcija, možete ih formirati i iz opisa, koristeći funkciju konverzije u pravila - funkciju čitanja. Statistike za početno kreiranje funkcije čitanja mogu se naći u izobilju na internetu u udžbenicima - korelacije između opisa i pravila primijenjenih na primjere u tim opisima. One. ispada da algoritam pretraživanja mora vidjeti i izvorne podatke i pravila koja se na njih primjenjuju na isti način, tj. sve bi trebalo biti locirano u graf podataka koji je homogen u smislu tipova pristupa. Po istom principu, samo obrnuto, mogu postojati pravila za pretvaranje internih pravila nazad u eksterne opise ili eksterne programe. I da steknete razumijevanje o sistemu, šta zna, a šta ne - prije nego što zatražite odgovor, možete pitati da li sistem zna odgovor - da ili ne.

Funkcije o kojima sam govorio zapravo nisu samo jedan dio algoritma koji se može pronaći, već se mogu sastojati od niza drugih funkcija. Što, pak, nije poziv procedure, već niz transformacija, slično kao u Linuxu koji radi s cijevima. Na primjer, grubo sam opisao predviđanje riječi i fraza odjednom. Ali da biste dobili prognozu samo simbola, morate primijeniti funkciju preuzimanja ovog jednog simbola na ovu frazu. Ili je funkcija naučila da razumije zadatke na engleskom, a tehničke specifikacije na ruskom. Zatim ruski TK->Prevedi na engleski->Izvrši TK na engleskom->Rezultat.

Funkcije možda neće biti fiksirane u definiciji i mogu se dalje definirati ili redefinirati kako dodatne informacije postanu dostupne ili kada se uvjeti generalno promijene - funkcija prijevoda nije konačna, a također se može promijeniti tokom vremena.

Na procjenu vjerovatnoće utiče i ponavljanje jednog skupa u različitim funkcijama – formira ili potvrđuje tipove.

Treba napomenuti i da je dosta skupova iz stvarnog svijeta, a ne internet stranica, uređeno i eventualno kontinuirano, ili sa drugim karakteristikama skupova, što na neki način poboljšava proračune vjerovatnoće.

Osim direktnog mjerenja pronađenog pravila pomoću primjera, pretpostavljam postojanje drugih metoda evaluacije, nešto poput klasifikatora pravila. A možda i klasifikator ovih klasifikatora.

Više nijansi. Predviđanje se sastoji od dva nivoa. Nivo pronađenih pravila i nivo traženja novih pravila. Ali potraga za novim pravilima je u suštini isti program sa sopstvenim kriterijumima. I priznajem (iako još nisam dobro razmislio) da bi sve moglo biti jednostavnije. Da nam je potreban nulti nivo koji će tražiti moguće algoritme pretraživanja u svoj njihovoj raznolikosti, što će zauzvrat stvoriti konačna pravila. Ili je to možda čak i rekurzija na više nivoa ili fraktal.

Vratimo se kontrolnim markerima. Kao rezultat svih ovih argumenata o algoritmu, ispada da preko njih tražimo od ove crne kutije da nastavi niz i proizvede proračun zasnovan na funkciji određenoj sličnošću. Učinite to kao što je prikazano ranije.

Postoji još jedan način da se definiše funkcija u ovom mehanizmu - da se funkcija izda kroz definiciju. Na primjer:
Prevedi na engleski sto sto
Odgovori na pitanje boja neba plava
Kreirajte program prema tehničkim specifikacijama Želim vještačku inteligenciju ...

Upotreba ovog sistema za rješavanje naših problema sastoji se od sljedećeg algoritma. Izrađujemo opis definicije posebnog identifikatora za opisivanje zadataka. Zatim kreiramo opis zadatka i dodjeljujemo mu novi identifikator. Izrađujemo opis prihvatljivih radnji. Na primjer (iako nije praktično), same komande procesora su opisi sa interneta, a manipulatori su povezani sa računarom, koji se može kontrolisati preko portova. A onda možemo pitati sistem koja sljedeća radnja treba da se izvrši da bi se problem približio rješenju, pozivajući se na zadatak po identifikatoru. I također pitajte svaki drugi put da li su vam potrebne dodatne informacije potrebne za daljnji proračun radnji - informacije o općim saznanjima ili o trenutnom stanju rješavanja problema. I mi petljamo zahtjeve za radnjom i zahtjeve za informacijama u neku vanjsku petlju. Cijela ova shema je izgrađena na tekstualnim definicijama i stoga se može pokrenuti korištenjem funkcija dobivenih po definiciji. A jedini izlaz su komande - pitanje višestruke vjerovatnoće tekstova nestaje. Pitanje obima potrebnog predviđanja se trenutno ne raspravlja - ako postoji neophodna i dovoljna funkcionalnost predviđanja, logično bi trebalo da funkcioniše.

Ako neko u AI ne vidi način rješavanja problema, već neke karakteristike osobe, onda možemo reći da su ljudsko ponašanje i kvalitete također proračunati i predvidljivi. A u literaturi ima dovoljno opisa ove ili one imovine. I stoga, ako u sistemu opišemo koje od svojstava želimo, on će ga oponašati prema svom najboljem znanju. I reprodukovaće ili apstraktno prosečno ponašanje, ili u odnosu na određenu osobu. Pa, ili ako želite, možete pokušati pokrenuti superinteligenciju - ako je definirate.

Možete predvidjeti nešto što će se dogoditi nakon nekog vremena. Objekti se kreću brzinama i ubrzanjima, i raznim drugim mogućim promjenama u nečemu tokom vremena. Prostor se takođe može predvideti. Na primjer, uđete u nepoznatu sobu, u kojoj se nalazi stol čiji je jedan od uglova prekriven listom papira. Ne vidite ovaj ugao, ali možete mentalno predvidjeti da je najvjerovatnije istog pravougaonog oblika kao i ostali uglovi (ne zaobljeni), a boja ovog ugla je ista kao i ostali uglovi. Naravno, prostor predviđanja se javlja sa greškama - odjednom je taj ugao stola sažvakan, a na njemu je mrlja od boje. Ali procesi predviđanja vremena također su uvijek podložni greškama. Ubrzanje gravitacije na Zemlji nije uvijek 9,81, već zavisi od nadmorske visine i od obližnjih planina. I nikada ne možete učiniti mjerne instrumente apsolutno tačnim. One. Predviđanje prostora i procesa u vremenu uvijek se odvija s greškama, a različiti predviđeni entiteti imaju različite greške. Ali suština je ista - statistički pronađeni algoritmi.

Ispostavilo se da je predviđanje našeg toka bajtova vrsta predviđanja informacijskog prostora. Kodira i prostor i vrijeme. Ako vidite neku strukturu tamo, neka to bude dio programa. Ovaj dio programa je projektovani prostor, baš kao sto. Skup pravila za predviđanje ove strukture formiraju pravila ove strukture - nešto poput regularnih izraza. Da bi se odredila struktura ovih struktura, izračunava se predviđanje ne jedne vrijednosti, već skupa važećih vrijednosti. U vrijeme opisivanja algoritma još nisam shvatio zasebnu ulogu struktura u njemu, pa samim tim nije ni stigao. Ali dodavanjem ovog svojstva formira se potpuno razumijevanje slike i vremenom ću pokušati da je prepišem. Imajte na umu da pod strukturama podrazumijevamo uslovno proširivo - ako takvo i takvo svojstvo ima tu i takvu vrijednost, onda se dodaje još jedan paket svojstava.

Općenito, sve što je moguće u našem svijetu opisano je tipovima, strukturama, konverzijama i procesima. I sva ova svojstva podliježu pravilima koja se pronalaze kao rezultat predviđanja. Mozak radi istu stvar, ali ne preciznim metodama, jer... to je analogni uređaj.

Hoće li ciljano tražiti istraživanje bez postavljanja takvog zadatka? Ne, jer on nema svoje želje, već samo zadate zadatke. Ono što smo odgovorni za ostvarivanje vlastitih želja i interesa je ono što nazivamo ličnošću. Takođe možete programirati ličnost u računar. A da li će biti sličan ljudskom, ili nekom kompjuterskom analogu, to će i dalje ostati samo postavljeni zadatak.

I naša kreativna aktivnost u umjetnosti je isto istraživanje, samo tražimo esencije koje utiču na naše emocije, osjećaje i um.

Još ne postoje konačne upute za izradu takvog programa. Ostaju mnoga pitanja, kako o samom algoritmu, tako i o njegovoj upotrebi (i o multivarijantnosti tekstova). S vremenom ću dodatno pojasniti i detaljnije opis.

Alternativni pravac za implementaciju predviđanja je korištenje rekurentnih neuronskih mreža (recimo, Elmanova mreža). U tom pravcu ne morate razmišljati o prirodi predviđanja, ali tu ima mnogo poteškoća i nijansi. Ali ako se ovaj smjer implementira, ostatak upotrebe ostaje isti.

Zaključci iz članka:
1. Predviđanje je način pronalaženja svih mogućih algoritama.
2. Manipulisanjem ulaza za predviđanje, možete izvući ove algoritme odatle.
3. Ovo svojstvo se može koristiti za razgovor sa računarom.
4. Ovo svojstvo se može koristiti za rješavanje bilo kojeg problema.
5. AI će biti ono što vi definišete, a kada se jednom definiše, može se riješiti kao problem.

Neki će reći da će korištenje grube sile za pronalaženje bilo kojeg uzorka trajati predugo. Nasuprot tome, mogu reći da je djetetu potrebno nekoliko godina da nauči govoriti. Koliko opcija možemo izračunati za nekoliko godina? Pronađena i gotova pravila primjenjuju se brzo, a za kompjutere mnogo brže nego za ljude. Ali potraga za novim tu i tamo traje dugo, ali da li će kompjuter trajati duže od čovjeka, nećemo znati dok ne napravimo takav algoritam. Takođe, napominjem da je brute force savršeno paralelizovana, a postoje milioni entuzijasta koji će u tu svrhu uključiti svoje kućne računare. I ispostavilo se da se ovih nekoliko godina još uvijek može podijeliti na milion. A pravila koja pronađu drugi kompjuteri biće proučena trenutno, za razliku od sličnog procesa kod ljudi.

Drugi će početi da tvrde da postoje milijarde ćelija u mozgu koje imaju za cilj paralelizaciju. Onda se postavlja pitanje kako se te milijarde koriste kada pokušavate naučiti strani jezik bez udžbenika na primjerima? Osoba će dugo sjediti nad ispisima i zapisivati ​​korelirajuće riječi. U isto vrijeme, jedan računar će to raditi u serijama u djeliću sekunde.

I analiza slike - pomjerite deset bilijarskih lopti i izbrojite koliko će sudara biti. (zaštita od zvuka). I dva tuceta-tri... I kakve veze sa tim imaju milijarde ćelija?

Općenito, brzina mozga i njegova multiparalelnost su vrlo kontroverzno pitanje.

Kada razmišljate o stvaranju računara koji razmišlja, u njega kopirate ono što je osoba naučila tokom života, a ne pokušavate da shvatite koji su to mehanizmi koji omogućavaju da se to akumulira iz početnog programa – da jede i spava. A ovi mehanizmi uopšte nisu zasnovani na aksiomima formalne logike. Ali o matematici i statistici.

PPS: Moje mišljenje je da ne postoji naučna definicija pojma “vještačka inteligencija”. Postoji samo naučna fantastika. A ako vam je potrebna realnost, pogledajte pasus 5 u zaključcima članka.

PPPS: Shvatio sam mnogo različitih tumačenja mnogo kasnije nakon što sam napisao članak. Recimo da je pronalaženje odnosa pitanje-odgovor aproksimacija. Ili koje su preciznije naučne definicije izvlačenja željene funkcije iz raznih funkcija predviđanja pronađenih tokom procesa pretraživanja. Nemoguće je napisati poseban članak za svaki mali trenutak razumijevanja, ali nemoguće je napisati za sve općenito, jer se ne može spojiti u jedan naslov. I sva ova shvatanja daju odgovor kako da se iz kompjuterske moći dobiju odgovori na postavljena pitanja, čiji se odgovori ne mogu uvek pročitati u postojećim opisima, kao, recimo, za Watson projekat. Kako napraviti program koji jednim spominjanjem ili pokretom prsta pokušava da shvati i uradi ono što žele.

Jednog dana će se napraviti takav program. I oni će to nazvati samo još jednim uređajem. Ne AI.

****
Izvore o ovoj temi, kao i daljem razvoju prezentacije, možete pronaći na web stranici

Proces stvaranja vještačke inteligencije, na prvi pogled, čini se prilično kompliciranim zadatkom. Posmatrajući ove prekrasne primjere AI, možete shvatiti da je stvaranje zanimljivih programa s AI moguće. U zavisnosti od svrhe, potrebni su različiti nivoi znanja. Neki projekti zahtijevaju duboko poznavanje AI, drugi projekti zahtijevaju samo poznavanje programskog jezika, ali je glavno pitanje s kojim se programer suočava. Koji jezik odabrati za programiranje umjetne inteligencije? Evo liste AI jezika koji bi mogli biti korisni.

LISP


Prvi kompjuterski jezik koji se koristi za stvaranje veštačke inteligencije je LISP. Ovaj jezik je prilično fleksibilan i proširiv. Karakteristike kao što su brza izrada prototipa i makroi su vrlo korisne u stvaranju AI. LISP je jezik koji čini složene probleme jednostavnim. Njegov moćni sistem objektne orijentacije čini LISP jednim od najpopularnijih programskih jezika za umjetnu inteligenciju.

Java

Glavne prednosti ovog jezika bogatog funkcijama su: transparentnost, prenosivost i mogućnost održavanja. Još jedna prednost Java jezika je njegova svestranost. Ako ste početnik, bit će vam drago saznati da na mreži postoje stotine video tutorijala koji će vam učenje učiniti lakšim i učinkovitijim.

Glavne karakteristike Jave su: jednostavno otklanjanje grešaka, dobro korisničko iskustvo, lakoća rada sa velikim projektima. Projekti kreirani koristeći Java jezik imaju atraktivan i jednostavan interfejs.

Prolog

Ovaj interaktivni simbolički programski jezik popularan je za projekte koji zahtijevaju logiku. Sa moćnim i fleksibilnim okvirom, široko se koristi za nenumeričko programiranje, dokazivanje teorema, obradu prirodnog jezika, ekspertne sisteme i umjetnu inteligenciju općenito.

Prolog je deklarativni jezik sa formalnom logikom. Programeri umjetne inteligencije cijene ga zbog visokog nivoa apstrakcije, ugrađenog mehanizma pretraživanja, nedeterminizma, itd.

Python

Python se naširoko koristi od strane programera zbog njegove čiste gramatike i sintakse, lijepog dizajna. Različite strukture podataka, gomila okvira za testiranje, balans programiranja na visokom i niskom nivou koji Python čine jednim od najpopularnijih programskih jezika za umjetnu inteligenciju.

Istorija razvoja AI

Da vidimo vezu između AI i programskog jezika, pogledajmo najvažnije događaje u istoriji AI. Sve je počelo 1939. godine, kada je Electro robot predstavljen na Svjetskoj izložbi. Sljedećeg robota je 1951. godine napravio Edmund Berkeley.

Robi Robi je napravljen 1956. Nažalost, nema podataka o tome kako je nastao. 1958. godine izmišljen je programski jezik LISP. Iako je ovaj jezik razvijen prije 60 godina, on je još uvijek primarni jezik za mnoge programe umjetne inteligencije.

1961. godine izgrađen je UNIMATE. Ovo je prvi industrijski robot koji se masovno proizvodi. General Motors je ovog robota koristio za rad na proizvodnoj liniji. Da bi napravili UNIMATE, naučnici su koristili Val, asemblersku varijablu. Ovaj jezik se sastoji od jednostavnih fraza, naredbi monitora i uputstava koja su sama po sebi razumljiva.

Dendral sistem veštačke inteligencije izgrađen je 1965. Pomogao je da se lako odredi molekularna struktura organskih spojeva. Ovaj sistem je napisan na Lisp-u.

Godine 1966. Weizenbaum je stvorio Elizu, prvog virtuelnog partnera za razgovor. Jedan od najpoznatijih modela zvao se Doktor, odgovarao je na pitanja u stilu psihoterapeuta. Ovaj bot je implementiran upoređivanjem uzoraka opreme. Prva verzija Elize je napisana u SLIP-u, listu za obradu jezika razvio je Weizenbaum. Kasnije je jedna od njegovih verzija prepisana na Lisp.

Prvi mobilni robot programiran u Lisp-u bio je Sheki. Koristeći programe za rješavanje problema podloga i senzora, vrat se pomicao, palio i gasio svjetla, išao gore-dolje, otvarao vrata, zatvarao vrata, gurao predmete i pomicao stvari. Šeki se kretao brzinom od 5 km na sat.

U narednih 15 godina, svijet je vidio mnogo nevjerovatnih izuma: Denning Sentry Robot, LMI Lambda, Omnibot 2000, MQ-1 Predator dron, Ferby, AIBO robot pas i Honda ASIMO.

2003. godine iRobot je izumio robotski usisivač Roomba. Razvijen u Lisp-u, ovaj autonomni usisivač čisti podove koristeći specifične algoritame. Otkriva prepreke i izbjegava ih.


Koji programski jezik koristite za razvoj AI programa? Pišite o svom radu u komentarima ili u našoj grupi VKontakte.

Kako je došlo do toga da se umjetna inteligencija uspješno razvija, a za nju još uvijek nema „ispravne“ definicije? Zašto se nade koje se polažu u neurokompjutere nisu ostvarile i koja su tri glavna zadatka pred kreatorom vještačke inteligencije?

Odgovor na ova i druga pitanja naći ćete u članku ispod reza, napisanom na osnovu govora Konstantina Anisimoviča, direktora odeljenja za razvoj tehnologije u kompaniji ABBYY, jednog od vodećih stručnjaka u zemlji u oblasti veštačke inteligencije.
Uz njegovo lično učešće, kreirane su tehnologije za prepoznavanje dokumenata koje se koriste u ABBYY FineReader i ABBYY FormReader proizvodima. Konstantin je govorio o istoriji i osnovama razvoja veštačke inteligencije na jednom od majstorskih kurseva za studente Tehnoparka Mail.Ru. Materijal sa majstorske klase postao je osnova za seriju članaka.

Biće ukupno tri posta:
Umjetna inteligencija za programere

Sticanje znanja: inženjering znanja i mašinsko učenje

Usponi i padovi AI pristupa

Od 1950-ih, pojavila su se dva pristupa u području umjetne inteligencije: simboličko računanje i konekcionizam. Simboličko računarstvo je pravac baziran na modeliranju ljudskog razmišljanja, a konekcionizam je zasnovan na modeliranju strukture mozga.

Prva dostignuća u oblasti simboličkog računarstva bila su Lisp jezik nastao 50-ih godina i rad J. Robinsona u oblasti logičkog zaključivanja. U konekcionizmu, ovo je bilo stvaranje perceptrona - linearnog klasifikatora koji se samo uči koji modelira rad neurona. Dalja upečatljiva dostignuća bila su uglavnom u skladu sa simboličkom paradigmom. Konkretno, to su radovi Seymoura Piperta i Roberta Antona Winsona iz oblasti psihologije percepcije i, naravno, okviri Marvina Minskyja.

70-ih godina pojavili su se prvi aplikativni sistemi koji koriste elemente umjetne inteligencije - ekspertni sistemi. Zatim je došlo do izvjesne renesanse konekcionizma s pojavom višeslojnih neuronskih mreža i algoritma za njihovu obuku korištenjem metode backpropagacije. Osamdesetih godina, fascinacija neuronskim mrežama je jednostavno bila raširena. Zagovornici ovog pristupa obećali su stvaranje neurokompjutera koji će raditi gotovo kao ljudski mozak.

Ali od toga nije bilo ništa posebno, jer su pravi neuroni mnogo složeniji od formalnih na kojima se baziraju višeslojne neuronske mreže. I broj neurona u ljudskom mozgu je također mnogo veći nego što se može priuštiti u neuronskoj mreži. Glavna stvar za koju su pogodne višeslojne neuronske mreže je rješavanje problema klasifikacije.

Sljedeća popularna paradigma u području umjetne inteligencije je strojno učenje. Pristup se počeo ubrzano razvijati od kasnih 80-ih i ne gubi popularnost do danas. Značajan podsticaj razvoju mašinskog učenja dala je pojava interneta i velikog broja lako dostupnih podataka koji se mogu koristiti za obuku algoritama.

Glavni zadaci pri dizajniranju umjetne inteligencije

Moguće je analizirati šta je zajedničko među zadacima koji se odnose na umjetnu inteligenciju. Lako je uočiti da im je zajedničko nepostojanje poznate, jasno definisane procedure rješenja. U stvari, po tome se problemi povezani sa AI razlikuju od problema u teoriji kompilacije ili računarskoj matematici. Inteligentni sistemi traže neoptimalna rješenja za problem. Nemoguće je dokazati ili garantirati da će rješenje koje pronađe umjetna inteligencija biti strogo optimalno. Međutim, u većini praktičnih problema neoptimalna rješenja odgovaraju svima. Štaviše, moramo imati na umu da osoba gotovo nikada ne rješava problem optimalno. Naprotiv.

Postavlja se vrlo važno pitanje: kako AI može riješiti problem za koji ne postoji algoritam rješenja? Poenta je da se to uradi na isti način na koji bi to uradila osoba - da se iznesu i testiraju uverljive hipoteze. Naravno, potrebno je znanje da bi se postavile i testirale hipoteze.

Znanje je opis predmetne oblasti u kojoj funkcioniše inteligentni sistem. Ako pred sobom imamo sistem prepoznavanja karaktera prirodnog jezika, tada znanje uključuje opise strukture simbola, strukture teksta i određenih svojstava jezika. Ako se radi o sistemu ocjenjivanja kreditne sposobnosti kupaca, on mora imati znanje o vrstama kupaca i znanje o tome kako je profil klijenta povezan s njegovim potencijalnim nedostatkom kreditne sposobnosti. Postoje dvije vrste znanja – o predmetnoj oblasti i o pronalaženju rješenja (metaznanje).

Glavni zadaci projektovanja inteligentnog sistema svode se na izbor načina predstavljanja znanja, načina za sticanje znanja i načina primene znanja.

Reprezentacija znanja

Postoje dva glavna načina predstavljanja znanja – deklarativni i proceduralni. Deklarativno znanje mogu biti predstavljeni u strukturiranom ili nestrukturiranom obliku. Strukturirane reprezentacije su neki oblik okvirnog pristupa. Semantičke mreže ili formalne gramatike, koje se takođe mogu smatrati tipovima okvira. Znanje je u ovim formalizmima predstavljeno kao skup objekata i odnosa među njima.


Nestrukturirane reprezentacije se obično koriste u oblastima koje se odnose na rješavanje problema klasifikacije. To su obično vektori procjena težinskih koeficijenata, vjerovatnoća i slično.

Gotovo sve metode strukturiranog predstavljanja znanja zasnovane su na formalizmu okvira, koje je Marvin Minsky sa MIT-a uveo 1970-ih da bi ukazao na strukturu znanja za percepciju prostornih scena. Kako se pokazalo, ovaj pristup je prikladan za gotovo svaki zadatak.

Okvir se sastoji od imena i pojedinačnih jedinica koje se nazivaju slotovi. Vrijednost slota može, zauzvrat, biti veza sa drugim okvirom... Okvir može biti potomak drugog okvira, nasljeđujući vrijednosti slota od njega. U ovom slučaju, potomak može nadjačati vrijednosti slotova predaka i dodati nove. Nasljeđivanje se koristi kako bi opis bio kompaktniji i izbjeglo dupliciranje.

Lako je uočiti da postoje sličnosti između okvira i objektno orijentisanog programiranja, gdje okvir odgovara objektu, a slot polju. Ova sličnost nije slučajna, jer su okviri bili jedan od izvora OOP-a. Konkretno, jedan od prvih objektno orijentisanih jezika, Small Talk, implementirao je okvirne reprezentacije objekata i klasa gotovo tačno.

Za procesno zastupanje znanje se koristi proizvodima ili pravilima proizvodnje. Model proizvodnje je model zasnovan na pravilima koja omogućavaju da se znanje predstavi u obliku rečenica „uslov – akcija“. Ovaj pristup je ranije bio popularan u različitim dijagnostičkim sistemima. Sasvim je prirodno simptome, probleme ili kvarove opisati u obliku stanja, a u obliku radnje – mogućeg kvara koji dovodi do pojave ovih simptoma.

U sljedećem članku ćemo govoriti o načinima primjene znanja.

Bibliografija.

  1. John Alan Robinson. Logika orijentisana na mašinu zasnovana na principu rezolucije. Komunikacije ACM-a, 5:23-41, 1965.
  2. Seymour Papert, Marvin Minsky. Perceptroni. MIT Press, 1969
  3. Russell, Norvig. Umjetna inteligencija: moderan pristup.
  4. Simon Haykin. Neuronske mreže: sveobuhvatna osnova.
  5. Nils J. Nilsson. Umjetna inteligencija: nova sinteza.
  • Prevod

Mašine koje razumiju jezik bile bi veoma korisne. Ali ne znamo kako da ih izgradimo.

O ilustracijama za članak: jedna od poteškoća u kompjuterskom razumijevanju jezika je činjenica da često značenje riječi ovisi o kontekstu, pa čak i o izgledu slova i riječi. Na slikama predstavljenim u ovom članku, nekoliko umjetnika demonstrira upotrebu različitih vizualnih znakova koji prenose značenje koje nadilazi sama slova.

Usred intenzivne igre Go u Seulu, u Južnoj Koreji, između Leeja Sedola, jednog od najboljih igrača svih vremena, i AlphaGoa, umjetne inteligencije koju je kreirao Google, program je napravio misteriozan potez koji je pokazao svoju zapanjujuću superiornost nad svojim ljudski protivnik.

U 37. potezu, AlphaGo je odlučio da postavi crni kamen na poziciju koja se na prvi pogled činila čudnom. Sve je išlo do te mere da je morala da izgubi značajan deo teritorije - početnička greška u igri izgrađenoj na kontroli prostora na tabli. Dva TV komentatora raspravljala su o tome da li su ispravno shvatili napredak kompjutera i da li je pokvaren. Ispostavilo se da je, uprkos kontradiktornosti zdravog razuma, 37. potez omogućio AlphaGo-u da izgradi nepremostivu strukturu u centru ploče. Googleov program je u suštini pobijedio u igri potezom na koji se nijedan čovjek ne bi sjeo.

Takođe je impresivno jer se drevna igra Go često smatrala testom intuitivne inteligencije. Njegova pravila su jednostavna. Dva igrača naizmjenično postavljaju crno ili bijelo kamenje na sjecišta horizontalnih i vertikalnih linija ploče, pokušavajući opkoliti protivničko kamenje i ukloniti ga sa ploče. Ali neverovatno je teško igrati dobro.

Dok šahisti mogu razmišljati nekoliko koraka unaprijed, u Gou ovo brzo postaje nezamislivo težak zadatak, a u igri nema klasičnih gambita. Takođe ne postoji jednostavan način za mjerenje prednosti, a čak i iskusnom igraču može biti teško objasniti zašto je napravio potez koji je napravio. Zbog toga je nemoguće napisati jednostavan skup pravila kojih bi se pridržavao program koji može igrati na stručnom nivou.

AlphaGo nije naučen da igra Go. Program je analizirao stotine hiljada utakmica i odigrao milione mečeva protiv sebe. Među raznim tehnikama AI, koristila je sve popularniju metodu poznatu kao duboko učenje. Zasnovan je na matematičkim proračunima, čija je metoda inspirirana načinom na koji se međusobno povezani slojevi neurona u mozgu aktiviraju prilikom obrade novih informacija. Program se sam učio tokom mnogo sati prakse, postepeno usavršavajući svoj intuitivni smisao za strategiju. A činjenica da je tada uspjela pobijediti jednog od najboljih Go igrača na svijetu predstavlja novu prekretnicu u mašinskoj inteligenciji i AI.

Nekoliko sati nakon 37. poteza, AlphaGo je dobio gem i poveo sa 2-0 u meču od pet gemova. Nakon toga, Sedol je stao pred gomilu novinara i fotografa i ljubazno se izvinio što je iznevjerio čovječanstvo. „Ostao sam bez reči“, rekao je, trepćući pod naletima foto blica.

Iznenađujući uspjeh AlphaGo pokazuje koliki je napredak u AI u posljednjih nekoliko godina, nakon decenija očaja i problema opisanih kao "AI zima". Duboko učenje omogućava mašinama da samostalno nauče kako da obavljaju složene zadatke koji bi prije samo nekoliko godina bili nezamislivi bez ljudske inteligencije. Robocari se već naziru na horizontu. U bliskoj budućnosti, sistemi zasnovani na dubokom učenju pomoći će u dijagnosticiranju bolesti i davanju preporuka za liječenje.

Ali uprkos ovim impresivnim napretcima, jedna od glavnih sposobnosti nije data AI: jezik. Sistemi kao što su Siri i IBM Watson mogu prepoznati jednostavne izgovorene i pisane komande i odgovoriti na jednostavna pitanja, ali nisu u stanju da nastave razgovor ili zapravo razumiju riječi koje se koriste. Da bi AI promijenio naš svijet, ovo se mora promijeniti.

Iako AlphaGo ne govori, ima tehnologiju koja može pružiti bolje razumijevanje jezika. U Google-u, Facebook-u, Amazonu i akademskim laboratorijama, istraživači pokušavaju riješiti ovaj tvrdoglavi problem koristeći iste alate AI – uključujući duboko učenje – koji su odgovorni za uspjeh AlphaGo-a i ponovno oživljavanje AI. Njihov uspjeh će odrediti obim i svojstva onoga što već počinje da postaje AI revolucija. Ovo će odrediti našu budućnost – hoćemo li imati mašine sa kojima je lako komunicirati, ili će sistemi veštačke inteligencije ostati misteriozne crne kutije, iako autonomnije. „Ne postoji način da se sa AI izgradi sistem sličan čoveku osim ako nije izgrađen na jeziku“, kaže Džoš Tenenbaum, profesor kognitivne nauke i računarstva na MIT-u. “Ovo je jedna od najočitijih stvari koje definiraju ljudsku inteligenciju.”

Možda će iste tehnologije koje su omogućile AlphaGo-u da osvoji Go omogućiti kompjuterima da ovladaju jezikom, ili će biti potrebno nešto drugo. Ali bez razumijevanja jezika, utjecaj AI će biti drugačiji. Naravno, i dalje ćemo imati nevjerovatno moćne i inteligentne programe poput AlphaGo. Ali naš odnos sa AI neće biti tako blizak, a verovatno ni prijateljski. „Najveće pitanje od početka istraživanja bilo je: 'Šta da imate uređaje koji su pametni u smislu efikasnosti, ali ne poput nas u smislu nedostatka empatije prema onome što jesmo?', kaže Terry Winograd, profesor emeritus? na Univerzitetu Stanford. “Možete zamisliti mašine koje nisu zasnovane na ljudskoj inteligenciji, rade sa velikim podacima i upravljaju svijetom.”

Razgovor sa mašinama

Nekoliko mjeseci nakon trijumfa AlphaGo-a, otišao sam u Silicijumsku dolinu, srce buma umjetne inteligencije. Želeo sam da upoznam istraživače koji su postigli značajan napredak u praktičnim primenama veštačke inteligencije i pokušavaju da daju mašinama razumevanje jezika.

Počeo sam s Winogradom, koji živi u predgrađu na južnom rubu kampusa Palo Alto na Stanfordu, blizu sjedišta Google-a, Facebook-a i Apple-a. Njegova kovrdžava seda kosa i gusti brkovi daju mu izgled poštovanog naučnika, a on je zarazan svojim entuzijazmom.

Godine 1968. Winograd je napravio jedan od najranijih pokušaja da nauči mašine da govore. Čudo iz matematike sa strašću za jezikom, došao je u novu laboratoriju MIT-a da bi stekao diplomu. Odlučio je da napravi program koji je komunicirao sa ljudima putem unosa teksta na svakodnevnom jeziku. U to vrijeme to nije izgledalo kao tako hrabar gol. Napravljeni su veliki koraci u razvoju AI, a drugi timovi na MIT-u su gradili složene sisteme kompjuterskog vida i robotske ruke. „Postojao je osjećaj nepoznatih i neograničenih mogućnosti“, prisjeća se.

Ali nisu svi mislili da je jezik tako lako osvojiti. Neki kritičari, uključujući uticajnog lingvistu i profesora MIT Noama Čomskog, verovali su da bi istraživačima veštačke inteligencije bilo veoma teško da nauče mašine da razumeju jer je mehanika jezika kod ljudi bila tako slabo shvaćena. Winograd se prisjeća zabave na kojoj se student Chomsky udaljio od njega nakon što je čuo da radi u AI laboratoriju.

Ali postoje razlozi za optimizam. Joseph Weizenbaum, njemački MIT profesor, napravio je prvi chatbot program prije nekoliko godina. Zvala se ELIZA i bila je programirana da odgovara kao psiholog iz crtanog filma, ponavljajući ključne dijelove izjava ili postavljajući pitanja koja bi inspirisala dalji razgovor. Ako biste mu rekli da ste ljuti na svoju majku, program bi mogao odgovoriti: „Šta vam još pada na pamet kada razmišljate o svojoj majci?“ Jeftin trik koji je funkcionisao iznenađujuće dobro. Weizenbaum je bio šokiran kada su neki ispitanici počeli povjeravati svoje mračne tajne njegovoj mašini.

Winograd je želeo da napravi nešto što bi moglo ubedljivo da se pretvara da razume jezik. Počeo je tako što je smanjio obim problema. Stvorio je jednostavno virtuelno okruženje, "blok svijet", koji se sastoji od skupa fiktivnih objekata na fiktivnom stolu. Zatim je kreirao program, nazvan SHRDLU, koji je mogao raščlaniti sve imenice, glagole i jednostavna gramatička pravila potrebna za komunikaciju u ovom pojednostavljenom virtuelnom svijetu. SHRDLU (besmislena riječ sastavljena od nizova slova na Linotype tastaturi) može opisati objekte, odgovoriti na pitanja o njihovim odnosima i promijeniti svijet blokova kao odgovor na naredbe za unos. Imala je čak i određeno pamćenje i ako ste je zamolili da pomjeri „crveni konus“, a zatim pisali o određenom konusu, pretpostavila je da ste mislili na ovaj crveni konus, a ne na bilo koji drugi.

SHRDLU je bio znak da je napravljen ogroman napredak u oblasti AI. Ali to je bila samo iluzija. Kada je Winograd pokušao proširiti svijet blokova programa, pravila koja su bila potrebna da se uzmu u obzir dodatne riječi i gramatička složenost postala su neizvodljiva. Nakon samo nekoliko godina, odustao je i napustio polje umjetne inteligencije kako bi se koncentrisao na druga istraživanja. „Ispostavilo se da su ograničenja mnogo jača nego što se činilo u to vrijeme“, kaže on.

Winograd je odlučio da je nemoguće naučiti mašinu da istinski razumije jezik koristeći alate koji su bili dostupni u to vrijeme. Problem je, prema Hubertu Dreyfusu, profesoru filozofije na Univerzitetu Kalifornije u Berkliju, u svojoj knjizi Šta kompjuteri ne mogu da urade, u tome što mnoge ljudske akcije zahtevaju instinktivno razumevanje koje se ne može specificirati nizom jednostavnih pravila. Zbog toga su mnogi stručnjaci prije meča između Sedola i AlphaGoa sumnjali da će mašine moći savladati Go igru.

Ali dok je Dreyfus iznosio svoje mišljenje, nekoliko istraživača je razvijalo pristup koji će na kraju dati mašinama onu vrstu inteligencije koja im je potrebna. Inspirisani neuronaukom, eksperimentisali su sa veštačkim neuronskim mrežama - slojevima matematičkih simulacija neurona koji se mogu trenirati da se aktiviraju kao odgovor na specifične inpute. U početku su ovi sistemi bili nemoguće spori i pristup je odbačen kao nepraktičan za logiku i rasuđivanje. Međutim, ključna sposobnost neuronskih mreža bila je sposobnost učenja nečega što nije bilo ručno programirano, a kasnije se pokazalo korisnim za jednostavne zadatke poput prepoznavanja rukopisa. Ova vještina našla je komercijalnu upotrebu 1990-ih za čitanje brojeva s čekova. Zagovornici metode bili su uvjereni da će s vremenom neuronske mreže omogućiti mašinama da rade mnogo više. Tvrdili su da će jednog dana ova tehnologija pomoći u prepoznavanju jezika.

U posljednjih nekoliko godina, neuronske mreže su postale složenije i moćnije. Pristup je procvjetao zahvaljujući ključnim matematičkim poboljšanjima i, što je još važnije, bržem kompjuterskom hardveru i dostupnosti ogromnih količina podataka. Do 2009. istraživači sa Univerziteta u Torontu pokazali su da višeslojne mreže dubokog učenja mogu prepoznati govor sa rekordnom preciznošću. I 2012. godine ista grupa je pobijedila na takmičenju u kompjuterskom vidu koristeći algoritam dubokog učenja koji je pokazao zadivljujuću tačnost.

Neuronska mreža dubokog učenja prepoznaje objekte na slikama koristeći jednostavan trik. Sloj simuliranih neurona prima ulaz u obliku slike, a neki od neurona se aktiviraju kao odgovor na intenzitet pojedinačnih piksela. Rezultirajući signal prolazi kroz mnoge slojeve međusobno povezanih neurona prije nego što stigne do izlaznog sloja, koji signalizira promatranje objekta. Matematička tehnika koja se zove backpropagation koristi se za prilagođavanje osjetljivosti neurona mreže kako bi se stvorio ispravan odgovor. Upravo ovaj korak daje sistemu priliku da uči. Različiti slojevi u mreži odgovaraju na svojstva kao što su ivice, boje ili tekstura. Takvi sistemi sada mogu prepoznati objekte, životinje ili lica s preciznošću koja je jednaka onoj kod ljudi.

Postoji očigledan problem sa primjenom tehnologije dubokog učenja na jezik. Riječi su proizvoljni simboli i to je ono što ih suštinski razlikuje od slika. Dvije riječi mogu imati isto značenje i sadržavati potpuno različita slova. I ista riječ može značiti različite stvari ovisno o kontekstu.

1980-ih, istraživači su došli na pametnu ideju da jezik pretvore u tip problema s kojim bi neuronska mreža mogla riješiti. Oni su pokazali da se riječi mogu predstaviti kao matematički vektori, omogućavajući izračunavanje sličnosti srodnih riječi. Na primjer, "čamac" i "voda" su bliski u vektorskom prostoru, iako izgledaju drugačije. Istraživači sa Univerziteta u Montrealu predvođeni Yoshuom Bengiom i još jednom grupom u Guglu koristili su ovu ideju za izgradnju mreža u kojima se svaka riječ u rečenici koristi za izgradnju složenije reprezentacije. Geoffrey Hinton, profesor na Univerzitetu u Torontu i istaknuti istraživač dubokog učenja koji također radi u Googleu, ovo naziva "mentalnim vektorom".

Koristeći dvije takve mreže, moguće je napraviti prijevode s jednog jezika na drugi sa odličnom preciznošću. Kombinovanjem ove vrste mreža sa onom koja prepoznaje objekte na slikama, možete dobiti iznenađujuće precizne titlove.

Smisao života

Sjedeći u konferencijskoj sali u srcu Googleovog užurbanog sjedišta u Mountain Viewu u Kaliforniji, jedan od istraživača kompanije koji je razvio pristup, Kuok Li, govori o ideji mašine koja može voditi stvarne razgovore. Leejeva ambicija objašnjava kako mašine koje govore mogu biti korisne. „Treba mi način da simuliram misli u mašini“, kaže on. "A ako želite simulirati misli, možete pitati mašinu o čemu razmišlja."

Google već podučava svoje računare osnovama jezika. U maju je kompanija predstavila Parsey McParseface, sistem sposoban da prepozna sintaksu, imenice, glagole i druge elemente teksta. Lako je vidjeti kako razumijevanje jezika može pomoći kompaniji. Google-ov algoritam pretraživanja je nekada jednostavno pratio ključne riječi i veze između web stranica. RankBrain sada čita tekst stranice kako bi razumio njegovo značenje i poboljšao rezultate pretraživanja. Lee želi da ovu ideju proširi još dalje. Prilagođavajući sistem koji se pokazao korisnim za prevođenje i titlovanje slika, on i njegove kolege su kreirali Smart Reply, koji čita sadržaj Gmail e-pošte i predlaže moguće odgovore. Također su kreirali program koji je naučio iz Googleovog chata za podršku da odgovori na jednostavna tehnička pitanja.

Lee je nedavno kreirao program koji može generirati prihvatljive odgovore na teška pitanja. Obučavala je dijaloge iz 18.900 filmova. Neki odgovori su sablasno tačni. Na primjer, Lee je pitao: "Šta je smisao života?", a program je odgovorio: "U službi većeg dobra." “Nije loš odgovor”, prisjeća se sa smiješkom. “Možda bolje nego što bih ja sam odgovorio.”

Postoji samo jedan problem koji postaje očigledan kada se pogleda više odgovora sistema. Kada je Lee upitao: "Koliko nogu ima mačka?", sistem je odgovorio: "Mislim da četiri." Zatim je upitao: "Koliko nogu ima stonoga?" i dobio je čudan odgovor: "Osam." U suštini, Leejev program ne zna o čemu govori. Ona razumije da određene kombinacije simbola idu zajedno, ali ne razumije stvarni svijet. Ona ne zna kako stonoga izgleda niti kako se kreće. To je još uvijek iluzija inteligencije, bez zdravog razuma, koju ljudi uzimaju zdravo za gotovo. Sistemi dubokog učenja su prilično klimavi u tom pogledu. Guglov sistem za natpise slika ponekad pravi čudne greške, kao što je opis saobraćajnog znaka kao frižider pun hrane.

Čudnom koincidencijom, komšija Terija Vinograda u Palo Altu pokazao se kao čovek koji može pomoći kompjuterima da bolje razumeju pravo značenje reči. Fei-Fei Li, direktorica Laboratorije za umjetnu inteligenciju Stanford, bila je na porodiljskom odsustvu tokom moje posjete, ali me pozvala kući i ponosno me upoznala sa svojom tromjesečnom bebom, Phoenixom. "Primijetite da ona gleda u tebe više nego u mene", rekao je Lee dok je Phoenix zurio u mene. - To je zato što ste novi; Ovo je rano prepoznavanje lica."

Li je većinu svoje karijere provela istražujući mašinsko učenje i kompjuterski vid. Prije nekoliko godina, pod njenim vodstvom, pokušano je da se napravi baza podataka od miliona slika objekata, od kojih je svaka bila potpisana odgovarajućim ključnim riječima. Ali Li vjeruje da je mašinama potrebno sofisticiranije razumijevanje onoga što se događa u svijetu, a ove godine njen tim je objavio još jednu bazu podataka slika sa mnogo bogatijim napomenama. Ljudi su napisali desetine natpisa za svaku sliku: “Pas na skejtbordu”, “Pas ima gusto, teče krzno”, “Put sa pukotinama” i tako dalje. Nadaju se da će sistemi mašinskog učenja naučiti razumjeti fizički svijet. „Jezički dio mozga prima mnogo informacija, uključujući i vizuelni sistem“, kaže Lee. “Važan dio AI će biti integracija ovih sistema.”

Ovaj proces je bliži djeci koja uče da povezuju riječi s predmetima, odnosima i radnjama. Ali analogija sa podučavanjem ljudi ide samo tako daleko. Djeca ne moraju vidjeti psa na skejtbordu da bi ga zamislili ili opisali riječima. Lee vjeruje da današnji AI i alati za strojno učenje neće biti dovoljni za stvaranje prave umjetne inteligencije. „To neće biti samo duboko učenje sa velikim skupom podataka“, kaže ona. “Mi ljudi smo jako loši u proračunima velikih podataka, ali vrlo dobri u apstrakcijama i kreativnosti.”

Niko ne zna kako da obdari mašine ovim ljudskim kvalitetima niti da li je to uopšte moguće. Postoji li nešto jedinstveno ljudsko u ovim kvalitetima što sprječava AI da ih posjeduje?

Kognitivni naučnici kao što je Tenenbaum sa MIT-a veruju da današnjim neuronskim mrežama nedostaju kritične komponente inteligencije – bez obzira koliko velike mreže bile. Ljudi mogu relativno brzo učiti iz relativno malih količina podataka i imaju ugrađenu sposobnost da efikasno modeliraju trodimenzionalni svijet. „Jezik je izgrađen na drugim sposobnostima koje su verovatno dublje i prisutne kod beba čak i pre nego što počnu da govore jezikom: vizuelna percepcija sveta, rad sa našim motoričkim sistemom, razumevanje fizike sveta i namera drugih stvorenja“, Tenenbaum kaže.

Ako je u pravu, onda će bez pokušaja simulacije ljudskog učenja, mentalnih modela i psihologije biti vrlo teško ponovo stvoriti AI razumijevanje jezika.

Objasni sebi

Ured Noe Goodmana na odsjeku za psihologiju Stanforda je gotovo prazna, osim nekoliko apstraktnih slika na jednom zidu i nekoliko obraslih biljaka. Kada sam stigao, Goodman je škrabao po svom laptopu bosih nogu na stolu. Prošetali smo suncem okupanim kampusom da kupimo ledenu kafu. Posebnost jezika je u tome što se oslanja ne samo na veliku količinu informacija o jeziku, već i na univerzalno ljudsko razumijevanje svijeta oko nas, a ove dvije oblasti znanja su implicitno povezane jedna s drugom, objašnjava on. .

Goodman i njegovi učenici razvili su programski jezik Webppl, koji se može koristiti da se kompjuterima da probabilistički zdrav razum koji se ispostavilo da je vrlo važan u razgovorima. Jedna eksperimentalna verzija može prepoznati igre riječi, dok druga može prepoznati hiperbolu. Ako joj kažete da neki ljudi moraju provesti "zauvijek" čekajući sto u restoranu, ona će automatski pretpostaviti da se doslovno značenje riječi vjerovatno neće koristiti u ovom slučaju i da će ljudi vjerovatno čekati prilično dugo vremena i postati iritiran. Sistem još uvijek nije prava inteligencija, ali pokazuje kako novi pristupi mogu pomoći AI programima da govore na nešto realističniji način.

Goodmanov primjer također pokazuje koliko će biti teško naučiti jezik mašina. Razumijevanje značenja "vječnosti" u određenom kontekstu je primjer onoga što će AI sistemi morati naučiti, a zapravo je prilično jednostavna i rudimentarna stvar.

Međutim, uprkos složenosti i složenosti zadatka, početni uspjesi istraživača koji koriste duboko učenje za prepoznavanje obrazaca ili igre Go daju nadu da smo na ivici proboja u polju jezika. U ovom slučaju, ovaj proboj je stigao na vrijeme. Ako AI treba da postane univerzalno oruđe koje pomaže ljudima da dopune i poboljšaju sopstvenu inteligenciju i obavljaju zadatke u besprekornoj simbiozi, onda je jezik ključ za postizanje ovog stanja. Pogotovo ako sistemi umjetne inteligencije sve više koriste duboko učenje i druge tehnologije za programiranje.

„Općenito, sistemi dubokog učenja izazivaju strahopoštovanje“, kaže John Leonard, profesor koji proučava autonomna vozila na MIT-u. “S druge strane, njihov rad je prilično teško razumjeti.”

Toyota, koja istražuje različite tehnologije samoupravljanja, pokrenula je istraživački projekat na MIT-u koji vodi Gerald Sussman, stručnjak za umjetnu inteligenciju i programske jezike, s ciljem razvoja samovozećeg sistema koji može objasniti zašto je to uradila. u nekom trenutku. Očigledan način da se da takvo objašnjenje bio bi verbalan. „Izgradnja sistema koji su svjesni svog znanja je veoma težak zadatak“, kaže Leonard, koji vodi još jedan Toyotin projekat na MIT-u. “Ali da, idealno bi trebalo da daju ne samo odgovor, već i objašnjenje.”

Nekoliko sedmica nakon povratka iz Kalifornije, sreo sam se s Davidom Silverom, Google DeepMind istraživačem i programerom AlphaGo. On je govorio o utakmici protiv Sedola na naučnoj konferenciji u Njujorku. Silver je objasnio da je njegov tim bio iznenađen kao i drugi kada je program napravio odlučujući potez u drugoj utakmici. Sve što su mogli vidjeti je da je AlphaGo predvidio izglede za pobjedu, a to se predviđanje malo promijenilo nakon poteza 37. Samo nekoliko dana kasnije, nakon pažljivog analiziranja igre, tim je došao do otkrića: nakon što je probavio prethodne igre, program je izračunao da čovjek može napraviti takav potez s vjerovatnoćom od 1 prema 10 000. A njegove vježbe igre su pokazale da je takav potez manevar je pružio neobično jaku pozicionu prednost .

Dakle, u određenom smislu, mašina je znala da će ovaj potez pogoditi Sedolovu slabu tačku.

Silver je rekao da Google razmatra nekoliko mogućnosti za komercijalizaciju tehnologije, uključujući pametne asistente i zdravstvene alate. Nakon predavanja, pitao sam ga koliko je važno biti u mogućnosti komunicirati sa AI koja kontrolira takve sisteme. "Zanimljivo pitanje", rekao je nakon pauze. – Za neke aplikacije ovo može biti korisno. Na primjer, u zdravstvu može biti važno znati zašto je donesena određena odluka.”

Zaista, AI postaju sve složeniji i zamršeniji, i vrlo je teško zamisliti kako bismo radili s njima bez jezika – bez mogućnosti da ih pitamo “Zašto?” Štaviše, sposobnost lake komunikacije sa računarima učinila bi ih korisnijima i izgledala bi kao magija. Na kraju krajeva, jezik je naš najbolji način razumijevanja i interakcije sa svijetom. Vrijeme je da nas automobili sustignu.

Proces stvaranja vještačke inteligencije, na prvi pogled, čini se prilično kompliciranim zadatkom. Posmatrajući ove prekrasne primjere AI, možete shvatiti da je stvaranje zanimljivih programa s AI moguće. U zavisnosti od svrhe, potrebni su različiti nivoi znanja. Neki projekti zahtijevaju duboko poznavanje AI, drugi projekti zahtijevaju samo poznavanje programskog jezika, ali je glavno pitanje s kojim se programer suočava. Koji jezik odabrati za programiranje umjetne inteligencije? Evo liste AI jezika koji bi mogli biti korisni.

LISP


Prvi kompjuterski jezik koji se koristi za stvaranje veštačke inteligencije je LISP. Ovaj jezik je prilično fleksibilan i proširiv. Karakteristike kao što su brza izrada prototipa i makroi su vrlo korisne u stvaranju AI. LISP je jezik koji čini složene probleme jednostavnim. Njegov moćni sistem objektne orijentacije čini LISP jednim od najpopularnijih programskih jezika za umjetnu inteligenciju.

Java

Glavne prednosti ovog jezika bogatog funkcijama su: transparentnost, prenosivost i mogućnost održavanja. Još jedna prednost Java jezika je njegova svestranost. Ako ste početnik, bit će vam drago saznati da na mreži postoje stotine video tutorijala koji će vam učenje učiniti lakšim i učinkovitijim.

Glavne karakteristike Jave su: jednostavno otklanjanje grešaka, dobro korisničko iskustvo, lakoća rada sa velikim projektima. Projekti kreirani koristeći Java jezik imaju atraktivan i jednostavan interfejs.

Prolog

Ovaj interaktivni simbolički programski jezik popularan je za projekte koji zahtijevaju logiku. Sa moćnim i fleksibilnim okvirom, široko se koristi za nenumeričko programiranje, dokazivanje teorema, obradu prirodnog jezika, ekspertne sisteme i umjetnu inteligenciju općenito.

Prolog je deklarativni jezik sa formalnom logikom. Programeri umjetne inteligencije cijene ga zbog visokog nivoa apstrakcije, ugrađenog mehanizma pretraživanja, nedeterminizma, itd.

Python

Python se naširoko koristi od strane programera zbog njegove čiste gramatike i sintakse, lijepog dizajna. Različite strukture podataka, gomila okvira za testiranje, balans programiranja na visokom i niskom nivou koji Python čine jednim od najpopularnijih programskih jezika za umjetnu inteligenciju.

Istorija razvoja AI

Da vidimo vezu između AI i programskog jezika, pogledajmo najvažnije događaje u istoriji AI. Sve je počelo 1939. godine, kada je Electro robot predstavljen na Svjetskoj izložbi. Sljedećeg robota je 1951. godine napravio Edmund Berkeley.

Robi Robi je napravljen 1956. Nažalost, nema podataka o tome kako je nastao. 1958. godine izmišljen je programski jezik LISP. Iako je ovaj jezik razvijen prije 60 godina, on je još uvijek primarni jezik za mnoge programe umjetne inteligencije.

1961. godine izgrađen je UNIMATE. Ovo je prvi industrijski robot koji se masovno proizvodi. General Motors je ovog robota koristio za rad na proizvodnoj liniji. Da bi napravili UNIMATE, naučnici su koristili Val, asemblersku varijablu. Ovaj jezik se sastoji od jednostavnih fraza, naredbi monitora i uputstava koja su sama po sebi razumljiva.

Dendral sistem veštačke inteligencije izgrađen je 1965. Pomogao je da se lako odredi molekularna struktura organskih spojeva. Ovaj sistem je napisan na Lisp-u.

Godine 1966. Weizenbaum je stvorio Elizu, prvog virtuelnog partnera za razgovor. Jedan od najpoznatijih modela zvao se Doktor, odgovarao je na pitanja u stilu psihoterapeuta. Ovaj bot je implementiran upoređivanjem uzoraka opreme. Prva verzija Elize je napisana u SLIP-u, listu za obradu jezika razvio je Weizenbaum. Kasnije je jedna od njegovih verzija prepisana na Lisp.

Prvi mobilni robot programiran u Lisp-u bio je Sheki. Koristeći programe za rješavanje problema podloga i senzora, vrat se pomicao, palio i gasio svjetla, išao gore-dolje, otvarao vrata, zatvarao vrata, gurao predmete i pomicao stvari. Šeki se kretao brzinom od 5 km na sat.

U narednih 15 godina, svijet je vidio mnogo nevjerovatnih izuma: Denning Sentry Robot, LMI Lambda, Omnibot 2000, MQ-1 Predator dron, Ferby, AIBO robot pas i Honda ASIMO.

2003. godine iRobot je izumio robotski usisivač Roomba. Razvijen u Lisp-u, ovaj autonomni usisivač čisti podove koristeći specifične algoritame. Otkriva prepreke i izbjegava ih.


Koji programski jezik koristite za razvoj AI programa? Pišite o svom radu u komentarima ili u našoj grupi VKontakte.

Najbolji članci na ovu temu