Dirbtinis intelektas, mašininis mokymasis ir gilieji tinklai: kas slepiasi už šių savokų?

Technologijos Dirbtinis intelektas, mašininis mokymasis ir gili...

Dirbtinis intelektas buvo pradėtas tyrinėti po Antrojo pasaulinio karo, kai keletas pionierių pradėjo klausti, ar kompiuteriai galės mąstyti – ir šio klausimo iki šiol nesame atsakę.

Platus dirbtinio intelekto apibrėžimas yra „automatizuoti būdai atlikti intelektualines užduotis, kurios įprastai atliekamos žmonių“. Dirbtinis intelektas aprėpia mašininį mokymąsi ir gilųjį mokymąsi, bet taip pat ir daugybę kitų dalykų, kurie nėra priskiriami mokymuisi. Taisyklės ankstyvose šachmatų programose būdavo įrašomos programuotojų ir nebuvo laikomos mašininiu mokymusi, bet priklausė dirbtinio intelekto tyrimams. Ilgą laiką ekspertai tikėjo, kad žmogaus lygio dirbtinis intelektas gali būti pasiektas įrašant pakankamą skaičių aiškių taisyklių, skirtų apdoroti naują informaciją.

Metodas, vadinamas simboliniu dirbtiniu intelektu, ir buvo pagrindinė dirbtinio intelekto tyrimo srovė nuo šeštojo iki devintojo dešimtmečių. Devintajame dešimtmetyje jis pasiekė didžiausią populiarumą kaip ekspertinės sistemos. Nors simbolinis dirbtinis intelektas galėjo išspręsti gerai apibrėžtas logines problemas kaip žaidimas šachmatais, pasirodė, kad to neužtenka daugumai realaus pasaulio problemų, kaip nuotraukų klasifikavimas ar balso atpažinimas ir kalbos vertimas. Tai sukėlė antrąją dirbtinio intelekto žiemą. Dėl šių priežasčių simbolinis dirbtinis intelektas buvo pakeistas mašininiu mokymusi (machine learning, ML), o per pastaruosius dešimt metų – dar ir giliuoju mokymųsi su neuroniais tinklais.

Pirmoji programuotoja ir Turingo testas

Mašininio mokymosi mintis atsirado seniai – pirmoji programuotoja, sukūrusi algoritmus Babbage'o analitinei mašinai 1842-siais, svarstė, kad galbūt mašinos vieną dieną galės apdoroti ne tik skaičius, bet ir kitus objektus – tarkime, sąryšius tarp skirtingo dažnio garsų ir gebės sukurti bet kokio sudėtingumo ir ilgio muzikos kūrinius.

Maždaug po šimto metų ši mintis buvo panaudota Alano Turingo straipsnyje „Skaičiavimo mašinos ir intelektas“. Šiame straipsnyje jis taip pat aprašė Turingo testą, skirtą nustatyti mašinos gebėjimą rodyti protingą elgesį, kuris būtų neatskiriamas nuo žmogaus. Turingas pasiūlė, kad žmogus turėtų vertinti natūralius pokalbius tarp mašinos ir žmogaus, ir mašinos, kuri gali generuoti atsakymus panašius į žmogaus. Vertintojas turi žinoti, kad vienas iš partnerių pokalbyje yra mašina, dalyviai yra atskirti vienas nuo kito, o pokalbiai apriboti rašytu tekstu. Jei vertintojas negali atsakyti, kuris iš dalyvių yra kompiuteris, testas yra praeitas.

Mašininis mokymasis

Mašinos, pagrįstos simboliniu dirbtiniu intelektu, negalėjo mokytis iš naujų duomenų. Tai paskatino atsirasti tyrimų sričiai, vadinamai mašininiu mokymusi, kuris apibrėžiamas kaip „kompiuterio apmokymas iš duotų duomenų“, užuot jį tiksliai užprogramavus. Nors mašininis mokymasis atsirado tik dešimtajame dešimtmetyje, jis greitai tapo daugiausiai naudojama dirbtinio intelekto atmaina. Tą nulėmė padidėjusios duomenų bazės, galingesni kompiuteriai. Mašininis mokymasis yra artimas statistikai, bet dažniausiai daug labiau empirinis ir turi mažiau matematikos.

Mašininis mokymasis skiriasi nuo klasikinio programavimo tuo, kad žmogus paduoda duomenis, atsakymus ir gauna taisykles, kurios vėliau gali būti naudojamos naujiems duomenims apdoroti. Tuo tarpui klasikiniame programavime žmogus paduoda taisykles, duomenis ir gauna atsakymus.

Mašininis mokymasis skirstomas į dvi rūšis: prižiūrimą (supervised) ir neprižiūrimą (unsupervised). Pirmuoju atveju bent dalis duomenų yra sužymėti ir iš to atrandamos taisyklės, kaip prognozuoti žymes naujiems duomenims. Prižiūrimo mokymo problemoms priklauso klasifikacija (tarkim, ar naujas pacientas turi ligą, palyginus su ankstenių pacientų duomenimis) arba regresija (tarkim, žinant kitų nekilnojamo turto vienetų kainas ir plotus, nuspėti, kokia bus kaina, kai žinomas plotas).

Antruoju (neprižiūrimo mokymosi) atveju duomenys neturi sužymėjimo, todėl galima atlikti tik tokius veiksmus, kaip grupavimas arba taisyklių atradimas. Grupavimas yra naudingas segmentuojant pirkėjus pagal jų pirkimo įpročius, taisyklių atradimas gali padėti parodyti, kad pirkėjai, kurie perka vieną produktą, turi tendenciją pirkti ir kitą produktą.

Neuroniniai tinklai

Neuroniniai tinklai sudaryti iš daugybės paprastų ir tarpusavyje sujungtų procesorių, vadinamų dirbtiniais neuronais. Šie dirbtiniai neuronai savo struktūra šiek tiek primena natūralius neuronus dėl savo gaunamos, transformuojamos ir perduodamos informacijos. Nors dalinai buvo išvystyti žiūrint į tikras smegenis, gilūs neuroniniai modeliai su jomis turi mažai bendro. Nėra jokių įrodymų, kad smegenyse yra panašių struktūrų ar mechanizmų, kurie naudojami giliojo mokymosi metode, todėl verčiau žiūrėti į matematinį modelį, kuris išmoksta duomenų tarpusavio bruožus.

Pirmi bandymai sukurti gilius neuroninius tinklus

Pirmos mintys panaudoti neuroninius tinklus kaip žaislinius modelius kilo dar šeštajame dešimtmetyje, bet metodo išvystymas užtruko gerokai ilgiau – keletą dešimtmečių, nes trūko efektyvaus būdo treniruoti didelius tinklus.

Lūžis įvyko devintajame dešimtmetyje, kai keletas žmonių nepriklausomai atrado grįžtamojo perdavimo (backpropagation) algoritmą, ir pradėjo jį naudoti neuroniniams tinklams. Pirmas sėkmingas panaudojimas įvyko 1989 m. „BellLabs“, kai Yannas LeCunas panaudojo konvoliucinius tinklus kartu su grįžtamuoju perdavimu atpažinti ranka rašytiems skaičiams. Šie tinklas buvo pavadintas „LeNet“ ir naudojamas Jungtinių Valstijų paštuose automatizuoti pašto kodų skaitymą.

Dar vienas lūžis atsirado apie 2010 m. ir buvo nulemtas kelių įvykių: Fei-Fei Li, dirbtinio intelekto profesorius Stanforde, sukūrė „ImageNet“ duomenų bazę su 14 milijonų sužymėtų paveiksliukų, kurie galėjo būti panaudojami tinklų treniravimui; per kelis metus po to grafinių procesorių greitis stipriai padidėjo ir tai leido mokyti konvoliucinius tinklus be vadinamojo „pradinio apmokymo sluoksnis po sluoksnio“ (layer by layer pretraining). Tai leido giliam mokymuisi vystytis ir tokie konvoliuciniai tinklai kaip „AlexNet“ laimėjo keletą tarptautinių paveikslėlių klasifikavimo konkursų 2011 m. ir 2012 m.

Gilūs neuroniniai tinklai

Gilus mokymasis yra mašininio mokymosi atšaka, kur kiekvienas sluoksnis išmoksta vis abstraktesnius duomenų bruožus. Jis vadinamas giliu, nes turi daugiau nei kelis sujungtus neuronų sluoksnius. Modernus gilusis mokymasis dažniausiai turi tarp dešimties ir kelių šimtų sluoksnių, kurie išmoksta bruožus tiesiai iš duomenų.

Dabartiniai giliųjų tinklų pasiekimai aprėpia beveik žmogaus lygio paveikslėlių klasifikaciją, kalbos atpažinimą, vairavimą, pagerintą mašininį vertimą tarp kalbų, pagerintą rezultatų paiešką, Go žaidimą virš žmogaus sugebėjimų.

Vaizdo atpažinimas – konvoliuciniai tinklai

Konvoliuciniai tinklai (convolutional networks arba ConvNets) yra skirti apdoroti duomenims eilutėse arba matricose, tarkim spalvotiems paveikslėliams, kurie sudaryti iš dviejų dimensijų erdvėje su trimis spalvų intensyvumo kanalais. Dauguma surenkamų duomenų yra sudaryti iš keliamačių eilučių: vienos dimensijos eilutės signalams ir sekoms, dviejų – paveikslėliams ir garso spektogramoms, trijų – video arba tūriniams paveikslėliams. Konvoliuciniai tinklai pagrįsti keturiomis idėjomis: vietinėmis jungtimis, bendrais svoriais, raiškos sumažinimu ir daugybės sluoksnių naudojimu. Šie tinklai būvo įkvėpti 1986 metų tyrimo, kuriame buvo nagrinėjamas vaizdo apdorojimas katės smegenyse. Buvo atrasta, kad egzistuoja persiklojantys regionai, padengiantys visą regėjimo lauką, kurie veikia kaip filtrai, kurie apdoroja paveikslėlius, kurie tada perduodami į kitus sluoksnius.

Informacijos laike apdorojimas – rekurentiniai tinklai

Anksčiau paminėti tinklai turi bendrą savybę – jie neturi atminties. Kiekvienas paduodamas pavyzdys apdorojamas atskirai ir būsena nėra išsaugoma tarp jų. Dėl šios savybės, norint apdoroti seką ar laike išsidėsčiusius duomenis, reikia parodyti visus duomenis per vieną kartą.

Tarkime, kad dabar, skaitant šį tekstą, mūsų smegenys jį apdoroja kiekvieną kartą, kai mūsų akys pajuda ir perskaito keletą žodžių, laikydamos prieš štai perskaitytą informaciją atmintyje. Biologinės sistemos lengvai apdoroja nuolat atnaujinamą informaciją, laikydamos atmintyje seną. Rekurentiniai tinklai veikia pagal tą patį principą, tik yra stipriai supaprastinta versija.

Skatinamasis mokymasis (reinforcement learning)

Skatinamasis mokymasis yra retai sutinkamas kitur, nei akademinėje aplinkoje, nors po „Google“ „DeepMind“ gebėjimo žaisti „Atari“ žaidimus ir vėliau laimėjimų žaidžiant „Go“, jis pritraukia daugiau dėmesio. Šiame mokymosi tipe agentas gauna informaciją apie aplinką ir išmoksta pasirinkti veiksmus, kurie maksimizuoja atpildo funkciją.

Tai ypač paprasta žaidimuose, kur neuroninis tinklas gauna informaciją apie tai, kas vyksta ekrane ir koks yra taškų skaičius ir per laiką išmoksta elgtis taip, kad maksimizuotų taškų skaičių. Nors kol kas mažai taikomas, laikui bėgant šitas metodas gali rasti platų pritaikymą: autonominiams automobiliams, robotams, resursų paskirstymui ir pan. Norėdamos tai paskatinti, keletas firmų yra išleidusios dirbtines aplinkas eksperimentams – tarkime „Microsoft“ padarė specialią „Minecraft“ aplinką testavimui. Pagrindinė likusi problema, kad neuroniniam tinklui vis dar reikia daugybės pavyzdžių palyginus su žmogumi.


Šaltiniai

 

Chollet, F. Deep learning with Python. (2018).

LeCun, Y., Bengio, Y. & Hinton, G. Deep learning. Nature 521, 436–444 (2015).

AlphaGo Zero: Learning from scratch. DeepMind Available at: https://deepmind.com/blog/alphago-zero-learning-scratch/. (Accessed: 28th January 2018)

 

Techo naujienos į Jūsų el. pašo dėžutę: