За да направим изпита краен, ще ограничим световете до краен брой. Но дори само за един свят изпита би бил безкраен, затова ще добавим изисквания за ефективност. Ще кажем за всеки от световете колко време (такта) даваме на устройството за обучение и какъв успех трябва да постигне след като се е обучило (например в следващите сто такта съотношението на победи към загуби да е поне 9 към 1). Още ще ограничим времето и паметта, които устройството ще може да използва на една стъпка. Тези изисквания не трябва да са твърде крути, защото нашия AI няма да ги удовлетвори и ще пропадне на изпита.
Ще предполагаме още, че в световете, които сме подбрали за изпита няма фатални грешки. Ако имаше, то търсеният AI би могъл да направи такава грешка докато се обучава и да пропадне на изпита. Разбира се, ако този AI живее в този свят много пъти, то средно ще постигне една добра оценка, но ние искаме да го пускаме само по веднъж на свят.
Реалният свят не отговаря на това изискване, защото може да си Айнщайн, но да бъдеш изяден от някоя мечка, още преди да си осъзнал теорията на относителността. Т.е. да допуснеш фатална грешка преди да си се обучил. Пример за свят без фатални грешки е, ако нашето устройство играе шах срещу някакъв противник. След края на всяка партия започва следваща. В този свят AI може да загуби много партии, но това няма да се отрази на следващите.
След като направихме изпита краен, то сега нашият алгоритъм може да започне да генерира програмите една по една, да подлага всяка на изпита и да извежда тези, които са го издържали. Ще считаме, че нашият алгоритъм изрежда програмите по сложност (т.е. по дължина). Т.е. първо ще изведе най-простата (късата) програма, от тези които издържат изпита. Дали тази програма ще е AI или нашия AI ще се генерира по-късно? Тук трябва да отбележим, че не всички програми издържали изпита са AI. Например, ако напишем програма специално за световете,
|
върху които тестваме, то тя ще мине, но няма да е AI. Този проблем го имаме и с кандидат студентските изпити. На тях минават много хора, които са зазубрили всички типове задачи, но това не са интелекти, а зубрачи.
Ще считаме, че световете които сме включили в изпита са достатъчно много и достатъчно разнообразни (по-големия брои задачи не утежнява изпита за преподавателя, защото повечето кандидати ще пропаднат още в началото). При това положение ще се отсеят почти всички програми, които не са AI. Следователно, първата (най-простата) която ще се изведе ще е AI, а тази която е написана само за световете от изпита, ще е по-сложна и ще се изведе по-нататък.
Значи вече разполагаме с алгоритъм за откриването на AI! Значи ли това, че всеки сносен програмист може да напише програма по него, да я пусне, да почака малко и тя ще му изведе търсения AI. Отговорът е да, така е, но времето което ще се наложи да почакате ще е доста (да кажем сто хиляди години). Причината за това се крие в явлението наречено комбинаторен взрив. Не е трудно да се напише програма, която се очаква да спре след смъртта на вселената (например, прибавяйте единица към десет байтов брояч докато не се препълни).
Горното означава, че описаният алгоритъм е напълно безполезен, но не така стои въпросът с дефиницията на AI. Сега след като знаем какво е това AI можем да се опитаме да го построим директно и да използваме алгоритъма, за да се убедим, че това наистина е AI.
След като нашето устройство е издържало изпита във всички тестови светове, можем да го пуснем и в нашия (реалния) свят. Разбира се, то няма да е готово веднага да премине през теста на Тюринг, защото в най-добрият случаи зад завесата ще се чуе само едно гукане. Нашето устройство ще се нуждае първо от възпитателки и гувернантки, които да го научат на добри обноски. Учителите ще трябва да го поощряват като подават единица на шината му - победа и да го наказват чрез шината загуба. Така нашия AI ще се труди прилежно стараейки се да получи максимално много поощрения и минимално наказания. Може би тогава няма да програмираме компютрите, а ще ги възпитаваме и обучаваме. И може би един ден, след като ги възпитаме и обучим, ще станем излишни.
|