Технологии искусственного интеллекта: что умеют, где используются

Графовые нейросети: мимолетный тренд или за ними будущее

Основная статья: Графовые нейронные сети

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

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

Зачем нужно придумывать что-то ещё для портретов?

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

Ожидание vs. Реальность

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

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

Может возникнуть резонный вопрос: а что будет, если мы обучим сетку для face segmentation/face recognition, возьмём её энкодер и заменим им VGG в гатисовском ST? На самом деле, этот вопрос открытый, я лично пока не видел ни одной работы, в которой это исследовали.  

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

Нейронная сеть в Google Photo

Впервые, о том чтобы перенести нейронные сети в машину, или создать машину на основе нейронных сетей, задумались в 40-х годах прошлого века. Тогда знания о мозге были невелики, как слабы были и мощности вычислительной техники. Сейчас же передача знаний компьютерам — менее сложная задача, которая реализуется за счет создания специальных программ, кодов, способных обучаться самостоятельно на основе полученного опыта. Полноценного программного воплощения человеческого мозга на сегодняшний день нет, но есть программы, которые используют нейронные сети для определенных целей. Отличный пример — приложение Google Photo. Программа умеет самостоятельно разделять снимки по тому, что на них изображено. То есть, подобно глазам человека и связанным с ними нейронам мозга, Google Photo может отличить фотографии, на которых изображены, например, часы. На фотографиях ниже показаны результаты поиска фотографий по запросу “часы” в личных смартфонах членов нашей редакции.

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

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

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

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

Музыка, созданная искусственным интеллектом

Google проявила интерес к компьютерам как музыкантам. Компания создала проект Magenta. Глава проекта Дуглас Эк рассказал о намерениях в первом посте блога, посвященного проекту:

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

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

Каждый может внести свой вклад в развитие такой музыки

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

Проект функционирует на онлайн-платформе TensorFlow, которая дает открытый доступ к новым инструментам для работы с музыкой, и ею управляет искусственный интеллект.

Magenta демонстрирует возможности ИНС в музыкальной сфере. Уже сейчас созданы очень простые композиции, которые можно послушать.
https://www.youtube.com/watch?v=6ZLB2-_0Hxw

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

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

Испанские ученые тоже не отстают, ведь их машины Iamus и Melomics109 научились создавать сложные музыкальные композиции.

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

Свёрточный слой

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

Для того, чтобы слой мог выделять признаки, в нём имеются так называемые фильтры (или ядра). Ядра — это всего лишь набор тензоров. Эти тензоры имеют один и тот же размер, а их количество определяет глубину выходного 3D массива. При этом глубина самих фильтров совпадает с количеством каналов входного изображения. Так, если на вход свёрточному слою подаётся RGB изображение и требуется карта признаков, состоящая из 32 каналов, то свёрточный слой будет содержать в себе 32 фильтра глубиной 3.

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

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

Затем числа полученных матриц суммируются в единую матрицу — результат применения фильтра.

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

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

Параметры свёрточного слоя

  • Число признаков (filters count, fc) – это количество фильтров, которые есть в слое.
  • Размер фильтров (filter size, fs) – это высота и ширина тензора фильтров. Обычно является нечётным числом, наиболее часто используются фильтры размером 3 или 5.
  • Шаг свёртки (stride, S) – это количество пикселей, на которое перемещается матрица фильтра по входному изображению. Когда шаг равен 1, фильтры перемещаются по одному пикселю за раз. Когда шаг равен 2, тогда фильтры перескакивают на 2 пикселя за раз. Чем больше шаг, тем меньшего размера карты признаков получаются на выходе.
  • Дополнения нулями (padding, P) – количество пикселей, которые добавляются с каждого края изображения. Это позволяет избежать уменьшения изображения на размер фильтра, поскольку фильтр может накладываться лишь в тех местах, в которых под каждым значением фильтра будет значение входного изображения.

Таким образом, входными параметрами свёрточного слоя являются:

  • тензор размером W1xH1xD1;
  • 4 гиперпараметра: fc, fs, S, P;

А выходным параметром слоя является тензор размером W2xH2xD2, где W2 = (W1 — fs + 2P) / S + 1, H2 = (H1 – fs + 2P) / S + 1, D2 = fc.

Подробнее про арифметику свёрточного слоя и применение параметров padding и stride можно почитать здесь: convolution arithmetic tutorial.

Обучаемые параметры в сверточном слое

В свёрточном слое обучаются только фильтры и веса смещения, а потому общее число обучаемых параметров равно fc·(fs·fs·fd+1), то есть число элементов каждого фильтра плюс один параметр смещения умножается на количество самих фильтров. Благодаря тому, что фильтр, который проходится по изображению, не изменяется во время самого прохождения, получается, что число обучаемых параметров во много раз меньше, чем у полносвязной сети.

Примеры некоторых фильтров

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

Без измененийВыделение границ по XВыделение границ по YВыделение границПовышение резкостиРазмытиеРазмытие Гаусса

Карьера

Поступил я в Санкт-Петербургский политехнический университет на факультет технической кибернетики и, конечно, продолжил программировать. В основном под Android. Курсе на втором я получил за первую прогу 10 000 рублей. И подумал: о, деньги! Надо мутить что-то своё.

А у нас же все в университете не тупые. Объединились и начали писать. Мы сделали тогда десяток программ. От штуки, которая перезагружала телефон со звуком Windows XP, до виджета, который позволял поставить на рабочий стол смайлик и подпись. У него было от 100 000 до 500 000 скачиваний. Мы поставили в это приложение рекламу с пуш-уведомлениями. И пока Google не запретил их, приложение приносило мне по $1000 в месяц.

Головокружение от успехов

Сначала у нас было по сотне загрузок в день. Сумасшествие началось в четверг, 16 июня. Я понял это, когда ко мне на работе подлетел Юра Ветров, это руководитель по дизайну, и завопил: «Лёха, это вы сделали?! Бомба! Все дизайнеры Mail.Ru уже скинули в общий чатик и пользуются».

Приложение-то висело на моём аккаунте. Я залез в статистику и увидел, что приложение скачивают по 400 человек одновременно. Когда в полночь приехал домой, было уже 20 000 загрузок. И я такой: твою мать, быть не может!

На следующий день было уже 100 000 скачиваний. И всё, и понёсся треш. В день приложение скачивали уже по 250 000 человек. У «Яндекс.Транспорта», когда они были на первом месте в App Store, рекорд составлял 13 000 в день.

Наш СТО Олег Пояганов чуть не поседел. Из-за большого количества пользователей натурально сгорели несколько серверов. Время обработки увеличилось с 10 секунд до 45, но это никого не останавливало.

Мы стали первыми по числу скачиваний в App Store.

Основные виды и технологии искусственного интеллекта

В настоящее время принято говорить о 4-х основных видах искусственного интеллекта:

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

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

  • Технология машинного обучения – компьютер способен на обработку данных и принятие решений, вне зависимости от строго обозначенных схем. Он может обнаружить закономерности, точные ответы и грамотные прогнозы в заданиях с обширными параметрами, на что не способен человек.
  • Технология глубокого обучения – позволит найти закономерности в огромных массивах информации (Big Data). Обработкой данных в технологии глубокого обучения занимаются искусственные нейронные сети (ИНС), которые созданы по подобию биологических нейронных сетей, а также они моделируют и обрабатывают входные и выходные сигналы.
  • Технологии обработки и генерации естественного языка – то, что позволяет преобразовать данные в естественный язык, который расшифровывает компьютер, а потом выдает человеку в том же понятном ключе.

ТОП-30 IT-профессий 2022 года с доходом от 200 000 ₽

Команда GeekBrains совместно с международными специалистами по развитию карьеры
подготовили материалы, которые помогут вам начать путь к профессии мечты.

Подборка содержит только самые востребованные и высокооплачиваемые специальности
и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились
с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Александр Сагун
Исполнительный директор Geekbrains

Топ-30 самых востребованных и высокооплачиваемых профессий 2022

Поможет разобраться в актуальной ситуации на рынке труда

Подборка 50+ ресурсов об IT-сфере

Только лучшие телеграм-каналы, каналы Youtube, подкасты, форумы и многое другое для того, чтобы узнавать новое про IT

ТОП 50+ сервисов и приложений от Geekbrains

Безопасные и надежные программы для работы в наши дни

Получить подборку бесплатно

pdf 3,7mb
doc 1,7mb

Уже скачали 15749

Курсы от GeekBrains по изучению искусственного интеллекта для детей

Данные курсы понравятся тем, кто увлечен технологиями:

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

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

Курсы от GeekBrains по изучению искусственного интеллекта для детей

Есть три веские причины, по которым необходимо пройти курс по искусственному интеллекту:

  • Открывающиеся карьерные перспективы – ребята попробуют познакомиться с профессией дата-сайентиста — специалиста по работе с данными, они хорошо подкованы в вопросах ИИ и машинном обучении, имеют хорошую финансовую перспективу.
  • Это будет прекрасная подготовка к конкурсам или олимпиадам по программированию — ребята углубят знания по программированию, линейной алгебре и математическому анализу. Это поможет победить в соревнованиях и поступить на бюджетную основу в престижные технические вузы: МГУ, МГТУ им Н. Э. Баумана, МФТИ, ВШЭ.
  • Вашему ребенку понравится это увлекательное обучение, ведь дети смогут почувствовать себя в роли исследователя, классифицируя привычки людей и прогнозируя поведение. В результате чего у них получится создать несколько нейронных сетей.

Как будет проходить учёба?

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

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

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

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

Проблемы развития технологий ИИ

Конечно, нельзя сказать, что возможности ИИ абсолютно не имеют границ. Ведь имеются некоторые сложности:

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

Prisma

Мои студенты в МФТИ делали выпускные проекты. Один из них, Илья Фролов, сделал штуку в стиле Style Transfer. Я увидел её и вспомнил другой похожий проект — британский сайт Deepart.io.

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

Я понял, что нужно: a) сделать это на мобиле; б) чтобы работало быстро. Это было в декабре 2015 года.

Мои ребята восприняли идею без особого энтузиазма. Так что вот это приложение мне реально пришлось тянуть на себе — Prisma. Я понимал, что это же клёво, это полетит сто пудов. Но объяснить почему толком не мог.

Мы начали в декабре и только к весне смогли ускорить приложение в 1000 раз. Сделали демоверсию. Я ходил по Mail.Ru и показывал коллегам. Никто к этому серьёзно не относился. Многие говорили, что это треш. Вы ничего не шарите, защищался я. Но сам ужасно разочаровывался.

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

Почему именно свёрточные сети?

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

Так, если требуется работать с цветными изображениями размером 64х64, то для каждого нейрона первого слоя полносвязной сети потребуется 64·64·3 = 12288 параметров, а если сеть должна распознавать изображения 1000х1000, то входных параметров будет уже 3 млн! А помимо входного слоя есть и другие слои, на которых, зачастую, число нейронов превышает количество нейронов на входном слое, из-за чего 3 млн запросто превращаются в триллионы! Такое количество параметров просто невозможно рассчитать быстро ввиду недостаточно больших вычислительных мощностей компьютеров.

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

Байесовские сети (БС)

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

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

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

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

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

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

Самому понятию “Нейронная Сеть” уже почти 150 лет. В момент зарождения понятия о нейронной сети говорили, как о биологической, в разрезе изучения нейронов головного и спинного мозга человека. Мозг человека состоит в среднем из 86 миллиардов нейронов, которые в совокупности и образуют нейронную сеть. Каждый нейрон это отдельная клетка, которая содержит много входов (дендритов) и один выход (аксон), который передает сигнал следующим нейронам. Выход может разветвляться и передавать информацию сразу нескольким клеткам, однако он один. Нейроны способны передавать не только электрические импульсы, но и химические сигналы. В рамках этого материала мы рассматриваем только электрические, так как такой вид связи имеет больше общего с современными попытками перенести нейронные сети в программируемую плоскость.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Сервис по настройке
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: