Как и для чего Google создает свой искусственный интеллект. Как создать искусственный интеллект для компьютера


Как создать искусственный интеллект? | GeekBrains

Что надо знать и с чего начать.

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

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

Стадия 1. Разочарование

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

  • Линейная алгебра;

  • Логика;

  • Теория графов;

  • Теория вероятностей и математическая статистика.

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

Стадия 2. Принятие

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

Стадия 3. Развитие

Теперь переходим непосредственно к теории ИИ. Их условно можно разделить на 3 категории:

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

  2. Сильный ИИ – это машины, интеллект которых сопоставим с человеческим мозгом. На сегодняшний день нет реальных представителей этого класса, но компьютеры, вроде Watson очень близки к достижению этой цели.

  3. Совершенные ИИ – будущее, машинный мозг, который превзойдёт наши возможности. Именно об опасности таких разработок предупреждают Стивен Хоккинг, Элон Маск и кинофраншиза «Терминатор».

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

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

К слову, если вы всё-таки взялись за язык Python, то создать довольно простого бота можно обратившись к этому подробному мануалу. Для других языков, таких как C++ или Java, вам также не составит труда найти пошаговые материалы. Почувствовав, что за созданием ИИ нет ничего сверхъестественного, вы сможете смело закрыть браузер и приступить к личным экспериментам.

Стадия 4. Азарт

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

Как вы поняли даже из названий, это API, которые позволят без лишних затрат времени создать некоторое подобие серьёзного ИИ.

Стадия 5. Работа

Теперь же, когда вы уже вполне ясно представляете, как ИИ создавать и чем при этом пользоваться, пора выводить свои знания на новый уровень. Во-первых, для этого потребуется изучение дисциплины, которое носит название «Машинное обучение». Во-вторых, необходимо научиться работать с соответствующими библиотеками выбранного языка программирования. Для рассматриваемого нами Python это Scikit-learn, NLTK, SciPy, PyBrain и Nump. В-третьих, в развитии никуда не обойтись от функционального программирования. Ну и самое главное, вы теперь сможете читать литературу о ИИ с полным пониманием дела:

  • Artificial Intelligence for Games, Ян Миллингтон;

  • Game Programming Patterns, Роберт Найсторм;

  • AI Algorithms, Data Structures, and Idioms in Prolog, Lisp, and Java, Джордж Люгер, Уильям Стбалфилд;

  • Computational Cognitive Neuroscience, Рэнделл О’Рейли, Юко Мунаката;

  • Artificial Intelligence: A Modern Approach, Стюарт Рассел, Питер Норвиг.

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

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

 

geekbrains.ru

Создание искусственного интеллекта / Хабр

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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. Для примера, я грубо описывал прогнозирование сразу слов и фраз. Но что бы получить прогноз только символа, к этой фразе нужно применить функцию взятия этого одного символа. Или функция научилась понимать задачи на английском, а ТЗ на русском. Тогда РусскоеТЗ->ПеревестиНаАнглийский->ВыполнитьТЗнаАнглийском->Результат.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PS: проголосуйте в голосовалке. Задумайтесь, перечитайте и проголосуйте. Не будьте воздержавшимися. Если нужны более детальные ответы — обращайтесь.

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

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

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

**** Исходники по этой теме, а так же дальнейшее развитие представления можете найти на сайте http://www.create-ai.org

habr.com

Как создать искусственный интеллект? История вторая. Алгоритмы интеллектуального поиска и хранения информации

В серии статей мы рассказываем о новых подходах в Искусственном Интеллекте, моделировании личности и обработке BIG Data, которые недоступны для большинства специалистов по ИИ и общественности. Ценность этой информации в том, что она вся проверена на практике и большинство теоретических наработок реализованы в прикладных проектах.

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

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

В этой статье мы поговорим о технологиях и алгоритмах, которые изменят ваше представление о поиске и хранении информации. В предыдущей статье мы ввели основные термины, а именно – интеллект, обучение, воображение, память, образ, информационный поток, информационное поле. Обязательно ознакомьтесь с ней!: geektimes.ru/post/249042.

Статья вызвала определенный резонанс, и к нам поступили три категории вопросов:

  • «Возможно ли написать алгоритм, который умел бы думать, размышлять?»
  • «Действительно ли мы обладаем компетенцией в ИИ?»
  • «Какие практические приложения разработаны нами?».
Сегодня мы расскажем об алгоритме поиска информации в интернете. Для того чтобы отличать его от других наших алгоритмов назовем его: «ядро v2.3». Насколько алгоритм удовлетворяет критериям интеллектуальности решать вам.

В основу наших алгоритмов легло ДОПУЩЕНИЕ, что процессы, протекающие во время размышления, имеют электрическую природу. Можно предположить, что когда человек что-то говорит (размышляет в слух), то различные участки головного мозга активизируются, и они активизируются не одновременно, а последовательно. Различные участки головного мозга отвечают за различные этапы «изречения мысли». Можно предположить, что различные «мыслительные аспекты» находятся в зависимости друг от друга.

Размышление (мысль) — это некое изложение последовательности информационных единиц (в т.ч. трансляция образов).

Посчитав, что данное предположение верно, мы решили, что процесс размышления можно смоделировать на компьютере. Рассмотрим пример: «Я поеду к тебе» — это образно-информационная структура, она состоит из трех образов:

  • «Образ самоосознания» – «Я»,
  • «Образ действия» – «Поеду»,
  • «Комплексный или объединяющий образ того чего мы хотим достичь» – «к тебе».
Размышление в разных ситуациях может иметь и разный подтекст (скрытый смысл): Например, «Я хочу попить чаю» в разных контекстах может иметь и разный смысл
  • Кто говорит эту фразу — «Женщина говорит мужчине», «Женщина женщине»,
  • В какое время суток «вечером», «днем», «утром».
  • Какая при этом обстановка «во время прогулки», «в офисе», «во время свидания» и т.д.
«Понимание смысла» размышления – «это способность читать между строк», с информационной точки зрения – это поиск сложных корреляций (поиск информационных и структурных взаимозависимостей).

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

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

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

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

Другое важное свойство «точек разворота»/якорей/мотиваторов – использование их в качестве «точки входа» или «момента мысли». При этом ход мыслей получается непротиворечивым. А если начинать размышление с другого понятия (НЕ из мотиватора), то первое что происходит – это выравнивание до мотиватора. В жизни это проявляется следующим образом. Если вас попросить поразмышлять над чем-то неожиданным для вас, то скорее всего вы начнете свое рассуждение «из далека». Размышляя, вы должны дойти до некоторой точки(до мотиватора), и уже потом продолжить свое размышление в «заданном» направлении.

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

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

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

Давайте поразмышляем обладает ли описанная модель ядра этими качествами?
Самообучение, цели обучения, критерии обучения в контексте модели ИИ.
Обучение – это преобразование информационных потоков в информационное поле. У модели есть основной мотив – решить проблему, справится с трудностью, поступающей из вне. Ее задача распознать образы, которые поступают в виде запроса, создать целостный образ, используя избыточную информацию, находящуюся в Интернете.

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

Основной технический критерий «наполнения памяти»/«создания информационного поля»/«создания целостного образа» – это оценка энтропии инфополя. Энтропия – это критерий достаточности того, что образ собран, и в тоже время основной критерий недостатка информации.

Обучение не возможно без обратной связи Обратная связь в модели v 2.3 осуществляется следующим образом – пользователь может скорректировать «точку начала рассуждения» и выбрать направление формирования ответа(размышления) в рамках сформированного инфополя. Модель демонстрирует результат размышления пользователю и ждет коррекционное уточняющее слово (мотиватор).

Воображение в контексте модели ИИ
Воображение мы определяли, как способность достраивать незавершенный образ с одной стороны и способность моделировать ситуацию на произвольных условиях, с другой стороны. Алгоритм, способен активизируя разные мотиваторы, получать разные цепочки размышлений.
Примеры работы модели ядра v 2.3
1) Запрос: «Влияние жестоких компьютерных игр на детей». Контекст, уточнение: Без уточнения. Размышление модели: «Весной 1999 года Билл Клинтон в своем телевизионном обращении к Америке заявил: «Мы должны думать дважды, когда речь идет о „стрелялках от первого лица“». Стрельбу они начали уже на автомобильной стоянке, затем бросились внутрь.

По горячим следам в апрельском номере журнала «Личность и социальная психология» за 2000 год появилась статья «Видеоигры и агрессивные мысли, чувства, поведение в лаборатории и в жизни».

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

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

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

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

Многие специалисты не согласились с таким мнением, считая, что выводы Андерсона и Дил скорее мнение, чем доказанный научный факт.

26 апреля 2002 года Роберт Штайнхойзер убил 17 и ранил 7 человек в гимназии имени Гуттенберга, город Эрфурт, Германия.

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

В документе прямо запрещается «распространение любых видов продукции, пропагандирующих насилие, агрессию и антиобщественное поведение».

Ответственным за выработку мер было назначено Управление по делам молодежи областной администрации. Целью всех этих мероприятий объявлена борьба с молодежной агрессивностью и пропагандой насилия. Эти события вызвали реакцию на соседних территориях Украины, где в срочном порядке было принято аналогичное белгородскому постановление о борьбе с пропагандой насилия, и представители правоохранительных органов стали изымать «жестокие компьютерные игры» в клубах.

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

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

Честно признаюсь, я сама когда-то давно очень любила всякие стрелялки, при этом я не замечала за собой агрессии.»

Запрос можно уточнить словом или частью слова. Например, «подрост», «игр», «жесток» и пр., после уточнения размышление изменится.

Мотиваторы информационного поля:

года---играть---закон--- постановление---борьбе---пропагандой--- мозга,---которые---отвечают--- лобных---долей---человека,--- компьютерные---игры---помочь--- компьютерные---игры---родителям---

2) Запрос: «Проблемы искусственного интеллекта». Контекст, уточнение: «проблем». Размышление модели:

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

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

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

Проблема искусственного интеллекта имеет непосредственное отношение к основному философскому вопросу: речь идет об искусственном воспроизведении, моделировании человеческого интеллекта.

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

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

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

3) Запрос: «как найти свой смысл жизни» Контекст, уточнение: «жизн»

Размышление модели:

«В своей теории Франкл отдельно останавливается на людях, зависимых от алкоголя и наркотиков, которые не видят не только смысла жизни, но и вообще самой реальной жизни.

В чем смысл жизни определенного человека?

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

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

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

Но самый интересный вопрос, ответа на который мы никогда не узнаем: смысл жизни вообще.

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

Смысл жизни одинаков для всех живых существ, от микроба до человека: прожить самому и оставить потомство.

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

Цель жизни — в самой жизни, осознавая свою божественную суть!

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

Смысл жизни у всего живого один: РАЗВИТИЕ через различение добра и зла, пользы от вреда, истинных знаний от заблуждений.

Так как и предназначение у всех в этой жизни свое.

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

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

Но жизнь вернула к первоначальному.»

Мотиваторы информационного поля:себя---этой---жизни.--- найти---себя---себя--- смысл---жизни---жизни--- жизни---каждого---жизни---
Производительность алгоритмов
Наши исследования начались более 5 лет назад и проходили на специализированном кластере. После того как определенные закономерности были найдены, необходимо было оптимизировать алгоритмы. Несколько лет потребовалось для того, чтобы «размышление» заработало на обычном серверном железе. Ядро версии 2.3 способно даже размышлять на планшете с процессором Intel Atom.

Модель ядра 2.3 – это одна ячейка памяти (алгоритм «Одноклеточной памяти»), одна информационная структура, обладающая достаточной избыточностью для того чтобы в ее рамках можно было определить образ, и его под разными точками зрения представить. Прототип модели ядра 2.3 мы выложили в интернет для тестирования.

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

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

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

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

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

Обучайтесь и воображайте…

habr.com

Как создать свой искусственный интеллект?

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

Я говорю о сайте http://iii.ru (Ай-я-яй.ру)С помощью этого ресурса мы создадим так называемого «инфа».Что это за зверь такой, Инф? Инф — небольшой персонаж (зверек или человек или чудо-юдо) который может разговаривать с человеком в интернете (да-да, ещё его можно назвать чат-ботом). Зверя этого можно отправить другу, на домашнюю страничку, запихать в подпись в форуме, в общем, куда только пожелает Ваша фантазия!Поначалу ваш инф будет, конечно малость «туповатым», но это мы можем исправить обучая его!

Давайте посмотрим подробнее, как всё это делается:

При заходе на сайт мы попадаем в так называемый «гараж», где можем пообщаться с несколькими готовыми инфами и приступить к созданию своего!

Чтобы начать создание собственного персонажа, нужно зарегистрироваться. Для этого на экране гаража кликаем на кнопку «Хочу инфа» и после заполнения пары строчек о себе и прочтения лицензионного соглашения, жмём на кнопку «Зарегистрироваться».

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

Теперь мы попадаем на экран создания персонажа-инфа.

Нужно выбрать персонажа «человек», «зверь» или ещё какое чудо-юдо 🙂

Настраиваем внешность – рот, нос, глаза, прочие принадлежности. Если в дальнейшем не понравится – не отчаивайтесь, всё это можно будет подправить.

Дальше придумываем персонажу имя и приступаем к обучению!

создание искусственного интеллекта Теперь рассмотрим самое интересное – обучение персонажа. Нажимаем на вкладку “Обучение”. Открывается список возможных способов:

Анкета – заполняем информацию о своем инфе, меняем ему имя, если захочется и т.д.

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

Мои шаблоны – здесь можно проявить свою фантазию и придумать варианты реплик пользователя и ответа на них вашим персонажем.

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

Дальше можно сделать открытку с Вашим «питомцем» и отправить её другу 🙂 Для этого нажимаем «Открытка с инфом»

создание искусственного интеллектаДелаем все нужные настройки и радуем своих друзей!

Вот такая сегодня не совсем обычная «инструкция» про создание искусственного интеллекта 🙂

Кстати, до нового года осталась всего неделя. С наступающим Вас!создание искусственного интеллекта

best4geeks.ru

Как и для чего Google создает свой искусственный интеллект

«Разговор на чистоту».

Компания Google открыла в Цюрихе новый исследовательский центр Google Research, который будет заниматься машинным интеллектом. Теперь это один из крупнейших центров исследований, связанный с разработкой искусственного интеллекта за пределами США. Его открытие связано с новой стратегией Google, которая предполагает активное внедрение машинного интеллекта в сервисы и приложения. Уже сегодня компания использует наработки в этой области в таких продуктах, как Translate и Photos.

А на конференции Google I/O 2016 были представлены мессенджер Allo и устройство умного дома Google Home, в которых также используется машинный интеллект. С открытием нового исследовательского центра в Цюрихе, Google планирует совершить значительный прорыв в этой области. Нам удалось побывать на открытии этого центра и узнать о том, как и для чего компания разрабатывает искусственный интеллект.

 

Как Google создает искусственный интеллект?

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

 

Машинное обучение

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

«Запрограммировать компьютер, чтобы он был умным, может быть сложнее, чем запрограммировать компьютер, который учится, чтобы быть умным» — объясняет разницу Грег Коррадо (Greg Corrado), старший научный исследователь Google по машинному обучению.

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

 

Для этого компания применяет три способа машинного обучения:

  1. Обучение с учителем — это обучение на примерах, на манер того, как спам-фильтр Gmail фильтрует почту, получая все новые и новые примеры спам-рассылок. Единственная проблема с этим способом: для того, чтобы он был эффективным, нужно иметь большое количество готовых примеров.
  2. Обучение без учителя — это кластеризация данных, компьютеру предоставляются объекты без описания и он пытается найти между ними внутренние закономерности, зависимости и взаимосвязи. Так как данные изначально не имеют обозначений, то для системы нет сигнала ошибки или награды, и она не знает правильного решения.
  3. Обучение с подкреплением — этот метод связан с «обучением с учителем», но здесь данные не просто вводятся в компьютер, а используются для решения задач. Если решение правильное, то система получает позитивный отклик, который запоминает, подкрепляя тем самым свои знания. Если же решение неверное, то компьютер получает негативный отклик, и должен найти другой способ решения задачи.

 

Сегодня Google в основном использует для своих сервисом метод «обучение с учителем», тем не менее, в компании отмечают, что «обучение с подкреплением» может иметь еще больший потенциал. Именно комбинация этих двух методов была использована для создания искусственного интеллекта AlphaGo, который смог победить профессиональных игроков в игру го. Сначала компьютер со счетом 5-0 обыграл чемпиона Европы по го Фань Хуэя (2-ой дан), а потом сыграл с Ли Седолем, игроком 9 дана (самый высокий ранг в го), и опять финальный счет оказался 4-1 не в пользу человека.

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

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

 

 

Поэтому для AlphaGo были разработаны две нейросети. Первую назвали «сетью значения», она оценивает позицию камней на поле числами от -1 до 1, чтобы определить, какие камни лидируют: белые (-1) или черные(1). Если позиция сбалансирована, и каждый игрок может победить, то значение будет близко к 0. Нейросеть сканирует доску и оценивает позицию камней, после чего начинает понимать насколько выгодно расположены белые и черные камни. Вторую нейросеть назвали «сетью политик». На основе экспертных данных о ходах в го она составляет карту, определяя какие именно ходы в этой позиции будут наиболее удачными.

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

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

 

Как тренировались нейросети для AlphaGo?

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

quibbll.com

Создание искусственного интеллекта для игр (часть 1)

Автор: Дональд Кихо (Donald Kehoe)

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

software.intel.com

Создать искусственный интеллект

Иску́сственный интелле́кт, Artificial intelligence — наука и технология создания интеллектуальных машин, особенно интеллектуальных компьютерных программ; свойство интеллекта выполнять творческие функции, которые традиционно считаются прерогативой человека. На сегодняшний день известно, что цифровые цепи в миллионы раз быстрее био-химических, происходит разработка/создание/улучшение существующих искусственных форм интеллекта, но они имеют очень узкие области применения. Нет полноценного мозгового центра. который бы обучался и принимал решения самостоятельно в разных сферах деятельности, начиная от элементарнейших принеси, подай и заканчивая разработкой сложнейших квантовых механизмов. Со временем скорость разработки будет только увеличиваться.

Мы живем в 21 веке и являемся свидетелями резкого скачка развития не только развития IT, но и систем, в т.ч. ИИ который в будущем, будет управлять львиной долей человеческой жизнедеятельности и участвовать в :

1. Финансовом секторе:

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

1.2 Исследования рынка и интеллектуальный анализ данных - несколько крупных финансовых учреждений вложили средства в развитие ИИ, чтобы использовать его в их инвестиционной практике. Разработки BlackRock' AI, Aladdin, используются как внутри компании, так и для клиентов компании, ассистируя в принятии инвестиционных решений. Широкий спектр функциональных возможностей данной системы включает обработку естественного языка для чтения текста, такого как новости, отчеты брокеров и каналы социальных сетей. Затем система оценивает настроения в упомянутых компаний и присваивает им оценку. Банки, такие как UBS и Deutsche Bank, используют систему ИИ под названием Sqreem (Sequential Quantum Reduction and Extraction Model, Модель Последовательной Квантовой Редукции и Экстракции), которая может обрабатывать данные для разработки профилей потребителей и сопоставлять их с продуктами, которые они, скорее всего, захотят. Goldman Sachs использует Kensho, платформу аналитики рынка, которая объединяет статистические вычисления с большими данными и обработкой естественного языка. Его системы машинного обучения используют данные в Интернете и оценивают корреляции между мировыми событиями и их влиянием на цены финансовых активов. Информация, извлеченная системой ИИ из прямой трансляции новостей, используется в принятии инвестиционных решений.

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

ZestFinance разработала свою платформу Zest Automated Machine Learning (ZAML) специально для кредитного андеррайтинга. Эта платформа использует компьютерное обучение для анализа десятков тысяч традиционных и нетрадиционных переменных (от транзакций покупки до того, каким образом клиент заполняет форму), используемых в кредитной индустрии, для оценки заемщиков. Платформа особенно полезна для присвоения кредитных баллов клиентам с небольшой кредитной истории, таким как миллениалы.

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

3. Медицина - Искусственные нейронные сети, такие как технология Concept Processing в программном обеспечении EMR, используются в качестве клинических систем принятия решений для медиуинской диагностики

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

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

Подходы к пониманию проблемы

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

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

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

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

Тест Тьюринга и интуитивный подход

300px-Human_Behaviour.png

Эмпирический тест был предложен Аланом Тьюрингом в статье опубликованной в 1950 году в философском журнале «Mind». Целью данного теста является определение возможности искусственного мышления, близкого к человеческому.

Стандартная интерпретация этого теста звучит следующим образом: «Человек взаимодействует с одним компьютером и одним человеком. На основании ответов на вопросы он должен определить, с кем он разговаривает: с человеком или компьютерной программой. Задача компьютерной программы — ввести человека в заблуждение, заставив сделать неверный выбор». Все участники теста не видят друг друга.

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

Однако последний подход вряд ли выдерживает критику при более детальном рассмотрении. К примеру, несложно создать механизм, который будет оценивать некоторые параметры внешней или внутренней среды и реагировать на их неблагоприятные значения. Про такую систему можно сказать, что у неё есть чувства («боль» — реакция на срабатывание датчика удара, «голод» — реакция на низкий заряд аккумулятора, и т. п.). А кластеры, создаваемые картами Кохонена, и многие другие продукты «интеллектуальных» систем можно рассматривать как вид творчества.

Символьный подход

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

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

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

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

Логический подход

Логический подход к созданию систем искусственного интеллекта основан на моделировании рассуждений. Теоретической основой служит логика.

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

Агентно-ориентированный подход

200px-Pathfinding_2D_Illustration.svg.png

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

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

Гибридный подход

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

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

Господа, мы стоим на пороге будущего, остается лишь шагнуть вперед !

ИИ используется в военных целях передовыми военными державами

smartprogress.do


Читайте также
  • Гиперскоростная звезда – более 1.000.000 миль в час
    Гиперскоростная звезда – более 1.000.000 миль в час
  • Астрономы обнаружили самую большую спиральную галактику
    Астрономы обнаружили самую большую спиральную галактику
  • Млечный путь содержит десятки миллиардов планет, схожих с Землей
    Млечный путь содержит десятки миллиардов планет, схожих с Землей
  • Млечный путь разорвал своего спутника на четыре отдельных хвоста
    Млечный путь разорвал своего спутника на четыре отдельных хвоста
  • Найден источник водородных газов для нашей Галактики
    Найден источник водородных газов для нашей Галактики