Как создать искусственный интеллект? История первая. Что такое интеллект? Как сделать искусственный интеллект


Как создать искусственный интеллект? | 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

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

В серии статей мы рассказываем о новых подходах в Искусственном Интеллекте, моделировании личности и обработке 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

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

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

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

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

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

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

Сформулируем аксиомы: 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, которые недоступны для большинства специалистов по ИИ и общественности. Ценность этой информации в том, что она вся проверена на практике и большинство теоретических наработок реализованы в прикладных проектах.

Многие из вас слышали про современные технологии, которые ассоциируются сегодня с понятием искусственный интеллект, а именно: экспертные системы, нейронные сети, лингвистические алгоритмы, гибридные системы, когнитивные технологии, имитационные(чат-боты) и пр.

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

Первое, что мы с вами сделаем это определим, что такое интеллект.
Представьте себе, что компьютер с интеллектом существует. И у вас есть возможность общаться с ним голосом или с помощью текстовых сообщений. Вопросы:
  • Обязательно ли встраивать в программу интеллекта компьютера особенности языка (описывать семантику, грамматику, морфологию) или он смог бы выучить языки самостоятельно через взаимодействие с человеком?
  • Если бы вам поставили задачу научить компьютер языку, то что бы вы делали?
  • Если бы в обучении принимали участие только вы, то на кого он был бы похож?
А теперь, ответьте на эти вопросы еще раз, с той лишь разницей, что обучать пришлось бы:
  • Породистого попугая, теоретически способного к общению.
  • Новорожденного ребенка.
Мы с вами только что проделали интеллектуальную работу, и я надеюсь, что многие из вас получили новые знания. И вот почему:
  • Во-первых, я попросил вас представить себе (вообразить), «что будет если…». Вы действовали в изменившихся условиях. Возможно вам не хватало информации и знаний, вам было трудно.
  • Во-вторых, вы оказались способны к обучению, познанию, вы нашли знакомую вам аналогию сами или встретили ее в тексте, а возможно вы воспользовались интернетом или спросили совет друга.
Существует множество подходов к определению интеллекта. Мы определим главные его признаки…
В первую очередь интеллект – это способность обучаться и воображать.
Для того чтобы создать алгоритм моделирующий интеллект, первое что нужно сделать это наделить его способностью к обучению, никаких знаний вкладывать в него не нужно.

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

  1. Чем чаще он слышит слово в разных контекстах, тем быстрее он его запомнит. Слово, которое он произнесет первым скорее всего будет – «мама». «Мама тебя любит» «Мамочка тебе ручки помоет» «Мама тебя целует» «А где мама?» Обучение происходит за счет избыточности данных.
  2. Чем больше каналов поступления информации задействовано, тем эффективнее обучение: ребенок слышит: «Мама тебя любит». ребенок видит улыбку мамы. ребенок чувствует тепло исходящее от мамы. ребенок чувствует вкус и запах маминого молока. ребенок говорит «Мама».
  3. Ребенок не сможет воспроизвести слово сразу правильно. Он будет пытаться, пробывать. «М», «Ма», «Мам», «М» … «Мама». Обучение происходит в действии, каждая следующая попытка корректируется пока не получим результат. Метод проб и ошибок. Очень важно получение обратной связи из реальности.
  4. Не воспитывайте своих детей, все равно они будут похожи на вас. Ребенок стремится быть похожим на окружающих его людей. Он подражает им и учится у них. Это один из механизмов моделирования личности, о котором мы поговорим более подробно в следующих статьях.
Какова же роль воображения?
Представьте себе, что вы едите на автомобиле по незнакомой трассе. Проезжаете знак ограничения скорости 80 км/ч. Едите дальше, и видите еще один знак ограничения скорости, но он забрызган грязью и его практически не разобрать. Вы передвигаетесь со скоростью 95 км/ч. Что будете делать? Пока вы принимали решение из-за кустов выглянул сотрудник полиции, и вы увидели лучезарную улыбку на его лице. В голове у вас мгновенно достроился «образ знака», и вы поняли почему тут стоит полицейский, и что вам срочно нужно нажать тормоз. Вы сбрасываете скорость до 55 км/ч, улыбка с лица полицейского мгновенно пропадает, и вы едите дальше.

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

Воображение – это моделирование ситуации на произвольных условиях.

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

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

Вам не кажется, что определяя интеллект мы упустили из виду какие-то важные компоненты или забыли о чем-то рассказать?

Да, мы упустили из виду восприятие, и забыли рассказать про память.

Представьте себе, что вы смотрите в глазок и видите часть буквы:

Что это за буква?

Может быть «К»?

Конечно нет, это же японский иероглиф «вечность».

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

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

Образ – субъективное видение реального мира, воспринимаемого при помощи органов чувств (каналов поступления информации).

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

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

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

Память служит для хранения образов и их взаимосвязей.

А воображение – это способность достраивать незавершенный образ.

Для обобщения приведем еще один эксперимент из мира животных:

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

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

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

Если бы распознание образа иероглифа «вечность» было бы для вас вопросом жизни и смерти, то вы обязательно нашли способ это сделать.

С более популярного языка перейдем к техническому и сформулируем основные понятия, которые мы будем использовать далее:
  • Пересечение избыточной информации из разных информационных каналов создает образ.
  • Обучение – это преобразование информационных потоков в информационное поле.
  • Информационное поле(память) – хранение образов и их взаимосвязей.
  • Воображение – … – «Уважаемый читатель, дострой образ воображения самостоятельно, используя избыточную информацию из своего жизненного опыта и этой статьи».
  • Интеллект – это способность обучаться и воображать.

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

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

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

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

habr.com

Делаем Искусственный Интеллект / Хабр

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

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

После 56-го, когда миру огласили первую концепцию Искусственного Интеллекта, утекло много воды. Ученые, а вслед за ними и простые обыватели разделились на несколько направлений. И у каждого из них свой взгляд на вопрос, свое определение, свои критерии. У кого-то в основе лежит мысль, что ИИ уже изобретен, у кого-то наоборот — ИИ изобрести невозможно. Для справки можно было бы выложить все эти определения, но я не вижу смысла заниматься копипастом с той же википедии. Это ничего не даст. Большинство людей имеют свой взгляд на этот вопрос и будут отстаивать то, что соответствует их взглядам.   Поэтому я воспользуюсь этим правом и в кратком виде изложу свое мнение, то, что я подразумеваю, когда пишу «Искусственный Интеллект». В общих чертах это соответствует определению «сильного искусственного интеллекта», которое ввел Джон Сёрль. В нем говориться, что ИИ должен являться не моделью разума человека, а самим разумом, в той мере, в которой человеческий разум — это разум. Да, формулировка довольно запутанная, но суть, думаю, вы уловили.  Каждый уважающий себя докладчик должен иметь подобный раздел, вот и я тоже думаю — чем я хуже! Только смысл этого раздела немного противоположный по вполне объективным причинам.   Здесь я хотел бы пояснить мое высказывание из пролога насчет того, что «я ничего путного в сети не нашел». Прежде всего, ни одно из основных направлений исследований я не считаю перспективным для создания Искусственного Интеллекта (см. Условные обозначения) в ближайшем будущем. Для других целей — на здоровье, многое уже сейчас используется.   Некоторые направления от кибернетики были рассмотрены в моей первой статье «Картина без художника». В ней описания технологий перемежаются с моими комментариями, каждый из которых дает понять, почему с данной технологией мы не достигнем цели. Во второй статье объектом для критики стала нейрокибернетика. Уже по традиции в ней содержится описание моего взгляда на данное направление и размышления на тему, почему для создания ИИ копать нужно в другом направлении.   За кадром пока остались идеи фантастов и разнообразные стереотипы. Рассмотрим наиболее популярные из них.   Итак, на первое место среди заблуждений относительно ИИ я поставил серийные модели роботов, популярных в научно-фантастических фильмах 90-х. Сюда же можно отнести большинство роботов многоуважаемого мною Азимова и, например, С-3PO. Объединил я их по следующему критерию — все они созданы с уже зашитым, запрограммированным на определенные действия в определенных условиях интеллектом, который либо совершенно не способен сам переписать свою программу (инвариантен), либо способен, но очень незначительно. При этом у каждого из таких роботов кинематографическая память.   В чем же бредовость этого образа, который является целью кибернетиков? Если эти создания описываются недалекими, то я не против — такое вполне возможно. Но это не ИИ. Для слабоумного робота можно написать какой-нибудь алгоритм, но до человеческого разума будет очень далеко. А вот написать программу, которая наделяет робота такими свойствами, что он проходит тест Тьюринга и вообще размышляет не хуже человека, невозможно. Это все равно, что разработать программу обучения человека дошкольного возраста, чтобы за неделю (месяц, год) он овладел знаниями и опытом взрослого человека.   Ну, и на втором месте у меня стоят фантастические мега-компьютеры: Скайнет, БПЛА из «Стэлс», ВИКИ из «Я, Робот», Сэт из «Универсальный солдат 2». Думаю, список вы сможете продолжить и сами. В принципе они не особенно отличаются от рассмотренных чуть выше роботов, но их воспринимают не как что-то человекоподобное, а как программу, которая может быть запущена на компьютере. Многие надеются, что подобные штуки будут висеть на серверах с веб-поисковиками, на родной машине в составе всяких IDE или вообще в виде ОС. При этом от них ждут некоторых сугубо человеческих свойств: мышление, способность решать нетривиальные задачи, делать сложный выбор и тому подобные.   Что же здесь не так? Действительно, с виду все красиво и убедительно. С другой стороны в подобных гипотетических системах хотят использовать только некоторые из человеческих свойств, другие же по причине их бесполезности не приветствуются и игнорируются. Я, например, воспринимаю эту ситуацию следующим образом: «Мне нравятся яблоки, поэтому выведете мне такой сорт яблонь, которые состояли бы из одних яблок». Другими словами мы хотим взять часть интеллекта, и чтобы эта часть не смотря ни на что являлась полноценным интеллектом.   Я предлагаю на этом остановиться. Но если возникнет такая необходимость, всплывет какая-нибудь известная теория или гипотеза, о которой я не упомянул, то она вполне может оказаться здесь, среди прочих в списке неиспользуемой литературы.  В каком-то роде они вытекают из предыдущего раздела. Наш Человечный ИИ должен обладать максимальным количеством свойств своего создателя. После запуска он должен обладать теми же знаниями, т. е. почти никакими, и теми же навыками, которые можно в целом назвать способностью к самообучению. Далее он будет работать автономно.   Процесс обучения при этом будет проходить в той же последовательности, как и у человека, начиная со знакомства с окружающим миром, обучения речи, далее идет развитие и усложнение картины мира. Все эти этапы должны происходить так же, как и у человека. Поэтому важным критерием является общение с людьми. Без него ИИ просто не сможет развиваться. Отсюда следует, что после того, как ИИ будет создан и запущен, понадобится несколько лет на его обучение. Строго говоря, он и дальше будет точно также продолжать учиться, если будут необходимые для этого условия.   Можно было бы подумать, что намного эффективнее будет сначала упорядочить какой-нибудь блок информации специальным образом, а затем просто скопировать его в ИИ. Но разум человека работает с информацией намного сложнее, чем поисковик. ИИ должен сам, теми же способами, как и человек, добыть эту информацию, а затем упорядочить ее, снова так же как человек.   Я не могу пока точно сказать, с какой скоростью будет происходить обучение. Ведь самую важную информацию особенно «в раннем возрасте» ИИ получит из общения с людьми как любой ребенок. Так что на первом этапе именно это будет ограничивать скорость обучения. Далее, когда он достигнет умственного развития хотя бы 15-20 летнего человека, он сможет много информации почерпнуть из книг, статей и прочих текстовых носителей информации. При таком развитии эта информация уже может повлиять на его взгляды, дать знания, которые он сможет взять и использовать.   Вот здесь и заключен вопрос — с какой скоростью будет происходить обучение? Может ли ограничение в скорости обучения человека являться следствием особенностей устройства его разума? Насколько можно ускорить процесс при той же функциональности и эффективности? Созданные мной частичные модели пока не настолько совершенны, чтобы дать ответы на эти вопросы. Но уже сейчас можно сказать, что вариант, в котором ИИ после запуска зайдет в Интернет, за пару минут поумнеет, а еще через пару — запустит ядерные ракеты, отпадает. Каким мы его обучим, таким он и станет.   Что касается обучения, то может возникнуть вопрос — а сможет ли ИИ превзойти человека? Забудем на минуту пророчества фантастов и здраво оценим ситуацию. В данном случае интеллект нужно воспринимать как нечто конкретное. Но конкретные интеллекты у разных людей отличаются. Есть гении, есть идиоты и есть остальные нормальные и не очень люди. Так что Искусственный Интеллект сможет быть как на равных среди не самых глупых представителей человечества, так и превосходить их. Ведь он проходит такой же путь от рождения, обладит теми же стимулами и способностями к познанию, у него так же организованы воспоминания. Так что задайте себе вопрос, что мешает Вам стать самым умным в мире?   Если мы будем создавать ИИ идентичным по строению с разумом человека, то мы автоматически наделим его всеми свойствами и функциями, характерными для человека. Сюда относятся и чувства, и интуиция, способность лгать и прощать — все, что относится к особенностям разума.   Создать что-то функционирующее в точности как наш интеллект куда проще, чем изображать из себя бога и с нуля изобретать систему, которая смогла бы с момента запуска автономно (без вмешательства в архитектуру) развиваться. Вот когда мы сделаем Человечный ИИ, когда поймем, что как работает, тогда и будем знать, что и как нужно оптимизировать, если вообще что-то поддается оптимизации.  Все описанное в предыдущем разделе — это не более чем философия, идея, которая должна пронизывать все этапы разработки и обязательно присутствовать в конечном результате. Тому, как же будет выглядеть этот конечный результат и посвящается этот раздел.  Платформа

Мы уже решили, что у нас будет максимальное функциональное сходство в архитектурах разумов ИИ и человека. Это значит, что абсолютно все, относящееся к разуму человека, должно присутствовать и в Искусственном Интеллекте. Подчеркну, что сходство должно быть функциональным.   Если же нам нужно что-то «абсолютно» человечное, то тут могут возникнуть некоторые проблемы. Человек живет не только своим интеллектом, мыслями, мечтами. Его голову носит тело, которое постоянно дает о себе знать и вмешивается в наши священные мысли и мечты. Однако без этого вмешательства мы бы не были собой, так как многие процессы в организме так или иначе влияют на наше Я. Что-то влияет только поверхностно, например, когда больной зуб мешает нам сосредоточиться, но есть также и такие вещи, чье влияние несколько глубже, как у гормонов. Не будем также забывать о врожденных страхах, инстинктах и т. п. Если попытаться скопировать все это многообразие, то придется кроме самого интеллекта создать еще и точную копию всего человеческого организма, и в итоге мы получим человека. Я лично не вижу в этом смысла (разве что самоутверждение) и не вижу возможности достигнуть этого «неестественным» путем. Все же мы не боги и даже не НЛО.   Следовательно, уровень абстракции модели (системы) должен быть выше, чем уровень клеток (нейронов). В таком случае созданная модель будет платформонезависимой. Приоритетной платформой естественно является компьютер. Уровень абстракции должен быть таким, чтобы всю систему можно было бы реализовать на объектно-ориентированном языке. А так как любую информацию можно закодировать с помощью текста, то, для того, чтобы организовать память, необходимо лишь разработать способ модуляции (кодирования) и разметки. Главные плюсы такого решения: экономия на дорогостоящей внеземной технике благодаря использованию обычных компьютеров с обычными жесткими дисками для хранения памяти и экономия на программистах, работающих с внеземным языком программирования, в пользу старого доброго С и подобных ему.  Взаимодействие

С платформой определились. Теперь приступим к описанию свойств, которыми она должна обладать в первую очередь. Приведу мысли Minski на счет Искусственного Интеллекта:

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

Как уже было отмечено ранее, реализовать какой-либо из человеческих органов чувств пока не представляется возможным, разве что только внешне. Значит, нам нужно придумать совершенно новый орган, который будет давать информацию о внешнем мире.   Признаюсь, сначала у меня была идея использовать виртуальный мир, созданный на компьютере в виде трехмерной интерактивной модели. Эдакая Матрица для ИИ. Тем более что таких сейчас много, чего только одна Half Life 2 стоит. Он будет попроще нашего, и зрение организовать будет проще. Но даже здесь возникнет куча проблем, так как мы не знаем, как у человека организована зрительная память, а выяснять это методом проб и ошибок на такой сложной модели будет очень долго, даже для такого относительно простого мира.   Не обязательно, чтобы окончательная версия ИИ была снабжена только одним органом чувств. На первом этапе основной задачей этого органа является помощь в разработке и настройке механизмов обучения, памяти и прочих, чтобы они соответствовали человеческим. Отсюда и вытекают главные требования к нему.   Он должен быть простым, но дающим широкие возможности во взаимодействии с ИИ. Он не должен своей сложностью отвлекать от работы над настройкой памяти, заставляя заниматься вместо этого громоздкими алгоритмами распознавания и методами интерпретации для последующего хранения. При этом технологии, на основе которых он будет построен, должны быть достаточно изучены и развиты, чтобы для его использования не пришлось что-то изобретать.   И вот одним солнечным деньком спустя полтора километра и полтора альбома я понял, что это должно быть. Векторная графика.   Да-да-да, она проста, бесплатна и у нее целая куча достоинств. Хоть это и чисто компьютерная вещь, она может служить упрощенным аналогом человеческого зрения и частично даже осязания. Она дает громадную свободу действий, так как можно сформировать целое окружение из разных предметов с разными цветами. Подумав еще немного, можно создать динамические предметы, позволив им двигаться, изменяться, взаимодействовать, рождать при этом новые предметы.   В приложении к реальному миру предметы будут служить аналогами игрушек для маленького ИИ, манипулируя с которыми он будет получать различную информацию. Эти объекты могут подражать реальным предметам и некоторым их свойствам, чтобы можно было учить ИИ их названиям. Короче простор для фантазии здесь огромен. С одной лишь такой системой можно достигнуть куда большего, чем просто развития однолетнего ребенка. Ведь в векторе можно организовать и цифры, может даже музыку…   Ну вот, теперь портрет можно считать завершенным. Внешне наш человечный Искусственный Интеллект будет выглядеть, как окошко, в котором есть область для рисования, поле для ввода текста, кнопочки…   Может внешне это и напоминает гибрид Corel Draw и тамагучи, но на самом деле это замечательная платформа для опробования и доработки различных идей, которых, надо сказать, уже масса.  

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

Оглавление:

История Искусственного Интеллекта, часть 1. Картина без художника.

История Искусственного Интеллекта, часть 2. Нейросетевой ИИ — неизбежно или невозможно?

Делаем Искусственный Интеллект

habr.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

best4geeks.ru

Как создать искусственный интеллект? - Подходы и направления

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

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

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

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

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

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

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

  • Слабый ИИ – боты, которых мы видим в компьютерных играх, или простые подручные помощники, вроде Siri. Они или выполняют узкоспециализированные задачи или являются незначительным комплексом таковых, а любая непредсказуемость взаимодействия ставит их в тупик.
  • Сильный ИИ – это машины, интеллект которых сопоставим с человеческим мозгом. На сегодняшний день нет реальных представителей этого класса, но компьютеры, вроде Watson очень близки к достижению этой цели.
  • Совершенные ИИ – будущее, машинный мозг, который превзойдёт наши возможности. Именно об опасности таких разработок предупреждают Стивен Хоккинг, Элон Маск и кинофраншиза «Терминатор».

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

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

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

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

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

  • Diffbot;
  • Google Cloud Prediction API;
  • Mallet;
  • Scrapy;
  • Wolfram|Alpha;

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

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

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

  • 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, Стюарт Рассел, Питер Норвиг.

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

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

intellect.ml