 Mišljenje je zapleten proces in stroji, ki nam pomagajo k boljšemu razumevanju
te zapletenosti, nosijo ime inteligentna orodja. Ljudje smo spontano razvili zapletene
metode interakcije s kompleksnim svetom in ravno te metode moramo sedaj uporabiti
pri izdelavi inteligentnih strojev. Vse kaže, da bo razvoj mislečih strojev zahteval
nove pristope v programskem in strojnem smislu. Povsem mogoče je, da bodo temeljili
na nanotehnologiji.
Sposobnosti današnjih računalnikov še vedno bistveno zaostajajo za človeško inteligenco, vendar moramo upoštevati, da "naravni proces računanja" oziroma kar "naravno računanje",
kot ga bomo v nadaljevanju imenovali, še zdaleč ni doseglo svoje zgornje meje razvoja.
Dosedanji prijemi skupaj s prihajajočimi idejami obljubljajo zelo pomemben napredek
v naslednjih nekaj letih. Vizija "naravnega računanja" kot novega pojma, ki ga predstavlja
članek, temelji na razumevanju delovanja človeškega mišljenja in osnovnih bioloških
principov delovanja celice.
Uveljavljeni pristopi na področju umetne inteligence
Na področju umetne inteligence danes uporabljajo več pristopov, s katerimi poskušajo
modelirati procese naravnega razmišljanja. Ta vključujejo: [1] - semantična omrežja,
[2] - Bayesova omrežja, [3] - celularne avtomate, [4] - nevronska omrežja (kot najpomembnejša),
[5] - ekspertne sisteme, poleg tega pa se v programiranju pogosto uporablja še [6]
- proces naravnega izračunavanja, ki programerjem omogoča generiranje kode, za reševanje
čedalje bolj kompleksnih problemov.
Osnovna načela zgoraj naštetih že uveljavljenih pristopov k umetni inteligenci,
so tudi temelj za proces naravnega izračunavanja.
Najprej se osredotočimo na ekspertne sisteme. To so računalniški sistemi,
ki rešujejo določene probleme in so t.i. eksperti na nekem področju. Od njih torej
zahtevamo sposobnosti sklepanja in presoje ter zmožnost obdelovanja nepopolnih podatkov.
Sestavljeni so iz baze podatkov, mehanizma sklepanja in uporabniškega vmesnika.
Ekspertni sistemi izražajo logiko človeškega mišljenja z drevesastimi strukturami,
kar je za manjše sisteme popolnoma zadovoljivo. Ko dvigujemo kompleksnost strukture,
pa ta pristop doseže svoje meje. Asociacije, abstrakcije in negotovosti so morda
najpomembnejše lastnosti človeškega talenta za zapletenost – le teh pa z ekspertnimi
sistemi ne moremo ustrezno simulirati.
Nevronska omrežja predstavljajo osnovo procesa naravnega izračunavanja.
V resnici nevronska omrežja simulirajo osnovne funkcije možganov oziroma nevronov
in medsebojnih povezav med njimi. Vhodni signali so ponavadi povezani v to omrežje
in se nato širijo po njem. Kako se širijo lahko kontroliramo z utežmi (ali v žargonu
ponderji) povezav med vozlišči. Uteži lahko avtomatično nastavljamo s pomočjo
posebnih procedur. Pri nalogah, kot je npr. prepoznavanje obrazov, ki jih je težko
reševati zgolj z logičnimi metodami, se pokaže prava moč nevronskih omrežij. Izjemno
kompleksne naloge zahtevajo prepletanje velike količine zapletenih pojmov, ki avtomatično
nastajajo, kakor se to dogaja v naših možganih. To bi bilo ekvivalentno ponovitvi
evolucije naših možganov iz prej neinteligene snovi.
Semantična omrežja in (semantična) Bayesova omrežja imajo določene
podobnosti z nevronskimi omrežji. Prav tako namreč uporabljajo verjetnostno logiko.
Vendar so tukaj vozlišča (in v določenih primerih povezave) povezane s posameznim
semantičnim izrazom. Slabost v primerjavi z nevronskim omrežjem je, da moramo omrežno
strukturo ustvariti ročno, vendar pa jo lahko kasneje preverjamo glede na njeno
verodostojnost in po možnosti uvedemo popravke.
Programski jeziki in celularni avtomati
Najbolj običajen način kreiranja umetne inteligence je, da preprosto napišemo
računalniški program s programskim jezikom kot sta npr. C++ ali Java. Tipični primeri
so iskalniki po besedilu, razni filtri, ki iz slik izločajo določene objekte in
podobno. Glavna naloga pri pisanju programov je izluščiti najpametnejše algoritme
in jih nato na najboljši možni način združiti. Programerji to počnejo ročno, tako
da je od njih odvisno ali bo program deloval (optimalno) oziroma inteligentno. Primer
inteligentnega procesa je prav gotovo, če nek algoritem v sliki ali v računalniškem
čipu najde (točno definirano) napako, ali pa če računalniški program premaga svetovnega
šahovskega prvaka.
Skorajda nemogoče pa je napisati program z določeno stopnjo kompleksnosti brez
napak in tako tudi ni mogoče natančno napovedati kakšno operacijo bo tak program
v določenem koraku izvedel. Ravno zato je potrebno programe očistiti napak, testirati
njihov učinek in to ponavljati v nedogled. Če bi morali programerji pisati programe
v strojnem jeziku, bi zelo malo programov dočakalo svoj izid. Današnji moderni programski
jeziki omogočajo programerjem, da pišejo kodo na višji stopnji - čedalje bolj na
stopnji kot razmišljajo in čedalje manj na stopnji na kateri procesor dejansko deluje.
Posledično so moderni programski jeziki orodje, ki reflektira človeško mišljenje
in zato določajo proces naravnega izračunavanja.
Če človek lahko naravno uči računalnik izvajanja določenih operacij, ga brez
pomislekov lahko imenujemo naravno razmišljajoči stroj. Tudi če pogledamo v zgodovino
programskih jezikov, vidimo, da so se ti razvijali ravno v smer naravnega razmišljanja.
Objektno orientirani in drugi moderni programski jeziki v resnici uporabljajo mnoge
naravne pojme, kot so razredi in dedovanje.
Nazadnje omenimo še pojem celularnega avtomata. Ideja celularnega stroja
je povsem naravna: sosednji delci vplivajo eden na drugega. Običajno uporabimo veliko
število t.i. celic razporejenih v pravilno geometrijsko obliko. Ponavadi imajo celice
tudi nepovezana območja, ki so pod vplivom svoje okolice. Celularni avtomati se
tako lahko obnašajo kot primitivna omrežja z izjemno kompleksnim dogajanjem znotraj
njih. V načelu lahko z njimi izvedemo katerokoli izračunavanje.
Fraktalni stroji in SSS omrežja
Če združimo zgoraj omenjene metode ali vsaj nekatere njihove dele v enotno tehnologijo,
lahko na ta način združimo tudi njihove posamezne močne plati. V novem sistemu je
povsem mogoče njihovo skupno moč uporabiti za izdelavo zelo močnega stroja. Tovrsten
primer je »samo-organizirano, semantično, samo-podobno omrežje«, na kratko SSS omrežje.
SSS omrežja so hierarhična, vsebujejo znanje o objektih, njihovih lastnostih in
njihovih medsebojnih povezavah. Vsebujejo tudi informacijo, kako reagirati, ko so
določeni objekti postavljeni v realni svet. Z »realnim svetom« imamo v mislih spreminjajoč
se vhodni signal, ki vpliva na naše omrežje. Vhodni signal je lahko slika, tekst
ali kakršna koli druga oblika kompleksne strukture.
Vozlišča in povezave nosijo semantični pomen (podobno kot pri semantičnih omrežjih)
in proceduralne dodatke, ki jih imenujemo Janusi (Janus je bil bog z dvema obrazoma).
Nekatere povezave predstavljajo logiko ekspertnih sistemov (AND, OR, in druge bolj
kompleksne funkcije). Povezave in vozlišča lahko nosijo uteži, ki jih lahko avtomatično
učimo (podobno kot pri nevronskih omrežjih). Povezane so lahko z drugimi povezavami,
med njimi pa lahko vpeljemo tudi odvisnosti (podobno kot pri Bayesovih omrežjih.)
Najbolj nenavadna lastnost SSS omrežij je kombinacija hierarhične strukture in
velikega števila proceduralnih priponk. To določa obliko celularnih avtomatov: aktivnost
Janusa je odvisna od vznemirjenosti pripetega vozlišča, čigar stanje pa je odvisno
od števila stanj sosednjih vozlišč, od Janusov in od povezav. V SSS omrežjih vozlišča
in povezave sooblikujejo »podomrežja«. Če ta podomrežja obravnavamo kot vozlišča
s povezanimi stanji, končamo pri hierarhičnem celularnem avtomatu s (samo)podobnostmi
v njem, kar imenujmo »fraktalni stroj«.
Ko tako omrežje reagira na kompleksne vhodne signale, pride v igro dedovanje
(kot ga razumemo z vidika modernih programskih jezikov): vhodne signale nasledijo
Janusi iz vozlišč ali povezav, kamor pač ti najbolje sodijo. To dedovanje lahko
pojmujemo kot aktivnost proceduralnih dodatkov. Nekateri Janusi predstavljajo klasifikacijo
procesov, ki primerjajo razrede in vhodne signale med seboj, medtem ko drugi Janusi
delujejo kot omrežje ali pa grupirajo vhodne objekte (jih segmentirajo). Janus transformira
začeten nestrukturiran signal v hiearhično urejeno omrežje. Struktura vhodnega omrežja
postaja vse bolj podobna SSS omrežju. Vhodna slika je tako npr. na začetku sestavljena
samo iz pikslov. Med samim delovanjem procedure se počasi oblikuje hiearhična omrežna
slika, v kateri so prepoznane oblike hiš, sosednjih objektov, ulic – kar navsezadnje
pripelje do prepoznavanja mesta. Lastnosti so prirejene objektom in relacijam. V
SSS omrežjih so te strukture izražene kot ene od več potencialno možnih.
Slika samoorganizirajočega, semantičnega, samopodobnega (SSS) omrežja . Takšna
omrežja vsebujejo znanje o objektih, njihovih lastnostih, medsebojnih relacijah,
tako kakor tudi znanje o procesiranju in ravnanju z razredi objektov in relacij,
kadar naletijo na kompleksne vnose. Hierarhična struktura objektov vsebuje omrežja
manjših objektov, ki imajo vgrajene algoritme in so prikazani kot Janusi (glave
z dvema obrazoma). SSS omrežja uporabljajo aktivne Januse za strukturiranje in klasificiranje
sestavljenih vnosov in za razvrščanje razvijajočih se objektov in njihovih medsebojnih
relacij. Janusi se aktivirajo, kadar se prirejeni objekti in relacije vzbudijo preko
določenega praga. Posamezne operacije so odvisne od lokalne strukture omrežja. Delovanje
v omrežju in strukturiranje vnosov spreminja informacijo v znanje in - vsaj v določeni
meri - predstavlja avtomatizirano »razumevanje«.
Izračunanje na mah
Za trenutek poglejmo na žive organizme kot na vrsto inteligentnih »računalnikov«,
ki se avtomatsko odzivajo na spremembe v svojem okolju tako, da zaganjajo nekakšne
»programe«. Očitno je, da so naši možgani zmožni početi prav to. V času naših življenj
se naučimo ogromne količine različnih obnašanj in strategij, ki jim ustrezajo razredi
situacij. Samo če pripišemo vsaki situaciji nek razred (če jo klasificiramo), se
bomo začeli (»v afektu« oziroma »na mah«) odzivati s strategijo, ki najbolj ustreza
situaciji. Ostale strategije tačas spijo, so neaktivne. Pomembno je videti, da so
poleg strategij za akcijo, tudi različne metode določanja razreda okoliščin v katerih
smo se znašli, same prav takšne strategije, ki so ponavadi tudi podložne enakemu
razvrščanju. Na primer s pomočjo klasificiranja se je naš duh sposoben koncentrirati
na določene vidike reči, ki mu je bila predočena in je podložna nadaljnjemu (še)
podrobnejšemu razvrščanju.
Nekaj zelo podobnega je res za preproste žive organizme in tudi za celične sisteme.
Na DNK kodo bi lahko gledali, kot da vsak segment DNK predstavlja program, ki predstavlja
strategijo. V tem smislu geni (relevantni del DNK molekule) predstavljajo posamezne
programe.
Branje in prevajanje genetske kode v beljakovine pomeni v računalniškem jeziku
aktiviranje posameznih programov. Proteini predstavljajo izraženi
gen in dejansko opravljajo določene naloge. Podobno kot pri »obnašanju na mah«,
opisanem zgoraj, v določenem trenutku ostane večina strategij (v tem primeru genov)
neuporabljenih. Posamezni geni se izrazijo le, če okoliščine v katerih se znajde
celica, aktivacijo zahtevajo. To je razvrščevalni proces, ki sproži delovanje na
podoben način, kot smo to videli pri vedenju na mah.
Pri prepisu genetske kode v izgradnjo proteina je potrebno veliko število korakov.
V procesu izdelave ciljnega proteina gre lahko narobe mnogo reči. Na primer če manjkajo
molekule in proteini potrebni za nadaljnje korake, ciljnega proteina celica ne more
pravilno zgraditi. Tu nedvomno opazimo inteligentno obnašanje, saj nepravilno zgrajeno
končni protein celica zavrže. Graditev proteina, od genetskega načrta do končnega
izdelka, lahko torej obravnavamo kot klasifikacijski proces. Vendar ne le to. Ker
je tudi nekaj ostalih proteinov vpletenih v proizvodnjo izbranega obravnavanega
proteina, sistem predstavlja kompleksno omrežje. Stanje gena (ali njegove aktivacije)
je odvisno od stanja (aktivacije) drugih genov.
Generično ali fraktalno izračunavanje
Proteini v celici so del procesov, imenovanih prehodi. Zanimivo je, da je ponavadi
po nekaj proteinov del prehoda in da je ena vrsta proteinov lahko del več prehodov.
To je ekvivalentno računalniškemu podprogramu, ki je lahko sestavni del več različnih
programov. To velja za enostavne podprograme, kot je na primer ukaz »kopiraj«. Ta
ukaz lahko uporabimo na celi vrsti objektov, na slikah, besedilih ali kar celih
dokumentih. V splošnem pa podprogram ne more uporabljati več različnih programov.
Če isti protein ne bi mogli uporabiti pri več prehodih, potem bi morali imeti
svojo množico beljakovin za vsak prehod in naš genetski kod bi bil za velikostni
razred večji. Enako velja za računalniške programe. Če bi ne bilo podprogramov,
bi jih morali vedno znova izpisati v osnovni programski kodi. Dolžino programov
tako z uporabo podprogramov zelo skrajšamo. Raznolikost programov izvira iz raznolikosti
kombiniranja podprogramov v programe. Sumimo, da je evolucija šla isto pot. Da so
geni generični, torej da je več genov pravzaprav kombinacija drugih genov. Kako
bi se lahko drugače tako kratka DNK koda izrazila v tako kompleksnem pojavu, kot
je človeško bitje? Odgovor je generično procesiranje.
Tudi za računalniške programe velja enako. V preteklosti so bili programi formulirani
tako, da so izpolnjevali neko vnaprej znano nalogo. V prihodnosti bi utegnili biti
formulirani na generični način. Tako bodo njihove komponente lahko uporabne tudi
v drugih programih. Če bi bili (pod)programi formulirani na ta način, da bi jih
bilo mogoče kombinirati z drugimi programi, potem bi lahko zapletene naloge obvladali
s kombinacijami obstoječih – in ne s pisanjem novih programov. Bogastvo možnosti
novega programa je rezultat bogastva vseh možnih kombinacij.
Mislimo in verjamemo, da bo v prihodnosti ta lastnost bistvena za obvladovanje
zapletenih računskih nalog. Prihodnji iskalniki bodo morda analizirali tako slike
kot besedila, dokumente in vse druge vrste datotek. Če je naloga preprosta in je
obe analizi mogoče narediti neodvisno, potem je problem rešljiv na konvencionalni
način. Če se posamezni deli teksta nanašajo na posamezne dele slike, kot je to običajno,
potem postane skupna analiza obeh (slikovne in tekstovne komponente) nujna. Sodelovanje
je precej lažje, če imajo programi podobno strukturo, kakor je lažje tudi sodelovanje
med ljudmi ki govorijo isti jezik. Poenostavitev vmesnikov naredi vso razliko. Če
ljudje govorijo isti jezik, prevajalcev ne potrebujejo.
Enostavni ukaz »kopiraj« v operacijskem sistemu računalnika, je uporaben v več
hierarhijah. Znak, besedo, sliko, besedilo, dokument ali mapo – vse te je mogoče
kopirati. V živi celici je generična struktura prav tako prisotna na več nivojih.
Proteini sestavljajo posamezne prehode, prav tako so del celotnega funkcioniranja
organizma. V naših možganih je koncept podobnosti uporabljan praktično povsod in
na vseh nivojih. Podobni se nam lahko zdita dve sliki, dve besedi sta lahko sinonima,
dve besedili imata lahko podoben pomen. Tak sistem, ki na več področjih generično
uporablja nek koncept, imenujemo »fraktalni« ali »samopodobni« sistem.
Pričakujejo, da bo kmalu mogoče izluščiti pomen iz zapletenih vhodnih podatkovnih
oblik, ne glede na obliko v katero je zavita vsebina. Računalniki bodo sicer »razumeli« večpredstavne dokumente na dokaj preprost način, toda že dovolj, da bodo
koristen pomočnik človeku.
Priredba članka: "Will
machines start to think like humans? - Artificial versus natural Intelligence";
Europhysics News (2002) Vol. 33 No. 2. (priredila: Marjan Grilj in Tomaž
Kristan) |