Сайт о телевидении

Сайт о телевидении

» » Когда будет создан первый искусственный интеллект? Возможно ли создание искусственного интеллекта

Когда будет создан первый искусственный интеллект? Возможно ли создание искусственного интеллекта

Пока программисты могут зарабатывать программированием, то существующие ИИ это не ИИ, какой бы фантик на них не был бы навешен. Предлагаемый мной вариант может решить этот вопрос.

В результате своих изысканий я перестал для себя использовать фразу «искусственный интеллект» как слишком неопределенную и пришел к другой формулировке: алгоритм самостоятельного обучения, исследования и применения найденных результатов для решения любых возможных к реализации задач.

Что такое ИИ, об этом уже много было написано. Я ставлю вопрос по другому, не «что такое ИИ», а «зачем нужен ИИ». Мне он нужен, что бы заработать много денег, затем что бы компьютер выполнял за меня все, что я сам не хочу делать, после построить космический корабль и улететь к звездам.

Вот и буду здесь описывать, как заставить компьютер выполнять наши желания. Если вы ожидаете здесь увидеть описание или упоминание, как работает сознание, что такое самосознание, что значит думать или рассуждать - то это не сюда. Думать - это не про компьютеры. Компьютеры рассчитывают, вычисляют и выполняют программы. Вот и подумаем, как сделать программу, способную рассчитать необходимую последовательность действий для реализации наших желаний.

В каком виде в компьютер попадет наша задача - через клавиатуру, через микрофон, или с датчиков вживленных в мозг - это не важно, это дело вторичное. Если мы сможем компьютер заставить выполнять желания написанные текстом, то после мы можем поставить ему задачу, что бы он сделал программу, которая так же выполняет желания, но через микрофон. Анализ изображений так же лишний.

Утверждать, что для того, что бы создаваемый ИИ мог распознавать изображения и звук, в него изначально должны быть включены такие алгоритмы, это все равно что утверждать, что всякий человек, который таковые создал, от рождения знали как работают такие программы.

Сформулируем аксиомы:
1. Все в мире можно посчитать по каким-нибудь правилам. (про погрешности позже)
2. Расчет по правилу, это однозначная зависимость результата от исходных данных.
3. Любые однозначные зависимости можно находить статистически.
А теперь утверждения:
4. Существует функция преобразования текстовых описаний в правила - что бы не нужно было искать уже давно найденные знания.
5. Существует функция преобразования задач в решения (это исполнялка наших желаний).
6. Правило прогнозирования произвольных данных включает в себя все остальные правила и функции.

Переведем это на язык программиста:
1. Все в мире можно посчитать по каким-нибудь алгоритмам.
2. Алгоритм всегда при повторении исходных данных дает одинаковый результат.
3. При наличии множества примеров исходных данных и к ним результатов, при бесконечном времени поиска можно найти все множество возможных алгоритмов, реализующих эту зависимость исходных данных и результата.
4. Существует алгоритмы конвертации текстовых описаний в алгоритмы (или любых других информационных данных) - чтобы не искать потребные алгоритмы статистически, если их уже кто-то когда-то нашел и описал.
5. Можно создать программу, которая будет исполнять наши желания, будь они в текстовом или голосовом виде, при условии, что эти желания реализуемы физически и в потребные рамки времени.
6. Если умудриться создать программу, которая умеет прогнозировать и учиться прогнозированию по мере поступления новых данных, то по истечении бесконечного времени такая программа будет включать все возможные в нашем мире алгоритмы. Ну а при не бесконечном времени для практической пользы и с некоторой погрешностью ее можно заставить выполнять алгоритмы программы п.5 или любые другие.

И еще, ИМХО:
7. Другого способа полностью самостоятельного и независимого от человека обучения, кроме как поиска перебором правил и статистической проверки их на прогнозировании, не существует. И нужно только научиться использовать это свойство. Это свойство является частью работы мозга.

Что нужно прогнозировать. В человеческий мозг от рождения начинает поступать поток информации - от глаз, ушей, тактильные и пр. И все решения принимаются им на основании ранее поступивших данных. По аналогии, делаем программу, у которой есть вход новой информации по одному байту - входной побайтовый поток. Все что поступило ранее, представляется в виде одного сплошного списка. От 0 до 255 будет поступать внешняя информация, и свыше 255 будем использовать как специальные управляющие маркеры. Т.е. вход позволяет записать скажем до 0xFFFF размерность числа. И именно этот поток, а точнее очередное добавляемое число информации и нужно научиться прогнозировать, на основании поступавших до этого данных. Т.е. программа должна пытаться угадать, какое будет добавлено следующее число.

Конечно возможны и другие варианты представления данных, но для целей, когда на вход поступают самые различные форматы, попросту туда по началу запихиваем различные html с описаниями, этот наиболее оптимальный. Хотя маркеры можно заменить на эскейп последовательности в целях оптимизации, но объяснять с ними менее удобно. (А так же, представим, что все в ASCII, а не UTF).

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

Под прогнозированием я понимаю такой алгоритм, который знает не только какие закономерности уже были, но и ищет постоянно новые. И потому если на вход такой программе послать последовательность
небосиние
травазеленная
потолок
, то он должен сообразить, что за маркером следует цвет от указанного ранее объекта, и на месте многоточия спрогнозирует наиболее вероятный цвет потолка.

Мы ему несколько примеров повторили, что бы он понял которую функцию нужно применить в пределах этих тегов. А сам цвет, он конечно же не выдумать должен, а должен его уже знать самостоятельно изучив вычисляя закономерности на прогнозировании.

Когда от алгоритма требуется ответ, то на вход последующих шагов подается то, что было прогнозом предыдущего шага. Типа автопрогнозирование (по аналогии со словом автокорреляция). И при этом отключаем функцию поиска новых последовательностей.

Другой пример, можно после первого маркера указывать вопрос, а во втором ответ, и тогда будь этот алгоритм супер-мега-крутым, он должен начать давать ответы даже на самые сложные вопросы. Опять же, в пределах уже изученных фактов.

Можно много придумать разных трюков с управляющими маркерами, поданными на вход прогнозирующего механизма, и получать любые желаемые функции. Если вам будет скучно читать про алгоритмическое обоснование этого свойства, то можно пролистать до следующих примеров с управляющими маркерами.

Из чего состоит этот черный ящик. Во первых стоит упомянуть, что стопроцентного прогнозирования всегда и во всех ситуациях сделать не возможно. С другой стороны, если как результат всегда выдавать число ноль, то это то же будет прогнозом. Хоть и с абсолютно стопроцентной погрешностью. А теперь посчитаем, с какой вероятностью, за каким числом, какое дальше следует число. Для каждого числа определится наиболее вероятное следующее. Т.е. мы его сможем немножко спрогнозировать. Это первый шаг очень длинного пути.

Однозначное отображение исходных данных на результат по алгоритму, это соответствует математическому определению слова функция , за исключением того, что к определению алгоритма не налагается определенность в количестве и размещении входных и выходных данных. Так же пример, пусть будет маленькая табличка: объект-цвет, в нее занесем множество строк: небо-синее, трава-зеленная, потолок-белый. Это получилась маленькая локальная функция однозначного отображения. И не важно, что в действительности не редко цвета не такие - там будут другие свои таблицы. И любая база данных, содержащая запомненные свойства чего-либо, является множеством функций, и отображает идентификаторы объектов на их свойства.

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

И описание буду давать примерное, т.к. в реальности реализовать все это я пока… Но оно все логично. А так же следует учитывать, что все расчеты ведутся коэффициентами, а не истина или ложь. (возможно даже если явно указано что истина и ложь).

Любой алгоритм, в особенности который оперирует целыми числами, может быть разложен на множество условий и переходов между ними. Операции сложения, умножения, и пр. так же раскладываются на подалгоритмики из условий и переходов. И еще оператор результата. Это не оператор возврата. Оператор условия берет откуда-то значение и сравнивает его с константным. А оператор результата складывает куда-нибудь константное значение. Расположение взятия или складывания вычисляется относительно либо базовой точки, либо относительно прежних шагов алгоритма.

Struct t_node { int type; // 0 - условие, 1 - результат union { struct { // оператор условия t_node* source_get; t_value* compare_value; t_node* next_if_then; t_node* next_if_else; }; struct { // оператор результата t_node* dest_set; t_value* result_value; }; } };
На вскидку, что то вроде этого. И из таких элементов и строится алгоритм. В результате всех рассуждений получится более сложная структура, а эта для начального представления.

Каждая прогнозируемая точка рассчитывается по какой-то функции. К функции прилагается условие, которое тестирует на применимость этой функции к этой точке. Общая сцепка возвращает, либо ложь - не применимость, либо результат расчета функции. А непрерывное прогнозирование потока, это поочередная проверка применимости всех уже придуманных функции и их расчет, если истина. И так для каждой точки.

Кроме условия на применимость, есть еще дистанции. Между исходными данными, и результатными, и эта дистанция бывает различной, при одной и той же функции, применяемой в зависимости от условия. (И от условия до исходной или прогнозируемой то же есть дистанция, ее будем подразумевать, но опускать при объяснениях. И дистанции бывают динамическими).

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

Когда идет начальное создание и замер функции, то вместо оператора результата, идет накопление распределения фактических результатов. После накопления статистики, распределение заменяем на наиболее вероятный результат, и функцию предваряем условием, так же протестировав условие на максимальность вероятности результата.

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

Коэффициент тождественности. (Здесь двунаправленная тождественность. Но чаще она однонаправленная. Позже переобдумаю формулу.)
Количество каждой пары XY в квадрат и суммируем.
Делим на: сумма количеств в квадрате каждого значения X плюс сумма количеств в квадрате Y минус делимое.
Т.е. SUM(XY^2) / (SUM(X^2) + SUM(Y^2) - SUM(XY^2)).
Этот коэффициент от 0 до 1.

И в результате, что происходит. Мы на высокочастотных фактах убедились, что при этих условии и дистанции, эти факты однозначны. А остальные редковстречаемые - но суммарно таких будет гораздо больше чем частых - имеют ту же погрешность, что и частовстреченные факты в этих условиях. Т.е. мы можем накапливать базу прогнозирования на единично встречаемых фактах в этих условиях.

Да будет база знаний. Небо часто синее, а тропическая-редкая-фигня где-то увидели что она серо-буро-малиновая. И запомнили, т.к. правило мы проверили - оно надежное. И принцип не зависит от языка, будь то китайский или инопланетный. А позже, после понимания правил переводов, можно будет сообразить, что одна функция может собираться из разных языков. При этом нужно учесть, что базу знаний так же можно представить в виде алгоритмов - если исходное значение такое-то, то результатное такое-то.

Дальше, мы в следствии перебора других правил, находим, что при других расположении и условии, возникает уже виденная тождественность. Причем теперь нам не обязательно набирать большую базу для подтверждения тождественности, достаточно набрать десяток единичных фактов, и увидеть, что в пределах этого десятка, отображение происходит в те же значения, как и у прежней функции. Т.е. та же функция используется в других условиях. Это свойство образует то, что мы в описании разными выражениями можем описывать одно и то же свойство. А порой их просто перечислять в таблицах на интернет-страницах. И дальше, сбор фактов по этой функции можно производить уже по нескольким вариантам использования.

Происходит накопление возможных различных условий и расположений относительно функций, и на них так же можно пытаться находить закономерности. Не редко, правила выборки подобны для различных функций, отличаясь только каким-нибудь признаком (например слово идентифицирующее свойство или заголовок в таблице).

В общем понаходили мы кучку однопараметрических функций. А теперь, как при образовании из одиночных фактов в однопараметрические, так же и здесь, попытаемся сгруппировать однопараметрические по части условия и части дистанции. Та часть, что общая - новое условие, а та, что различается - это второй параметр новой функции - двухпараметрической, где первым параметром будет параметр однопараметрической.

Получается, что каждый новый параметр у многопараметрических находится с той же линейностью, что и образование из единичных фактов в однопараметрические (ну или почти с той же). Т.е. нахождение N-параметрической пропорционально N. Что в стремлении к очень много параметрам становится почти нейронной сеткой. (Кто захочет, тот поймет.)

Конвертационные функции.

Конечно замечательно, когда нам предоставили множество корреспондирующих примеров, скажем маленьких текстов перевода с русского на английский. И можно начинать пытаться находить между ними закономерности. Но в действительности, оно все перемешано во входном потоке информации.

Вот мы взяли нашли одну какую-то функцию, и путь между данными. Вторую и третью. Теперь смотрим, можем ли среди них, у каких-либо найти у путей общую часть. Попытаться найти структуры X-P1-(P2)-P3-Y. А потом, найти еще другие подобные структуры, с подобными X-P1 и P3-Y, но различающимися P2. И тогда мы можем заключить, что имеем дело со сложной структурой, между которыми существуют зависимости. А множество найденных правил, за вычетом серединной части, объединим в групп и назовем конвертационной функцией. Таким образом образуются функции перевода, компиляции, и прочие сложные сущности.

Вот возьмите лист с русским текстом, и с его переводом на незнакомый язык. Без самоучителя чрезвычайно сложно из этих листов найти понимание правил перевода. Но это возможно. И примерно так же, как это делали бы вы, это нужно оформить в поисковый алгоритм.

Когда разберусь с простыми функциями, тогда и буду дальше обмусоливать конвертационный поиск, пока сойдет и набросок, и понимание что это то же возможно.

Кроме статистического поиска функций, еще можно их формировать из описаний, посредством конвертационной функции в правила - читающая функция. Статистику для изначального создания читающей функции можно в избытке найти в интернете в учебниках - корреляции между описаниями и правилами примененными к примерам в тех описаниях. Т.е. получается, что алгоритм поиска должен одинаково видеть и исходные данные, и правила примененные к ним, т.е. все должно располагаться в неком однородном по типам доступов графе данных. Из такого же принципа только обратном, могут находиться правила для обратной конвертации внутренних правил во внешние описания или внешние программы. А так же формировать понимание системы, что она знает, а чего нет - можно перед затребованием ответа, поинтересоваться, а знает ли система ответ - да или нет.

Функции о которых я говорил, на самом деле не просто находимый единый кусок алгоритма, а могут состоять из последовательности других функций. Что в свою очередь не вызов процедуры, а последовательность преобразований, типа как в linux работа с pipe. Для примера, я грубо описывал прогнозирование сразу слов и фраз. Но что бы получить прогноз только символа, к этой фразе нужно применить функцию взятия этого одного символа. Или функция научилась понимать задачи на английском, а ТЗ на русском. Тогда РусскоеТЗ->ПеревестиНаАнглийский->ВыполнитьТЗнаАнглийском->Результат.

Функции могут быть не фиксированными в определении, и доопределяться или переопределяться по мере поступления дополнительной информации или при вообще изменении условий - функция перевода не конечная, и к тому же может меняться со временем.

Так же на оценку вероятностей влияет повторяемость одного множества в разных функциях - образует или подтверждает типы.

Так же нужно упомянуть, что не мало множеств реального мира, а не интернет-страниц, являются упорядоченными и возможно непрерывными, или с прочими характеристиками множеств, что как-то то же улучшает расчеты вероятностей.

Кроме непосредственного замера найденного правила на примерах, предполагаю существование других способов оценки, что то типа классификатора правил. А возможно и классификатора этих классификаторов.

Еще нюансы. Прогнозирование состоит из двух уровней. Уровень найденных правил и уровень поиска новых правил. Но поиск новых правил по сути то же программа со своими критериями. И допускаю (хотя пока не продумывал), что может быть все проще. Что нужен нулевой уровень, который будет искать возможные алгоритмы поиска во всем их многообразии, которые уже в свою очередь будут создавать конечные правила. А может быть это вообще многоуровневая рекурсия или фрактал.

Вернемся к управляющим маркерам. В результате всех этих рассуждений про алгоритм получается, что через них мы запрашиваем от этого черного ящика продолжить последовательность, и выдать расчет по функции определяемой по подобию. Типа сделать так, как было показано до этого.

Есть другой способ определения функции в этом механизме - выдать функцию через определение. Например:
Перевести на английскийстолtable
Ответить на вопросцвет небасиний
Создать программу по ТЗхочу искусственный интеллект...

Использование этой системы для решения наших задач состоит в следующем алгоритме. Делаем описание определения специального идентификатора для описания задач. Потом, создаем описание задачи и присваиваем ей новый идентификатор. Делаем описание допустимых действий. К примеру (хоть и не практично) непосредственно команды процессора - описания из интернета, а к компьютеру подключены манипуляторы, которыми через порты можно управлять. И после, мы у системы можем спрашивать, какое нужно выполнить следующее действие, для приближения задачи к решению, ссылаясь на задачу по идентификатору. А так же через раз спрашивать, не нужно ли какой дополнительно информации необходимой для дальнейшего расчета действий - информации по общим знаниям или по текущему состоянию решения задачи. И зацикливаем запросы действий и запросы информации в какой-нибудь внешний цикл. Вся эта схема строится на текстовых определениях, и потому может быть запущена посредством функций получаемых по определению. А выход - только лишь команды - отпадает вопрос многовероятности текстов. Вопрос масштабов необходимого прогнозирования сейчас не обсуждается - если будет необходимый и достаточный функционал прогнозирования - по логике оно должно работать.

Если кто в ИИ видит не способ решения задач, а какие-либо характеристики человека, то можно сказать, что человеческое поведение и качества так же являются расчетными и прогнозируемыми. И в литературе есть достаточно описаний того или иного свойства. И потому, если в системе мы опишем, которое из свойств хотим, то она в меру знаний будет его эмулировать. И будет воспроизводить либо абстрактное усредненное поведение, либо со ссылкой на конкретную личность. Ну или если хотите, можно попробовать запустить сверхразум - если дадите этому определение.

Прогнозировать можно что-то, что происходит по истечению какого-то времени. Объекты движутся со скоростями и ускорениями, и всякие другие возможные изменения чего-либо со временем. Прогнозировать можно и пространство. Для примера, вы заходите в незнакомую комнату, в которой стоит стол, у которого один из углов накрыт листом бумаги. Вы это угол не видите, но мыслено можете спрогнозировать, что он вероятней всего такой же прямоугольный, как и другие углы (а не закругленный), и цвет этого угла такой же как и у других углов. Конечно, прогнозирование пространства происходит с погрешностями - вдруг тот угол стола обгрызенный, и на нем пятно краски. Но и прогнозирование временных процессов тоже всегда с погрешностями. Ускорение свободного падения на земле не всегда 9.81, а зависит от высоты над уровнем моря, и от рядом стоящих гор. И измерительные приборы вы никогда не сможете сделать абсолютно точными. Т.е. прогнозирование пространства и процессов во времени всегда происходит с погрешностями, и у различных прогнозируемых сущностей различные погрешности. Но суть одинакова - алгоритмы, находимые статистически.

Получается, что прогнозирование нашего байтового потока, это вроде прогнозирование пространства информации. В нем кодируются и пространство и время. Вот встречается там какая-то структура - пусть будет кусок программы. Этот кусок программы - это прогнозируемое пространство, такое же как и стол. Набор правил прогнозирования этой структуры образуют правила этой структуры - что-то вроде регулярных выражений. Для определения структуры этих структур вычисляется прогнозирование не одиночного значения, а множества допустимых значений. На момент описания алгоритма, про отдельность роли структур в нем я еще не осознавал, и потому туда это не попало. Но добавив это свойство, образуется полное понимание картинки, и со временем попробую переписать. Учтите, что под структурами подразумеваются условно расширяемые - если такое-то свойство имеет такое-то значение, значит добавляется еще пачка свойств.

В целом, все что возможно в нашем мире, описывается типами, структурами, конвертациями и процессами. И все эти свойства подчиняются правилам, которые находятся в результате прогнозирования. Мозг делает тоже самое, только не точными методами, т.к. он аналоговое устройство.

Будет ли он искать исследования целенаправленно без постановки такой задачи? Нет, потому что у него нету собственных желаний, а только поставленные задачи. То, что у нас отвечает за реализацию собственных желаний и интересов, это у нас называется личность. Можно и у компьютера запрограммировать личность. И будет ли она подобна человеческой, или какой-то компьютерный аналог - но это все равно останется всего лишь поставленной задачей.

А наша творческая деятельность в искусстве, это те же исследования, только ищутся сущности, затрагивающие наши эмоции, чувства и разум.

Окончательной инструкции по изготовлению такой программы пока нету. Вопросов остается много, и про сам алгоритм, и про использование (и про многовариантность текстов). Со временем буду дальше уточнять и детализировать описание.

Альтернативным направлением реализации прогнозирования является использование рекуррентных нейронных сетей (скажем сеть Элмана). В этом направлении не нужно задумываться о природе прогнозирования, но там множество своих трудностей и нюансов. Но если это направление реализовать, то остальное использование остается прежним.

Выводы по статье:
1. Прогнозирование является способом находить все возможные алгоритмы.
2. С помощью манипуляции входом прогнозирования можно эти алгоритмы от туда вытаскивать.
3. Это свойство можно использовать, что бы разговаривать с компьютером.
4. Это свойство можно использовать, что бы решать любые задачи.
5. ИИ будет тем, как вы его определите, и после определения его можно решить как задачу.

Некоторые скажут, что брутфорсом найти какую-либо закономерность будет чрезмерно долго. В противовес этому могу сказать, что ребенок учится говорить несколько лет. Сколько вариантов мы сможем просчитать за несколько лет? Найденные и готовые правила применяются быстро, и для компьютеров гораздо быстрей чем у человека. А вот поиск новых и там и там долго, но будет ли компьютер дольше человека, этого мы не узнаем, пока не сделаем такой алгоритм. Так же, замечу, что брутфорс великолепно распараллеливается, и найдутся миллионы энтузиастов, которые включат свои домашние ПК для этой цели. И получиться, что эти несколько лет, еще можно поделить на миллион. А найденные правила другими компьютерами будут изучаться моментально, в отличие от аналогичного процесса у человека.

Другие начнут утверждать, что в мозге биллионы клеток нацеленных на распараллеливание. Тогда вопрос, каким образом задействуются эти биллионы при попытке без учебника на примерах изучить иностранный язык? Человек будет долго сидеть над распечатками и выписывать коррелирующие слова. В то же время, один компьютер это будет пачками делать за доли секунды.

И анализ изображений - двинте десяток бильярдных шаров и посчитайте сколько будет столкновений. (закрывшись от звука). А два десятка или три… И причем здесь биллионы клеток?

В общем, быстродействие мозга и его многопараллельность - это очень спорный вопрос.

Когда вы думаете о создании думающего компьютера, вы копируете в него то, чему человек научился в течении жизни, и не пытаетесь понять, а каковы механизмы, позволяющие это накопить от стартовой программы - пожрать и поспать. И эти механизмы основываются отнюдь не на аксиомах формальной логики. Но на математике и статистике.

PPS: мое мнение, что научного определения термина «Искусственный интеллект» не существует. Существует только научно-фантастическое. А если нужна реальность, то см. п.5 в выводах по статье.

PPPS: Я много разных интерпретаций понял гораздо позже уже после написания статьи. Скажем, что поиск зависимости вопрос-ответ является аппроксимацией. Или каковы более точные научные определения вытаскивания нужной функции из многообразия найденных в процессе поиска функций прогнозирования. На каждый маленький момент понимания нельзя написать отдельную статью, а на все в общем нельзя, потому что не объединить в один заголовок. И все эти понимания, дают ответ, как получать от компьютерных вычислительных мощностей ответы на задаваемые вопросы, ответы на которые не всегда можно прочитать в существующих описаниях, как скажем для проекта Watson. Как создать программу, которая по одному упоминанию, или движению пальца, пытается понять и сделать то, что от нее хотят.

Когда нибудь такая программа будет сделана. И назовут ее очередным гаджетом. А не ИИ.

****
Исходники по этой теме, а так же дальнейшее развитие представления можете найти на сайте

Что скрывается за словосочетанием «искусственный интеллект» или AI (Artificial Intelligence), знает далеко не каждый. Большинство людей, вероятно, представляют себе ИИ как компьютер, который был запрограммирован на то, чтобы «думать» самостоятельно, принимать разумные решения и реагировать на раздражители. Эта идея не совсем верна. Никакой компьютер и никакая машина не могут действительно думать – потому что это требует наличия сознания, которого нет у «бездушной машины». Компьютер может делать только то, что скажет ему человек.

Кратко о программировании AI

Программирование искусственного интеллекта заключается не в обучении компьютера тому, как думать. Скорее, он будет запрограммирован так, чтобы обучаться и самостоятельно решать конкретные проблемы на основе своего опыта. Но и здесь речь идет не о собственном мышлении, а о подражании. Это также относится к решениям, которые принимает AI. может взвешивать варианты, а затем делать выбор. Однако его выбор всегда будет исходить из тех параметров, которые были запрограммированы ранее.

Таким образом, искусственный интеллект может делать только то, что было предопределено для компьютера, но лучше, точнее и быстрее, чем человек. Кстати, если вы хотите научиться программировать, обратите внимание на нашу с советами для начинающих программистов.

Использование искусственного интеллекта

Искусственный интеллект уже используется во многих областях, например в сложных компьютерных играх и поисковых системах. При программировании AI важную роль играет комплекс дисциплин, а не только информатика или математика. Большое значение имеют философия, психология, неврология и лингвистика.

Искусственный интеллект разделяется на нейронный и символический (сильный и слабый). Первый пытается имитировать структуры и функции человеческого мозга. Последний ориентируется на соответствующую проблему и результат.

В повседневной жизни, например, искусственный интеллект программируется и используется в робототехнике. Он служит для управления производственными процессами или просто выполняет бытовые задачи. также используется для визуализации. Самый популярный пример – распознавание лиц или отпечатков пальцев.

Еще один шаг в создании искусственного интеллекта – это системы, основанные на знаниях. Тогда в программу вводятся данные, связанные с программированием. Это позволяет искусственному интеллекту логично и самостоятельно давать ответы на заданные вопросы. Однако и эти «самостоятельные ответы» основаны только на тех знаниях, которыми изначально наделен искусственный интеллект.

ПЛАН.

1. Введение.

2. Феномен мышления.

3. Создание искусственного интеллекта.

3.1 Механический подход.

3.2 Электронный подход.

3.3 Кибернетический подход.

3.4 Нейронный подход.

3.5 Появление перцептрона.

4. Заключение.

5. Список литературы.

1. ВВЕДЕНИЕ.

Современные философы и исследователи науки часто рассматривают междисциплинарные науки как одно из достижений заново открытых в 20 веке.

Искусственный Интеллект и искусственная жизнь представляет прекрасный пример такой интеграции многих научных областей.

К сожалению, жизнь слишком сложна, чтобы можно было наметить общие направления в исследованиях. Доказательством может служить тот факт, что некоторые заинтересованы в исследовании «систем, демонстрирующих феномены живых систем», другие изучают природу химического репродуцирования или пытаются решить философские проблемы самопознания.

В понятие «искусственный интеллект» вкладывается различный смысл – от признания интеллекта у ЭВМ оснащенных программными продуктами распознавания текста и речи до отнесения к интеллектуальным лишь тех систем, которые решают весь комплекс задач, осуществляемых человеком.

Теория искусственного интеллекта при решении многих задач сталкивается с определёнными проблемами. Одна из таких проблем состоит в выяснении вопроса, доказуема ли теоретически (математически) возможность или невозможность искусственного интеллекта.

На этот счёт существуют две точки зрения. Одни считают математически доказанным, что ЭВМ в принципе может выполнить любую функцию, осуществляемую естественным интеллектом. Другие полагают в такой же мере доказанным математически, что есть проблемы, решаемые человеческим интеллектом, которые принципиально недоступны ЭВМ. Эти взгляды высказываются как кибернетиками так и философами. Одна из многих проблем (можно сказать основная) состоит в том, что системы, обладающие психикой, отличаются от ЭВМ тем, что им присущи биологические потребности.

Отражение внешнего мира проходит через призму этих потребностей, в чем выражается активность психической системы. ЭВМ не имеет потребностей, для неё информация незначима, безразлична. У человека над слоем биологических потребностей надстраиваются социальные потребности, и информация для него не только биологически но социально значима. Однако технические системы все-таки могут иметь аналог телесной организации. Развитая кибернетическая система обладает рецепторными и эффекторными придатками. На практике под крышей термина искусственная жизнь гнездится грандиозное разнообразие различных проектов от моделей копирования ДНК и систем с обратной связью до изучения коллективного разума и динамики роста населения.

2. ФЕНОМЕН МЫШЛЕНИЯ.

Машины уже научились слагать стихи, сочинять музыку, рисовать картины. Возможно, кому-то покажется, что это – несомненный признак их разумности. Ведь если ЭВМ доступно творчество, которое всегда считалось свойством высокого интеллекта, то справедливо ли отказывать ей в разуме?

Всё же большинство из нас едва ли согласятся считать рисующую и сочиняющую стихи ЭВМ мыслящей. Что же тогда следует называть мышлением?(2)

Далёкому от науки человеку трудно себе представить, как много умеют делать современные кибернетические устройства. Стоит хотя бы упомянуть о так называемых «экспертных системах», которые на основе имеющихся в их памяти сведений анализируют состояние больного, режим технологического процесса, дают советы, как поступить в той или иной ситуации. При этом ЭВМ не только сообщает своё решение, но и объясняет, почему оно должно быть таковым. По сравнению с электронной памятью, выдачей архивных справок и математическими вычислениями, что сегодня у большинства людей ассоциируется сегодня с образом компьютера, это – качественно новая ступень интеллектуальной деятельности, когда на основе имеющегося вырабатывается новое знание. До сих пор это считалось неоспоримой привилегией человеческого мозга. Неудивительно, что тому, кто впервые встречается с подобными системами, часто просто не верится, что он имеет дело с «железной ЭВМ», а не со спрятавшимся где-то оператором-человеком.

Способность ЭВМ выполнять математические расчеты, к чему мы привыкли, ещё совсем недавно рассматривалась как одна из самых высших ступеней духовной деятельности человека. Комплексные числа, с которыми легко оперирует почти любая ЭВМ, Г.Лейбниц, сам выдающийся математик, называл «духовными амфибиями», удивительным «порождением духа Божьего», а писатель В.Одоевский в своей «Русской речи» писал о нашей способности к вычислениям как о каком-то непостижимом, почти мистическом свойстве: При всяком математическом процессе мы чувствуем, как к нашему существу присоединяется какое-то другое, чужое, которое трудится, думает, вычисляет, а между тем наше истинное существо как бы перестаёт действовать, не принимая никакого участия в этом процессе, как в деле постороннем, ждёт своей собственной пищи, а именно связи, которая должна существовать между ним и этим процессом, - и этой связи мы не находим».

Можно представить, как был бы поражён Одоевский, узнав о вычислительных способностях наших ЭВМ! Тем не менее, мы не считаем их думающими.

Любая вычислительная машина, каким бы поразительным ни было её «умение» обучаться, работает на основе заранее составленной для неё программы и поступающих внешних данных. Правда, мы, люди, тоже реализуем определенные программы действий, особенно в первые месяцы жизни, когда наше поведение почти целиком определяется заложенной в нас генетической программой. Однако принципиальное различие в том, что человек способен мотивированно, т.е. в зависимости от определённых условий, изменять программу и делает это так, что между Сарой и новой программами нет непрерывного логического мостика. Как это происходит, тоже пока не ясно, тут много споров и различных точек зрения, но это уже другой вопрос, важно, что современные вычислительные машины этим свойством не обладают. Вот если бы случилось так, что какая-то ЭВМ, решившая, скажем задачи по электромагнетизму и квантовой механике, объединила бы эти два раздела науки и вывела уравнения квантовой электродинамики, а потом с их помощью предсказала бы новые явления в этой неизвестной ей ранее области, тогда, наверное, мы были бы в праве назвать её думающей. И прежде всего потому, что она сама, без всякой программной подсказки, решила заняться качественно новой задачей. Слово «решила» как раз и означает, что она мыслит.

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

Когда мы говорим, что школьник решает задачу, это означает прежде всего, что он должен сообразить, какую взять для этого формулу, какие подставить в неё числа. Однако, если он, заглядывая в тетрадь соседа, подставляет указанные там числа в написанную на доске формулу, это уже не решение, а механическое повторение. Именно так ведут себя современные ЭВМ. Строго говоря, никаких задач они не решают, и часто используемое нами выражение «ЭВМ решает» имеет условный смысл…

Способность ставить задачу и самопрограмироваться на её решение – это как раз и есть главное, что характеризует феномен мышления.

Можно возразить данному утверждению, отметив, что и рыбы, и примитивные амёбы в погоне за добычей, тоже ставят себе задачи, изменяющиеся в зависимости от конкретных условий, значит – и они мыслят?

Это могут быть примитивные формы мышления, ведь объяснить поведение животных во всём многообразии жизненных ситуаций одним лишь инстинктом – это гипотеза.(2)

Животным и птицам присуще такое свойство мышления, как способность к обобщению. Например, они узнают пищу в различных конкретных формах, так сказать – пищу вообще.

Наше обыденное понимание разумного слишком очеловечено, и, подобно тому, как в XIX веке многим казалась нелепой сама мысль о преемственной связи между человеком и обезьяной сегодня многих из нас смущает мысль о возможности нечеловеческого интеллекта. В частности, сами того не замечая, мы часто связываем представление о мышлении со способностью осознавать своё собственное «я», и это мешает нам более широко взглянуть на феномен мышления. Правда, связь между мышлением и чувством «я», по-видимому, действительно существует. Можно думать, что в условиях прихотливо изменяющейся внешней обстановки сложная система будет устойчивой лишь в том случае, если она обладает способностью ощущать своё состояние, а в этом и состоит суть нашего «я». Анализ показывает, что подобное чувство необходимо уже многим роботам-автоматам. Ведь робот, да и вообще всякая сложная самообучающаяся и активно общающаяся с человеком машина должна сообщать ему о состоянии своей памяти, о том, что ей понятно, а что – нет и почему. А для этого автомат должен ощущать и быть способным выразить своё состояние. Это нужно роботу и для того, чтобы вовремя заметить неполадки в своём «организме». Не осознающий себя робот едва ли сможет долго просуществовать в сложной, быстро меняющейся и воздействующей на него обстановке.

3.СОЗДАНИЕ ИСКУССТВЕННОГО ИНТЕЛЛНКТА.

С конца 40-х годов ученые все большего числа университетских и промышленных исследовательских лабораторий устремились к дерзкой цели: построение компьютеров, действующих таким образом, что по результатам работы их невозможно было бы отличить от человеческого разума.

Терпеливо продвигаясь вперед в своем нелегком труде, исследователи, работающие в области искусственного интеллекта (ИИ), обнаружили, что вступили в схватку с весьма запутанными проблемами, далеко выходя­щими за пределы традиционной информатики. Оказалось, что прежде всего необходимо понять механизмы процесса обучения, природу языка и чувс­твенного восприятия. Выяснилось, что для создания машин, имитирующих работу человеческого мозга, требуется разобраться в том, как действуют миллиарды его взаимосвязанных нейронов. И тогда многие исследователи пришли к выводу, что пожалуй самая трудная проблема, стоящая перед современной наукой - познание процессов функционирования человеческого разума, а не просто имитация его работы. Что непосредственно затраги­вало фундаментальные теоретические проблемы психологической науки. В самом деле, ученым трудно даже прийти к единой точке зрения относи­тельно самого предмета их исследований - интеллекта. Здесь, как в притче о слепцах, пытавшихся описывать слона, пытается придерживаться своего заветного определения.

Переводим... Перевести Китайский (упрощенное письмо) Китайский (традиционное письмо) Английский Французский Немецкий Итальянский Португальский Русский Испанский Турецкий

К сожалению, мы не можем перевести эту информацию прямо сейчас - пожалуйста, повторите попытку позже.

За несколько последних десятилетий отрасль компьютерных игр проделала гигантский путь. Все началось с простейших игр, таких как Pong* и Pac- Man* , благодаря которым игроки могли на короткое время забыть о реальном мире. Современные мощнейшие игровые проекты, такие как World of Warcraft* и Call of Duty 4* , являются весьма серьезным хобби для игроков. По данным Ассоциации развлекательного программного обеспечения (ESA), современные геймеры обладают в среднем 13-летним опытом компьютерных игр, они привыкли к тому, что новые игры становятся все более сложными, увлекательными и умными. Для разработчиков основная проблема состоит в том, что необходимо создавать все более захватывающие игры. Для решения этой задачи применяется и постоянно совершенствующийся управляемый компьютером искусственный интеллект (ИИ). Но создание хорошего искусственного игрового партнера, который способен приспосабливаться к действиям игрока, играть на высоком уровне и побуждать игрока совершенствоваться, - весьма непростая задача. Эта статья открывает серию из четырех статей, в которой описываются важнейшие принципы ИИ и способы оптимизации для использования всех возможностей современных многоядерных процессоров.

Часть 1. Проектирование и реализация

Что такое ИИ для игр?

На простейшем уровне «искусственный интеллект» заключается в моделировании или имитации поведения других игроков или объектов (то есть всех элементов игры, которые могут действовать или с которыми может действовать игрок, - от ракет до аптечек), представляемых искусственным интеллектом. Основной принцип состоит в том, что это поведение имитируется. Другими словами, ИИ для игр является более «искусственным», нежели «интеллектом». Система ИИ может быть крайне проста и представлять собой набор правил или же может быть довольно сложной и выполнять роль командующего армии противника, с которой предстоит сражаться игроку.

В чем ИИ для игр отличается от традиционного представления об ИИ

В традиционных исследованиях в области ИИ целью является создание настоящего интеллекта, или даже искусственного разума, хотя и искусственными средствами. В таких проектах, как Kismet *, Массачусетского технологического института (МТИ) делается попытка создать ИИ, способный к обучению и к социальному взаимодействию, к проявлению эмоций. На момент написания этой статьи в МТИ ведется работа над созданием ИИ, располагающего уровнем способностей маленького ребенка, и результаты этой работы весьма перспективны.

С точки зрения игр подлинный ИИ далеко выходит за рамки требований развлекательного программного проекта. В играх такая мощь не нужна. Игровой ИИ не должен быть наделен чувствами и самосознанием (честно говоря, и очень хорошо, что это именно так!), ему нет необходимости обучаться чему-либо за пределами рамок игрового процесса. Подлинная цель ИИ в играх состоит в имитации разумного поведения и в предоставлении игроку убедительной, правдоподобной задачи, которую игрок сможет решить.

Назначение ИИ в играх

ИИ может исполнять различные роли в играх. Это может быть общий набор правил, определяющих поведение объектов в игровом мире. Также к ИИ следует относить и события с заранее написанным сценарием. Например, в игре F. E. A. R* маленькая страшная девочка, приводящая игроков в ужас и предвещающая события из будущего, является событием с заранее написанными сценариями. Большинству пользователей, размышляющих об ИИ и играх, приходят на ум управляемые компьютером персонажи в многопользовательских играх. Но все эти разнообразные роли могут быть исполнены одним актером - искусственным интеллектом.

Рисунок 1. Игра F.E.A.R. (Vivendi Universal*) с использованием событий с заранее написанным сценарием в качестве ИИ

Что нужно для ИИ в играх

В зависимости от характера и роли ИИ в игре требования к ресурсам могут быть самыми незначительными. Чем сложнее система, тем больше ресурсов необходимо для ИИ. На базовом уровне требуется всего лишь время работы процессора для вычисления действий ИИ. В более сложных системах требуются какие-либо средства анализа среды ИИ, регистрации действий игрока и оценки успешности прежних действий.

Принятие решений

Основным принципом, лежащим в основе работы ИИ, является принятие решений. Для выбора при принятии решений система должна влиять на объекты с помощью системы ИИ. При этом такое воздействие может быть организовано в виде «вещания ИИ» или «обращений объектов».

В системах с «вещанием ИИ» система ИИ обычно изолирована в виде отдельного элемента игровой архитектуры. Такая стратегия зачастую принимает форму отдельного потока или нескольких потоков, в которых ИИ вычисляет наилучшее решение для заданных параметров игры. Когда ИИ принимает решение, это решение затем передается всем участвующим объектам. Такой подход лучше всего работает в стратегиях реального времени, где ИИ анализирует общий ход событий во всей игре.

Системы с «обращениями объектов» лучше подходят для игр с простыми объектами. В таких играх объекты обращаются к системе ИИ каждый раз, когда объект «думает» или обновляет себя. Такой подход отлично подходит для систем с большим количеством объектов, которым не нужно «думать» слишком часто, например в шутерах. Такая система также может воспользоваться преимуществами многопоточной архитектуры, но для нее требуется более сложное планирование (подробные сведения см. в статье Ориона Гранатира ).

Базовое восприятие

Чтобы искусственный интеллект мог принимать осмысленные решения, ему необходимо каким-либо образом воспринимать среду, в которой он находится. В простых системах такое восприятие может ограничиваться простой проверкой положения объекта игрока. В более сложных системах требуется определять основные характеристики и свойства игрового мира, например возможные маршруты для передвижения, наличие естественных укрытий на местности, области конфликтов.
При этом разработчикам необходимо придумывать способ выявления и определения основных свойств игрового мира, важных для системы ИИ. Например, укрытия на местности могут быть заранее определены дизайнерами уровней или заранее вычислены при загрузке или компиляции карты уровня. Некоторые элементы необходимо вычислять на лету, например карты конфликтов и ближайшие угрозы.

Системы на основе правил

Простейшей формой искусственного интеллекта является система на основе правил. Такая система дальше всего стоит от настоящего искусственного интеллекта. Набор заранее заданных алгоритмов определяет поведение игровых объектов. С учетом разнообразия действий конечный результат может быть неявной поведенческой системой, хотя такая система на самом деле вовсе не будет «интеллектуальной».
Хорошим примером системы на основе правил является работа дилера (крупье) при игре в блэкджек, будь то компьютерная игра или настоящий блэкджек. У дилера есть простое правило, которое он всегда соблюдает: он обязан брать карты до тех пор, пока не достигнет 17 очков (и обязан остановиться, набрав 17 очков или более). С точки зрения среднего игрока, ситуация выглядит так, как будто дилер намеренно и агрессивно играет против него. Поэтому у игрока складывается представление, что против него играет более опытный соперник, чем на самом деле (если в казино не объявлены другие правила, по которым играют дилеры).

Классическим игровым приложением, где используется такая система, является Pac-Man. Игрока преследуют четыре привидения. Каждое привидение действует, подчиняясь простому набору правил. Одно привидение всегда поворачивает влево, другое всегда поворачивает вправо, третье поворачивает в произвольном направлении, а четвертое всегда поворачивает в сторону игрока. Если бы на экране привидения появлялись по одному, их поведение было бы очень легко определить и игрок смог бы без труда от них спасаться. Но поскольку появляется сразу группа из четырех привидений, их движения кажутся сложным и скоординированным выслеживанием игрока. На самом же деле только последнее из четырех привидений учитывает расположение игрока.


Рисунок 2. Наглядное представление набора правил, управляющих привидениями в игре Pac- Man , где стрелки представляют принимаемые «решения»

Из этого примера следует, что правила не обязательно должны быть жестко заданными. Они могут основываться на воспринимаемом состоянии (как у последнего приведения) или на редактируемых параметрах объектов. Такие переменные, как уровень агрессии, уровень смелости, дальность обзора и скорость мышления, позволяют получить более разнообразное поведение объектов даже при использовании систем на основе правил. Системы на основе правил являются простейшей структурой ИИ. В более сложных и разумных системах в качестве основы используются последовательности условных правил. В тактических играх правила управляют выбором используемой тактики. В стратегических играх правила управляют последовательностью строящихся объектов и реакцией на конфликты. Системы на основе правил являются фундаментом ИИ.

Конечные автоматы в качестве ИИ

Конечный автомат (машина с конечным числом состояний) является способом моделирования и реализации объекта, обладающего различными состояниями в течение своей жизни. Каждое « состояние» может представлять физические условия, в которых находится объект, или набор эмоций, выражаемых объектом. В этом примере эмоциональные состояния не имеют никакого отношения к эмоциям ИИ, они относятся к заранее заданным поведенческим моделям, вписывающимся в контекст игры.

Вот распространенные примеры состояния системы ИИ в игре с элементами скрытных действий.

Рисунок 3. Схема состояний в типичном конечном автомате, стрелки представляют возможные изменения состояния

  • Бездействие. В этом состоянии объект просто пассивно стоит или ходит по заданному маршруту. Уровень восприятия низок. Объект редко проверяет наличие звуков, издаваемых игроком. Только если объект атакован или «видит» игрока прямо перед собой, состояние объекта изменяется на более высокий уровень восприятия.
  • Настороженность. Объект ведет активный поиск посторонних. Он часто вслушивается, стараясь услышать игрока, поле обзора дальше и шире, чем при бездействии. Объект перейдет в состояние заинтересованности, если заметит что­то необычное (что-то, требующее проверки), например открытые двери, тела в бессознательном состоянии, гильзы от патронов.
  • Заинтересованность. Объект знает, что что-то происходит. Для демонстрации такого поведения объект покидает свой обычный пост или маршрут движения и перемещается в область интереса, например к упомянутым выше открытым дверям или лежащим телам. Если при этом объект увидит игрока, он перейдет в состояние тревоги.
  • Тревога. В этом состоянии объект уже заметил игрока и выполняет действия, направленные на то, чтобы преследовать и уничтожить игрока: выход на дистанцию атаки, оповещение других стражников, включение сигнала тревоги, поиск укрытия. Когда противник находится в дальности досягаемости объекта, объект переходит в состояние агрессии.
  • Агрессия. В этом состоянии объект начинает бой с игроком. Объект атакует игрока в любое время, когда это возможно, и старается укрыться в перерывах между атаками (если требуется перезарядить оружие или дать ему остыть). Объект выходит из этого состояния, только если игрок уничтожен (возврат в обычное состояние), игрок выходит за пределы области поражения (возврат в состояние тревоги) или если погибает сам объект (переход в состояние смерти). Если у объекта остается мало здоровья, он может переключиться в состояние бегства (в зависимости от уровня смелости конкретного объекта).
  • Бегство. В этом состоянии объект пытается выйти из боя. В зависимости от игры у объекта может быть помимо основной цели (поиск и уничтожение игрока) еще и дополнительная цель - поиск аптечек для восстановления здоровья или выход из области игры. Обнаружив аптечку, объект может вернуться в состояние тревоги и возобновить бой. Объект, «выходящий» из области игры, просто удаляется.
  • Смерть. В некоторых играх состояние смерти отличается от полного бездействия. При гибели объект может, к примеру, закричать, оповестив находящиеся рядом объекты, или перейти в бессознательное состояние, в котором еще может прийти на помощь врач (в этом случае объект вернется в состояние тревоги).

Существуют как минимум два простых способа реализации конечного автомата с системой объектов. Первый способ: каждое состояние является переменной, которую можно проверить (зачастую это делается с помощью громоздких инструкций переключения). Второй способ: использовать указатели функций (на языке С) или виртуальные функции (С++ и другие объектно-ориентированные языки программирования).

Адаптивный ИИ

В предыдущих разделах описываются методы проектирования систем интеллекта, вписывающихся в заранее заданные игровые события. Для большинства игр такое решение вполне применимо, если все спроектированные модели проработаны достаточно полно и существует четкое понимание целей, которые преследуют управляемые искусственным интеллектом объекты. Если же в игре требуется большее разнообразие, если у игрока должен быть более сильный и динамичный противник, то ИИ должен обладать способностью развиваться, приспосабливаться и адаптироваться.

Адаптивный ИИ часто используется в боевых и стратегических играх со сложной механикой и огромным количеством разнообразных возможностей в игровом процессе. Если требуется сделать игру сложной и захватывающей, такой, чтобы игрок не смог рано или поздно догадаться о единой оптимальной стратегии для победы над компьютером, ИИ должен уметь обучаться и приспосабливаться.

Предсказание

Способность точно предугадывать следующий ход противника крайне важна для адаптивной системы. Для выбора следующего действия можно использовать различные методы, например распознавание закономерностей прошлых ходов (подробнее описывается в последующей статье) или случайные догадки.

Одним из простейших способов адаптации является отслеживание решений, принятых ранее, и оценка их успешности. Система ИИ регистрирует выбор, сделанный игроком в прошлом. Все принятые в прошлом решения нужно каким-то образом оценивать (например, в боевых играх в качестве меры успешности можно использовать полученное или утраченное преимущество, потерянное здоровье или преимущество по времени). Можно собирать дополнительные сведения о ситуации, чтобы образовать контекст для решений, например относительный уровень здоровья, прежние действия и положение на уровне (люди играют по-другому, когда им уже некуда отступать).

Можно оценивать историю для определения успешности прежних действий и принятия решения о том, нужно ли изменять тактику. До создания списка прежних действий объект может использовать стандартную тактику или действовать произвольно. Эту систему можно увязать с системами на основе правил и с различными состояниями.

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

Заключение

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

Дональд «DJ» Кихо: Дональд Кихо работает преподавателем программы информационных технологий в Технологическом институте Нью-Джерси и специализируется на разработке игр. Дональд преподает множество курсов по этой программе, включая архитектуру игр, программирование и создание уровней, а также курсы по интеграции трехмерной графики с играми. В настоящее время Дональд работает над получением степени доктора наук в области биомедицинских технологий, где технологии игр и виртуальной реальности применяются для повышения эффективности нервно-мышечной реабилитации.

Основной вопрос перед разработчиком – какому языку отдать предпочтение для создания ИИ? Мы рассмотрим популярные языки, используемые для создания ИИ.

Одно только лишь название «искусственный интеллект» может привести в ступор и навести немало страха как на обычного человека, так и заурядного программиста. Занятие действительно сложное, а красивые демонстрируемые примеры - это результат многотысячных строк кода. При всём этом создание ИИ может стать вполне реальной задачей, а в части случаев, даже несложной. Многие проекты требуют углублённых знаний ИИ, а также языков программирования.

LISP

Родоначальником языков программирования, на которых начал создаваться искусственный интеллект стал LISP . ЛИСП отличается гибкостью использования и простотой расширения функционала. Благодаря наличию возможности быстрого прототипирования и установки макросов удалось сократить уйму времени, это принесло много пользы в отношении ИИ.

LISP стал универсальным языком, который равно хорошо справляется с относительно тяжёлыми и лёгкими задачами. В нём устроена качественная и продвинутая система объектно-ориентированности , что и позволило занять одну из лидирующих позиций при разработке ИИ.

Java

Наибольшим достоинством языка является многофункциональность, среди прочих:

  • прозрачность использования и написания кода;
  • способность легко переносить программы;
  • лёгкое сопровождение проектов.

Для новичков важным достоинством Java станет наличие многочисленных бесплатных уроков в сети. Обучение Java является максимально комфортным и удобным для большинства студентов и новичков.

Среди особенностей языка стоит выделить:

  • простота выполнения отладки;
  • качественное взаимодействие клиентской и серверной системы ресурса;
  • лёгкость обращения с масштабными проектами.

При создании проектов на Java пользователь сталкивается с более привлекательным и доступным интерфейсом, что всегда притягивает аудиторию.

Prolog

Данный вариант относится к интерактивным языкам, которые работают по символической системе. Он популярен для использования в отношении проектов, требующих высокие логические способности. Язык имеет мощную и удобную основу, она активно используется в отношении программирования non-численного типа . На основании Prolog`а часто создаются доказательства теорем, проводится взаимодействие с понятным человеческим языком, используется для создания систем экспертной оценки.

Пролог относится к декларативным типам языка, которые используют формальное или образное «мышление ». Среди разработчиков ИИ приобрёл хорошую славу благодаря оптимальным обструкционным типам работы, встроенным алгоритмам анализа, недетерминизма и т.д. Всё в сумме можно описать так: Prolog - многофункциональная платформа для программирования ИИ.

Python

Активно применяется в программировании благодаря чистому синтаксису и логическому, строгому грамматическому построению программы. Немаловажную роль играет и удобный дизайн.

В основе используются многочисленные структурные алгоритмы, бесчисленные фреймворки для отладки, оптимальным показателям взаимодействия низкого и высокого уровня написания кода. Все перечисленные достоинства обеспечивают должное влияние в сфере создания искусственного интеллекта.

История развития ИИ

Началом традиционного представления ИИ стал проект UNIMATE , который увидел мир в 1961 году . В ходе представления был впервые получен робот, который начал выпускаться в промышленных масштабах. Робот был задействован на линии производства в концерне «General Motors ». Для создания были задействованы Валь и переменные из среды ассемблера. Язык пришёлся по душе благодаря наличию простейших фраз, отражению команд на мониторе и наличию инструкций, не нуждающихся в дополнительных разъяснениях.

Спустя 4 года (1965 год ) был запущен искусственный интеллект « Dendral ». Задача системы заключалась в выявлении молекулярной и атомной структуре соединений органического происхождения. Для написания был использован LISP .

«Weizenbaum » в 1966 году запустил проект Элиза, который впервые предполагал проведение беседы с роботом. Самой известной моделью являлся «Доктор», который позволял отвечать на поставленные запросы в форме психотерапевта. Для реализации проекта потребовалось сопоставление нескольких образцов технического достижения своего времени. Впервые Элиза увидел мир на SPLIP, но для отработки списка запущен «Weizenbaum». Немногим позже проект переработан на другую платформу - LISP .

Первым роботом мобильного типа стал «Шеки », в его основе также лежал ЛИСП. Логика конструктора была построена на решении поставленных задач и передвижения, для взаимодействия использовались подъёмы вверх и вниз, а также включение и выключение света. С помощью «Шеки » удавалось открывать, закрывать, передвигать и т.д. Робот даже был способен передвигаться со скоростью равной спокойной ходьбе человека - 5 км/ч.

За последние 15 лет было представлено многочисленное количество изобретений: «Деннинг » (сторожевой робот), «Predator » (беспилотник), «АЙБО » (собака), «АСИМО » от Honda и многие другие. Тенденция идёт к развитию данного направления, чего и стоит ожидать в ближайшем и дальнем бедующем.