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

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

На эти и другие вопросы вы найдете ответ в статье под катом, написанной на основе выступления Константина Анисимовича, директора департамента разработки технологий 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.

Области применения искусственного интеллекта

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

Применение методов искусственного интеллекта:

Теория распознавания образов

Компания Simmakers предлагает следующие услуги по распознаванию образов:

  • Оптическое распознавание символов
  • Распознавание рукописного ввода
  • Распознавание лиц и автоматическое определение лица в кадре
  • Детектирование и распознавание движения

Обработка изображений

Наши услуги:

  • Поиск изображений
  • Распознавание объектов
  • Измерение параметров объекта
  • Повышение контурной резкости изображений

Интеллектуальный анализ данных (Data mining)

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

Мы предлагаем услуги по интеллектуальному анализу данных в следующих отраслях:

  • Разработка и создание хранилища данных используя преимущества интеллектуального анализа в финансовой сфере
  • Развитие торговой стратегии и исследование правил торговли с помощью генетических алгоритмов
  • Расчет рыночных и кредитных рисков
  • Средства визуализации для анализа финансовых данных

Телекоммуникационная индустрия

  • Разработка и создание хранилища данных используя преимущества интеллектуального анализа в сфере телекоммуникаций
  • Многомерный анализ телекоммуникационных данных
  • Обработка телекоммуникационных данных в маркетинговых целях
  • Обнаружение телекоммуникационного мошенничества
  • Локализация ошибок и прогнозирование неисправностей в коммуникационной сети
  • Средства визуализации для анализа телекоммуникационных данных

Сфера розничной торговли

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

Почему клиенты выбирают Simmakers

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

Задачи, выполненные ранее специалистами Simmakers:

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

  • Партнерство с NVIDIA. Являясь , мирового лидера в производстве видеокарт и графических процессоров, мы применяем последние достижения корпорации при разработке ИТ-решений в области компьютерной графики, визуализации данных и параллелизации вычислений.
  • Обширный опыт. Работая более 10 лет, специалисты нашей компании выполнили свыше 30 сложных проектов по визуализации данных и компьютерному моделированию физических и технологических процессов для различных отраслей, включая строительный инжиниринг, добычу нефти и газа, металлургию, киноиндустрию, медицину, искусство и др.
  • Экспертиза международного уровня. Сотрудники компании Simmakers – это профессионалы в области прикладной математики, информационных технологий и разработки программного обеспечения, многие из которых обладают высокими достижениями и международными наградами в предметных областях. Мы активно сотрудничаем с ведущими мировыми исследовательскими центрами, Массачусетский технологический университет , Калифорнийский университет в Лос-Анджелесе и Сколковский институт науки и технологий.
  • Индивидуальный подход. При разработке ИТ-решений мы максимально учитываем потребности и пожелания каждого заказчика. Такой подход позволяет нам наладить доверительные и взаимовыгодные отношения с клиентами, что в итоге благотворно сказывается на эффективности выполнения проектов.
    • Всё ещё остались вопросы?

Технологии

Мы применяем различные методы:

  • Перцептроны
  • Многослойные перцептроны
  • Радиально-базисные сети
  • Когнитрон, неокогнитрон
  • Нейронная сеть Хопфилда
  • Алгоритм обратного распространения ошибки
  • Алгоритм Левенберга - Марквардта
  • Алгоритм упругого распространения
  • Метод Бройдена-Флетчера-Гольдфарба-Шанно
  • Метод сопряженного градиента (CG)
  • Генетические алгоритмы
  • Эволюционное программирование
  • Эволюционная стратегия
  • Пропозициональная
  • Предикатная
  • Высшего порядка

Экспертные системы, гибридные интеллектуальные системы

  • Алгоритмы гибридизации
  • Гибридные экспертные системы
  • Гибридные нейроны и нейронные сети
  • Гибридные обучающие алгоритмы ANN

Часто задаваемые вопросы

Q: Что подразумевает под собой термин «искусственный интеллект»?

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

Q: Какие основные подходы и направления к построению систем ИИ?

A: Существуют различные подходы к построению систем ИИ.

Единого ответа на вопрос, чем занимается искусственный интеллект, не существует. Анализируя историю ИИ, можно сделать вывод, что за последние пять десятилетий исследования в области ИИ в основном сосредоточены на решении конкретных проблем. Поэтому, несмотря на наличие множества подходов как к пониманию задач ИИ, так и созданию интеллектуальных информационных систем, на сегодняшний день можно выделить два основных подхода к разработке ИИ: 1) нисходящий (англ. Top-Down AI), семиотический - создание экспертных систем, баз знаний и систем логического вывода, имитирующих высокоуровневые психические процессы: мышление, рассуждение, речь, эмоции, творчество и т. д.; 2) восходящий (англ. Bottom-Up AI), биологический - изучение нейронных сетей и эволюционных вычислений, моделирующих интеллектуальное поведение на основе биологических элементов, а также создание соответствующих вычислительных систем, таких как нейрокомпьютер или биокомпьютер.

Q: Какие области применения искусственного интеллекта существуют на сегодняшний день?

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

Экспертные системы

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

Эвристическая классификация

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

Распознавание речи

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

Обработка естественного языка

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

Компьютерное зрение

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

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

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

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

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

AIML

Проект A.L.I.C.E. - это не отсылка к известной франшизе «Обитель зла», а название виртуального собеседника, способного разговаривать на человеческом языке. Предпосылки к его появлению датированы 1966 годом и проектом Элиза (ELIZA) - базой данных, построенной по принципу шаблонных ответов. В конце 90-х она получила развитие A.L.I.C.E. в виде новых возможностей или более сложной структуры. Для создания этого и использовался язык AIML (Artificial Intelligence Markup Language).

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

IPL

Information Processing Language был разработан в 1956 году, является по сути языком ассемблера для списков и лежит где-то на обратной стороне понятности по отношению к AIML. Здесь вам приходится оперировать не человеческим языком, а бесконечным числом символов, регистров, команд и ячеек. Он абсолютно неэффективен в плане построения условного киборга, то есть сложной системы, но определить тип данных или объем выделяемой памяти он сможет невероятно быстро. Если вы конечно сможете на нем что-то создать.

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

STRIPS

А вот это очень интересный образец. Название расшифровывается, как Stanford Research Institute Problem Solver и он является так называемым языком действия. Структура программы на STRIPS состоит из трех блоков: начальное состояние; список целей, то есть то состояние, которое в результате должно быть получено; собственно сами действия - основное тело программы.

Вот вам простой пример на языке STRIPS из Википедии . Есть обезьяна, которая находится в точке А, есть бананы, подвешенные в точке B, и есть коробка в точке C, забравшись на которую обезьяна сможет схватить бананы:

Initial state: At(A), Level(low), BoxAt(C), BananasAt(B)
Goal state: Have(Bananas)
Actions:
// move from X to Y
_Move(X, Y)_
Preconditions: At(X), Level(low)
Postconditions: not At(X), At(Y)

// climb up on the box
_ClimbUp(Location)_
Preconditions: At(Location), BoxAt(Location), Level(low)
Postconditions: Level(high), not Level(low)

// climb down from the box
_ClimbDown(Location)_
Preconditions: At(Location), BoxAt(Location), Level(high)
Postconditions: Level(low), not Level(high)

// move monkey and box from X to Y
_MoveBox(X, Y)_
Preconditions: At(X), BoxAt(X), Level(low)
Postconditions: BoxAt(Y), not BoxAt(X), At(Y), not At(X)

// take the bananas
_TakeBananas(Location)_
Preconditions: At(Location), BananasAt(Location), Level(high)
Postconditions: Have(bananas)

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

POP-11

Возвращаясь в 60-е годы к первым серьёзным попыткам создать искусственный интеллект, нельзя не упомянуть о языке POP-1, испытавшем на себе влияние многих языков того времени, но не снискавшего славу. К слову, POP-2 был куда успешнее и даже дожил до наших днейю На сегодняшний день актуальной является версия POP-11, предназначенная для работы со средой разработки Poplog (правда, в ней вы также можете использовать LISP, Prolog и Standard ML).

Язык POP-11 является функциональным и мультипарадигмальным, синтаксис заимствован от ALGOL, общий подход к коду больше похож на LISP. Вот маленький отрывок из кода работы с памятью:

define auxmemo(O1, Prop, P,n, ref_i)->O2;

Lvars O1,O2, Prop, P, n,i, ref_i;
ref_i.cont-1 ->> i -> ref_i.cont;
if i = 0 then n -> ref_i.cont;
clearproperty(Prop);
endif;

P(O1) -> O2;
O2 -> Prop(O1);

;;; P: Procedure
;;; n: number of values to keep, then the cache is cleared and
;;; memoizing restarts.
;;;
define newmemo(P,n);
newanyproperty(, n, false, false, syshash, nonop=, false, undef,
auxmemo(%P,n,consref(n)%));
enddefine;

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

Wolfram

Язык, разработанный компанией Wolfram Research, входящий в комплект системы компьютерной алгебры Mathematica. Язык мультипарадигмальный, специализирующийся на символических вычислениях, на логическом и функциональном программировании. Несмотря на то, что язык существует с конца 80-х годов 20 века, выпущен официально он был лишь 4 года назад.

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

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

Planner

Последний на сегодня по порядку, но совсем не последний по востребованности, функционально-логический язык Planner. Разработан он был на стыке 60-х и 70-х годов 20 века в MIT и был призван расширить возможности тогда уже популярного языка LISP. В синтаксисе это выражается в повышении удобочитаемости, вызванной, к примеру, возможностью использовать и круглые, и квадратные скобки. Но конечно совсем не это главная его суть.

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

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

Железные люди Анри Дро

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

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

У истоков программирования

Основы программирования промышленных роботов были заложены на заре XIX века во Франции. Здесь же и были разработаны первые программы для автоматических текстильных станков (прядильных и ткацких). Стремительно растущая армия Наполеона остро нуждалась в обмундировании и, следовательно, тканях. Изобретатель из Лиона Жозеф Жаккар предложил способ быстрой перенастройки ткацкого станка для производства различных видов продукции. Нередко эта процедура требовала огромного количества времени, колоссальных усилий и внимания целого коллектива. Суть нововведения сводилась к использованию картонных карточек с перфорированными отверстиями. Иглы, попадая в просеченные места, необходимым образом смещали нити. Смена карт быстро проводилась оператором станка: новая перфокарта - новая программа - новый тип ткани или узора. Французская разработка стала прообразом современных автоматизированных комплексов, роботов с возможностью программирования.

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

  • Начальник статистического управления С. Н. Корсаков (Россия, 1832 г.) - в механизме для сравнивания и анализа идей.
  • Математик Чарльз Бэббидж (Англия, 1834 г.) - в аналитической машине для решения широкого круга математических задач.
  • Инженер (США, 1890 г.) - в устройстве для хранения и обработки статистических данных (табуляторе). Для заметки: в 1911 году компания. Холлерита получила название IBM (International Business Machines).

Перфокарты были основными носителями информации вплоть до 60-х годов прошлого века.

Своим названием интеллектуальные машины обязаны чешскому драматургу В пьесе "R.U.R.", увидевшей свет в 1920 году, писатель назвал роботом искусственного человека, созданного для тяжелых и опасных участков производства (robota (чешск.) - каторга). А что отличает робота от механизмов и автоматических устройств? В отличие от последних, робот не только выполняет определенные действия, слепо следуя заложенному алгоритму, но и способен более тесно взаимодействовать с окружающей средой и человеком (оператором), адаптировать свои функции при изменении внешних сигналов и условий.

Принято считать, что первый действующий робот был сконструирован и реализован в 1928 году американским инженером Р. Уэнсли. Человекоподобный "железный интеллектуал" получил имя Герберт Телевокс. На лавры пионеров претендуют также ученый-биолог Макото Нисимура (Япония, 1929 г.) и английский военнослужащий Уильям Ричардс (1928 г.). Созданные изобретателями антропоморфные механизмы имели схожий функционал: способны были двигать конечностями и головой, выполнять голосовые и звуковые команды, отвечать на простые вопросы. Основным предназначением устройств была демонстрация научно-технических достижений. Очередной виток в развитии технологий позволил в скором времени создать и первых индустриальных роботов.

Поколение за поколением

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

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

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

И наконец, третье поколение - интеллектуальные роботы, которые способны:

  • Обобщать и анализировать информацию,
  • Совершенствоваться и самообучаться, накапливать навыки и знания,
  • Распознавать образы и изменения ситуации, и в соответствии с этим выстраивать работу своей исполнительной системы.

В основе искусственного интеллекта лежит алгоритмическое и программное обеспечение.

Общая классификация

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

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

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

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

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

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

Робототехники стремятся свести программирование роботов к общению с ними на языках высшего уровня. В идеале оператор ставит задачу: "Произвести сборку двигателя внутреннего сгорания автомобиля" и ожидает от робота полного выполнения задания.

Языковые нюансы

В современной робототехнике программирование роботов развивается по двум векторам: роботоориентированное и проблемно ориентированное программирование.

Наиболее распространенные роботоориентированные языки - AML и AL. Первый разработан фирмой IBM только для управления интеллектуальными механизмами собственного производства. Второй - продукт специалистов Стэндфордского университета (США) - активно развивается и оказывает существенное влияние на формирование новых языков этого класса. Профессионал легко разглядит в языке характерные черты Паскаля и Алгола. Все языки, ориентированные на роботов, описывают алгоритм, как последовательность действий "умного" механизма. В связи с этим программа зачастую выходит очень громоздкой и неудобной в практической реализации.

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

Обучение роботов

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

Весьма перспективной выглядит программа для программирования роботов, представленная разработчиками Лаборатории информационных технологий при Массачусетском технологическом институте (CSAIL MIT) на международной конференции промышленной автоматизации и робототехники ICRA-2017 (Сингапур). Созданная ими платформа C-LEARN обладает достоинствами обоих методов. Она предоставляет роботу библиотеку элементарных движений с заданными ограничениями (например, усилие хвата для манипулятора в соответствии с формой и жесткостью детали). В то же время, оператор демонстрирует роботу ключевые движения в трехмерном интерфейсе. Система, исходя из поставленной задачи, формирует последовательность операций для выполнения рабочего цикла. C-LEARN позволяет переписать существующую программу для робота другой конструкции. Оператору при этом не требуются углубленные знания в области программирования.

Робототехника и искусственный интеллект

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

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

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

Основные тенденции робототехники

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

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

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

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

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