Что изучает искусственный интеллект
Всё, что вам нужно знать об ИИ — за несколько минут
Приветствую читателей Хабра. Вашему вниманию предлагается перевод статьи «Everything you need to know about AI — in under 8 minutes.». Содержание направлено на людей, не знакомых со сферой ИИ и желающих получить о ней общее представление, чтобы затем, возможно, углубиться в какую-либо конкретную его отрасль.
Знать понемногу обо всё иногда (по крайней мере, для новичков, пытающихся сориентироваться в популярных технических направлениях) бывает полезнее, чем знать много о чём-то одном.
Многие люди думают, что немного знакомы с ИИ. Но эта область настолько молода и растёт так быстро, что прорывы совершаются чуть ли не каждый день. В этой научной области предстоит открыть настолько многое, что специалисты из других областей могут быстро влиться в исследования ИИ и достичь значимых результатов.
Эта статья — как раз для них. Я поставил себе целью создать короткий справочный материал, который позволит технически образованным людям быстро разобраться с терминологией и средствами, используемыми для разработки ИИ. Я надеюсь, что этот материал окажется полезным большинству интересующихся ИИ людей, не являющихся специалистами в этой области.
Введение
Искусственный интеллект (ИИ), машинное обучение и нейронные сети — термины, используемые для описания мощных технологий, базирующихся на машинном обучении, способных решить множество задач из реального мира.
В то время, как размышление, принятие решений и т.п. сравнительно со способностями человеческого мозга у машин далеки от идеала (не идеальны они, разумеется, и у людей), в недавнее время было сделано несколько важных открытий в области технологий ИИ и связанных с ними алгоритмов. Важную роль играет увеличивающееся количество доступных для обучения ИИ больших выборок разнообразных данных.
Область ИИ пересекается со многими другими областями, включая математику, статистику, теорию вероятностей, физику, обработку сигналов, машинное обучение, компьютерное зрение, психологию, лингвистику и науку о мозге. Вопросы, связанные с социальной ответственностью и этикой создания ИИ притягивают интересующихся людей, занимающихся философией.
Мотивация развития технологий ИИ состоит в том, что задачи, зависящие от множества переменных факторов, требуют очень сложных решений, которые трудны к пониманию и сложно алгоритмизируются вручную.
Растут надежды корпораций, исследователей и обычных людей на машинное обучение для получения решений задач, не требующих от человека описания конкретных алгоритмов. Много внимания уделяется подходу «чёрного ящика». Программирование алгоритмов, используемых для моделирования и решения задач, связанных с большими объёмами данных, занимает у разработчиков очень много времени. Даже когда нам удаётся написать код, обрабатывающий большое количество разнообразных данных, он зачастую получается очень громоздким, трудноподдерживаемым и тяжело тестируемым (из-за необходимости даже для тестов использовать большое количество данных).
Современные технологии машинного обучения и ИИ вкупе с правильно подобранными и подготовленными «тренировочными» данными для систем могут позволить нам научить компьютеры «программировать» за нас.
Обзор
Интеллект — способность воспринимать информацию и сохранять её в качестве знания для построения адаптивного поведения в среде или контексте
Это определение интеллекта из (англоязычной) Википедии может быть применено как к органическому мозгу, так и к машине. Наличие интеллекта не предполагает наличие сознания. Это — распространённое заблуждение, принесённое в мир писателями научной фантастики.
Попробуйте поискать в интернете примеры ИИ — и вы наверняка получите хотя бы одну ссылку на IBM Watson, использующий алгоритм машинного обучения, ставший знаменитым после победы на телевикторине под названием «Jeopardy» в 2011 г. С тех пор алгоритм претерпел некоторые изменения и был использован в качестве шаблона для множества различных коммерческих приложений. Apple, Amazon и Google активно работают над созданием аналогичных систем в наших домах и карманах.
Обработка естественного языка и распознавание речи стали первыми примерами коммерческого использования машинного обучения. Вслед за ними появились задачи другие задачи автоматизации распознавания (текст, аудио, изображения, видео, лица и т.д.). Круг приложений этих технологий постоянно растёт и включает в себя беспилотные средства передвижения, медицинскую диагностику, компьютерные игры, поисковые движки, спам-фильтры, борьбу с преступностью, маркетинг, управление роботами, компьютерное зрение, перевозки, распознавание музыки и многое другое.
ИИ настолько плотно вошёл в современные используемые нами технологии, что многие даже не думают о нём как об «ИИ», то есть, не отделяют его от обычных компьютерных технологий. Спросите любого прохожего, есть ли искусственный интеллект в его смартфоне, и он, вероятно, ответит: «Нет». Но алгоритмы ИИ находятся повсюду: от предугадывания введённого текста до автоматического фокуса камеры. Многие считают, что ИИ должен появиться в будущем. Но он появился некоторое время назад и уже находится здесь.
Термин «ИИ» является довольно обобщённым. В фокусе большинства исследований сейчас находится более узкое поле нейронных сетей и глубокого обучения.
Как работает наш мозг
Человеческий мозг представляет собой сложный углеродный компьютер, выполняющий, по приблизительным оценкам, миллиард миллиардов операций в секунду (1000 петафлопс), потребляющий при этом 20 Ватт энергии. Китайский суперкомпьютер под названием «Tianhe-2» (самый быстрый в мире на момент написания статьи) выполняет 33860 триллионов операций в секунду (33.86 петафлопс) и потребляющий при этом 17600000 Ватт (17.6 Мегаватт). Нам предстоит проделать определённое количество работы перед тем, как наши кремниевые компьютеры смогут сравниться со сформировавшимися в результате эволюции углеродными.
Точное описание механизма, применяемого нашим мозгом для того, чтобы «думать» является предметом дискуссий и дальнейших исследований (лично мне нравится теория о том, что работа мозга связана с квантовыми эффектами, но это — тема для отдельной статьи). Однако, механизм работы частей мозга обычно моделируется с помощью концепции нейронов и нейронных сетей. Предполагается, что мозг содержит примерно 100 миллиардов нейронов.
Нейроны взаимодействуют друг с другом с помощью специальных каналов, позволяющих им обмениваться информацией. Сигналы отдельных нейронов взвешиваются и комбинируются друг с другом перед тем, как активировать другие нейроны. Эта обработка передаваемых сообщений, комбинирование и активация других нейронов повторяется в различных слоях мозга. Учитывая то, что в нашем мозгу находится 100 миллиардов нейронов, совокупность взвешенных комбинаций этих сигналов устроена довольно сложно. И это ещё мягко сказано.
Но на этом всё не заканчивается. Каждый нейрон применяет функцию, или преобразование, к взвешенным входным сигналам перед тем, как проверить, достигнут ли порог его активации. Преобразование входного сигнала может быть линейным или нелинейным.
Изначально входные сигналы приходят из разнообразных источников: наших органов чувств, средств внутреннего отслеживания функционирования организма (уровня кислорода в крови, содержимого желудка и т.д.) и других. Один нейрон может получать сотни тысяч входных сигналов перед принятием решения о том, как следует реагировать.
Мышление (или обработка информации) и полученные в результате его инструкции, передаваемые нашим мышцам и другим органам являются результатом преобразования и передачи входных сигналов между нейронами из различных слоёв нейронной сети. Но нейронные сети в мозгу могут меняться и обновляться, включая изменения алгоритма взвешивания сигналов, передаваемых между нейронами. Это связано с обучением и накоплением опыта.
Эта модель человеческого мозга использовалась в качестве шаблона для воспроизведения возможностей мозга в компьютерной симуляции — искуственной нейронной сети.
Искусственные Нейронные Сети (ИНС)
Искусственные Нейронные Сети — это математические модели, созданные по аналогии с биологическими нейронными сетями. ИНС способны моделировать и обрабатывать нелинейные отношения между входными и выходными сигналами. Адаптивное взвешивание сигналов между искусственными нейронами достигается благодаря обучающемуся алгоритму, считывающему наблюдаемые данные и пытающемуся улучшить результаты их обработки.
Для улучшения работы ИНС применяются различные техники оптимизации. Оптимизация считается успешной, если ИНС может решать поставленную задачу за время, не превышающее установленные рамки (временные рамки, разумеется, варьируются от задачи к задаче).
ИНС моделируется с использованием нескольких слоёв нейронов. Структура этих слоёв называется архитектурой модели. Нейроны представляют собой отдельные вычислительные единицы, способные получать входные данные и применять к ним некоторую математическую функцию для определения того, стоит ли передавать эти данные дальше.
В простой трёхслойной модели первый слой является слоем ввода, за ним следует скрытый слой, а за ним — слой вывода. Каждый слой содержит не менее одного нейрона.
С усложнением структуры модели посредством увеличения количества слоёв и нейронов возрастают потенциал решения задач ИНС. Однако, если модель оказывается слишком «большой» для заданной задачи, её бывает невозможно оптимизировать до нужного уровня. Это явление называется переобучением (overfitting).
Архитектура, настройка и выбор алгоритмов обработки данных являются основными составляющими построения ИНС. Все эти компоненты определяют производительность и эффективность работы модели.
Модели часто характеризуются так называемой функцией активации. Она используется для преобразования взвешенных входных данных нейрона в его выходные данные (если нейрон решает передавать данные дальше, это называется его активацией). Существует множество различных преобразований, которые могут быть использованы в качестве функций активации.
ИНС являются мощным средством решения задач. Однако, хотя математическая модель небольшого количества нейронов довольно проста, модель нейронной сети при увеличении количества составляющих её частей становится довольно запутанно. Из-за этого использование ИНС иногда называют подходом «чёрного ящика». Выбор ИНС для решения задачи должен быть тщательно обдуманным, так как во многих случаях полученное итоговое решение нельзя будет разобрать на части и проанализировать, почему оно стало именно таким.
Глубокое обучение
Термин глубокое обучение используется для описания нейронных сетей и используемых в них алгоритмах, принимающих «сырые» данные (из которых требуется извлечь некоторую полезную информацию). Эти данные обрабатываются, проходя через слои нейросети, для получения нужных выходных данных.
Обучение без учителя (unsupervised learning) — область, в которой методики глубокого обучения отлично себя показывают. Правильно настроенная ИНС способна автоматически определить основные черты входных данных (будь то текст, изображения или другие данные) и получить полезный результат их обработки. Без глубокого обучения поиск важной информации зачастую ложится на плечи программиста, разрабатывающего систему их обработки. Модель глубокого обучения же самостоятельно способна найти способ обработки данных, позволяющий извлекать из них полезную информацию. Когда система проходит обучение (то есть, находит тот самый способ извлекать из входных данных полезную информацию), требования к вычислительной мощности, памяти и энергии для поддержания работы модели сокращаются.
Проще говоря, алгоритмы обучения позволяют с помощью специально подготовленных данных «натренировать» программу выполнять конкретную задачу.
Глубокое обучение применяется для решения широкого круга задач и считается одной из инновационных ИИ-технологий. Существуют также другие виды обучения, такие как обучение с учителем (supervised learning) и обучение с частичным привлечением учителя(semi-supervised learning), которые отличаются введением дополнительного контроля человека за промежуточными результатами обучения нейронной сети обработке данных (помогающего определить, в правильном ли направлении движется система).
Теневое обучение (shadow learning) — термин, используемый для описания упрощённой формы глубокого обучения, при которой поиск ключевых особенностей данных предваряется их обработкой человеком и внесением в систему специфических для сферы, к которой относятся эти данные, сведений. Такие модели бывают более «прозрачными» (в смысле получения результатов) и высокопроизводительными за счёт увеличения времени, вложенного в проектирование системы.
Искусственный интеллект: как и где изучать — отвечают эксперты
Искусственный интеллект — это та сфера в мире IT, которая активно развивается и имеет как огромную популярность, так и много вопросов. Многие программисты хотят заниматься разработкой ИИ, но не знают с чего начать, поэтому мы решили поделиться с вами вопросом, который пришел от нашего подписчика:
«Хочу заниматься ИИ. Что стоит изучить? Какие языки использовать? В каких организациях учиться и работать?»
Мы обратились за разъяснением к нашим экспертам, а полученные ответы представляем вашему вниманию.
ведущий аналитик Avito
Это зависит от Вашей базовой подготовки. Прежде всего, необходима математическая культура (знание статистики, теории вероятностей, дискретной математики, линейной алгебры, анализа и др.) и готовность многому быстро учиться. При реализации методов ИИ потребуется программирование (алгоритмы, структуры данных, ООП и др.).
Разные проекты требуют владения разными языками программирования. Я бы рекомендовал знать как минимум Python, Java и любой функциональный язык. Нелишним будет опыт работы с различными базами данных и распределёнными системами. Чтобы быстро изучать лучшие подходы, применяемые в индустрии, требуется знание английского языка.
Учиться рекомендую в хороших российских вузах! Например, в МФТИ, МГУ, ВШЭ есть соответствующие кафедры. Большое разнообразие тематических курсов доступно на Coursera, edX, Udacity, Udemy и других MOOC площадках. Некоторые ведущие организации имеют собственные программы подготовки в области ИИ (например, Школа анализа данных у Яндекса).
Прикладные задачи, решаемые методами ИИ, можно найти в самых разнообразных местах. Банки, финансовый сектор, консалтинг, ритейл, e-commerce, поисковые системы, почтовые сервисы, игровая индустрия, индустрия систем безопасности и, конечно, Avito — все нуждаются в специалистах различной квалификации.
CEO Mad Devs
У нас есть проект по финтеху, связанный с машинным обучением и компьютерным зрением, в котором первый его разработчик писал все на C++, далее пришел разработчик, который все переписал на Python. Так что язык тут не самое главное, так как язык — это прежде всего инструмент, и от вас зависит, как его использовать. Просто на каких-то языках задачи решать быстрее, а на других более медленно.
Где учиться, сказать сложно — все наши ребята учились сами, благо есть интернет и Google.
начальник группы цифровых технологий компании Nexign
Могу посоветовать с самого начала готовить себя к тому, что учиться придётся много. Вне зависимости от того, что подразумевается под «заниматься ИИ» — работа с большими данными либо нейросети; развитие технологии или поддержка и обучение некой определённой уже разработанной системы.
Давайте ради конкретики возьмём трендовую профессию Data Scientist. Что делает этот человек? В общем и целом — собирает, анализирует и готовит к употреблению большие данные. Именно те, на которых растёт и тренируется ИИ. А что должен знать и уметь Data Scientist? Статический анализ и математическое моделирование – по умолчанию, причём на уровне свободного владения. Языки – скажем, R, SAS, Python. Также хорошо бы иметь какой-никакой опыт разработки. Ну и, вообще говоря, хороший дата-сайнтист должен уверенно себя чувствовать в БД, алгоритмике, визуализации данных.
Не сказать, чтобы такой набор знаний можно было получить в каждом втором техническом вузе страны. Крупные компании, у которых в приоритете разработка ИИ, это понимают и разрабатывают под себя соответствующие учебные программы — существует, например, Школа анализа данных от Яндекса. Но вы должны отдавать себе отчёт, что это не тот масштаб, где ты приходишь на курсы «с улицы», а выходишь с них готовым джуниором. Пласт большой, и идти учиться по дисциплине имеет смысл тогда, когда уже охвачена база (математика, статистика) хотя бы в рамках вузовской программы.
Да, времени уйдёт порядочно. Но игра стоит свеч, потому что хороший Data Scientist – это очень перспективно. И очень дорого. Есть ещё и другой момент. Искусственный интеллект – это, с одной стороны, уже не просто объект ажиотажа, а вполне себе вышедшая на виток продуктивности технология. С другой стороны, ИИ всё ещё только развивается. Для этого развития требуется много ресурсов, много навыков и много денег. Пока это уровень высшей лиги. Я сейчас скажу очевидную вещь, но, если вы хотите оказаться на острие атаки и своими руками двигать прогресс, цельтесь в компании уровня Facebook или Amazon.
В то же время в ряде областей технологию уже применяют: в банковской сфере, в телекоме, на промышленных предприятиях-гигантах, в ритейле. И там уже нужны люди, способные её поддерживать. Gartner прогнозирует, что к 2020 году 20% всех предприятий в развитых странах будут нанимать специальных сотрудников для тренировки нейронных сетей, используемых в этих компаниях. Так что пока ещё есть немного времени, чтобы подучиться самому.
CTO компании Exness
ИИ сейчас активно развивается, и предсказывать на десять лет вперед сложно. На ближайшие два-три года будут доминировать подходы на базе нейросетей и вычислений на основе GPU. Лидером в этой области является Python с интерактивной средой Jupyter и библиотеками numpy, scipy, tensorflow.
Есть много онлайн-курсов, которые дают базовое представление об этих технологиях и общих принципах ИИ, например курс Andrew Ng. И в плане обучения этой теме сейчас в России эффективнее всего самостоятельное обучение или в локальной группе по интересам (например, в Москве я знаю о существовании как минимум пары групп, где люди делятся опытом и знаниями).
технический директор Heads and Hands
Начать нужно с теории: почитать профильную литературу и статьи. Из языков для изучения наиболее подходит Python. Организации — все, которые используют ИИ в своих наработках.
технический директор группы компаний «ХайТэк»
На сегодняшний день самая быстро прогрессирующая часть искусственного интеллекта — это, пожалуй, нейронные сети.
Изучение нейросетей и ИИ стоит начать с освоения двух разделов математики — линейной алгебры и теории вероятности. Это обязательный минимум, незыблемые столпы искусственного интеллекта. Абитуриентам, желающим постичь основы ИИ, при выборе вуза, на мой взгляд, стоит обратить внимание на факультеты с сильной математической школой.
Следующий шаг — изучение проблематики вопроса. Существует огромное количество литературы, как учебной, так и специальной. Большинство публикаций по теме искусственного интеллекта и нейросетей написаны на английском языке, однако русскоязычные материалы тоже публикуются. Полезную литературу можно найти, например, в общедоступной цифровой библиотеке arxiv.org.
Если говорить о направлениях деятельности, то здесь можно выделить обучение прикладных нейронных сетей и разработку совершенно новых вариантов нейросетей. Яркий пример: существует такая очень востребованная сейчас специальность — «дата-сайентист» (Data Scientist). Это разработчики, которые, как правило, занимаются изучением и подготовкой неких наборов данных для обучения нейросетей в конкретных, прикладных областях. Резюмируя, подчеркну, что каждая специализация требует отдельного пути подготовки.
Team Leader Java-разработки в Voximplant
Прежде чем приступать к узкопрофильным курсам, нужно изучить линейную алгебру и статистику. Погружение в ИИ я бы посоветовал начать с учебника «Машинное обучение. Наука и искусство построения алгоритмов, которые извлекают знания из данных», это неплохое пособие для начинающих. На 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), правда, цена таких курсов от нескольких десятков тысяч рублей.
Из компаний, которые занимаются разработкой Искусственного Интеллекта, вы наверняка знаете Яндекс и Сбербанк, но есть и многие другие разных размеров. Например, на этой неделе Минобороны открыло в Анапе Военный инновационный технополис ЭРА, одной из тем которого является разработка ИИ для военных нужд.
директор по развитию бизнеса IТ-компании Navicon
Прежде чем изучать искусственный интеллект, надо решить принципиальный вопрос: красную таблетку взять или синюю.
Красная таблетка — стать разработчиком и окунуться в жестокий мир статистических методов, алгоритмов и постоянного постижения непознанного. С другой стороны, не обязательно сразу кидаться в «кроличью нору»: можно стать управленцем и создавать ИИ, например, как менеджер проекта. Это два принципиально разных пути.
Первый отлично подходит, если вы уже решили, что будете писать алгоритмы искусственного интеллекта. Тогда вам надо начать с самого популярного направления на сегодняшний день – машинного обучения. Для этого нужно знать классические статистические методы классификации, кластеризации и регрессии. Полезно будет также познакомиться с основными мерами оценки качества решения, их свойствами… и всем, что попадется вам по пути.
Только после того, как база освоена, стоит проштудировать более специальные методы: деревья принятия решений и ансамбли из них. На этом этапе нужно глубоко погрузиться в основные способы построения и обучения моделей — они скрываются за едва приличными словами беггинг, бустинг, стекинг или блендинг.
Тут же стоит познать методы контроля переобучения моделей (еще один «инг» — overfitting).
И, наконец, совсем уж джедайский уровень — получение узкоспециальных знаний. Например, для глубокого обучения потребуется овладеть основными архитектурами и алгоритмами градиентного спуска. Если интересны задачи обработки естественного языка, то рекомендую изучить рекуррентные нейронные сети. А будущим создателям алгоритмов для обработки картинок и видео стоит хорошенько углубиться в свёрточные нейронные сети.
Две последние упомянутые структуры — кирпичики популярных сегодня архитектур: состязательных сетей (GAN), реляционных сетей, комбинированных сетей. Поэтому изучить их будет нелишним, даже если вы не планируете учить компьютер видеть или слышать.
Совсем другой подход к изучению ИИ — он же «синяя таблетка» — начинается с поиска себя. Искусственный интеллект рождает кучу задач и целых профессий: от руководителей ИИ-проектов до дата-инженеров, способных готовить данные, чистить их и строить масштабируемые, нагруженные и отказоустойчивые системы.
Так что при «менеджерском» подходе сначала стоит оценить свои способности и бэкграунд, а уже потом выбирать, где и чему учиться. Например, даже без математического склада ума можно заниматься дизайном ИИ-интерфейсов и визуализациями для умных алгоритмов. Но приготовьтесь: уже через 5 лет искусственный интеллект начнет вас троллить и называть «гуманитарием».
Основные методы ML реализованы в виде готовых библиотек, доступных к подключению на разных языках. Наиболее популярными языками в ML сегодня являются: C++, Python и R.
Есть множество курсов как на русском, так и английском языках, таких как Школа анализа данных Яндекса, курсы SkillFactory и OTUS. Но прежде чем инвестировать время и деньги в специализированное обучение, думаю, стоит «проникнуться темой»: посмотреть открытые лекции на YouTube с конференций DataFest за прошлые годы, пройти бесплатные курсы от Coursera и «Хабрахабра».
И когда все описанные знания будут усвоены, мы с нетерпением ждем юных падаванов к нам в команду Navicon, где поможем и научим, как подружиться с «искусственными интеллектуалами» в реальной жизни.