Как оцеляват компютърните змии? 24.08 | 10:12

Компютърният специалист от Университета "Дошиша" проф. Иван Танев разказва за света на генетичното програмиране

От Георги Георгиев

Не, тук не става въпрос за популярната игра за телефони, а за компютърно генерирани интелигентни създания, чиито възможности понякога надвишават човешките. Компютърният специалист от Японския университет "Дошиша" проф. Иван Танев ни разказва за странния свят на генетичното програмиране. Той бе гост-лектор в София по покана на "Академия за ИТ Лидери" - образователен проект на софтуерната компания Мусала Софт и Факултета по математика и информатика на Софийския университет."

 

Проф. Танев, какво представлява генетичното програмиране?

- Генетичното програмиране съдържа в себе си две ключови понятия – "програмиране" и "генетично". "Програмиране" означава разработването на работоспособни компютърни програми. "Генетично" означава, че тези компютърните програми не се правят от програмисти, а се създават автоматично от системата.

Тази автоматизация се основава на механизми, които са заимствани от природата и по-точно от нейната еволюция. Програмите еволюират така, както еволюират живите организми – автоматично, усъвършенствайки себе си чрез оцеляване и естествен отбор. Те могат да се размножават, кръстосвайки "гените" си и така след много "поколения" да се достигне до момента, в който най-добрата програма от последното текущо поколение удовлетворява заложените в началото критерии за качество на нейната функционалност.

Какво ще спечелят студентите по информатика, които се занимават с генетично програмиране?

- Този въпрос може да бъде перифразиран като ”Кога трябва да се използва генетичното програмиране"? В много случаи за проблемите, които трябва да бъдат решавани от програмите, съществува аналитичен модел, определена формула, определен алгоритъм. В този случай проблемът може да бъде решен чрез реализиране на този математичен модел от програмиста, без нуждата от генетично програмиране.

Около нас обаче има много процеси, за които не разполагаме с ясен математически модел, който да реши проблема аналитично. В този случай процесът, който трябва да управляваме, е толкова сложен, че за момента неговият модел не съществува или засега не го знаем.

В смисъл, ако влизат фактори, които са извън средата и не можем да предвидим?

- Да, или ако самата среда е неопределена, непредсказуемо променлива или шумна. Тогава не можем да разработим програма, която управлява робот, който да се държи нормално в нея. В други случаи процесът има аналитично решение, но то е толкова сложно, че за неговото аналитично решаване са нужни години изчислително време.

За да решим проблема, тогава прибягваме до генетично програмиране, което автоматично намира решение. Често то не е толкова прецизно, колкото е решението след анализиране на всички възможни комбинации, но е много по-бързо, и може да даде добро решение на даден проблем за разумно време.

Това означава ли, че когато програмата трябва да реши как да се развива, говорим за изкуствен интелект?

- Да, защото в случая само програмата знае какво трябва да направи. Ако разработваме контролер за един робот, ние можем например да кажем на системата за генетично програмиране да направи така, че той да се движи бързо. Ние даваме инструкция какво тя да направи, но не и как да го направи, тъй като не знаем какъв трябва да бъде аналитичният модел. Така роботът с помощта на еволюцията на своите програми ще намери начин да постигне целта си. Затова тук говорим за emergent intelligence, т.е. за спонтанно възникваща интелигентност в резултат от работата на системата без явната намеса на дизайнера.

Докъде сте стигнали в развитието на тези системи?

- Аз се занимавам основно с модулни роботи, състоящи от множество еднотипни сегменти, като споменатите вече роботи-змии. Разработили сме механизми, които позволяват на змията да се научи как да се движи сама максимално ефективно. Командите, които подаваме, са не към самата змия, а към моторите ѝ, които са на ниско ниво в системната йерархия. Не съществува формален механизъм, който да ни каже как да се получи бързото движение на змията като цялостен механизъм.

Т.е. змията ще се учи по метода проба-грешка?

- Точно така, като единствената обратна връзка, която тя получава, е не по какъв начин тя се движи и до каква степен тя е успяла да изпълни целта си. Отначало генерираме голям брой случайни змии, които се движат по даден начин ,ако изобщо се движат. Тези, които се движат най-добре, оцеляват, като броят им е около 10% от общата популация. След това "кръстосваме" оцелелите и получаваме нова популация. Част от новите змии има вероятност да бъдат по-съвършени от своите родители.

Така след серия от цикли ("поколения") можем да постигнем змия, която се движи с необходимата скорост, без да се интересуваме как е протекла еволюцията. Единственото, което ни интересува, е крайният резултат - бързината.

Означава ли, че тук говорим за някакъв вид дарвинизъм?

- Да, а в последно време се използва и понятието "неодарвинизъм". При него част от принципите на дарвинизма се коригират в зависимост от резултатите, получени при изследванията в областта на молекулярната биология и генетиката. Така за разлика от традиционното генетично програмиране тук мутациите могат да не са случайни. Можем да модифицираме тази част на генома (компютърния код), която е дефектна и да запазим останалите качествени части.

От колко години съществува генетичното програмиране?

- Генетичното програмиране се ражда в началото на 1990-те години, така че можем да говорим за една зряла дисциплина. Аз лично се занимавам с генетично програмиране от 1998 г.

Съществуват ли вече практически приложения на технологията?

- Да, съществуват и най-интересното е, че много от тези приложения са с много по-добро качество от създадените от човека. Например има разработени цифрови и аналогови схеми като филтри на електрически сигнали, които са създадени от генетични програми и техните характеристики са по-добри от създадените от човека по отношение на брой транзистори, размери, икономичност и пр.

Но тук има важен проблем – дизайнът на системите, създадени от човек, следват някаква разбираема логика. Ако обаче разгледаме дизайна, създаден по метода на цифровата еволюция, ние често не можем да разберем логиката на работата ѝ. Схемата работи, но остава неясно как и защо тя работи. Също както в природата – не знаем как човешкия геном работи, макар да познаваме отделните му елементи.

Нещо повече, ако се окаже, че имаме нужда от някаква промяна във функциите на неразбираема генетична програма, не знаем как да я променим по адекватен начин. Единственото, което можем да направим, е да стартираме еволюцията отначало, която да доведе до нужното (ново) решение. Еволюцията намира решения, които противоречат на логиката ни, и в същото време могат да са много ефективни.

По време на техническите революции машината до голяма степен отмени човека в тежкия физически труд. Мислите ли, че в бъдеще изкуственият интелект ще направи излишно полагането на усилия при решаването на задачи?

- Специалисти от индустрията смятат, че генетичното програмиране от известна гледна точка може да се приема като black magic (черна магия). Но все пак за да бъде разработена системата за генетично програмиране, са нужни програмисти и то доста добри, тъй като в случая става въпрос за по-високо ниво на програмиране.

Имате ли усещането за живо при работа с генетично програмирани системи?

- Ако еволюираме например една компютърна змия, наистина можем да видим как тя "оживява". В началните етапи тя е неподвижна и тромава. С напредването на еволюцията тя започва да се движи все по-бързо и плавно, тъй като се учи как да го постигне. Ако се абстрахираме от факта, че става дума за множество поколения змии и разгледаме процеса като случващ се на една и съща змия, можем да говорим за създаването на подобен ефект.

Кой тип роботи ще се наложат в бъдеще – сложните единични роботи, или просто устроените, които обаче действат в система (swarm intelligence)?

- Swarm intelligence също е важно направление в роботиката. Основното достойнство на този вид системи е, че при тях количеството може да се превърне в качество. Тук можем да постигнем критичен брой роботи, който да доведе до възникването на нови качества на системата, които са нещо повече от простия сбор на качествата на отделните елементи. Правили сме опити със софтуерни агенти, които работят в екип. Оказва се, че комуникирайки помежду си те успяват да постигнат цели, които са невъзможни за отделните единици. Ако вместо агенти, използваме системи от роботи (collective robotics), ефектът ще е същият.

Кой е пробивът в роботиката в последно време, за който не сте вярвали, че ще се случи в обозримо бъдеще?

- Трудно ми е да кажа. Свикнали сме да вярваме, че това, което можем да постигнем, се ограничава единствено от нашето въображение. Дори в областта на роботиката. Може би ще бъде наистина трудно да накараме роботите да имат самосъзнание – въпрос, с който навлизаме и в областта на философията. Този пробив може би няма да може да бъде постигнат, или това няма да стане поне в близко бъдеще.

Водещи

Най-четени