Энциклопедия мобильной связи

Как устроены нейронные сети? Простыми словами о сложном: что такое нейронные сети.

Как одно выступление на конференции стало сенсацией в мире искусственного интеллекта? Натали Волчоувер на сайте WIRED рассказала об открытии, которое может привести к разгадке секрета действия сетей глубокого обучения.

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

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

В июле этого года на YouTube появилась запись выступления на конференции в Берлине, которая предлагает возможный ответ. В своем докладе Нафтали Тишби , ученый и нейробиолог из Еврейского университета в Иерусалиме, представил доказательство в поддержку новой теории, объясняющей глубокое обучение. Тишби считает, что глубокие нейронные сети учатся при помощи “информационного бутылочного горлышка”, процедуры, которую он и его коллеги описали в 1999. Идея заключается в том, что нейросеть избавляется от лишних входных данных и деталей, “проталкивая” информацию через бутылочное горлышко и оставляя только самые подходящие под общее определение признаки. Компьютерные эксперименты Тишби и его студента Равида Шварца-Зив показали, как эта процедура происходит во время глубокого обучения.

Эти находки взбудоражили AI-сообщество. “Я верю, что идея о бутылочном горлышке может быть очень важной в будущем исследовании нейронных сетей”, – сказал Алекс Алеми из Google Research, который уже разработал новые методы аппроксимации для исследования теории на более крупных нейронных сетях. Бутылочное горлышко может выступать “не только как теоретический инструмент понимания работы нейронных сетей, но и как инструмент создания новых целей и структур нейронных сетей”, сказал Алеми.

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

Джоффри Хинтон, первопроходец в глубоком обучении, написал письмо Тишби после того, как посмотрел его выступление. “Это очень интересно. Мне нужно будет послушать его ещё десять тысяч раз, чтобы действительно понять, но в наше время редко услышишь выступление с действительно оригинальной идеей, которая может быть ответом на большую загадку”.

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

Бутылочное горлышко

Тишби начал задумываться об информационном бутылочном горлышке, когда другие исследователи начинали работать с глубокими нейронными сетями, хотя ни одна концепция ещё не имела названия. Это было в 1980-х, когда Тишби думал о том, как хорошо люди распознают речь друг друга, что было проблемой в изучении искусственного интеллекта в то время. Тишби понял, что суть проблемы заключается в вопросе релевантности – какие самые значимые признаки произнесенного слова и как мы отделяем их от переменных, таких как акценты, дикция и интонация? Какие сигналы мы выделяем из моря данных реальности?

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

Клод Шеннон, создатель теории информации, в определенном смысле запустил изучение информации в 1940-х, позволив рассматривать информацию как абстрактную категорию, нули и единицы с чисто математическим значением. Как говорит Тишби, Шеннон принял точку зрения, что “информация не имеет отношения к семантике”. Но Тишби считает, что это не так. Используя теорию информации, «вы можете строго определить “релевантность”».

Представьте, что X – сложный набор данных, как пиксели на фото собаки, а Y – простая переменная, представленная этими данными, как слово “собака”. Вы можете захватить всю «релевантную» информацию об X в Y, сжимая X настолько, насколько сможете, не теряя способности прогнозировать Y. В своей статье 1999 года Тишби и его соавторы Фернандо Перейра (сейчас работает в Google) и Уильям Биалек (сейчас работает в Пристонском университете) сформулировали это предположение как проблему математической оптимизации. Это была фундаментальная идея без практического применения.

“Я думал об этом в разном контексте последние тридцать лет”, – говорит Тишби. “Мне повезло, что глубокие нейронные сети стали такими важными.”

Глаза на лицах на людях

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

Они узнали, что изобретенные Хинтоном алгоритм под названием “сеть глубокого убеждения” работает, как ренормализация, метод, который используется в физике, чтобы получить общее представление о физической системе по её деталям. Когда Шваб и Мехта применили сеть глубокого убеждения к модели магнита в его “критической точке”, где система фрактальна в любом масштабе, они обнаружили, что сеть автоматически использовала похожую на ренормализацию методику, чтобы вычислить состояние модели. Это было удивительным признаком того, что “выделение релевантных признаков в контексте статистической физики и выделение релевантных признаков в контексте глубокого обучения не просто одинаково называются, но и являются одним и тем же”, как сказал биофизик Илья Неменман .

Проблема только заключается в том, что реальный мир не фрактален. “Естественный мир – это не уши на ушах на ушах, это глаза на лицах на людях,” – сказал Кранмер. “Поэтому я бы не сказал, что [процедура ренормализации] является причиной хорошей работы нейросетей с изображениями”. Но Тишби, который в то время проходил химиотерапию от рака поджелудочной железы, понял, что всё это можно охватить более широкой идеей. “Размышление о науке и роли моих старых идей стало важной частью моего исцеления”, – сказал он.

В 2015 Тишби и его студентка Нога Заславски предположили , что глубокое обучение представляет собой процедуру информационного бутылочного горлышка, которое отсеивает лишние данные, сохраняя информацию о предмете, который представляют данные. Новые эксперименты с глубокими нейросетями показывают, как происходит процедура бутылочного горлышка. В одном случае исследователи использовали небольшие сети, которые можно было научить маркировать входящие данные единицей или нулем (“собака” или “не собака”) и создали в 282 нейронных связях случайные сигналы. Затем они отследили, что случилось, когда сети начали обучение на 3000 наборах данных.

Базовый алгоритм, используемый в большинстве процедур глубокого обучения для настройки ответа нейронных связей на данные, называется “стохастическим градиентным спуском”. Каждый раз, когда сеть получает данные, сигнал каскадом поднимается через слои искусственных нейронов. Когда сигнал достигает верхнего слоя, финальный шаблон можно сравнить с корректной пометкой для изображения – 1 или 0, “собака” или “не собака”. Любые различия между этим шаблоном и правильным ответом «обратно распространяются» по слоям, как учитель, исправляющий экзамен, алгоритм усиливает или ослабляет каждое соединение, чтобы улучшить сеть для создания правильного выходного сигнала. В ходе обучения общие шаблоны в данных обучения отражаются в силе соединений, и сеть становится экспертом в правильной маркировке данных, узнавая собаку, слово или единицу.

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

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

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

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

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

Тишби говорит, что модели сетей, проанализированные Саксом и его коллегами, отличаются от стандартной архитектуры нейронных сетей, но теория информационного бутылочного горлышка объясняет их производительность лучше, чем другие методы. Вопросы о том, существует ли бутылочное горлышко в более крупных нейронных сетях, частично рассматриваются в последних экспериментах Тишби и Шварца-Зива, в которых они обучают гораздо более крупные нейронные сети с 330,000 соединениями для распознавания рукописных цифр в базе данных MNIST с 60,000 изображений, которая является известным эталоном для оценки эффективности алгоритмов глубокого обучения. Ученые увидели такую же конвергенцию сетей; они также наблюдали две отдельные фазы глубокого обучения, разделенные еще более резким переходом, чем в небольших сетях. «Теперь я полностью убежден, что это общее явление», – сказал Тишби.

Люди и машины

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

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

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

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

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

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

» (Manning Publications).

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

Глубинное обучение: геометрический вид

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

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

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

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

Ограничения глубинного обучения

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

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

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

Риск антропоморфизации моделей машинного обучения

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

В частности, наиболее ярко это проявляется в «состязательных примерах», то есть образцах входных данных сети глубинного обучения, специально подобранных, чтобы их неправильно классифицировали. Вы уже знаете, что можно сделать градиентное восхождение в пространстве входных данных для генерации образцов, которые максимизируют активацию, например, определённого фильтра свёрточной нейросети - это основа техники визуализации, которую мы рассматривали в главе 5 (примечание: книги «Глубинное обучение с Python »), также как алгоритма Deep Dream из главы 8. Похожим способом, через градиентное восхождение, можно слегка изменить изображение, чтобы максимизировать предсказание класса для заданного класса. Если взять фотографию панды и добавить градиент «гиббон», мы можем заставить нейросеть классифицировать эту панду как гиббона. Это свидетельствует как о хрупкости этих моделей, так и о глубоком различии между трансформацией со входа на выход, которой она руководствуется, и нашим собственным человеческим восприятием.

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

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

Локальное обобщение против предельного обобщения

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

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

Это резко отличается от того, что делают сети глубинного обучения, что я бы назвал «локальным обобщением»: преобразование входных данных в выходные данные быстро прекращает иметь смысл, если новые входные данные хотя бы немного отличаются от того, с чем они встречались во время обучения. Рассмотрим, для примера, проблему обучения подходящим параметрам запуска ракеты, которая должна сесть на Луну. Если бы вы использовали нейросеть для этой задачи, обучая её с учителем или с подкреплением, вам бы понадобилось дать ей тысячи или миллионы траекторий полёта, то есть нужно выдать плотный набор примеров в пространстве входящих значений, чтобы обучиться надёжному преобразованию из пространства входящих значений в пространство исходящих значений. В отличие от них, люди могут использовать силу абстракции для создания физических моделей - ракетостроение - и вывести точное решение, которое доставит ракету на Луну всего за несколько попыток. Таким же образом, если вы разработали нейросеть для управления человеческим телом и хотите, чтобы она научилась безопасно проходить по городу, не будучи сбитой автомобилем, сеть должна умереть много тысяч раз в различных ситуациях, прежде чем сделает вывод, что автомобили опасны, и не выработает соответствующее поведение, чтобы их избегать. Если её перенести в новый город, то сети придётся заново учиться большей часть того, что она знала. С другой стороны, люди способны выучить безопасное поведение, не умерев ни разу - снова, благодаря силе абстрактного моделирования гипотетических ситуаций.

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

Выводы

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

Чтобы снять некоторые из этих ограничений и начать конкурировать с человеческим мозгом, нам нужно отойти от прямого преобразования со входа в выход и перейти к рассуждениям и абстракциям . Возможно, подходящей основой для абстрактного моделирования различных ситуация и концепций могут быть компьютерные программы. Мы говорили раньше (примечание: в книге «Глубинное обучение с Python »), что модели машинного обучения можно определить как «обучаемые программы»; в данный момент мы можем обучать только узкое и специфическое подмножество всех возможных программ. Но что если бы мы могли обучать каждую программу, модульно и многократно? Посмотрим, как мы можем к этому придти.

Будущее глубинного обучения

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

На высоком уровне вот основные направления, которые я считаю перспективными:

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

Итак, вперёд.

Модели как программы

Как мы заметили раньше, необходимым трансформационным развитием, которое можно ожидать в области машинного обучения, является уход от моделей, выполняющих чисто распознавание шаблонов и способных только на локальное обобщение , к моделям, способным на абстракции и рассуждения , которые могут достичь предельного обобщения . Все нынешние программы ИИ с базовым уровнем рассуждений жёстко запрограммированы людьми-программистами: например, программы, которые полагаются на поисковые алгоритмы, манипуляции с графом, формальную логику. Так, в программе DeepMind AlphaGo бóльшая часть «интеллекта» на экране спроектирована и жёстко запрограммирована экспертами-программистами (например, поиск в дереве по методу Монте-Карло); обучение на новых данных происходит только в специализированных подмодулях - сети создания ценностей (value networks) и сети по вопросам политики (policy networks). Но в будущем такие системы ИИ могут быть полностью обучены без человеческого участия.

Как этого достичь? Возьмём хорошо известный тип сети: RNN. Что важно, у RNN немного меньше ограничений, чем у нейросетей прямого распространения. Это потому что RNN представляют собой немного больше, чем простые геометрические преобразования: это геометрические преобразования, которые осуществляются непрерывно в цикле for . Временной цикл for задаётся разработчиком: это встроенное допущение сети. Естественно, сети RNN всё ещё ограничены в том, что они могут представлять, в основном, потому что каждый их шаг по-прежнему является дифференцируемым геометрическим преобразованием и из-за способа, которым они передают информацию шаг за шагом через точки в непрерывном геометрическом пространстве (векторы состояния). Теперь представьте нейросети, которые бы «наращивались» примитивами программирования таким же способом, как циклы for - но не просто одним-единственным жёстко закодированным циклом for с прошитой геометрической памятью, а большим набором примитивов программирования, с которыми модель могла бы свободно обращаться для расширения своих возможностей обработки, таких как ветви if , операторы while , создание переменных, дисковое хранилище для долговременной памяти, операторы сортировки, продвинутые структуры данных вроде списков, графов, хеш-таблиц и многого другого. Пространство программ, которые такая сеть может представлять, будет гораздо шире, чем могут выразить существующие сети глубинного обучения, и некоторые из этих программ могут достичь превосходной силы обобщения.

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

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

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


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

За пределами обратного распространения и дифференцируемых слоёв

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

Кроме того, обратное распространение имеет рамки end-to-end, что подходит для обучения хороших сцепленных преобразований, но довольно неэффективно с вычислительной точки зрения, потому что не использует полностью модульность глубинных сетей. Чтобы повысить эффективность чего бы то ни было, есть один универсальный рецепт: ввести модульность и иерархию. Так что мы можем сделать само обратное распространение более эффективным, введя расцепленные модули обучения с определённым механизмом синхронизации между ними, организованном в иерархическом порядке. Эта стратегия частично отражена в недавней работе DeepMind по «синтетическим градиентам». Я ожидаю намного, намного больше работ в этом направлении в ближайшем будущем.

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

Автоматизированное машинное обучение

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

Сейчас бóльшую часть времени разработчик систем глубинного обучения бесконечно модифицирует данные скриптами Python, затем долго настраивает архитектуру и гиперпараметры сети глубинного обучения, чтобы получить работающую модель - или даже чтобы получить выдающуюся модель, если разработчик настолько амбициозен. Нечего и говорить, что это не самое лучшее положение вещей. Но ИИ и здесь может помочь. К сожалению, часть по обработке и подготовке данных трудно автоматизировать, поскольку она часто требует знания области, а также чёткого понимания на высоком уровне, чего разработчик хочет достичь. Однако настройка гиперпараметров - это простая поисковая процедура, и в данном случае мы уже знаем, чего хочет достичь разработчик: это определяется функцией потерь нейросети, которую нужно настроить. Сейчас уже стало обычной практикой устанавливать базовые системы AutoML, которые берут на себя большую часть подкрутки настроек модели. Я и сам установил такую, чтобы выиграть соревнования Kaggle.

На самом базовом уровне такая система будет просто настраивать количество слоёв в стеке, их порядок и количество элементов или фильтров в каждом слое. Это обычно делается с помощью библиотек вроде Hyperopt, которые мы обсуждали в главе 7 (примечание: книги «Глубинное обучение с Python »). Но можно пойти намного дальше и попробовать получить обучением соответствующую архитектуру с нуля, с минимальным набором ограничений. Это возможно с помощью обучения с подкреплением, например, или с помощью генетических алгоритмов.

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

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

Пожизненное обучение и повторное использование модульных подпрограмм

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

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

Что мы делаем на самом деле, когда повторно применяем модель на разных задачах, так это используем предобученные веса для моделей, которые выполняют общие функции, вроде извлечения визуальных признаков. Вы видели это на практике в главе 5. Я ожидаю, что в будущем будет повсеместно использоваться более общая версия этой техники: мы не только станем применять ранее усвоенные признаки (веса подмодели), но также архитектуры моделей и процедуры обучения. По мере того, как модели будут становиться более похожими на программы, мы начнём повторно использовать подпрограммы , как функции и классы в обычных языках программирования.

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

Рисунок: Метаобучаемая система, способная быстро разработать специфические для задачи модели с применением повторно используемых примитивов (алгоритмических и геометрических), за счёт этого достигая «предельного обобщения».

В итоге: долговременное видение

Вкратце, вот моё долговременное видение для машинного обучения:
  • Модели станут больше похожи на программы и получат возможности, которые простираются далеко за пределы непрерывных геометрических преобразований исходных данных, с чем мы работаем сейчас. Возможно, эти программы будут намного ближе к абстрактным ментальным моделям, которые люди поддерживают о своём окружении и о себе, и они будут способны на более сильное обобщение благодаря своей алгоритмической природе.
  • В частности, модели будут смешивать алгоритмические модули с формальными рассуждениями, поиском, способностями к абстракции - и геометрические модули с неформальной интуицией и распознаванием шаблонов. AlphaGo (система, потребовавшая интенсивного ручного программирования и разработки архитектуры) представляет собой ранний пример, как может выглядеть слияние символического и геометрического ИИ.
  • Они будут выращиваться автоматически (а не писаться вручную людьми-программистами), с использованием модульных частей из глобальной библиотеки повторно используемых подпрограмм - библиотеки, которая эволюционировала путём усвоения высокопроизводительных моделей из тысяч предыдущих задач и наборов данных. Как только метаобучаемая система определила общие шаблоны решения задач, они преобразуются в повторно используемые подпрограммы - во многом как функции и классы в современном программировании - и добавляются в глобальную библиотеку. Так достигается способность абстракции .
  • Глобальная библиотека и соответствующая система выращивания моделей будет способна достичь некоторой формы человекоподобного «предельного обобщения»: столкнувшись с новой задачей, новой ситуацией, система сможет собрать новую работающую модель для этой задачи, используя очень малое количество данных, благодаря: 1) богатым программоподобным примитивам, которые хорошо делают обобщения и 2) обширному опыту решения похожих задач. Таким же образом, как люди могут быстро изучить новую сложную видеоигру, потому что у них есть предыдущий опыт многих других игр и потому что модели на основе предыдущего опыта являются абстратктными и программоподобными, а не простым преобразованием стимула в действие.
  • По существу, эту непрерывно обучающуюся систему по выращиванию моделей можно интерпретировать как Сильный Искусственный Интеллект. Но не ждите наступления какого-то сингулярного робоапокалипсиса: он является чистой фантазией, которая родилась из большого списка глубоких недоразумений в понимании интеллекта и технологий. Впрочем, этой критике здесь не место.

Дізнавалася про бізнес-тренди на масштабній конференції у Києві. Це була насичена інсайтами субота, від якої ми отримали нові знання і знайомства, натхнення та з користю проведений час. На конфі були 4 потоки доповідей для власників бізнесу, ТОП-менеджерів, маркетологів, sales, ейчарів та інших спеціалістів. Одним із спікерів був Міністр інфраструктури Володимир Омелян, який розповідав про розвиток галузі, відновлення доріг та аеропортів.

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

9 сентября 2014 года в ходе очередной презентации, компания Apple представила собственную систему мобильных платежей — Apple Pay.

С помощью платежной системы Apple Pay пользователи iPhone 6 и iPhone 6+, а также владельцы новейших версий Apple Watch могут совершать покупки онлайн, пользоваться дополнительными преимуществами apple pay для мобильных приложений и совершать платежи при помощи технологии NFC (Near Field Communication). Для авторизации платежей используются технологии Touch ID или Face ID.

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

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

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

Как часто проджект менеджеры оказываются между молотом и наковальней, когда пытаются найти баланс между всеми требованиями и сроками заказчика и ментальным здоровьем всей команды? Сколько нюансов нужно учесть, чтобы по обе стороны ответственности был мир и порядок? Как понять хороший ты менеджер или тебе срочно стоит подтягиваться по всем фронтам? Как определить, в каких аспектах именно ты, как ПМ, отстаешь, а где ты молодец и умничка? Именно об этом была очередная конференция Code’n’Coffee.

Технология распознавания образов все активнее входит в наш обиход. Компании и учреждения используют ее для решения самых разных задач: от обеспечения безопасности до исследования удовлетворенности клиентов. Инвестиции в продукты, в основе которых — данная функция, обещают вырасти до 39 миллиардов долларов к 2021 году. Вот лишь несколько примеров, как распознавание образов используется в разных сферах.

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

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

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

Математически, искусственный нейрон осуществляет преобразование вектора входных сигналов (воздействий) X в вектор выходных сигналов Y при помощи функции, называемой функцией активации. В рамках соединения (искусственной нейронной сети — ИНС) функционируют три вида нейронов: входные (принимающие информацию из внешнего мира – значения интересующих нас переменных), выходные (возвращающие искомые переменные – к примеру, прогнозы, или управляющие сигналы), а также промежуточные – нейроны, выполняющие некие внутренние («скрытые») функции. Классическая ИНС, таким образом, состоит из трех или более слоев нейронов, причем на втором и последующих слоях («скрытых» и выходном) каждый из элементов соединен со всеми элементами предыдущего слоя.

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

Обучение нейронной сети

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

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

В общем случае, обучение ИНС заключается в следующем:

  1. входные нейроны принимают переменные («стимулы») из внешней среды;
  2. в соответствии с полученной информацией изменяются свободные параметры НС (работают промежуточные слои нейронов);
  3. в результате изменений в структуре НС сеть «реагирует» на информацию уже иным образом.

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

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

Глубокое обучение

Понятие глубокого обучения (deep learning ) относится к другой классификации и обозначает подход к обучению так называемых глубоких структур, к которым можно отнести многоуровневые нейронные сети. Простой пример из области распознавания образов: необходимо научить машину выделять все более абстрактные признаки в терминах других абстрактных признаков, то есть определить зависимость между выражением всего лица, глаз и рта и, в конечном итоге, скопления цветных пикселов математически. Таким образом, в глубокой нейронной сети за каждый уровень признаков отвечает свой слой; понятно, что для обучения такой «махины» необходим соответствующий опыт исследователей и уровень аппаратного обеспечения. Условия сложились в пользу глубокого обучения НС только к 2006 году – и спустя восемь лет можно говорить о революции, которую произвел этот подход в машинном обучении.

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

Идея, как водится, прекрасная, но на пути подхода встают вполне естественные проблемы – прежде всего, коренящиеся в его претензии на универсальность. На самом деле, если на поприще распознавания образов подходы deep learning добились ощутимых успехов, то с той же обработкой естественного языка возникает пока гораздо больше вопросов, чем находится ответов. Очевидно, что в ближайшие n лет вряд ли удастся создать «искусственного Леонардо Да Винчи» или даже – хотя бы! — «искусственного homo sapiens ».

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

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

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

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

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

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

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

Ford предсказывает значительное увеличение доли беспилотных транспортных средств уже к 2021 году. Правительство США также успело разработать для них свод правил безопасности.

Что такое глубинное обучение?

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

Внешний круг – это искусственный интеллект в целом (например, компьютеры). Чуть дальше – машинное обучение, а совсем в центре – глубинное обучение и искусственные нейросети.

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

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

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

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

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

Если рассматривать машинное обучение как ответвление или вариант работы искусственного интеллекта, то глубинное обучение – это специализированный тип такого ответвления.

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

Методы глубинного обучения

Методы глубинного обучения делятся на два основных типа:

  • Обучение с учителем
  • Обучение без учителя

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

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

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

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

Важность глубинного обучения

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

В частности, в распознавании лиц на фотографиях с помощью глубинного обучения преуспел Facebook. Это не простое улучшение технологии, а поворотный момент, изменяющий все более ранние представления: «Человек может с вероятностью в 97.53% определить, один ли человек представлен на двух разных фотографиях. Программа, разработанная командой Facebook, может делать это с вероятностью в 97.25% вне зависимости от освещения или того, смотрит ли человек прямо в камеру или повернут к ней боком».

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

Что особенно занимательно – написание общей нейросети для двух абсолютно разных языков не потребовало особенного труда: «Так исторически сложилось, что люди видели Китайский и Английский, как два совершенно разных языка, поэтому и подход к каждому из них требовался различный», — говорит начальник исследовательского центра Baidu, Andrew Ng. «Алгоритмы обучения сейчас настолько обобщены, что вы можете просто обучаться».

Google использует глубинное обучение для управления энергией в дата-центрах компании. Они смогли сократить затраты ресурсов для охлаждения на 40%. Это около 15% повышения эффективности энергопотребления и миллионы долларов экономии.

Микросервисы глубинного изучения

Вот краткий обзор сервисов, связанных с глубинным обучением.

Illustration Tagger. Дополненный Illustration2Vec, этот сервис позволяет отмечать изображения с рейтингом «защищенный», «сомнительный», «опасный», «копирайт» или «общий» для того, чтобы заранее понять содержание картинки.

  • Дополнение для Theano от Google
  • Редактируется на Python и Numpy
  • Зачастую применяется для решения определенного спектра проблем
  • Не общего назначения. Основной упор на машинное зрение
  • Редактируется на C++
  • Есть интерфейс на Python

Онлайн-курсы по глубинному обучению

Google и Udacity объединились для создания бесплатного курса по глубинному обучению , части Курса Машинного Обучения Udacity. Эту программу ведут опытные разработчики, желающие развить такую область, как машинное обучение и, в частности, глубинное обучение.

Другой популярный вариант – курс машинного обучения от Andrew Ng при поддержке Coursera и Стенфорда.

  1. Машинное обучение – Стенфорд от Andrew Ng на Coursera (2010-2014)
  2. Машинное обучение – Caltech от Yaser Abu-Mostafa (2012-2014)
  3. Машинное обучение – Carnegie Mellon от Tom Mitchell (Весна 2011)
  4. Нейросети для машинного обучения – Geoffrey Hinton на Coursera (2012)
  5. Класс по нейросетям – Hugo Larochelle из Université de Sherbrooke (2013

Книги по глубинному обучению

В то время как ресурсы из предыдущей секции опираются на довольно обширную базу знаний, книга «Grokking Deep Learning», наоборот, рассчитана на новичков. Как говорят авторы: «Если вы закончили 11 классов и примерно понимаете, как писать на Python, мы научим вас глубинному обучению».

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

  1. «Глубинное обучение» от Yoshua Bengio, Ian Goodfellow и Aaron Courville (2015)
  2. «Нейросети и глубинное обучение» от Michael Nielsen (2014)
  3. «Глубинное обучение» от Microsoft Research (2013)
  4. «Туториалы по глубинному обучению» от лаборатории LISA, Университета Монреаля (2015)
  5. «neuraltalk» от Andrej Karpathy
  6. «Введение в генетические алгоритмы»
  7. «Современный подход к искусственному интеллекту»
  8. «Обзор на глубинное обучение и нейросети»

Видеоролики и лекции

Deep Learning Simplified – чудесный YouTube-канал. Вот их первое видео:



Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!