NexxDigital - компьютеры и операционные системы

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

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

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

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

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

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

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

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

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

Компания 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 миллионов позиций каждую секунду.

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

А кроме самого материала также комментарии одного из наших робо-экспертов, куратора екатеринбургского , Олега Евсегнеева.

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

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

1. Системное мышление

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

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

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

2. Мышление программиста

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

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

Комментарий Олега Евсегнеева: Я бы добавил, что для создания современных роботов требуется знание языков низкого, высокого и даже сверхвысокого уровня. Микроконтроллеры должны работать очень быстро и эффективно. Чтобы этого достичь, нужно углубляться в архитектуру вычислительного устройства, знать особенности работы с памятью и низкоуровневыми протоколами. Сердцем робота может быть тяжелая операционная система, например, ROS. Здесь уже может понадобиться знание ООП, умение пользоваться серьезными пакетами машинного зрения, навигации и машинного обучения. Наконец, чтобы написать интерфейс робота в веб и связать его с сетью интернет, неплохо будет научиться скриптовым языкам, тому же python.

3. Способность к самобучению

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

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

Комментарий Олега Евсегнеева: Это ключевой навык в любом творческом деле. С помощью него можно получить другие навыки

4. Математика

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

Комментарий Олега Евсегнеева: Поведение робота, его реакция на окружающие раздражители, способность учиться – это все математика. Простой пример. Современные беспилотники хорошо летают благодаря фильтру Калмана – мощному математическому инструменту для уточнения данных о положении робота в пространстве. Робот Asimo умеет различать предметы благодаря нейронным сетям. Даже робот-пылесос использует сложную математику, чтобы правильно построить маршрут по комнате.

5. Физика и прикладная математика

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

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

6. Анализ и выбор решения

Быть хорошим робототехником означает постоянно принимать инженерные решения. Что выбрать для программирования - ROS или другую систему? Сколько пальцев должен иметь проектируемый робот? Какие датчики выбрать для использования? Робототехника использует множество решений и среди них почти нет единственно верного.

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

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

LISP


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

Java

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

Основными особенностями java являются: легкая отладка, хорошее взаимодействие с пользователем, простота работы с большими проектами. Проекты, созданные с помощью языка Java имеют привлекательный и простой интерфейс.

Prolog

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

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

Python

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

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

Для того, чтобы увидеть связь между ИИ и языком программирования, давайте рассмотрим наиболее важные события в истории ИИ. Все началось в 1939 году, когда робот Электро был представлен на Всемирной выставки. Следующий робот был построен в 1951 году, Эдмундом Беркли.

Робот Робби был построен в 1956 году. К сожалению, нет информации о том, как он был разработан. В 1958 году, был изобретен язык программирования ЛИСП. Хотя этот язык был разработан 60 лет назад, он до сих пор остается основным языком для многих программ искусственного интеллекта.

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

Система искусственного интеллекта Dendral, была построена в 1965 году. Она помогала легко определять молекулярную структуру органических соединений. Эта система была написана на Лиспе.

В 1966 году, Weizenbaum создал Элизу, первого виртуального собеседника. Одна из самых знаменитых моделей назывался Доктор, он отвечал на вопросы в стиле психотерапевта. Этот бот был реализован при сопоставлении образцов техники. Первая версия Элизы была написана на SLIP, список обработки языка был разработан Weizenbaum. Позже одна из его версий была переписана на Лиспе.

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

В ближайшие 15 лет мир увидел множество удивительных изобретений: Сторожевого робота Деннинг, ЛМИ Лямбда, Omnibot 2000, MQ-1 Predator беспилотный, Ферби, АЙБО робот собака, и Хонда АСИМО.

В 2003 году iRobot изобрел робот-пылесос Roomba. Разработанный на Лиспе, это автономный пылесос моет полы, используя определенные алгоритмы. Он обнаруживает препятствия и обходит их.


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



Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ:
NexxDigital - компьютеры и операционные системы