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

«Хочу заниматься ИИ. Что стоит изучить? Какие языки использовать? В каких организациях учиться и работать?»

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

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

Разные проекты требуют владения разными языками программирования. Я бы рекомендовал знать как минимум Python, Java и любой функциональный язык. Нелишним будет опыт работы с различными базами данных и распределёнными системами. Чтобы быстро изучать лучшие подходы, применяемые в индустрии, требуется знание английского языка.

Учиться рекомендую в хороших российских вузах! Например, в МФТИ, МГУ, ВШЭ есть соответствующие кафедры. Большое разнообразие тематических курсов доступно на Coursera, edX, Udacity, Udemy и других MOOC площадках. Некоторые ведущие организации имеют собственные программы подготовки в области ИИ (например, Школа анализа данных у Яндекса).

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

Повысить Понизить

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

Где учиться, сказать сложно — все наши ребята учились сами, благо есть интернет и Google.

Повысить Понизить

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

Давайте ради конкретики возьмём трендовую профессию Data Scientist. Что делает этот человек? В общем и целом — собирает, анализирует и готовит к употреблению большие данные. Именно те, на которых растёт и тренируется ИИ. А что должен знать и уметь Data Scientist? Статический анализ и математическое моделирование – по умолчанию, причём на уровне свободного владения. Языки – скажем, R, SAS, Python. Также хорошо бы иметь какой-никакой опыт разработки. Ну и, вообще говоря, хороший дата-сайнтист должен уверенно себя чувствовать в БД, алгоритмике, визуализации данных.

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

Да, времени уйдёт порядочно. Но игра стоит свеч, потому что хороший Data Scientist – это очень перспективно. И очень дорого. Есть ещё и другой момент. Искусственный интеллект – это, с одной стороны, уже не просто объект ажиотажа, а вполне себе вышедшая на виток продуктивности технология. С другой стороны, ИИ всё ещё только развивается. Для этого развития требуется много ресурсов, много навыков и много денег. Пока это уровень высшей лиги. Я сейчас скажу очевидную вещь, но, если вы хотите оказаться на острие атаки и своими руками двигать прогресс, цельтесь в компании уровня Facebook или Amazon.

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

Повысить Понизить

ИИ сейчас активно развивается, и предсказывать на десять лет вперед сложно. На ближайшие два-три года будут доминировать подходы на базе нейросетей и вычислений на основе GPU. Лидером в этой области является Python с интерактивной средой Jupyter и библиотеками numpy, scipy, tensorflow.

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

Повысить Понизить

Повысить Понизить

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

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

Если говорить о направлениях деятельности, то здесь можно выделить обучение прикладных нейронных сетей и разработку совершенно новых вариантов нейросетей. Яркий пример: существует такая очень востребованная сейчас специальность - «дата-сайентист» (Data Scientist). Это разработчики, которые, как правило, занимаются изучением и подготовкой неких наборов данных для обучения нейросетей в конкретных, прикладных областях. Резюмируя, подчеркну, что каждая специализация требует отдельного пути подготовки.

Повысить Понизить

Прежде чем приступать к узкопрофильным курсам, нужно изучить линейную алгебру и статистику. Погружение в ИИ я бы посоветовал начать с учебника «Машинное обучение. Наука и искусство построения алгоритмов, которые извлекают знания из данных», это неплохое пособие для начинающих. На Coursera стоит послушать вводные лекции К. Воронцова (подчеркну, что они требуют хорошего знания линейной алгебры) и курс «Machine Learning» Стэнфордского университета, который читает Andrew Ng, профессор и глава Baidu AI Group/Google Brain.

Основная масса пишется на Python, потом идут R, Lua.

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

Повысить Понизить

В любом деле, прежде чем приступать к проектам, хорошо бы получить теоретический базис. Есть много мест, где можно получить формальную степень магистра по этому направлению, либо повысить свою квалификацию. Так, например, Сколтех предлагает магистерские программы по направлениям «Computational Science and Engineering» и «Data Science», куда входит курсы «Machine Learning» и «Natural Language Processing». Можно также упомянуть Институт Интеллектуальных Кибернетических систем НИЯУ МИФИ, Факультет вычислительной математики и кибернетики МГУ и Кафедру «Интеллектуальные системы» МФТИ.

Если же формальное образование уже имеется, есть ряд курсов на различных платформах MOOC. Так, например, EDx.org предлагает курсы по искусственному интеллекту от Microsoft и Колумбийского университета, последний из которых предлагает микро-магистерскую программу за умеренные деньги. Хотелось бы особо отметить, что обычно сами знания вы можете получить и бесплатно, оплата идет только за сертификат, если он нужен для вашего резюме.

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

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

Повысить Понизить

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

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

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

Тут же стоит познать методы контроля переобучения моделей (еще один «инг» - overfitting).

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

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

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

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

Основные методы ML реализованы в виде готовых библиотек, доступных к подключению на разных языках. Наиболее популярными языками в ML сегодня являются: C++, Python и R.

Есть множество курсов как на русском, так и английском языках, таких как Школа анализа данных Яндекса, курсы SkillFactory и OTUS. Но прежде чем инвестировать время и деньги в специализированное обучение, думаю, стоит «проникнуться темой»: посмотреть открытые лекции на YouTube с конференций DataFest за прошлые годы, пройти бесплатные курсы от Coursera и «Хабрахабра».

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

Повысить Понизить

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

Как опытным, так и начинающим программистам рекомендую начать с онлайн-курсов на MOOC-площадках. Например, на Coursera есть отличная специализация «Машинное обучение и анализ данных» от Яндекса и Высшей школы экономики. Если нет проблем с пониманием лекций на английском языке, там же можно пройти курс Эндрю Ына «Machine Learning».

Основные языки программирования для работы в области ИИ и машинного обучения - R и Python. Долгое время эти языки использовались в академических кругах и для них было создано большое количество библиотек. Сейчас развиваются инструменты, позволяющие быстро стартовать свой проект: Keras, TensorFlow, Theano, Caffe, scikit-learn. Последнее время Microsoft начал активно развивать свои инструменты: CNTK, ML.NET. Они позволяют создавать интеллектуальные решения на языке C#.

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

Повысить Понизить

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

  • Перевод

Понимающие язык машины были бы очень полезны. Но мы не знаем, как их построить.

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

В разгар напряжённой игры в го, шедшей в Сеуле в Южной Корее между Ли Седолем, одним из лучших игроков всех времен, и программой AlphaGo, ИИ, созданным в Google, программа сделала загадочный ход, продемонстрировавший её вызывающее оторопь превосходство над человеческим соперником.

На 37-м ходу AlphaGo решила положить чёрный камень в странную на первый взгляд позицию. Всё шло к тому, что она должна была потерять существенный кусок территории – ошибка начинающего в игре, построенной на контроле за пространством на доске. Два телекомментатора рассуждали о том, правильно ли они поняли ход компьютера и не сломался ли он. Оказалось, что, несмотря на противоречие здравому смыслу, 37-й ход позволил AlphaGo построить труднопреодолимую структуру в центре доски. Программа от Google по сути выиграла игру при помощи хода, до которого не додумался бы ни один из людей.

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

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

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

Через несколько часов после 37-го хода AlphaGo выиграла игру и стала лидировать со счётом 2:0 в матче из пяти игр. После этого Седоль стоял перед толпой журналистов и фотографов и вежливо извинялся за то, что подвёл человечество. «Я потерял дар речи»,- говорил он, моргая под очередями фотовспышек.

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

Но несмотря на эти впечатляющие подвижки одна из основных возможностей никак не даётся ИИ: язык. Системы вроде Siri и IBM Watson могут распознавать простые устные и письменные команды и отвечать на простые вопросы, но они не в состоянии поддерживать разговор или на самом деле понимать используемые слова. Чтобы ИИ изменил наш мир, это должно поменяться.

Хотя AlphaGo не разговаривает, в нём есть технология, способная дать лучшее понимание языка. В компаниях Google, Facebook, Amazon и в научных лабораториях исследователи пытаются решить эту упрямую проблему, используя те же инструменты ИИ – включая глубокое обучение – что отвечают за успех AlphaGo и возрождение ИИ. Их успех определит масштабы и свойства того, что уже начинает превращаться в революцию ИИ. Это определит наше будущее – появятся ли у нас машины, с которыми будет легко общаться, или системы с ИИ останутся загадочными чёрными ящиками, пусть и более автономными. «Никак не получится сотворить человекоподобную систему с ИИ, если в её основе не будет заложен язык,- говорит Джош Тененбаум , профессор когнитивных наук и вычислений из MIT. – Это одна из самых очевидных вещей, определяющих человеческий интеллект».

Возможно, те же самые технологии, что позволили AlphaGo покорить го, позволят и компьютерам освоить язык, или же потребуется что-то ещё. Но без понимания языка влияние ИИ будет другим. Конечно, у нас всё равно будут нереально мощные и интеллектуальные программы вроде AlphaGo. Но наши отношения с ИИ будут не такими тесными, и, вероятно, не такими дружественными. «Самым главным вопросом с начала исследований было „Что, если бы вы получили устройства, интеллектуальные с точки зрения эффективности, но не похожие на нас с точки зрения отсутствия сочувствия тому, кто мы есть?“ – говорит Терри Виноград , заслуженный профессор Стэнфордского университета. „Можно представить машины, основанные не на человеческом интеллекте, работающие с большими данными и управляющие миром“.

Говорящие с машинами

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

Я начал с Винограда, живущего в пригороде на южном краю Стэнфордского кампуса в Пало-Альто, недалеко от штаб-квартир Google, Facebook и Apple. Его кудрявые седые волосы и густые усы придают ему вид почтенного учёного, и он заражает своим энтузиазмом.

В 1968 Виноград сделал одну из ранних попыток научить машины разговаривать. Будучи математическим вундеркиндом, увлечённым языком, он приехал в новую лабораторию MIT по изучению ИИ получать учёную степень. Он решил создать программу, общающуюся с людьми через текстовый ввод на повседневном языке. В то время это не казалось такой дерзкой целью. В разработке ИИ были сделаны очень большие шаги и другие команды в MIT строили сложные системы компьютерного зрения и роботизированных манипуляторов. „Было чувство неизвестных и неограниченных возможностей“,- вспоминает он.

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

Но есть причины и для оптимизма. Джозеф Вейзенбаум , профессор MIT немецкого происхождения, пару лет назад сделал первую программу-чатбота. Её звали ELIZA и она была запрограммирована отвечать так, как психолог из мультиков, повторяя ключевые части утверждений или задавая вопросы, вдохновляющие на продолжение разговора. Если вы сообщали ей, что злитесь на мать, программа могла бы ответить „А что ещё приходит вам в голову, когда вы думаете о своей матери?“. Дешёвый трюк, который работал на удивление хорошо. Вейзенбаум был шокирован, когда некоторые испытуемые стали поверять свои тёмные секреты его машине.

Виноград хотел сделать нечто, что могло бы убедительно делать вид, что понимает язык. Он начал с уменьшения области действия проблемы. Он создал простое виртуальное окружение, „блочный мир“, состоящий из набора вымышленных объектов на вымышленном столе. Затем он создал программу, назвав её SHRDLU, способную разобрать все существительные, глаголы и простые правила грамматики, необходимые для общения в этом упрощённом виртуальном мире. SHRDLU (бессмысленное слово, составленное из стоящих в ряд букв клавиатуры линотипа) могла описывать предметы, отвечать на вопросы об их взаимоотношениях и изменять блочный мир в ответ на вводимые команды. У неё даже была некая память и если вы просили её передвинуть „красный конус“, а затем писали про некий конус, она предполагала, что вы имеете в виду этот красный конус, а не какой-либо другой.

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

Виноград решил, что при помощи доступных в то время инструментов невозможно научить машину по-настоящему понимать язык. Проблема, по мнению Хьюберта Дрейфуса , профессора философии в Калифорнийском университете в Беркли, высказанному им в книге 1972 года „Чего компьютеры не могут“ , в том, что множество человеческих действий требуют инстинктивного понимания, которое невозможно задать набором простых правил. Именно поэтому до начала матча между Седолом и AlphaGo многие эксперты сомневались, что машины смогут овладеть игрой го.

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

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

Нейросеть глубокого обучения распознаёт объекты на картинках при помощи простого трюка. Слой симулируемых нейронов получает ввод в виде картинки и некоторые из нейронов активизируются в ответ на интенсивность отдельных пикселей. Результирующий сигнал проходит через множество слоёв связанных между собой нейронов перед тем, как достичь выходного слоя, сигнализирующего о наблюдении объекта. Математический приём под названием „обратное распространение“ используется для подгонки чувствительности нейронов сети для создания правильного ответа. Именно этот шаг и даёт системе возможность обучаться. Различные слои в сети откликаются на такие свойства, как края, цвета или текстура. Такие системы сегодня способны распознавать объекты, животных или лица с точностью, соперничающей с человеческой.

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

В 1980-х исследователи выдали хитрую идею превращения языка в такой тип проблемы, с которым нейросеть может справиться. Они показали, что слова можно представлять в виде математических векторов, что позволяет подсчитывать сходство связанных слов. К примеру, „лодка“ и „вода“ близки в векторном пространстве, хотя и выглядят по-разному. Исследователи из Монреальского университета под руководством Йошуа Бенджио и ещё одна группа из Google использовали эту идею для построения сетей, в которых каждое слово в предложении используется для построения более сложного представления. Джоффри Хинтон , профессор из Университета Торонто и видный исследователь глубокого обучения, работающий также и в Google, называет это „мысленным вектором“.

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

Смысл жизни

Сидя в конференц-зале в сердце наполненной суетой штаб-квартиры Google в Маунтин Вью (Калифорния), один из исследователей компании, разработавший этот подход, Куок Ли , рассуждает об идее машины, способной поддерживать реальный разговор. Амбиции Ли объясняют, чем могут быть полезны говорящие машины. „Мне нужен способ симуляции мыслей в машине,- говорит он. – А если вы хотите симулировать мысли, то вы сможете спросить машину, о чём она думает“.

Google уже обучает свои компьютеры основам языка. В мае компания обнародовала систему Parsey McParseface, способную распознавать синтаксис, существительные, глаголы и другие элементы текста. Несложно видеть, как понимание языка может помочь компании. Алгоритм поиска Google когда-то просто отслеживал ключевые слова и ссылки между веб-страницами. Теперь система RankBrain читает текст страниц, чтобы понять его смысл и улучшить результаты поиска. Ли хочет продвинуть эту идею ещё дальше. Адаптируя систему, оказавшуюся полезной для переводов и подписей картинок, они с коллегами создали Smart Reply, читающий содержимое писем на Gmail и предлагающую возможные ответы. Они также создали программу, обучившуюся на основе чата поддержки Google отвечать на простые технические вопросы.

Недавно Ли создал программу, способную генерировать сносные ответы на непростые вопросы. Она тренировалась на диалогах из 18 900 фильмов. Некоторые ответы пугающе точно попадают в точку. К примеру, Ли спросил „В чём смысл жизни?“ и программа ответила „В служении высшему добру“. „Неплохой ответ,- вспоминает он с ухмылкой. – Возможно, лучше, чем я бы ответил сам“.

Есть только одна проблема, которая становится очевидной при взгляде на большее количество ответов системы. Когда Ли спросил „Сколько ног у кошки?“, система ответила „Думаю, четыре“. Затем он спросил „Сколько ног у сороконожки?“ и получил странный ответ „Восемь“. По сути, программа Ли не понимает, о чём говорит. Она понимает, что некоторые комбинации символов сочетаются вместе, но не понимает реальный мир. Она не знает, как выглядит сороконожка, или как она двигается. Это всё ещё иллюзия интеллекта, без здравого смысла, который люди принимают, как само собой разумеющееся. Системы глубокого обучения в этом смысле довольно шаткие. Система от Google, создающая подписи к изображениям, иногда делает странные ошибки, к примеру, описывает дорожный знак как холодильник с едой.

По странному совпадению, соседом Терри Винограда в Пало Альто оказался человек, который может помочь компьютерам лучше разобраться в реальном смысле слов. Фей-Фей Ли , директор Стэнфордской лаборатории искусственного интеллекта, была в декретном отпуске во время моего визита, но она пригласила меня домой и гордо представила мне своего трёхмесячного ребёнка, Финикс. „Обратите внимание, что на вас она смотрит больше, чем на меня,- сказала Ли, когда Финикс уставилась на меня. – Это потому что вы новый; это раннее распознавание лиц“.

Большую часть своей карьеры Ли исследовала вопросы машинного обучения и компьютерного зрения. Несколько лет назад под её руководством была проведена попытка создания базы данных из миллионов изображений объектов, каждое из которых было подписано соответствующими ключевыми словами. Но Ли считает, что машинам необходимо более сложное понимание происходящего в мире и в этом году её команда выпустила другую базу данных с изображениями, аннотации к которым были гораздо богаче. К каждой картинке люди сделали десятки подписей: „Собака на скейте“, „У собаки густой развевающийся мех“, „Дорога с трещинками“ и так далее. Они надеются, что системы машинного обучения научатся понимать физический мир. „Языковая часть мозга получает очень много информации, в том числе и от визуальной системы,- говорит Ли. – Важной частью ИИ будет интеграция этих систем“.

Этот процесс ближе к обучению детей, связывающих слова с объектами, взаимоотношениями и действиями. Но аналогия с обучением людей не заходит слишком далеко. Детишкам не нужно видеть собаку на скейте, чтобы представить её себе или описать словами. Ли верит, что сегодняшних инструментов для ИИ и машинного обучения не будет достаточно для того, чтобы создать настоящий ИИ. „Это не просто будет глубокое обучение с большим набором данных,- говорит она. – Мы, люди, очень плохо справляемся с подсчётами больших данных, но очень хорошо – с абстракциями и творчеством“.

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

Специалисты по когнитивным наукам, например, Тененбаум из MIT, считают, что сегодняшним нейросетям не хватает критичных компонентов разума – вне зависимости от размера этих сетей. Люди способны относительно быстро обучаться на сравнительно малых объёмах данных, и у них есть встроенная возможность эффективного моделирования трёхмерного мира. „Язык построен на других возможностях, вероятно, лежащих более глубоко и присутствующих в младенцах ещё до того, как они начинают владеть языком: визуальное восприятие мира, работа с нашим двигательным аппаратом, понимание физики мира и намерений других существ“,- говорит Тененбаум.

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

Объяснитесь

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

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

Также пример Гудмана показывает, как сложно будет научить машины языку. Понимание смысла понятия „вечность“ в определённом контексте – пример того, чему должны будут научиться ИИ-системы, при этом это на самом деле довольно простая и рудиментарная вещь.

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

»В целом, системы глубокого обучения вызывают благоговейный трепет,- говорит Джон Леонард , профессор, изучающий робомобили в MIT. – С другой стороны, их работу довольно сложно понять".

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

Через несколько недель после возвращения из Калифорнии я встретился с Дэвидом Сильвером , исследователем из отдела Google DeepMind и разработчиком AlphaGo. Он выступал с рассказом о матче против Седоля на научной конференции в Нью-Йорке. Сильвер объяснил, что когда программа во второй игре сделала свой решающий ход, его команда была удивлена не меньше остальных. Они лишь могли видеть, что AlphaGo предсказала шансы на выигрыш, и это предсказание мало менялось после 37-го хода. Только несколько дней спустя, тщательно проанализировав игру, команда сделала открытие: переварив предыдущие игры, программа подсчитала, что игрок-человек может сделать такой ход с вероятностью в 1 к 10 000. А её тренировочные игры показывали, что такой манёвр обеспечивает необычайно сильное позиционное преимущество.

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

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

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

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

На эти и другие вопросы вы найдете ответ в статье под катом, написанной на основе выступления Константина Анисимовича, директора департамента разработки технологий ABBYY, одного из ведущих экспертов страны в сфере искусственного интеллекта.
При его личном участии были созданы технологии распознавания документов, которые применяются в продуктах ABBYY FineReader и ABBYY FormReader. Константин рассказал об истории и основах разработки AI на одном из мастер-классов для студентов Технопарка Mail.Ru. Материал мастер-класса и стал базой для цикла статей.

Всего в цикле будет три поста:

Применение знаний: алгоритмы поиска пространственных состояний
Получение знаний: проектирование интеллектуальных систем и машинное обучение

Взлеты и падения подходов в AI

Еще с 1950-х годов в сфере создания искусственного интеллекта выделилось два подхода - символьные вычисления и коннекционизм. Символьные вычисления – это направление, основанное на моделировании мышления человека, а коннекционизм - на моделировании устройства мозга .

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

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


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

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

Главные задачи при проектировании искусственного интеллекта

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

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

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

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

Представление знаний

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



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

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

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

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

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

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

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

  1. John Alan Robinson. A Machine-Oriented Logic Based on the Resolution Principle. Communications of the ACM, 5:23-41, 1965.
  2. Seymour Papert, Marvin Minsky. Perceptrons. MIT Press, 1969
  3. Russell, Norvig. Artificial Intelligence: A Modern Approach.
  4. Simon Haykin. Neural networks: a comprehensive foundation.
  5. Nils J. Nilsson. Artificial Intelligence: A New Synthesis.

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

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

LISP

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

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

Java

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

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

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

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

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

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

Prolog

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

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

Python

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

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

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

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

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

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

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

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



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: