Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • știri
  • În ce limbă este scrisă inteligența artificială? Introducere în AI. Limbi puțin cunoscute pentru crearea inteligenței artificiale

În ce limbă este scrisă inteligența artificială? Introducere în AI. Limbi puțin cunoscute pentru crearea inteligenței artificiale

În timp ce programatorii pot câștiga bani prin programare, atunci AI existentă nu este AI, indiferent ce ambalaj de bomboane ar fi atârnat pe ei. Opțiunea pe care o propun poate rezolva această problemă.

În urma cercetărilor mele, am încetat să mai folosesc expresia „inteligență artificială” ca fiind prea vagă și am ajuns la o formulare diferită: un algoritm de auto-studiu, cercetare și aplicare a rezultatelor găsite pentru a rezolva eventualele sarcini de implementare.

S-au scris multe despre ce este AI. Pun întrebarea diferit, nu „ce este AI”, ci „de ce avem nevoie de AI”. Am nevoie de el pentru a câștiga mulți bani, apoi computerul să facă pentru mine tot ce nu vreau să fac, apoi să construiască o navă spațială și să zboare către stele.

Așa că voi descrie aici cum să facem computerul să ne îndeplinească dorințele. Dacă vă așteptați să vedeți aici o descriere sau o mențiune a modului în care funcționează conștiința, ce este conștientizarea de sine, ce înseamnă să gândiți sau să raționați - atunci aceasta nu este aici. Gândirea nu se referă la computere. Calculatoarele calculează, calculează și execută programe. Deci, să ne gândim cum să facem un program care să poată calcula succesiunea necesară de acțiuni pentru a ne realiza dorințele.

În ce formă va intra sarcina noastră în computer - printr-o tastatură, printr-un microfon sau de la senzori implantați în creier - acest lucru nu este important, este o chestiune secundară. Dacă putem forța computerul să îndeplinească dorințele scrise în text, atunci după aceea îi putem atribui o sarcină, astfel încât el să facă un program care să îndeplinească și dorințele, dar prin microfon. Analiza imaginii este, de asemenea, de prisos.

A susține că, pentru ca IA creată să poată recunoaște imaginile și sunetul, astfel de algoritmi trebuie să fie incluși inițial în ea, este ca și cum ai argumenta că fiecare persoană care i-a creat a știut de la naștere cum funcționează astfel de programe.

Să formulăm axiomele:
1. Totul în lume poate fi calculat după niște reguli. (mai multe despre erori mai târziu)
2. Calcul conform regulii, aceasta este o dependență neechivocă a rezultatului de datele inițiale.
3. Orice dependențe clare pot fi găsite statistic.
Și acum declarațiile:
4. Există o funcție de conversie a descrierilor de text în reguli - astfel încât să nu fie nevoie să căutați cunoștințe care au fost găsite cu mult timp în urmă.
5. Există o funcție de transformare a sarcinilor în soluții (aceasta este împlinirea dorințelor noastre).
6. Regula de predicție a datelor arbitrare include toate celelalte reguli și funcții.

Să traducem asta în limba programatorului:
1. Totul în lume poate fi calculat folosind niște algoritmi.
2. Algoritmul dă întotdeauna același rezultat la repetarea datelor inițiale.
3. În prezența multor exemple de date inițiale și rezultate pentru acestea, cu un timp de căutare infinit, se poate găsi tot setul de algoritmi posibili care implementează această dependență a datelor inițiale și a rezultatului.
4. Există algoritmi de conversie a descrierilor de text în algoritmi (sau orice alte date de informare) - pentru a nu căuta algoritmii solicitați statistic, dacă cineva i-a găsit și a descris deja.
5. Puteți crea un program care să ne împlinească dorințele, fie că sunt în text sau voce, cu condiția ca aceste dorințe să fie realizate fizic și în intervalul de timp necesar.
6. Dacă reușiți să creați un program care poate prezice și învăța să prezică pe măsură ce noi date devin disponibile, atunci după un timp infinit, un astfel de program va include toți algoritmii posibili din lumea noastră. Ei bine, dacă timpul nu este infinit, pentru utilizare practică și cu oarecare eroare, poate fi forțat să execute algoritmii programului din clauza 5 sau oricare alții.

Și totuși, IMHO:
7. Nu există altă modalitate de a învăța complet independent și independent de o persoană, cu excepția căutării prin enumerarea regulilor și a verificării statistice a acestora pe prognoză. Și trebuie doar să înveți cum să folosești această proprietate. Această proprietate face parte din modul în care funcționează creierul.

Ceea ce trebuie prezis. De la naștere, un flux de informații începe să curgă în creierul uman - din ochi, urechi, tactile etc. Și toate deciziile sunt luate de acesta pe baza datelor primite anterior. Prin analogie, facem un program care are o intrare de informații noi câte un octet - un flux de octeți de intrare. Tot ceea ce a fost primit mai devreme este prezentat sub forma unei liste continue. Informațiile externe vor veni de la 0 la 255, iar peste 255 vor fi folosite ca markeri de control speciali. Acestea. intrarea vă permite să scrieți, să zicem, până la 0xFFFF dimensiunea numărului. Și tocmai acest flux, sau mai degrabă următoarea cantitate adăugată de informații, trebuie să înveți cum să prezici, pe baza datelor primite anterior. Acestea. programul ar trebui să încerce să ghicească care va fi adăugat următorul număr.

Desigur, sunt posibile și alte opțiuni de prezentare a datelor, dar pentru scopurile în care sunt primite o varietate de formate la intrare, pur și simplu împingem acolo diverse html cu descrieri, acesta este cel mai optim. Deși markerii pot fi înlocuiți cu secvențe de evacuare în scopuri de optimizare, explicația este mai puțin convenabilă. (De asemenea, să presupunem că totul este în ASCII, nu în UTF).

Deci, mai întâi, ca la naștere, împingem toate paginile de internet cu descrieri acolo la rând și le separăm cu un marcator de text nou - - pentru ca această cutie neagră să învețe totul la rând. Voi desemna marcatori cu etichete, dar se presupune că sunt doar un fel de număr unic. După ce a trecut o anumită cantitate de date, începem să manipulăm informațiile primite folosind markeri de control.

Prin prognoză, mă refer la un algoritm care știe nu numai ce tipare au fost deja, dar caută constant altele noi. Și, prin urmare, dacă trimiteți secvența
cer albastru
iarbă verde
tavan
, atunci trebuie să-și dea seama ce se află în spatele markerului urmărește culoarea obiectului specificat anterior și prezice cea mai probabilă culoare a tavanului în locul elipsei.

I-am repetat mai multe exemple pentru ca el să înțeleagă ce funcție trebuie aplicată în aceste etichete. Și culoarea în sine, desigur, nu ar trebui să inventeze, dar ar trebui să o cunoască deja studiind-o independent, calculând modele de prognoză.

Când este necesar un răspuns de la algoritm, atunci ceea ce a fost prognoza pasului anterior este alimentat la intrarea pașilor următori. Tip de auto-predicție (prin analogie cu cuvântul autocorelație). Și, în același timp, dezactivăm funcția de căutare a secvențelor noi.

Un alt exemplu, puteți indica o întrebare după primul marker și un răspuns în al doilea, iar apoi să fie acest algoritm super-mega-cool, ar trebui să înceapă să dea răspunsuri chiar și la cele mai dificile întrebări. Din nou, în cadrul faptelor deja studiate.

Vă puteți gândi la o mulțime de trucuri diferite cu jetoane de control introduse în motorul de predicție și obțineți orice funcții doriți. Dacă vi se pare plictisitor să citiți despre rațiunea algoritmică a acestei proprietăți, atunci puteți derula la următoarele exemple cu marcatori de control.

Din ce este făcută această cutie neagră? În primul rând, merită menționat că nu se poate face previziuni sută la sută întotdeauna și în toate situațiile. Pe de altă parte, dacă rezultatul este întotdeauna zero, atunci aceasta va fi aceeași prognoză. Deși cu o eroare absolut sută la sută. Și acum să calculăm cu ce probabilitate, ce număr, ce număr urmează. Pentru fiecare număr, se va determina cel mai probabil următorul. Acestea. putem prezice un pic. Acesta este primul pas al unei călătorii foarte lungi.

O mapare neechivocă a datelor inițiale la rezultat conform algoritmului, aceasta corespunde definiției matematice a funcției cuvânt, cu excepția faptului că definiția algoritmului nu se impune definirii numărului și locației datelor de intrare și de ieșire. . Doar un exemplu, să fie o farfurie mică: obiectul este o culoare, vom introduce o mulțime de linii în el: cerul este albastru, iarba este verde, tavanul este alb. Aceasta este o mică funcție de mapare locală fără ambiguitate. Și nu contează că în realitate nu este neobișnuit ca culorile să fie diferite - vor exista și alte mese proprii. Și orice bază de date care conține proprietăți memorate ale ceva este un set de funcții și mapează identificatorii de obiect cu proprietățile lor.

Pentru simplitate, mai departe, în multe situații, în loc de termenul algoritm, voi folosi termenul de funcție, cum ar fi un parametru, dacă nu se specifică altfel. Și tot felul de astfel de mențiuni, trebuie să însemni extensibilitate la algoritmi din capul tău.

Și voi da o descriere aproximativă, tk. în realitate, îmi voi da seama de toate acestea deocamdată... Dar totul este logic. Și, de asemenea, trebuie avut în vedere că toate calculele sunt efectuate prin coeficienți, și nu adevărate sau false. (posibil chiar dacă se precizează în mod explicit că adevărat și fals).

Orice algoritm, în special unul care operează pe numere întregi, poate fi descompus în multe condiții și tranziții între ele. Operațiile de adunare, înmulțire etc. sunt și ele descompuse în subalgoritmi din condiții și tranziții. Și, de asemenea, operatorul rezultat. Aceasta nu este o declarație de returnare. Operatorul de condiție ia o valoare de undeva și o compară cu o constantă. Și operatorul rezultat adaugă o valoare constantă undeva. Locația de preluare sau de pliere este calculată fie în raport cu punctul de bază, fie în raport cu pașii anteriori din algoritm.

Struct t_node (tip int; // 0 - condiție, 1 - rezultat uniune (struct (// operator de condiție t_node * source_get; t_value * compare_value; t_node * next_if_then; t_node * next_if_else;); struct (// rezultat operator t_node * dest_set ; valoare_t * valoare_rezultat;);));
Pe un vskidk, ceva de genul ăsta. Și algoritmul este construit din astfel de elemente. Ca urmare a tuturor raționamentului, se va dovedi o structură mai complexă, iar aceasta este pentru prezentarea inițială.

Fiecare punct prezis este calculat în funcție de o anumită funcție. O condiție este atașată funcției care testează aplicabilitatea acelei funcții la acel punct. Concatenarea generică returnează fie false - nu se aplică, fie rezultatul unui calcul al funcției. Și prognoza continuă a fluxului este un test pas cu pas al aplicabilității tuturor funcțiilor deja inventate și al calculului lor, dacă este adevărat. Și așa pentru fiecare punct.

Pe lângă condiția de aplicabilitate, există și distanțe. Între datele inițiale și cele rezultate, iar această distanță este diferită, cu aceeași funcție aplicată în funcție de condiție. (Și de la condiție la cea inițială sau prezisă este aceeași distanță, o vom spune în serios, dar omitem când explicăm. Și distanțele sunt dinamice).

Odată cu acumularea unui număr mare de funcții, numărul de condiții care testează aplicabilitatea acestor funcții va crește. Dar, în multe cazuri, aceste condiții pot fi aranjate sub formă de arbori, iar tăierea seturilor de funcții va avea loc proporțional cu dependența logaritmică.

Atunci când există o creare și o măsurare inițială a unei funcții, atunci în loc de un operator de rezultat, există o acumulare a distribuției rezultatelor reale. După acumularea statisticilor, înlocuim distribuția cu rezultatul cel mai probabil, iar funcția este precedată de o condiție, testând și condiția pentru probabilitatea maximă a rezultatului.

Aceasta este o căutare a unor fapte unice de corelare. După ce am acumulat o mulțime de astfel de single-uri, încercăm să le combinăm în grupuri. Ne uităm la care se poate evidenția starea generală și distanța totală de la valoarea inițială la rezultat. Și, de asemenea, verificăm că în astfel de condiții și distanțe, în alte cazuri, unde are loc o repetare a valorii inițiale, nu există o distribuție largă a rezultatului. Acestea. în utilizările frecvente cunoscute, este foarte identic.

Coeficient de identitate. (Aceasta este identitate bidirecțională. Dar mai des este unidirecțională. Voi regândi formula mai târziu.)
Numărul fiecărei perechi XY este pătrat și se însumează.
Împărțire cu: suma pătratului fiecărei valori X plus suma pătratului Y minus dividendul.
Acestea. SUMA (XY ^ 2) / (SUMA (X ^ 2) + SUMA (Y ^ 2) - SUMA (XY ^ 2)).
Acest coeficient este de la 0 la 1.

Și ca rezultat, ce se întâmplă. Ne-am asigurat pe fapte de înaltă frecvență că în aceste condiții și distanță, aceste fapte sunt lipsite de ambiguitate. Iar restul rarelor – dar în total vor fi mult mai multe decât cele frecvente – au aceeași eroare ca și faptele frecvent întâlnite în aceste condiții. Acestea. putem acumula o bază de prognoză bazată pe apariții unice de fapte în aceste condiții.

Să existe o bază de cunoștințe. Cerul este adesea albastru, iar gunoi tropical-rar-undeva au văzut că este gri-maro-puriu. Și și-au amintit, tk. am verificat regula - este de încredere. Și principiul nu depinde de limbă, fie ea chineză sau străină. Și mai târziu, după înțelegerea regulilor de traducere, va fi posibil să ne dăm seama că o funcție poate fi asamblată din diferite limbi. Trebuie avut în vedere faptul că baza de cunoștințe poate fi reprezentată și sub formă de algoritmi - dacă valoarea inițială este așa sau cutare, atunci valoarea rezultată este cutare sau cutare.

Mai mult, ca o consecință a enumerarii altor reguli, constatăm că, cu aranjamente și condiții diferite, ia naștere o identitate deja văzută. Și acum nu trebuie să colectăm o bază mare pentru a confirma identitatea, este suficient să colectăm o duzină de fapte individuale și să vedem că în acest zece, maparea are aceleași valori ca în funcția anterioară. Acestea. aceeași funcție este utilizată într-o setare diferită. Această proprietate formează faptul că în descrierea cu expresii diferite putem descrie aceeași proprietate. Și uneori este ușor să le enumerați în tabele de pe paginile de internet. Și mai departe, colectarea faptelor despre această funcție se poate face pentru mai multe cazuri de utilizare.

Există o acumulare de posibile condiții și aranjamente diferite în ceea ce privește funcțiile și, de asemenea, se poate încerca să găsească modele pe ele. Nu este neobișnuit ca regulile de selecție să fie similare pentru diferite funcții, diferă doar în anumite caracteristici (de exemplu, un cuvânt care identifică o proprietate sau un titlu dintr-un tabel).

În general, am dat peste o grămadă de funcții cu un singur parametru. Și acum, ca și în formarea din fapte unice în cele cu un parametru, așa și aici vom încerca să grupăm condițiile cu un parametru în termeni de parte și o parte de distanță. Partea care este comună este o condiție nouă, iar partea care diferă este al doilea parametru al noii funcție - doi parametri, unde primul parametru va fi parametrul cu un parametru.

Se dovedește că fiecare parametru nou pentru cei multiparametric se găsește cu aceeași liniaritate ca și formarea din fapte unice în cele cu un parametru (bine, sau aproape la fel). Acestea. Găsirea N-parametrică este proporțională cu N. Aceasta, în străduința pentru o mulțime de parametri, devine aproape o grilă neuronală. (Cine vrea să înțeleagă.)

Funcții de conversie.

Desigur, este grozav când ni s-au oferit o mulțime de exemple corespunzătoare, să zicem, texte mici de traducere din rusă în engleză. Și puteți începe să încercați să găsiți modele între ele. Dar, în realitate, totul este amestecat în fluxul de informații de intrare.

Așa că am găsit un fel de funcție și o cale între date. Al doilea și al treilea. Acum să vedem dacă putem găsi o parte comună printre cărările dintre ele, în oricare dintre ele. Încercați să găsiți structurile X-P1- (P2) -P3-Y. Și apoi, găsiți alte structuri similare, cu X-P1 și P3-Y similare, dar P2 diferită. Și atunci putem concluziona că avem de-a face cu o structură complexă, între care există dependențe. Și setul de reguli găsite, minus partea din mijloc, va fi combinat în grupuri și va fi numit funcție de conversie. Astfel, se formează funcțiile de traducere, compilare și alte entități complexe.

Aici, luați o foaie cu textul rusesc și cu traducerea acestuia într-o limbă necunoscută. Fără un manual de auto-instruire, este extrem de dificil să găsești o înțelegere a regulilor de traducere din aceste foi. Dar este posibil. Și cam în același mod în care ați proceda, trebuie să fie formalizat într-un algoritm de căutare.

Când îmi voi da seama de funcțiile simple, atunci voi continua să dezbat căutarea conversiei până când schița se desprinde și este posibil să înțeleg că acest lucru este același.

Pe lângă căutarea statistică a funcțiilor, le puteți forma și din descrieri, prin intermediul unei funcții de conversie în reguli - o funcție de citire. Statisticile pentru crearea inițială a funcției de citire se găsesc din abundență pe Internet în manuale - corelații între descrieri și reguli aplicate exemplelor din acele descrieri. Acestea. rezultă că algoritmul de căutare ar trebui să vadă atât datele inițiale, cât și regulile aplicate acestora în același mod, adică. totul ar trebui să fie amplasat într-un grafic de date care este omogen în ceea ce privește tipurile de acces. Din același principiu, chiar dimpotrivă, pot exista reguli pentru convertirea regulilor interne înapoi în descrieri externe sau programe externe. Și, de asemenea, pentru a înțelege sistemul, ce știe și ce nu - puteți, înainte de a solicita un răspuns, să întrebați dacă sistemul știe răspunsul - da sau nu.

Funcțiile despre care am vorbit nu sunt de fapt doar o singură bucată de algoritm care poate fi găsită, ci pot consta dintr-o succesiune de alte funcții. Acesta, la rândul său, nu este un apel de procedură, ci o secvență de transformări, cum ar fi lucrul cu un pipe în Linux. De exemplu, am descris aproximativ predicția cuvintelor și expresiilor deodată. Dar pentru a obține o prognoză doar a unui simbol, trebuie să aplicați funcția de a lua acest simbol la această frază. Sau funcția a învățat să înțeleagă sarcinile în engleză și TK în rusă. Apoi RussianTZ-> Traduceți în engleză-> Execute ТЗ onEnglish-> Rezultat.

Funcțiile pot să nu fie fixate în definiție și pot fi redefinite sau redefinite pe măsură ce informații suplimentare devin disponibile sau dacă condițiile se schimbă total - funcția de traducere nu este finită și, în plus, se poate schimba în timp.

De asemenea, estimarea probabilităților este influențată de repetarea unui set în diferite funcții - forme sau confirmă tipuri.

De menționat, de asemenea, că destul de multe seturi din lumea reală, și nu paginile de internet, sunt ordonate și eventual continue, sau cu alte caracteristici de mulțimi, ceea ce îmbunătățește cumva calculele probabilităților.

Pe lângă măsurarea directă a regulii găsite folosind exemple, presupun existența altor metode de evaluare, ceva de genul unui clasificator de reguli. Și, eventual, un clasificator al acestor clasificatoare.

Mai multe nuanțe. Prognoza are două niveluri. Nivelul de reguli găsite și nivelul de căutare a regulilor noi. Dar căutarea de noi reguli este în esență același program cu propriile sale criterii. Și recunosc (deși nu m-am gândit încă la asta) că totul ar putea fi mai simplu. Este nevoie de un nivel zero, care va căuta posibili algoritmi de căutare în toată diversitatea lor, care la rândul lor vor crea reguli finale. Sau poate este, în general, o recursivitate sau un fractal pe mai multe niveluri.

Să revenim la marcajele de control. Ca urmare a tuturor acestor argumente despre algoritm, rezultă că prin ele solicităm de la această cutie neagră continuarea secvenței și emiterea unui calcul în funcție de o funcție determinată de similitudine. Îmi place să fac așa cum sa arătat înainte.

Există o altă modalitate de a defini o funcție în acest mecanism - de a emite o funcție printr-o definiție. De exemplu:
Traduce in engleza masa masa
Răspunde la întrebare culoarea cerului albastru
Creați un program TK Vreau inteligență artificială ...

Utilizarea acestui sistem pentru rezolvarea problemelor noastre constă în următorul algoritm. Facem o descriere a definiției unui identificator special pentru descrierea sarcinilor. Apoi, creăm o descriere a sarcinii și îi atribuim un nou identificator. Facem o descriere a acțiunilor permise. De exemplu (deși nu sunt practice) direct comenzile procesorului sunt descrieri de pe Internet, iar manipulatoarele sunt conectate la computer, care pot fi controlate prin porturi. Și după aceea, putem întreba sistemul care este următoarea acțiune de făcut pentru a aduce problema mai aproape de soluție, referindu-ne la problemă prin identificatorul ei. Și, de asemenea, întrebați de fiecare dată dacă aveți nevoie de informații suplimentare necesare pentru calcularea ulterioară a acțiunilor - informații despre cunoștințele generale sau despre starea actuală de rezolvare a problemei. Și facem buclă cererile de acțiuni și solicitările de informații într-o buclă externă. Toată această schemă este construită pe definiții textuale și, prin urmare, poate fi lansată prin intermediul funcțiilor obținute prin definiție. Și rezultatul este doar comenzi - problema probabilității multiple a textelor dispare. Problema amplorii prognozei necesare nu este discutată acum - dacă există o funcționalitate necesară și suficientă de prognoză, ar trebui să funcționeze în mod logic.

Dacă cineva vede în AI nu o modalitate de a rezolva probleme, ci niște caracteristici ale unei persoane, atunci putem spune că și comportamentul și calitățile umane sunt calculate și previzibile. Și în literatură există destule descrieri ale cutare sau cutare proprietate. Și, prin urmare, dacă în sistem descriem care dintre proprietăți dorim, atunci o va emula după cunoștințele sale. Și va reproduce fie un comportament mediu abstract, fie cu referire la o anumită personalitate. Ei bine, sau dacă vrei, poți încerca să lansezi superinteligența – dacă îi dai o definiție.

Poți prezice ceva ce se va întâmpla după ceva timp. Obiectele se mișcă cu viteze și accelerații și cu tot felul de alte modificări posibile în ceva în timp. Spațiul poate fi, de asemenea, prezis. De exemplu, intri într-o cameră necunoscută, în care există o masă, unul dintre colțurile căreia este acoperit cu o foaie de hârtie. Nu poți vedea acest colț, dar poți prezice mental că cel mai probabil este același dreptunghiular cu celelalte colțuri (și nu rotunjite), iar culoarea acestui colț este aceeași cu cea a celorlalte colțuri. Desigur, predicția spațiului apare cu erori - brusc acel colț al mesei este ciugulit și există o pată de vopsea pe el. Dar prognoza proceselor temporale este întotdeauna cu erori. Accelerația căderii libere pe sol nu este întotdeauna de 9,81, dar depinde de înălțimea deasupra nivelului mării și de munții adiacenți. Și niciodată nu puteți face instrumentele de măsurare absolut precise. Acestea. predicția spațiului și a proceselor în timp are loc întotdeauna cu erori, iar diferitele entități prezise au erori diferite. Dar esența este aceeași - algoritmii găsiți statistic.

Se pare că a prezice fluxul nostru de octeți este ca și a prezice spațiul de informații. Codifică atât spațiul cât și timpul. Există un fel de structură - să fie o parte din program. Această bucată a programului este spațiul prezis, la fel ca tabelul. Setul de reguli pentru prezicerea acestei structuri este format din regulile acestei structuri - ceva de genul expresiilor regulate. Pentru a determina structura acestor structuri, o predicție este calculată nu pentru o singură valoare, ci pentru un set de valori admisibile. La momentul descrierii algoritmului, nu eram încă conștient de separarea rolului structurilor în el și, prin urmare, nu a ajuns acolo. Dar prin adăugarea acestei proprietăți, se formează o înțelegere completă a imaginii și, în timp, voi încerca să o rescriu. Rețineți că prin structuri înțelegem expandabil condiționat - dacă o astfel de proprietate are o astfel de valoare, atunci se adaugă o grămadă de proprietăți.

În general, tot ceea ce este posibil în lumea noastră este descris prin tipuri, structuri, conversii și procese. Și toate aceste proprietăți sunt supuse regulilor care se găsesc ca urmare a prognozei. Creierul face același lucru, dar nu cu metode precise, pentru că el este un dispozitiv analogic.

Va căuta el cercetarea intenționat fără a stabili o astfel de sarcină? Nu, pentru că nu are dorințe proprii, ci doar sarcini atribuite. Faptul că suntem responsabili pentru realizarea propriilor dorințe și interese, îl numim o persoană. De asemenea, este posibil să programați o personalitate la computer. Și dacă va fi similar cu un om sau cu un fel de computer analog - dar va rămâne totuși doar o sarcină.

Iar activitatea noastră creatoare în artă este aceeași cercetare, se caută doar esențe care ne afectează emoțiile, sentimentele și mintea.

Nu există încă instrucțiuni finale despre cum să faci un astfel de program. Sunt multe întrebări, atât despre algoritmul în sine, cât și despre utilizare (și despre multivarianța textelor). De-a lungul timpului, voi mai clarifica și detali descrierea.

O direcție alternativă pentru implementarea prognozei este utilizarea rețelelor neuronale recurente (de exemplu, rețeaua lui Elman). În această direcție, nu trebuie să ne gândim la natura previziunii, dar există multe dificultăți și nuanțe proprii. Dar dacă această direcție este implementată, atunci restul utilizării rămâne aceeași.

Concluzii despre articol:
1. Prognoza este o modalitate de a găsi toți algoritmii posibili.
2. Folosind manipularea intrării de predicție, puteți scoate acești algoritmi de acolo.
3. Această proprietate poate fi folosită pentru a vorbi cu un computer.
4. Această proprietate poate fi folosită pentru a rezolva orice problemă.
5. AI va fi așa cum o definiți și, odată definită, poate fi rezolvată ca o problemă.

Unii vor spune că va dura prea mult pentru a găsi orice tipar prin forță brută. În schimb, pot spune că un copil învață să vorbească de câțiva ani. Câte opțiuni putem calcula în câțiva ani? Regulile găsite și gata făcute sunt aplicate rapid și mult mai rapid pentru computere decât pentru oameni. Dar căutarea unor noi pe ici și pe colo este lungă, dar dacă un computer va dura mai mult decât o persoană, nu vom ști până când nu vom face un astfel de algoritm. De asemenea, voi observa că forța brută este superb paralelizată și există milioane de entuziaști care își vor porni PC-urile de acasă în acest scop. Și se dovedește că acești câțiva ani mai pot fi împărțiți la un milion. Și regulile găsite vor fi studiate de alte computere instantaneu, spre deosebire de un proces similar la oameni.

Alții vor începe să susțină că există miliarde de celule în creier care vizează paralelizarea. Atunci întrebarea este, cum sunt utilizate aceste miliarde atunci când încercați să învățați o limbă străină folosind exemple fără un manual? O persoană va sta mult timp peste imprimate și va scrie cuvintele corelate. În același timp, un computer o va face în loturi într-o fracțiune de secundă.

Și analiza imaginii - mișcă o duzină de bile de biliard și numără câte ciocniri vor fi. (protejat de sunet). Și două duzini sau trei... Și unde sunt miliardele de celule?

În general, viteza creierului și multi-paralelismul său este o problemă foarte controversată.

Când te gândești la crearea unui computer care gândește, copiezi în el ceea ce o persoană a învățat în timpul vieții sale și nu încerci să înțelegi, ci care sunt mecanismele care permit ca acest lucru să se acumuleze din programul de pornire - să mănânce și să doarmă. Și aceste mecanisme nu se bazează pe axiomele logicii formale. Dar în matematică și statistică.

PPS: Părerea mea este că nu există o definiție științifică a inteligenței artificiale. Există doar SF. Și dacă este nevoie de realitate, atunci vezi paragraful 5 din concluziile articolului.

PPPS: Am înțeles multe interpretări diferite mult mai târziu, după ce am scris articolul. Să presupunem că găsirea unei relații întrebare-răspuns este o aproximare. Sau care sunt definițiile științifice mai precise ale tragerii funcției dorite din varietatea de funcții de prognoză găsite în procesul de căutare. Este imposibil să scrii un articol separat pentru fiecare mic moment de înțelegere, dar în general este imposibil, deoarece nu poate fi combinat într-un singur titlu. Și toate aceste înțelegeri dau un răspuns la modul de a obține răspunsuri de la puterea de calcul a computerului la întrebările adresate, răspunsurile la care nu pot fi întotdeauna citite în descrierile existente, cum ar fi, de exemplu, proiectul Watson. Cum să creezi un program care, o mențiune sau o mișcare a degetului, încearcă să înțeleagă și să facă ceea ce se dorește de la el.

Într-o zi se va face un astfel de program. Și o vor numi un alt gadget. Nu AI.

****
Surse pe această temă, precum și dezvoltarea ulterioară a prezentării, pot fi găsite pe site

Procesul de creare a inteligenței artificiale, la prima vedere, pare a fi o sarcină destul de dificilă. Urmărind aceste exemple frumoase de AI, puteți înțelege că este posibil să creați programe interesante cu AI. În funcție de obiectiv, sunt necesare diferite niveluri de cunoștințe. Unele proiecte necesită cunoștințe profunde de AI, alte proiecte necesită doar cunoașterea limbajului de programare, dar principala întrebare cu care se confruntă programatorul. Ce limbaj să alegi pentru programarea inteligenței artificiale? Iată o listă de limbi AI care pot fi utile.

LISP


Primul limbaj de calculator folosit pentru a crea inteligența artificială este LISP. Acest limbaj este destul de flexibil și extensibil. Caracteristici precum prototiparea rapidă și macrocomenzile sunt foarte utile în crearea AI. LISP este un limbaj care simplifică sarcinile complexe. Sistemul său puternic de orientare pe obiecte face din LISP unul dintre cele mai populare limbaje de programare pentru inteligența artificială.

Java

Principalele avantaje ale acestui limbaj multifuncțional sunt: ​​transparența, portabilitatea și mentenabilitatea. Un alt avantaj al limbajului Java este versatilitatea acestuia. Dacă ești începător, atunci vei fi mulțumit de faptul că există sute de tutoriale video pe Internet care îți vor face învățarea mai ușoară și mai eficientă.

Principalele caracteristici ale java sunt: ​​depanare ușoară, experiență bună de utilizare, ușurință în lucrul cu proiecte mari. Proiectele create folosind limbajul Java au o interfață atractivă și simplă.

Prolog

Este un limbaj de programare simbolic interactiv popular pentru proiectele care necesită logică. Cu un cadru puternic și flexibil, este utilizat pe scară largă pentru programarea non-numerică, demonstrarea teoremelor, procesarea limbajului natural, sistemele expert și inteligența artificială în general.

Prolog este un limbaj declarativ cu logică formală. Dezvoltatorii de inteligență artificială îl apreciază pentru nivelul său ridicat de abstractizare, motorul de căutare încorporat, non-determinism etc.

Piton

Python este utilizat pe scară largă de programatori datorită gramaticii și sintaxei curate, a designului frumos. Diverse structuri de date, o grămadă de cadre de testare, un raport de programare la nivel înalt versus la nivel scăzut, care fac din Python unul dintre cele mai populare limbaje de programare pentru inteligența artificială.

Istoria dezvoltării AI

Pentru a vedea legătura dintre AI și un limbaj de programare, să ne uităm la cele mai importante evenimente din istoria AI. Totul a început în 1939, când robotul Electro a fost prezentat la Târgul Mondial. Următorul robot a fost construit în 1951 de către Edmund Berkeley.

Robotul lui Robbie a fost construit în 1956. Din păcate, nu există informații despre cum a fost dezvoltat. În 1958, a fost inventat limbajul de programare LISP. Deși acest limbaj a fost dezvoltat în urmă cu 60 de ani, el rămâne în continuare limba principală pentru multe programe de inteligență artificială.

În 1961 a fost construită UNIMATE. Acesta este primul robot industrial produs în serie. Acest robot a fost folosit de General Motors pentru a opera o linie de producție. Pentru a face UNIMATE, oamenii de știință au folosit Val, o variabilă de asamblare. Acest limbaj constă din fraze simple, comenzi de monitorizare și instrucțiuni auto-explicative.

Sistemul de inteligență artificială Dendral, a fost construit în 1965. Ea a ajutat la determinarea cu ușurință a structurii moleculare a compușilor organici. Acest sistem a fost scris în Lisp.

În 1966, Weizenbaum a creat-o pe Eliza, primul partener de conversație virtual. Unul dintre cele mai cunoscute modele se numea Doctorul, care răspundea la întrebări în stilul unui psihoterapeut. Acest bot a fost implementat la compararea mostrelor de echipamente. Prima versiune a lui Eliza a fost scrisă în SLIP, lista de procesare a limbii a fost dezvoltată de Weizenbaum. Mai târziu, una dintre versiunile sale a fost rescrisă în Lisp.

Primul robot mobil programat în Lisp a fost Sheki. Rezolvând problemele programului de tampoane și senzori, gâtul s-a mișcat, a aprins și stins lumina, a urcat și a coborât, a deschis uși, a închis ușile, a împins obiecte și a mutat lucruri. Sheki s-a deplasat cu o viteză de 5 km pe oră.

În următorii 15 ani, lumea a văzut multe invenții uimitoare: Denning Sentry Robot, LMI Lambda, Omnibot 2000, MQ-1 Predator Drone, Furby, AIBO Robot Dog și Honda ASIMO.

În 2003, iRobot a inventat aspiratorul robot Roomba. Proiectat cu Lisp, acest aspirator autonom spală podele folosind algoritmi specifici. El detectează obstacolele și le ocolește.


Ce limbaj de programare folosiți pentru a dezvolta programe AI? Scrieți despre munca dvs. în comentarii sau în grupul nostru VKontakte.

Cum s-a întâmplat ca inteligența artificială să se dezvolte cu succes, dar încă nu există o definiție „corectă” pentru ea? De ce speranțele puse pe neurocalculatoare nu au fost justificate și care sunt cele trei sarcini principale cu care se confruntă creatorul inteligenței artificiale?

Răspunsul la aceste și alte întrebări îl veți găsi în articolul de sub tăietură, scris pe baza discursului lui Konstantin Anisimovici, directorul departamentului de dezvoltare tehnologică la ABBYY, unul dintre cei mai importanți experți ai țării în domeniul inteligenței artificiale.
Cu participarea sa personală, au fost create tehnologii de recunoaștere a documentelor, care sunt utilizate în ABBYY FineReader și ABBYY FormReader. Konstantin a vorbit despre istoria și fundamentele dezvoltării AI la unul dintre cursurile de master pentru studenții Technopark Mail.Ru. Materialul clasei de master a devenit baza pentru o serie de articole.

Vor fi trei postări în total în buclă:
Inteligență artificială pentru programatori

Achiziția de cunoștințe: ingineria cunoștințelor și învățarea automată

Sușurile și coborâșurile abordării AI

Începând cu anii 1950, în domeniul creării inteligenței artificiale au apărut două abordări - calculul simbolic și conexiunea. Calculul simbolic este o direcție bazată pe modelarea gândirii umane, iar conexionismul se bazează pe modelarea structurii creierului.

Primele progrese în domeniul calculului simbolic au fost limbajul Lisp creat în anii 50 și munca lui J. Robinson în domeniul inferenței logice. În conexionism, aceasta a fost crearea unui perceptron - un clasificator liniar cu auto-învățare care simulează funcționarea unui neuron. Alte realizări izbitoare au fost în principal în conformitate cu paradigma simbolică. În special, acestea sunt lucrările lui Seymour Pipert și Robert Anton Winson în domeniul psihologiei percepției și, bineînțeles, cadrele lui Marvin Minsky.

În anii 70 au apărut primele sisteme aplicate folosind elemente de inteligență artificială – sisteme experte. Apoi a existat o anumită renaștere a conexiunii odată cu apariția rețelelor neuronale multistrat și a unui algoritm de învățare a acestora folosind metoda backpropagation. În anii 80, fascinația pentru rețelele neuronale era doar răspândită. Susținătorii acestei abordări au promis că vor crea neurocomputere care vor funcționa aproape ca creierul uman.

Dar nimic special nu a rezultat din asta, pentru că neuronii reali sunt mult mai complicati decât cei formali, pe care se bazează rețelele neuronale multistrat. Și numărul de neuroni din creierul uman este, de asemenea, mult mai mare decât ți-ar putea permite într-o rețea neuronală. Principalul lucru pentru care rețelele neuronale multistrat s-au dovedit a fi potrivite este soluția problemei de clasificare.

Următoarea paradigmă populară în inteligența artificială a fost învățarea automată. Abordarea a început să se dezvolte rapid la sfârșitul anilor 1980 și nu și-a pierdut popularitatea până în prezent. Un impuls semnificativ pentru dezvoltarea învățării automate a fost dat de apariția internetului și de o cantitate mare de date variate ușor disponibile care pot fi folosite pentru a antrena algoritmi.

Principalele provocări în proiectarea inteligenței artificiale

Puteți analiza ceea ce face ca sarcinile legate de inteligența artificială să fie legate. Este ușor de observat că ceea ce au în comun este absența unei proceduri de decizie bine cunoscute, bine definite. În aceasta, de fapt, problemele legate de IA diferă de problemele teoriei compilației sau ale matematicii computaționale. Sistemele inteligente caută soluții suboptime la problemă. Este imposibil de demonstrat sau garantat că soluția găsită de inteligența artificială va fi strict optimă. Cu toate acestea, în majoritatea problemelor practice, soluțiile suboptime se potrivesc tuturor. Mai mult, trebuie să ne amintim că o persoană practic nu rezolvă niciodată o problemă în mod optim. Mai degrabă, opusul este adevărat.

Apare o întrebare foarte importantă: cum poate AI să rezolve o problemă pentru care nu există un algoritm de soluție? Ideea este să o faci în același mod ca o persoană - să prezinți și să testezi ipoteze plauzibile. Desigur, cunoștințele sunt necesare pentru a avansa și a testa ipotezele.

Cunoașterea este o descriere a domeniului în care funcționează un sistem inteligent. Dacă avem un sistem de recunoaștere a simbolurilor unei limbi naturale, atunci cunoașterea include descrieri ale dispozitivului de simboluri, structura textului și anumite proprietăți ale limbajului. Dacă este un sistem de rating de credit al clienților, acesta trebuie să aibă cunoștințe despre tipurile de clienți și despre modul în care profilul clientului se raportează la potențiala insolvență. Cunoștințele sunt de două feluri - despre domeniul subiectului și despre căutarea de soluții (meta-cunoștințe).

Sarcinile principale ale proiectării unui sistem inteligent se reduc la alegerea modalităților de reprezentare a cunoștințelor, modalităților de obținere a cunoștințelor și modalităților de aplicare a cunoștințelor.

Reprezentarea cunoștințelor

Există două modalități principale de reprezentare a cunoștințelor - declarativă și procedurală. Cunoașterea declarativă poate fi prezentat într-o formă structurată sau nestructurată. Vederile structurate sunt o formă de abordare bazată pe cadru. Rețele semantice sau gramatici formale, care pot fi, de asemenea, gândite ca varietăți de cadre. Cunoașterea în aceste formalisme este reprezentată ca un set de obiecte și relații între ele.


Vederile nestructurate sunt de obicei utilizate în acele domenii care sunt asociate cu rezolvarea problemelor de clasificare. Aceștia sunt de obicei vectori de estimări ale greutăților, probabilităților și altele asemenea.

Aproape toate metodele de reprezentare structurată a cunoștințelor se bazează pe formalismul cadrelor, pe care Marvin Minsky de la MIT l-a introdus în anii 1970 pentru a desemna structura cunoștințelor pentru percepția scenelor spațiale. După cum sa dovedit, această abordare este potrivită pentru aproape orice sarcină.

Un cadru este format dintr-un nume și unități individuale numite sloturi. Valoarea slotului poate fi, la rândul său, o referință la un alt cadru... Un cadru poate fi un descendent al altui cadru, moștenind valorile slotului de la acesta. În acest caz, copilul poate trece peste valorile sloturilor strămoșului și poate adăuga altele noi. Moștenirea este folosită pentru a face descrierea mai compactă și pentru a evita duplicarea.

Este ușor de observat că există asemănări între cadre și programarea orientată pe obiecte, unde un obiect corespunde unui cadru și un câmp unui slot. Asemănarea nu este întâmplătoare, deoarece cadrele au fost una dintre sursele OOP. În special, unul dintre primele limbaje orientate pe obiecte, Small Talk, a implementat reprezentări cadru ale obiectelor și claselor aproape exact.

Pentru prezentare procedurală sunt utilizate cunoștințele despre produs sau regulile de producție. Un model de producție este un model bazat pe reguli care permite reprezentarea cunoștințelor sub formă de propoziții condiție-acțiune. Această abordare a fost anterior populară în diferite sisteme de diagnosticare. Este destul de firesc să descriem simptomele, problemele sau defecțiunile sub forma unei afecțiuni și sub forma unei acțiuni - o posibilă defecțiune care duce la prezența acestor simptome.

În articolul următor, vom vorbi despre modalități de aplicare a cunoștințelor.

Bibliografie.

  1. John Alan Robinson. O logică orientată spre mașină bazată pe principiul rezoluției. Comunicările ACM, 5: 23-41, 1965.
  2. Seymour Papert, Marvin Minsky. Perceptronii. MIT Press, 1969
  3. Russell, Norvig. Inteligența artificială: o abordare modernă.
  4. Simon Haykin. Rețele neuronale: o bază cuprinzătoare.
  5. Nils J. Nilsson. Inteligența artificială: o nouă sinteză.
  • Traducere

Înțelegerea limbii automate ar fi de mare ajutor. Dar nu știm cum să le construim.

Despre ilustrațiile pentru articol: una dintre dificultățile în înțelegerea limbajului de către computere este faptul că adesea sensul cuvintelor depinde de context și chiar de aspectul literelor și cuvintelor. În imaginile furnizate în articol, câțiva artiști demonstrează utilizarea diferitelor repere vizuale care transmit o încărcătură semantică care depășește limitele literelor în sine.

În mijlocul unui joc intens Go din Seul, Coreea de Sud, între Lee Sedol, unul dintre cei mai buni jucători ai tuturor timpurilor, și programul AI al Google AlphaGo, programul a făcut o mișcare misterioasă care și-a demonstrat superioritatea copleșitoare față de un adversar uman.

La mutarea 37, AlphaGo a decis să plaseze piatra neagră într-o poziție aparent ciudată. Totul a mers la faptul că a trebuit să piardă o bucată semnificativă de teritoriu - o greșeală a începătorului într-un joc construit pe controlul spațiului de pe tablă. Cei doi comentatori TV au discutat dacă au înțeles corect mișcarea computerului și dacă acesta s-a stricat. S-a dovedit că, în ciuda unei contradicții cu bunul simț, mișcarea 37 a permis lui AlphaGo să construiască o structură de netrecut în centrul tablei. Programul Google a câștigat jocul cu o mișcare la care niciun om nu s-ar fi putut gândi.

De asemenea, este impresionant pentru că jocul străvechi de go a fost adesea privit ca un test de inteligență intuitivă. Regulile sale sunt simple. Doi jucători pun pe rând pietre negre sau albe la intersecțiile liniilor orizontale și verticale ale tablei, încercând să înconjoare pietrele adversarului și să le scoată de pe tablă. Dar a-l juca bine este incredibil de dificil.

Dacă jucătorii de șah sunt capabili să calculeze jocul cu câțiva pași înainte, în Go devine rapid o sarcină incredibil de dificilă și, în plus, nu există gambit-uri clasice în joc. De asemenea, nu există o modalitate ușoară de a măsura avantajul și poate fi dificil chiar și pentru un jucător experimentat să explice de ce a făcut această mișcare. Din acest motiv, este imposibil să scrieți un set simplu de reguli pentru un program de urmat atunci când se joacă la nivel de expert.

AlphaGo nu a fost învățat să joace Go. Programul a analizat sute de mii de jocuri și a jucat milioane de meciuri împotriva lui însuși. Printre diferitele tehnici AI, ea a folosit o tehnică din ce în ce mai populară cunoscută sub numele de deep learning. Se bazează pe calcule matematice inspirate de modul în care straturile interconectate ale neuronilor din creier sunt activate atunci când sunt procesate noi informații. Programul s-a predat singur pe parcursul multor ore de practică, perfecționând treptat un simț intuitiv al strategiei. Faptul că a reușit să-l învingă pe unul dintre cei mai buni jucători de go din lume este o nouă piatră de hotar în inteligența mașinilor și AI.

La câteva ore după mutarea 37, AlphaGo a câștigat jocul și a luat conducerea cu 2-0 într-un meci de cinci jocuri. După aceea, Sedol a stat în fața unei mulțimi de jurnaliști și fotografi și și-a cerut scuze politicos pentru că a dezamăgit omenirea. „Am rămas fără cuvinte”, a spus el, clipind sub exploziile lanternelor.

Succesul uluitor al AlphaGo arată cât de mult s-au făcut progrese în AI în ultimii ani, după decenii de disperare și probleme descrise drept „iarna AI”. Învățarea profundă permite mașinilor să învețe singure cum să îndeplinească sarcini complexe care, până acum câțiva ani, nu ar fi putut fi rezolvate fără participarea inteligenței umane. Robocar-urile se profilează deja la orizont. În viitorul apropiat, sistemele de învățare profundă vor ajuta la diagnosticarea bolilor și vor oferi recomandări de tratament.

Dar, în ciuda acestor progrese impresionante, una dintre capacitățile de bază ale AI nu este în niciun caz oferită: limbajul. Sisteme precum Siri și IBM Watson pot recunoaște comenzi simple rostite și scrise și pot răspunde la întrebări simple, dar nu sunt capabile să mențină o conversație sau să înțeleagă cu adevărat cuvintele folosite. Pentru ca AI să ne schimbe lumea, asta trebuie să se schimbe.

Deși AlphaGo nu vorbește, are tehnologie care poate oferi o mai bună înțelegere a limbii. La Google, Facebook, Amazon și laboratoarele de știință, cercetătorii încearcă să rezolve această problemă încăpățânată utilizând aceleași instrumente AI - inclusiv deep learning - care sunt responsabile pentru succesul AlphaGo și renașterea AI. Succesul lor va determina amploarea și proprietățile a ceea ce deja începe să se transforme într-o revoluție AI. Acest lucru ne va determina viitorul - vom avea mașini cu care va fi ușor de comunicat, sau sistemele cu AI vor rămâne cutii negre misterioase, deși mai autonome. „Nu există nicio modalitate de a crea un sistem umanoid cu inteligență artificială dacă nu are limbajul în centrul său”, spune Josh Tenenbaum, profesor de științe cognitive și de calcul la MIT. „Acesta este unul dintre cele mai evidente lucruri care definesc inteligența umană”.

Poate că aceeași tehnologie care a permis AlphaGo să cucerească Go va permite computerelor să învețe limba, sau va fi nevoie de altceva. Dar fără a înțelege limbajul, impactul AI va fi diferit. Desigur, vom avea în continuare programe ireal de puternice și inteligente precum AlphaGo. Dar relația noastră cu AI nu va fi la fel de strânsă și probabil nici la fel de prietenoasă. „Cea mai mare întrebare de la începutul cercetării a fost „Dacă ai avea dispozitive inteligente din punct de vedere al eficienței, dar nu ca noi în ceea ce privește lipsa de empatie pentru ceea ce suntem?”, spune Terry Winograd, profesor emerit la Universitatea Stanford. . „Vă puteți imagina mașini care nu se bazează pe inteligența umană, lucrând cu date mari și conducând lumea.”

Vorbesc cu mașini

La câteva luni după triumful AlphaGo, m-am îndreptat către Silicon Valley, inima boom-ului AI. Am vrut să mă întâlnesc cu cercetători care au făcut progrese notabile în aplicațiile practice ale inteligenței artificiale și care încearcă să ofere mașinilor o înțelegere a limbajului.

Am început cu Winograd, care locuiește în suburbiile de la marginea de sud a campusului Palo Alto din Stanford, aproape de sediul Google, Facebook și Apple. Părul său gri și cârlionțat și mustața groasă îi dau aspectul unui venerabil om de știință și infectează cu entuziasmul său.

În 1968, Grape a făcut una dintre primele încercări de a învăța mașinile să vorbească. Un minune al matematicii cu o pasiune pentru limbaj, a venit la noul laborator AI al MIT pentru a-și urma diploma. El a decis să creeze un program care comunică cu oamenii prin introducerea textului în limbajul de zi cu zi. Nu părea un obiectiv atât de îndrăzneț la momentul respectiv. Au fost pași mari în dezvoltarea AI, iar alte echipe de la MIT construiau sisteme sofisticate de viziune computerizată și brațe robotizate. „Exista un sentiment de posibilități necunoscute și nelimitate”, își amintește el.

Dar nu toată lumea credea că limba este atât de ușor de cucerit. Unii critici, inclusiv influentul lingvist și profesorul MIT Noam Chomsky, au considerat că ar fi foarte dificil pentru cercetătorii AI să învețe mașinile să înțeleagă, deoarece mecanica limbajului era atât de prost înțeleasă la oameni. Vinograd își amintește de o petrecere în care studentul Chomsky s-a îndepărtat de el după ce a auzit că lucra într-un laborator de inteligență artificială.

Dar există și motive pentru optimism. Joseph Weisenbaum, un profesor MIT de origine germană, a creat primul program chatbot cu câțiva ani în urmă. Numele ei era ELIZA și era programată să răspundă ca un psiholog de desene animate, repetând părți cheie ale afirmațiilor sau punând întrebări care inspiră conversații suplimentare. Dacă i-ai spus că ești supărat pe mama ta, programul ar putea răspunde: „Ce altceva îți vine în minte când te gândești la mama ta?”. Un truc ieftin care a funcționat surprinzător de bine. Weisenbaum a fost șocat când unii dintre subiecți au început să-și dezvăluie secretele întunecate mașinii sale.

Grape a vrut să facă ceva care să pretindă în mod convingător că înțelege limba. A început prin reducerea sferei problemei. A creat un mediu virtual simplu, o „lume bloc”, constând dintr-o colecție de obiecte fictive pe o masă fictivă. Apoi a creat un program numit SHRDLU care poate analiza toate substantivele, verbele și regulile gramaticale simple necesare pentru a comunica în această lume virtuală simplificată. SHRDLU (un cuvânt fără sens format din litere de la tastatură linotipată pe rând) ar putea descrie obiecte, să răspundă la întrebări despre relațiile lor și să schimbe lumea blocurilor ca răspuns la comenzile introduse. Ea avea chiar și un fel de memorie și dacă i-ai cerut să mute „conul roșu” și apoi ai scris despre un anume con, ea a presupus că te referi la acest con roșu, și nu la altul.

SHRDLU a devenit un semnal de progres extraordinar în domeniul AI. Dar a fost doar o iluzie. Când Vinograd a încercat să extindă lumea blocată a programului, regulile necesare pentru a lua în considerare cuvintele suplimentare și complexitatea gramaticală au devenit de necontrolat. După doar câțiva ani, a renunțat și a părăsit domeniul AI, concentrându-se pe alte cercetări. „Restricțiile au fost mult mai puternice decât părea atunci”, spune el.

Vinograd a decis că, cu instrumentele disponibile la acea vreme, era imposibil să înveți o mașină să înțeleagă cu adevărat limbajul. Problema, potrivit lui Hubert Dreyfus, profesor de filozofie la Universitatea din California din Berkeley, în cartea sa din 1972 What Computers Can't Do, este că multe acțiuni umane necesită înțelegere instinctivă care nu poate fi definită cu un set de reguli simple. Acesta este motivul pentru care, înainte de începerea meciului dintre Sedol și AlphaGo, mulți experți se îndoiau că mașinile ar fi capabile să stăpânească jocul go-ului.

Dar în timp ce Dreyfus își dovedea punctul de vedere, câțiva cercetători dezvoltau o abordare care, în cele din urmă, ar oferi mașinilor tipul de inteligență de care aveau nevoie. Inspirați de neuroștiință, ei au experimentat cu rețele neuronale artificiale - straturi de simulări matematice ale neuronilor care pot fi antrenați să declanșeze ca răspuns la anumite intrări. La început, aceste sisteme au funcționat incredibil de lent și abordarea a fost respinsă ca nepractică pentru logică și raționament. Cu toate acestea, o capacitate cheie a rețelelor neuronale a fost capacitatea de a învăța ceva care nu a fost programat manual, iar ulterior s-a dovedit a fi util pentru sarcini simple, cum ar fi recunoașterea scrisului de mână. Această abilitate a găsit o utilizare comercială în anii 1990 pentru a citi numerele din cecuri. Susținătorii metodei erau încrezători că, în timp, rețelele neuronale vor permite mașinilor să facă mult mai mult. Ei au susținut că într-o zi această tehnologie va ajuta la recunoașterea limbii.

În ultimii câțiva ani, rețelele neuronale au devenit mai sofisticate și mai puternice. Abordarea a înflorit datorită îmbunătățirilor matematice cheie și, mai important, hardware de calcul mai rapid și cantități masive de date. Până în 2009, cercetătorii de la Universitatea din Toronto au arătat că rețelele de învățare profundă multistrat pot recunoaște vorbirea cu o acuratețe record. Și în 2012, același grup a câștigat o competiție de viziune artificială folosind un algoritm de învățare profundă care a arătat o acuratețe uimitoare.

O rețea neuronală de învățare profundă recunoaște obiectele din imagini cu un truc simplu. Stratul de neuroni simulați primește intrare sub forma unei imagini, iar unii dintre neuroni sunt declanșați ca răspuns la intensitatea pixelilor individuali. Semnalul rezultat trece prin multe straturi de neuroni interconectați înainte de a ajunge la stratul de ieșire care semnalează observarea unui obiect. Un truc matematic numit backpropagation este folosit pentru a ajusta sensibilitatea neuronilor din rețea pentru a crea răspunsul corect. Acesta este pasul care oferă sistemului posibilitatea de a învăța. Diferite straturi din rețea răspund la proprietăți precum marginile, culorile sau textura. Astfel de sisteme de astăzi sunt capabile să recunoască obiecte, animale sau fețe cu o acuratețe care rivalizează cu cea a oamenilor.

Există o problemă evidentă cu aplicarea tehnologiei de deep learning la o limbă. Cuvintele sunt simboluri arbitrare și prin aceasta, în esență, diferă de imagini. Două cuvinte pot avea semnificații similare și pot conține litere complet diferite. Și același cuvânt poate însemna lucruri diferite în funcție de context.

În anii 1980, cercetătorii au venit cu o idee inteligentă de a transforma limba în tipul de problemă pe care o poate rezolva o rețea neuronală. Ei au arătat că cuvintele pot fi reprezentate ca vectori matematici, ceea ce permite să se calculeze asemănarea cuvintelor înrudite. De exemplu, „barcă” și „apa” sunt apropiate în spațiul vectorial, deși arată diferit. Cercetătorii de la Universitatea din Montreal conduși de Yoshua Benjio și un alt grup de la Google au folosit această idee pentru a construi rețele care folosesc fiecare cuvânt dintr-o propoziție pentru a construi o reprezentare mai complexă. Joffrey Hinton, profesor la Universitatea din Toronto și un important cercetător în domeniul învățării profunde, care lucrează și la Google, numește acest lucru un „vector al gândirii”.

Folosind două astfel de rețele, este posibil să faci traduceri dintr-o limbă în alta cu o acuratețe excelentă. Și combinând aceste tipuri de rețele cu una care recunoaște obiectele din imagini, puteți obține subtitrări uimitor de precise.

Sensul vieții

Stând într-o sală de conferințe din inima sediului plin de viață al Google din Mountain View, California, unul dintre cercetătorii companiei care a dezvoltat această abordare, Quoc Lee, discută despre ideea unei mașini care poate ține conversații reale. Ambiția lui Lee explică de ce mașinile care vorbesc pot fi utile. „Am nevoie de o modalitate de a simula gândurile într-o mașină”, spune el. „Și dacă vrei să simulezi gânduri, atunci poți întreba mașina ce crede.”

Google deja învață computerele sale elementele de bază ale limbii. În mai, compania a dezvăluit Parsey McParseface, un sistem capabil să recunoască sintaxa, substantivele, verbele și alte elemente ale textului. Nu este greu de văzut cum înțelegerea unei limbi poate ajuta o companie. Algoritmul de căutare Google a fost odată doar urmărirea cuvintelor cheie și a legăturilor dintre paginile web. Sistemul RankBrain citește acum textul paginilor pentru a înțelege semnificația acestuia și pentru a îmbunătăți rezultatele căutării. Lee vrea să ducă această idee și mai departe. Adaptând un sistem care s-a dovedit a fi util pentru traducerea și captarea imaginilor, ea și colegii ei au creat un Smart Reply care citește conținutul e-mailurilor Gmail și sugerează posibile răspunsuri. De asemenea, au creat un program care învață din chat-ul de asistență Google pentru a răspunde la întrebări tehnice simple.

Lee a creat recent un program capabil să genereze răspunsuri acceptabile la întrebări dificile. S-a instruit pe dialoguri din 18.900 de filme. Unele dintre răspunsuri sunt înspăimântător de exacte. De exemplu, Lee a întrebat: „Care este sensul vieții?” Iar programul a răspuns: „Slujind binele cel mai înalt”. „Nu este un răspuns rău”, își amintește el zâmbind. — Poate mai bine decât mi-aș fi răspuns eu însumi.

Există o singură problemă care devine evidentă când se analizează mai multe răspunsuri ale sistemului. Când Lee a întrebat: „Câte picioare are o pisică?” Sistemul a răspuns: „Cred că patru”. Apoi a întrebat „Câte picioare are un centiped?” Și a primit răspunsul ciudat „Opt”. În esență, programul lui Lee nu înțelege despre ce vorbește. Ea înțelege că unele combinații de simboluri merg împreună, dar nu înțelege lumea reală. Ea nu știe cum arată un centiped sau cum se mișcă. Este încă o iluzie de inteligență, fără bun simț, pe care oamenii o iau de bună. Sistemele de învățare profundă sunt destul de șocante în acest sens. Sistemul Google pentru subtitrărea imaginilor face uneori greșeli ciudate, cum ar fi descrierea unui semn rutier ca un frigider cu alimente.

Întâmplător, vecinul lui Terry Winograd din Palo Alto este cineva care poate ajuta computerele să înțeleagă mai bine sensul real al cuvintelor. Fei-Fei Li, directorul Laboratorului de Inteligență Artificială Stanford, era în concediu de maternitate în timpul vizitei mele, dar m-a invitat acasă și mi-a prezentat cu mândrie copilul ei de trei luni, Phoenix. „Observați că ea se uită la tine mai mult decât la mine”, a spus Lee în timp ce Phoenix se uita la mine. - Pentru că ești nou; este recunoașterea timpurie a feței.”

Pentru cea mai mare parte a carierei sale, Lee a cercetat învățarea automată și viziunea pe computer. În urmă cu câțiva ani, sub conducerea ei, s-a încercat crearea unei baze de date cu milioane de imagini de obiecte, fiecare dintre acestea fiind semnată cu cuvintele cheie corespunzătoare. Dar Lee crede că mașinile au nevoie de o înțelegere mai complexă a ceea ce se întâmplă în lume, iar anul acesta echipa ei a lansat o altă bază de date de imagini, adnotările pentru care erau mult mai bogate. Pentru fiecare poză, oamenii au făcut zeci de legende: „Câinele pe skateboard”, „Câinele are blana groasă care flutură”, „Drumul cu crăpături” și așa mai departe. Ei speră că sistemele de învățare automată vor învăța să înțeleagă lumea fizică. „Partea lingvistică a creierului primește o mulțime de informații, inclusiv de la sistemul vizual”, spune Lee. „Integrarea acestor sisteme va fi o parte importantă a AI.”

Acest proces este mai aproape de a-i învăța pe copii cum să asocieze cuvintele cu obiecte, relații și acțiuni. Dar analogia cu predarea oamenilor nu merge prea departe. Copiii nu au nevoie să vadă un câine pe un skateboard pentru a-l vizualiza sau pentru a-l descrie în cuvinte. Lee crede că AI și instrumentele de învățare automată de astăzi nu vor fi suficiente pentru a crea AI reală. „Nu va fi doar învățare profundă cu un set de date mare”, spune ea. „Noi, oamenii, suntem foarte răi la calcularea datelor mari, dar foarte buni la abstractizare și creativitate.”

Nimeni nu știe cum să doteze mașinile cu aceste calități umane sau dacă acest lucru este posibil. Există ceva exclusiv uman în astfel de calități care împiedică AI să le posede?

Oamenii de știință cognitiv, precum Tenenbaum de la MIT, cred că rețelelor neuronale de astăzi le lipsesc componente de inteligență critice - indiferent de dimensiunea acelor rețele. Oamenii sunt capabili să învețe relativ rapid din cantități relativ mici de date și au capacitatea încorporată de a modela eficient o lume tridimensională. „Limbajul este construit pe alte posibilități, probabil mai profunde și mai prezente la bebeluși înainte de a începe chiar să vorbească limba: percepția vizuală a lumii, lucrul cu locomotivele noastre, înțelegerea fizicii lumii și a intențiilor altor creaturi”, spune Tenenbaum.

Dacă are dreptate, atunci fără a încerca să simuleze procesul de învățare umană, să creeze modele mentale și psihologie, va fi foarte dificil să recreeze înțelegerea limbajului în AI.

Explica

Biroul lui Noah Goodman din Departamentul de Psihologie din Stanford este aproape gol, cu excepția unor picturi abstracte de pe unul dintre pereți și a câteva plante îngroșate. În momentul în care am ajuns, Goodman mâzgălea pe laptop cu picioarele goale pe masă. Ne-am plimbat prin campusul însorit pentru a cumpăra cafea cu gheață. „Particularitatea limbii este că se bazează nu numai pe o cantitate mare de informații despre limbă, ci și pe înțelegerea umană generală a lumii înconjurătoare, iar aceste două domenii de cunoaștere sunt conectate latent între ele”, explică el. .

Goodman și studenții săi au dezvoltat limbajul de programare Webppl care poate fi folosit pentru a dota computerele cu bun simț probabilistic, care se dovedește a fi destul de important în conversație. O versiune experimentală este capabilă să recunoască jocurile de cuvinte, iar cealaltă - hiperbole. Dacă i se spune că unii oameni trebuie să petreacă „eternitatea” așteptând o masă într-un restaurant, ea va decide automat că folosirea sensului literal al cuvântului în acest caz este puțin probabilă și că oamenii vor aștepta mult timp și vor primi. enervat. Este posibil ca sistemul să nu fie numit încă inteligență adevărată, dar arată cum noile abordări pot ajuta programele AI să vorbească puțin mai vital.

Exemplul lui Goodman arată, de asemenea, cât de dificil va fi să înveți mașinile să folosească limbajul. Înțelegerea semnificației „eternității” într-un context specific este un exemplu a ceea ce sistemele AI vor trebui să învețe, dar este de fapt un lucru destul de simplu și rudimentar.

Cu toate acestea, în ciuda complexității și confuziei sarcinii, succesele inițiale ale cercetătorilor care folosesc învățarea profundă pentru recunoașterea modelelor sau joacă Go dau speranță că suntem în pragul unei descoperiri și în domeniul lingvistic. În acest caz, această descoperire a venit exact la timp. Dacă AI urmează să devină un instrument universal, pentru a ajuta oamenii să-și completeze și să-și îmbunătățească propria inteligență și să îndeplinească sarcini într-un mod de simbioză fără întreruperi, atunci limbajul este cheia pentru atingerea acestei stări. Mai ales dacă sistemele AI folosesc din ce în ce mai mult învățarea profundă și alte tehnologii pentru autoprogramare.

„În general, sistemele de învățare profundă sunt uluitoare”, a spus John Leonard, profesor care studiază vehiculele robotizate la MIT. „Pe de altă parte, munca lor este destul de greu de înțeles”.

Toyota, care studiază diverse tehnologii pentru conducerea autonomă, a lansat un proiect de cercetare la MIT condus de Gerald Sussman, expert în IA și limbaje de programare, pentru a dezvolta un sistem de conducere autonomă care ar putea explica de ce a luat o acțiune la un moment dat. Modul evident de a da o astfel de explicație ar fi verbal. „Construirea sistemelor conștiente de cunoștințe este foarte dificilă”, spune Leonard, care conduce un alt proiect Toyota la MIT. „Dar, da, în mod ideal ar trebui să dea nu doar un răspuns, ci și o explicație”.

La câteva săptămâni după ce m-am întors din California, m-am întâlnit cu David Silver, un cercetător Google DeepMind și dezvoltator al AlphaGo. El a vorbit despre meciul cu Sedol la o conferință științifică la New York. Silver a explicat că atunci când programul din al doilea joc și-a făcut mișcarea decisivă, echipa sa a fost la fel de surprinsă ca și restul. Tot ce au putut vedea a fost că AlphaGo a prezis șansele de câștig, iar această predicție s-a schimbat puțin după mutarea 37. Doar câteva zile mai târziu, după ce a analizat cu atenție jocul, echipa a făcut o descoperire: după ce a digerat jocurile anterioare, programul a calculat că un jucător uman ar putea face o astfel de mișcare cu o probabilitate de 1 la 10 000. Și jocurile sale de antrenament au arătat că astfel de o manevră oferă un avantaj pozițional neobișnuit de puternic...

Deci, într-un fel, mașina știa că această mișcare va lovi punctul slab al lui Sedol.

Silver a spus că Google ia în considerare mai multe oportunități de comercializare a tehnologiei, inclusiv asistenți inteligenți și instrumente de asistență medicală. După prelegere, l-am întrebat despre importanța de a putea comunica cu AI care controlează astfel de sisteme. — Interesantă întrebare, spuse el după o pauză. - Pentru unele aplicații, acest lucru poate fi util. De exemplu, în domeniul sănătății, poate fi important să știm de ce a fost luată o anumită decizie.”

Într-adevăr, IA devin din ce în ce mai complexe și confuze și este foarte dificil să ne imaginăm cum am lucra cu ele fără limbaj - fără capacitatea de a le întreba „De ce?” Mai mult, abilitatea de a comunica cu ușurință cu computerele le-ar face mai utile și ar arăta ca magic. La urma urmei, limba este cel mai bun mod prin care înțelegem și interacționăm cu lumea. E timpul ca mașinile să ne ajungă din urmă.

Procesul de creare a inteligenței artificiale, la prima vedere, pare a fi o sarcină destul de dificilă. Urmărind aceste exemple frumoase de AI, puteți înțelege că este posibil să creați programe interesante cu AI. În funcție de obiectiv, sunt necesare diferite niveluri de cunoștințe. Unele proiecte necesită cunoștințe profunde de AI, alte proiecte necesită doar cunoașterea limbajului de programare, dar principala întrebare cu care se confruntă programatorul. Ce limbaj să alegi pentru programarea inteligenței artificiale? Iată o listă de limbi AI care pot fi utile.

LISP


Primul limbaj de calculator folosit pentru a crea inteligența artificială este LISP. Acest limbaj este destul de flexibil și extensibil. Caracteristici precum prototiparea rapidă și macrocomenzile sunt foarte utile în crearea AI. LISP este un limbaj care simplifică sarcinile complexe. Sistemul său puternic de orientare pe obiecte face din LISP unul dintre cele mai populare limbaje de programare pentru inteligența artificială.

Java

Principalele avantaje ale acestui limbaj multifuncțional sunt: ​​transparența, portabilitatea și mentenabilitatea. Un alt avantaj al limbajului Java este versatilitatea acestuia. Dacă ești începător, atunci vei fi mulțumit de faptul că există sute de tutoriale video pe Internet care îți vor face învățarea mai ușoară și mai eficientă.

Principalele caracteristici ale java sunt: ​​depanare ușoară, experiență bună de utilizare, ușurință în lucrul cu proiecte mari. Proiectele create folosind limbajul Java au o interfață atractivă și simplă.

Prolog

Este un limbaj de programare simbolic interactiv popular pentru proiectele care necesită logică. Cu un cadru puternic și flexibil, este utilizat pe scară largă pentru programarea non-numerică, demonstrarea teoremelor, procesarea limbajului natural, sistemele expert și inteligența artificială în general.

Prolog este un limbaj declarativ cu logică formală. Dezvoltatorii de inteligență artificială îl apreciază pentru nivelul său ridicat de abstractizare, motorul de căutare încorporat, non-determinism etc.

Piton

Python este utilizat pe scară largă de programatori datorită gramaticii și sintaxei curate, a designului frumos. Diverse structuri de date, o grămadă de cadre de testare, un raport de programare la nivel înalt versus la nivel scăzut, care fac din Python unul dintre cele mai populare limbaje de programare pentru inteligența artificială.

Istoria dezvoltării AI

Pentru a vedea legătura dintre AI și un limbaj de programare, să ne uităm la cele mai importante evenimente din istoria AI. Totul a început în 1939, când robotul Electro a fost prezentat la Târgul Mondial. Următorul robot a fost construit în 1951 de către Edmund Berkeley.

Robotul lui Robbie a fost construit în 1956. Din păcate, nu există informații despre cum a fost dezvoltat. În 1958, a fost inventat limbajul de programare LISP. Deși acest limbaj a fost dezvoltat în urmă cu 60 de ani, el rămâne în continuare limba principală pentru multe programe de inteligență artificială.

În 1961 a fost construită UNIMATE. Acesta este primul robot industrial produs în serie. Acest robot a fost folosit de General Motors pentru a opera o linie de producție. Pentru a face UNIMATE, oamenii de știință au folosit Val, o variabilă de asamblare. Acest limbaj constă din fraze simple, comenzi de monitorizare și instrucțiuni auto-explicative.

Sistemul de inteligență artificială Dendral, a fost construit în 1965. Ea a ajutat la determinarea cu ușurință a structurii moleculare a compușilor organici. Acest sistem a fost scris în Lisp.

În 1966, Weizenbaum a creat-o pe Eliza, primul partener de conversație virtual. Unul dintre cele mai cunoscute modele se numea Doctorul, care răspundea la întrebări în stilul unui psihoterapeut. Acest bot a fost implementat la compararea mostrelor de echipamente. Prima versiune a lui Eliza a fost scrisă în SLIP, lista de procesare a limbii a fost dezvoltată de Weizenbaum. Mai târziu, una dintre versiunile sale a fost rescrisă în Lisp.

Primul robot mobil programat în Lisp a fost Sheki. Rezolvând problemele programului de tampoane și senzori, gâtul s-a mișcat, a aprins și stins lumina, a urcat și a coborât, a deschis uși, a închis ușile, a împins obiecte și a mutat lucruri. Sheki s-a deplasat cu o viteză de 5 km pe oră.

În următorii 15 ani, lumea a văzut multe invenții uimitoare: Denning Sentry Robot, LMI Lambda, Omnibot 2000, MQ-1 Predator Drone, Furby, AIBO Robot Dog și Honda ASIMO.

În 2003, iRobot a inventat aspiratorul robot Roomba. Proiectat cu Lisp, acest aspirator autonom spală podele folosind algoritmi specifici. El detectează obstacolele și le ocolește.


Ce limbaj de programare folosiți pentru a dezvolta programe AI? Scrieți despre munca dvs. în comentarii sau în grupul nostru VKontakte.

Top articole similare