Содержание

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

Мастерок.жж.рф

Хочу все знать

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

Инженеры из подразделения Google Brain весной текущего года продемонстрировали AutoML. Этот искусственный интеллект умеет без участия человека производить собственные уникальнейшие ИИ. Как выяснилось совсем недавно, AutoML смог впервые создать NASNet, систему компьютерного зрения. Данная технология серьёзно превосходит все созданные ранее людьми аналоги. Эта основанная на искусственном интеллекте система может стать отличной помощницей в развитии, скажем, автономных автомобилей. Применима она и в робототехнике – роботы смогут выйти на абсолютно новый уровень.

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

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

При этом AutoML оценивает работу NASNеt и использует эту информацию для улучшения дочерней сети; этот процесс повторяется тысячи раз. Когда инженеры протестировали NASNet на наборах изображений ImageNet и COCO, она превзошла все существующие системы компьютерного зрения.

В Google официально заявили, что NASNet распознаёт с точностью равной 82,7%. Результат на 1.2 % превышает прошлый рекорд, который в начале осени нынешнего года установили исследователи из фирмы Momenta и специалисты Оксфорда. NASNet на 4% эффективнее своих аналогов со средней точностью в 43,1%.

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

При этом, конечно, возникают этические вопросы, связанные с опасениями по поводу ИИ: что, если AutoML будет создавать системы с такой скоростью, что общество просто за ними не поспеет? Впрочем, многие крупные компании стараются учитывать проблемы безопасности ИИ. Например, Amazon, Facebook, Apple и некоторые другие корпорации являются членами Партнерства по развитию ИИ (Partnership on AI to Benefit People and Society). Институт инженеров и электротехники (IEE) же предложил этические стандарты для ИИ, а DeepMind, например, анонсировал создание группы, которая будет заниматься моральными и этическими вопросами, связанными с применениями искусственного интеллекта.

Впрочем, многие крупные компании стараются учитывать проблемы безопасности ИИ. При этом, конечно, возникают этические вопросы, связанные с опасениями по поводу ИИ: что, если AutoML будет создавать системы с такой скоростью, что общество просто за ними не поспеет? Институт инженеров и электротехники (IEE) же предложил этические стандарты для ИИ, а DeepMind, например, анонсировал создание группы, которая будет заниматься моральными и этическими вопросами, связанными с применениями искусственного интеллекта. Например, Amazon, Facebook, Apple и некоторые другие корпорации являются членами Партнерства по развитию ИИ (Partnership on AI to Benefit People and Society).

Что такое искусственный интеллект?

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

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

Что такое нейронная сеть?

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

Работает перцептрон проще некуда: он получает несколько исходных чисел, умножает каждое на «ценность» этого числа (о ней чуть ниже), складывает и в зависимости от результата выдаёт 1 или –1. Например, мы фотографируем чистое поле и показываем нашему нейрону какую-нибудь точку на этой картинке — то есть посылаем ему в качестве двух сигналов случайные координаты. А затем спрашиваем: «Дорогой нейрон, здесь небо или земля?» — «Минус один, — отвечает болванчик, безмятежно разглядывая кучевое облако. — Ясно же, что земля».

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

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

Нейронную сеть можно сделать с помощью спичечных коробков — тогда у вас в арсенале появится фокус, которым можно развлекать гостей на вечеринках. Редакция МирФ уже попробовала — и смиренно признаёт превосходство искусственного интеллекта. Давайте научим неразумную материю играть в игру «11 палочек». Правила просты: на столе лежит 11 спичек, и в каждый ход можно взять либо одну, либо две. Побеждает тот, кто взял последнюю. Как же играть в это против «компьютера»?

Берём 10 коробков или стаканчиков. На каждом пишем номер от 2 до 11.

Кладём в каждый коробок два камешка — чёрный и белый. Можно использовать любые предметы — лишь бы они отличались друг от друга. Всё — у нас есть сеть из десяти нейронов!

Нейросеть всегда ходит первой. Для начала посмотрите, сколько осталось спичек, и возьмите коробок с таким номером. На первом ходу это будет коробок №11. Возьмите из нужного коробка любой камешек. Можно закрыть глаза или кинуть монетку, главное — действовать наугад.
Если камень белый — нейросеть решает взять две спички. Если чёрный — одну. Положите камешек рядом с коробком, чтобы не забыть, какой именно «нейрон» принимал решение. После этого ходит человек — и так до тех пор, пока спички не закончатся.

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

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

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

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

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

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

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

Илон Маск, изобретатель, Основатель компании SpaceX: «Это может звучать странно, но мы пытаемся достичь некого симбиоза между человеческим и искусственным интеллектом. Первый такой чип мы планируем внедрить человеку уже в следующем году, так что ждать осталось недолго».

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

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

Лиор Сушард, иллюзионист: «Я использую пять своих чувств чтобы создать шестое чувство. Здесь очень много техник, начиная с психологии и заканчивая языком тела».

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

Алеся Чичинкина, PR-директор компании-разработчика : «Нейронет — это то, что должно заменить интернет к 2035 году, когда исчезнут посредники между нашим мозгом и тем, что мы хотим сделать, напечатать ли, дать ли команду какому-то устройству».

Крупный автопроизводитель презентовал программу, которая предугадывает желания водителей.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Критерий завершения

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

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

Что такое искусственный интеллект (ИИ)?

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

Да, но что такое интеллект?

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

Разве нет определения интеллекта, которое не зависит от соотнесения его с человеческим интеллектом?

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

Является ли интеллект однозначным понятием, чтобы на вопрос «Обладает ли данная машина интеллектом?» можно было ответить «да» или «нет»?

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

Является ли искусственный интеллект попыткой имитировать человеческий интеллект?

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

У компьютерных программ есть IQ?

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

Как сравнить человеческий и компьютерный интеллекты?

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

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

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

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

Когда началось исследование ИИ?

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

Является ли целью ИИ поместить человеческий разум в компьютер?

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

Что такое тест Тьюринга?

В статье А. Алана Тьюринга 1950 года «Вычислительная техника и разум» обсуждались условия обладания машиной интеллектом. Он утверждал, что если машина может успешно притворяться человеком перед разумным наблюдателем, то вы, конечно же, должны считать ее разумной. Этот критерий удовлетворит большинство людей, но не всех философов. Наблюдатель должен взаимодействовать с машиной или человеком через средство ввода-вывода для исключения необходимости имитации машиной внешнего вида или голоса человека. Задача как машины, так и человека состоит в том, чтобы заставить наблюдателя считать себя человеком.

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

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

Является ли целью ИИ достижение человеческого уровня интеллекта?

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

Насколько далек искусственный интеллект от достижения человеческого уровня? Когда это произойдет?

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

Является ли компьютер машиной, которая может стать интеллектуальной?

Компьютеры могут быть запрограммированы для имитации любого типа машины.

Скорость компьютеров позволяет им обладать интеллектом?

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

Что насчет создания «детской машины», которая могла бы улучшиться путем чтения и обучения на собственном опыте?

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

Являются ли теория вычислимости и вычислительная сложность ключами к ИИ?

Нет. Эти теории актуальны, но не затрагивают фундаментальные проблемы ИИ.

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

В 1960-х годах ученые-программисты, в числе которых были Стив Кук и Ричард Карп, разработали теорию областей NP-полных задач. Задачи в данных областях разрешимы, но, по-видимому, их решение требует времени, растущего экспоненциально с размерностью задачи. Простейшим примером области NP-полной задачи служит вопрос: какие утверждения логики высказываний являются выполнимыми? Люди часто решают проблемы в области NP-полных задач в разы быстрее, чем это гарантируется основными алгоритмами, но не могут решать их быстро в общем случае.

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

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

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

Стэнфордский университет

Пусть компьютер сам принимает решение или пишем ИИ для игры вместе

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

Под катом gif-файлов мегабайт на 10.

Об игре

В игре вы управляете мотоциклом, который оставляет за собой стену из света. Игровое поле ограничено, а у соперников такие же мотоциклы. Мотоцикл едет постоянно, вы лишь можете поворачивать. Свободное место на поле кончается, и избегать препятствия становится сложнее. Побеждает тот, кто дольше всех продержится. Клон игры я сделал браузерным многопользовательским с использованием node.js и socket.io. Управление из двух кнопок – поворот влево и поворот вправо.

Интерфейс бота

Так как я использую socket.io, то обработка игроков на сервере у меня была в виде работы над массивом специальных объектов socket, которые создаёт socket.io. Из этих объектов я использовал только id, функции emit и broadcast. А значит безболезненно для самой игры можно реализовать интерфейс socket и использовать его в обработке, будто играет ещё один пользователь. Я назвал класс BotSocket.
Метод emit(event, data) у бота выполняет почти такие же действия что и у клиента при входящих данных от сервера, а именно:

  1. Сохраняет данные обо всех играющих мотоциклах при их добавлении
  2. Сохраняет ссылку на свой мотоцикл при его добавлении
  3. Обновляет данные обо всех играющих мотоциклах
  4. Сбрасывает состояния при перезапуске игры

Для передачи команд управления своим мотоциклом на сервер потребовалось сохранить ссылку на объект игры, который обрабатывает такие команды от обычных пользователей. Метод класса Game у меня назван onControl(socket, data), поэтому я добавил метод в BotSocket
BotSocket.prototype.control = function(data) { this.game.onControl(this, data); };
При поступлении от сервера команды обновления данных мотоциклов (было совершено их передвижение) я проверяю, есть ли у меня вообще подконтрольный мотоцикл, не столкнулся ли он еще и был ли он перемещён, и, в случае успеха, я вызываю основной метод для работы ИИ — update().

Интерфейс готов, теперь можно добавить сам ИИ.

Искусственный интеллект

Как бы громко это не звучало, но в играх игроков, за которых играет компьютер, принято называть именно ИИ, либо ботами. Объект BotSocket обладает необходимыми данными об игре, чтобы принять решение. Вариантов решения может быть всего три:

  1. Ничего делать, ехать прямо
  2. Повернуть направо
  3. Повернуть налево

Когда я решил написать бота, я понятия не имел, как это можно сделать. Я попробовал очень простой код:
BotSocket.prototype.update = function() { var r = Math.random(); if (r > 0.95) { this.control({‘button’: ‘right’}); } else if (r > 0.90) { this.control({‘button’: ‘left’}); } }
Поведение было примерно таким:

Я смотрел на него и испытывал большую радость, мне казалось, что он теперь самостоятельный. Казалось, что он сам ищет попытки выжить, бьётся там, как живой. Трогательное зрелище.
Но хотелось, чтобы он жил как можно больше. Я стал искать информацию о том, как пишут ИИ к играм. Нашел статьи, которые описывали разные подходы. Но я искал что-то чрезвычайно простое. Я нашел на хабре в одной из статей про бота для игры вроде Zuma упоминание волнового метода. Он же алгоритм Ли. Мне он показался очень простым и подходящим. Это алгоритм поиска кратчайшего пути из одной точки в другую по полю, где клетки могут быть либо свободными, либо занятыми. Суть простая. Мы начинаем из точки назначения, присваиваем ей значение 1 и помечаем все соседние свободные клетки цифрой на единицу больше. Затем берём все соседние свободные помеченных и снова помечаем на единицу больше. Так расширяемся на всё поле, пока не дойдем до точки назначения. А путь строим поиском из соседних по уменьшению числа, пока не дойдем до 1. Я смотрел алгоритмы поиска кратчайших путей в графах, но этот мне показался наиболее подходящим.
Я перенёс алгоритм копипастой из страницы в вики, дал ему имя BotSocket.prototype.algorithmLee. Для поля я создал сначала объект battleground, в котором при каждом обновлении помечал занятые точки с их координатами. А в алгоритме Ли сводил это поле к такому же, но с шагом 1.
Нужно было как-то определять точку назначения. Я решил выбирать её случайно через определенные интервалы времени. Сделал метод для поиска случайной свободной точки на поле:
BotSocket.prototype.getDesiredPoint = function() { var point = ; var H = Object.keys(this.battleground).length — 1; var W = Object.keys(this.battleground).length — 1; var x, y, i, j; var found = false; var iter = 0; do { i = this.getRandomInt(1, W); j = this.getRandomInt(1, H); x = i * this.moveStepSize; y = j * this.moveStepSize; if (this.battleground === this.BG_EMPTY) { found = true; } iter++; } while (!found && iter < 100); point = ; return point; };
Теперь я мог переписать update:
BotSocket.prototype.update = function() { if (!this.desiredPoint || this.movements % this.updDestinationInterval === 0) { this.desiredPoint = this.getDesiredPoint(); } if (!this.desiredPoint) { return; } var currentPoint = ; var path = this.algorithmLee(currentPoint, this.desiredPoint); if (path && typeof path !== ‘undefined’) { this.moveToPoint(path); } else { this.desiredPoint = this.getDesiredPoint(); } };
Здесь упоминается метод moveToPoint, который поворачивает, если нужно, чтобы достигнуть первую точку из кратчайшего пути с учётом текущего направления.
Позже я решил сделать ботов более агрессивными и вместо случайной желаемой точки, я искал точку впереди врагов, чтобы перекрыть им путь. Или чтобы они не играли так долго сами с собой.

Бот на стороне клиента

Я решил попробовать перенести бота на клиентскую часть. Так как проект на node.js, я могу использовать написанный код для бота и на стороне клиента. Для этого я расширил BotSocket отдельным клиентским файлом, который переопределял методы emit() и control(), чтобы правильно взаимодействовать с сервером без ссылки на объект game.
Локально всё работало отлично, а после деплоя на удалённый сервер была какая-то странная картина:

Долго думая, я понял, что дело в задержке. Бот отправлял команду поворота, но она доходила после обновления его позиции на сервере, отчего он часто не мог попасть на прямой путь к желаемой точке. Но я хотел нормального бота на клиентской стороне. Поэтому решил учитывать задержку. Для этого написал снова расширение BotSocket. Статья получается длинной, так что опишу основные решения. Перед вызовом алгоритма Ли вместо текущей точки я подставлял прогнозируемое положение с учетом текущего положения и направления, а так же множителя задержки. Множитель задержки – это число, во сколько раз превосходит задержка частоту обновления положения на сервере. Предсказание будущей точки мне еще понадобилось в методе moveToPoint().
Предсказание работало, если играл один. Но если были другие участники, то бот не учитывал это и направлял туда, где через некоторое время уже проехал другой игрок. Для решения этой проблемы я изменил метод, который помечает клетки поля занятыми. Я стал их помечать занятыми в некотором радиусе движения мотоциклов. Радиус зависит от множителя задержки.
Предварительно я снабдил бота функциями отладки, который рисовали на поле желаемую точку и занятые точки. Моя версия клиентского бота с учетом задержки теперь двигается так:

Мой красненький, остальные серверные.

Самое важное – попробуйте сделать бота сами

Основная цель этой статьи – пробудить интерес к написанию бота. Я сделал много, чтобы победить вашу лень. Для этого я добавил возможность подгружать свой собственный скрипт с ботом, который будет расширять мой базовый клиентский класс. Зайдите на проект и нажмите на текст «Show options for room with your own bot», а затем на кнопку «Create room for test your own bot». Будет создана комната, где можно легко применять ботов, по умолчанию вашим ботом будет бот без учета задержки. Теперь настало время для вашего кода.
Два простых варианта для использования вашего кода в деле, используйте любой:

  1. Выкладывайте js-файл на любой сервер, который будет доступен вашему браузеру. Url к вашему скрипту вставляйте в игре рядом с кнопкой “Load your AI script”. После нажатия на эту кнопку будет создан и заполнен новый объект botSocket, у которого будет вызван метод start().
  2. Используйте консоль браузера (Firebug – F12, Firefox — Ctrl+Shift+K, Chrome – Ctrl+Shift+J, другие – ).

Если вы определились с методом ввода вашего кода, попробуйте переопределить методы класса BotSocket. Для начала самое простое:
BotSocket.prototype.update = function() { var r = Math.random(); if (r > 0.95) { this.control({‘button’: ‘right’}); } else if (r > 0.90) { this.control({‘button’: ‘left’}); } }
После этого пересоздайте объект botSocket, введя
botSocket = null;
При этом код на странице сам пересоздаст и заполнит объект. Этим вы измените стандартное поведение бота на случайное. А дальше уже дело для вашей фантазии или глубоких знаний.
Вы так же можете подключить скрипт моего улучшенного бота с учетом задержки, вставив в url для бота https://raw.github.com/rnixik/tronode-js/master/public/javascripts/MyBotSocketClient.js

Заключение

Я рассказал, как я создавал своего ИИ на сервере, затем как перенес его на клиент и как пытался научить его играть с учетом высокого пинга. Я очень надеюсь, что смог заинтересовать вас, и вы попробовали написать свой ИИ, если еще ни разу этого не делали раньше. Конечно, в играх высокого класса используются совсем другие подходы, но начинать стоит с малого.
Исходный код на Github: github.com/rnixik/tronode-js
Если у вас нет под рукой node.js, вы можете воспользоваться развернутыми мной приложениями:
1) tronode.livelevel.net — самая дешевая VPS на DigitalOcean,
2) tronode-js.herokuapp.com — бесплатная виртуальная единица на Heroku.
Первый, скорее всего, первым может не справиться с нагрузкой, а второй на некоторых компьютерах сбрасывает socket.io-транспорт в xhr-polling, из-за этого игра очень сильно лагает.
Если вы хотите узнать больше, о том, как я программировал игровую логику, то можете прочитать . Там же о развертке node.js и немного о графической части.
Если у вас нет аккаунта на хабре, то задать вопросы или прислать свои интересные предложения можете мне на почту dev@1i1.be.

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

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

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

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

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

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

  • Логика;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Google Cloud Prediction API;

  • Wolfram|Alpha;

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

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

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

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

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

Рубрики: Вера

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *