Изкуственият интелект е не просто изключително популярно достижение на информационните технологии с голяма културна значимост, но и технология, която често се среща в обявите за IT работа в DEV.BG. Затова днес решихме да се гмурнем в дълбините на AI и да разберем до каква степен публичната представа за AI отговаря на реалността и как всъщност се прилага изкуственият интелект в работната среда?
AI, AGI и защо Терминаторът все още е приказка
На първо място е важно да установим какво е това “AI” в общественото съзнание, съществува ли то наистина и, ако не, има ли вероятност то да се появи естествено с развитието на други технологии.
Ако използваме Терминатор като базисна отправна точка, то тамошният смъртоносен Skynet, който се явява злодей в света на филма, е класически пример за т.нар. Artificial general intelligence, още познат като “силен” изкуствен интелект. Това е най-общо казано етапът, в който даден “интелигентен агент” (сиреч всичко, което е в състояние да възприема и осмисля заобикалящата го среда) достига нивото на независимо разбиране и действие на нивото на човешко същество. Важно е да се маркира и фундаменталната разлика между “силния” изкуствен интелект и слабият такъв – слабият е в състояние единствено да симулира човешко поведение, докато силният е ефективно неразличим от разсъждаващ човек.
На базата на тази квалификация, вероятно на всички ни става ясно, че такова нещо (все още) не съществува. Няма модерен изкуствен интелект, който да е успял да изпълни изискванията, за да бъде дефиниран дори като “слаб” AI. Основният начин за оценяване е тестът на Тюринг. Кръстен на брилянтния британски математик Алан Тюринг, този тест в своята същност е много прост и в него участват общо три субекта: един оценяващ (човек), един отговарящ (човек) и една машина. Оценяващият задава въпроси, получава отговорите и оценява кой от тях е човешки и кой – машинно произведен. Ако оценяващият не успее да различи отговорите, то машината се счита за сертифицирано интелигентна. Този процес алтернативно е познат като imitation game (игра на имитацията).
Какви изкуствени интелекти има днес и за какво се употребяват?
Все пак, изкуственият интелект съществува под определена форма. Всеки геймър знае за базисния AI, който диктува действията на враговете в любимата игра, а хиляди големи компании по света рекламират как чрез изкуствен интелект подобряват една или друга услуга. Това всъщност са различни технологии, които са обвързани първо с machine learning (в периода от 90-те години до към началото на 2010), а по-късно с deep learning, който навлезе в широка употреба след 2010г.
Каква е разликата? Казано накратко: machine learning представлява изкуствен интелект, който може да се адаптира към нова информация с минимална човешка намеса, докато deep learning функционира на база изкуствени “нервни” окончания, които са изработени на база това, което съществува в човешкия мозък и задвижва процеса на възприемане и учене. До голяма степен това разграничение също следва модела на маркираното по-горе – мимикрия на възприемане срещу действително възприемане. Но, естествено, нито едно от двете все още не се е доближило до действителното такова.
Работа с изкуствен интелект
Изкуственият интелект в модерния свят намира употреба в “умни” системи, които по същество улесняват или дори съкращават процеса на обработка на данни, производство или дори обслужване. За последното имаме пример с Flippy, който е робот с ограничен изкуствен интелект, който му позволява да приготвя бургери във верига за бързо хранене. Но основното приложение е в сфери като застраховането, където интелигентни системи анализират заявки и third-party данни, за да генерират отговори бързо и ефикасно. Подобни решения има и в архивите на някои болници, където огромните количества информация от минали случаи, заболявания и прочее се събират и обработват от умни алгоритми. Разбира се, доколкото тези системи не са “наистина интелигентни”, те продължават да изискват известно ниво на човешка намеса и проверка.
За да участвате лично в разработката на подобни системи и програми, трябва да навлезете в сферата на data science, на български позната като анализ на данни. Това, казано по-опростено, е една много сложна (и често доста любопитна) амалгама от статистика, компютърни науки и други по-специфични познания. Сред тях е и самият deep learning, който все още е много нова и експериментална технология. В нея се навлиза сравнително трудно, тъй като разработката се случва основно в изследователските лаборатории на технологически гиганти като Google, Apple, IBM и Baidu. Анализът на данните е основата на тези познания и позволява базисно запознаване с материята, тъй като повечето платформи за data science вече предлагат работа с първата версия на deep learning.
Най-лесният начин за развитие в тази насока е чрез някой от платените курсове, които са налични на пазара. След известен анализ, изглежда, че един от най-популярните варианти в момента е безплатният комплекс от уроци на Andrew Ng в платформата Coursera. Има и други, но като цяло общото между тях е, че изискват известна степен на предварителна подготовка. Да видим каква е тя и какво ни е необходимо като базисно ниво на познание.
На първо място любимият на всички ни (може би не любим, но все пак необходим) Python и неговите прословути libraries. Особеността на Python произлиза от това, че той има десетки готови library-та, които са предназначени специфично за machine learning. В това начинание не е необходимо да си особено добър програмист, но трябва да си добре запознат с базисните елементи и да разбираш как да боравиш с големи количества данни. Затова са полезни и функциите на добрия стар Python.
Според множество допитвания на Stackoverflow, Python бие дори Java по популярност и разпространение, а това е най-осезаемо в сферата на науката за данните, където почти всички големи компании употребяват Python за по-голямата част от своята дейност. Някои от абсолютно незаменимите library-та са scipy и numpy (инструменти за базисна статистика), matplotlib и seaborn (за визуализация на данни) и panda, който служи за разчистване и анализ и предоставя структура наречена dataframe. Тя позволява огромен брой манипулации и операции и е абсолютно неотменна част от всяко занимание, което включва machine и deep learning. Друг добър помощник в тази насока е и Anaconda, open-source framework, който улеснява неимоверно боравенето с информация и deployment. И, естествено, ключов е познатият TensorFlow, чиито libraries позволяват бързо прототипиране в Python и реалното създаване на апликации с ML/DL функционалности на мобилни носители. Можем да навлезем и още по-дълбоко, в ниското ниво на езиците за програмиране като C и C++, които позволяват едно още по-цялостно разбиране на системите, с които се работи.
Дотук добре. Но какво друго ни трябва отвъд редовното за един програмист?
Та, какво правим с математиката?
Често се чуват определени предположения, че програмирането не изисква задълбочени познания в сферата на математиката. И макар това до някаква степен да отговаря на истината за някои по-прости начинания в света на компютрите, то не важи в конкретния случай на deep learning и “умните” системи. На първо място е необходима линейна алгебра. Неща като вектори, скалари (векторни и скаларни произведения), матрици и тяхното събиране и умножаване. За оптимизация пък са необходими и някои похвати и принципи на висшата математика – производни и частни производни, диференциране на сложни функции. Отвъд това имаме и вероятности и статистика – стандартни девиации, вариация, нормално разпределение, Централна пределна теорема.
Практичен начин за навлизане в deep learning сферата, естествено след покриване на минималните изисквания като познания и умения, е чрез прилагане на готови научни статии от установени професионалисти в големи компании като Google и Baidu. Една доста добра отправна точка е статия на Google, озаглавена Going Deeper With Convulsions, която се занимава с въпросите на т.нар. GoogLeNet, който е deep network с 22 нива. Тук има и добавен плюс, че в този труд участва и българин в лицето на Драгомир Ангелов. Също винаги е полезно да правите собствените си експерименти с помощта на готов framework като TensorFlow или PyTorch. Този модел на четене с изпробване е вероятно най-сигурният начин за възприемане на нови похвати в подобна сфера, за която може да се каже, че е на границата с академичното.
В този ред на мисли, една добра следваща стъпка в развитието може да бъде преминаването от конкретни статии към цели журнали, които са посветени изцяло на DL технологиите. Дори и вече да знаете какво е convolutional neural network, винаги е полезно да се видят най-новите тенденции на опитните учени и изследователи в утвърдените лаборатории.
Истината е, че няма начин да се заобиколи времевата инвестиция при навлизане в сферата – това е вълнуваща, експериментална и сравнително слабо позната технология. Изисква известна доза “проба и грешка”. В това отношение, много полезни могат да бъдат съществуващи бази данни като MNIST, CIFAR 10 и CIFAR 100, които ще ви позволят да изпробвате системата си за процесиране на изображения. “Научете” своята машина на нещо и тествайте границите на модерния изкуствен интелект. Свикнали сме да гледаме съзнателни роботи във филми, сериали и всички други медии. Възприемаме NPC-тата в игрите си като сравнително интелигентни. Но какво наистина задвижва този ограничен интелект? Технология, която практически копира човешката биология и опитва да възпроизведе нашите процеси. Затова е добре да не подценяваме както трудността, така и важността на това начинание.