Новая теория раскрывает тайну работы нейронных сетей. Как устроены нейронные сети

21.07.2019

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

Распознавание объектов с помощью глубокого обучения

Возможно, вы уже видели этот знаменитый комикс xkcd . Шутка в том, что любой 3-летний ребенок может распознать фотографию птицы, но заставить это сделать компьютер заняло у самых лучших компьютерных специалистов более 50 лет.В последние несколько лет мы наконец-то нашли хороший подход к распознаванию объектов с использованием глубоких сверточных нейронных сетей . Это звучит как куча выдуманных слов из фантастического романа Уильяма Гибсона, но все станет понятным, когда мы разберем их по очереди.Итак, давайте же сделаем это – напишем программу, распознающую птиц!

Начнем с простого

Прежде чем научиться распознавать изображения птиц, давайте узнаем, как распознать что-то гораздо более простое – рукописную цифру «8».

Дізнавалася про бізнес-тренди на масштабній конференції у Києві. Це була насичена інсайтами субота, від якої ми отримали нові знання і знайомства, натхнення та з користю проведений час. На конфі були 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 году. Вот лишь несколько примеров, как распознавание образов используется в разных сферах.

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

Что такое deep learning?

Впервые об успехах глубокого обучения (deep learning) стало слышно в 2012 году, а через три года уже все только о нем и говорят. Так же было с интернетом в эпоху надувания инвестиционного пузыря. А поскольку в нейронные сети делаются сейчас немаленькие вложения, то смело можно говорить о новом пузыре .

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



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

Сети, которые нужно учить

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

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

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

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

В отличие от традиционных компьютерных программ, нейронные сети не нужно «писать», их нужно «учить». И их можно научить тому, что бесконечно трудно (если вообще возможно) воплотить традиционной программной инженерией. Например, нейронные сети уже научились распознавать аудио и видео на уровне людей – и даже лучше них. Или наоборот, создавать аудио и видео – если у вас есть воплощенное в наученной глубокой нейронной сети понимание изображений каких-то объектов, это же понимание можно использовать и для создания изображений этих объектов. Синтез голоса, текста и изображений еще не появился на рынке, но эксперименты уже показывают успехи, раньше в этой области недостижимые . Более того, нейронные сетки могут не только анализировать данные, но и выдавать команды. Так, они научились играть в игры Atari 2600, причем во многие даже лучше человека, и их не пришлось специально для этого программировать .

Как это стало возможным только сегодня? Почему таких результатов не достигли давно, еще до появления того же интернета? Ведь рассуждения о возможностях нейронных сетей ведутся с тех же 50-х годов прошлого века!

Во-первых, стало понятно, как научить глубокие нейронные сети – какая там работает математика. Глубокая нейронная сеть – значит, с глубиной больше двух слоев. Если слоев меньше, то речь идет о мелком (shallow) обучении. Если число слоев больше десяти, то говорят об очень глубоком обучении, но пока что такое встречается редко. Раньше нейронные сети пытались учить методом проб и ошибок (он же – метод «научного тыка»), и так получалось обучать только мелкие сети. Со временем появилось понимание математики многослойных нейронных сетей, их стало возможно проектировать, пришло понимание, как создавать новые виды сетей и обеспечить их обучаемость .

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



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

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

« Нейросетьмастера»

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

Профессия тех, кто занимается нейронными сетями, даже пока не имеет названия. Если на заре интернета появилось понятие «вебмастер» (и просуществовало целых пять или шесть лет), то аналогичной «нейросетьмастер»-профессии пока нет. В области big data такие специалисты называют себя «учеными данных» (data scientists), но все-таки их работа имеет ту же инженерную природу, что и работа программистов. Инженеры измеряют, анализируют, проектируют, строят и целевые системы, и инструменты для инженерии. Программная инженерия (software engineering) отличается от компьютерной науки (computer science). С нейронными сетями то же самое: названия профессии пока нет, но уже есть инженеры, которые вам помогут их создать, обучить и использовать . По счастью, за последний год появилась развитая инфраструктура для новой профессии: университетские учебные курсы, десятки тьюториалов, книги, соревновательные и тренировочные площадки, огромное количество свободных программ. Только в русскоязычном сообществе глубокого обучения ВКонтакте сегодня

Как одно выступление на конференции стало сенсацией в мире искусственного интеллекта? Натали Волчоувер на сайте 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-сообществу, способствуя обмену информацией между этими сферами. Тишби верит, что его теория окажется полезной в обеих дисциплинах, даже если она принимает более общую форму в обучении людей. Теория уже позволяет понять, какие типы проблем могут решать настоящие и искусственные нейронные сети. “Это дает полную характеристику проблем, которые можно изучить”, говорит Тишби. Это «проблемы, в которых я могу стереть шум из входных данных, не нанося ущерба моей способности классифицировать. Это проблемы естественного зрения и распознавания речи. Это именно те проблемы, с которыми может справиться наш мозг».

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

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

Что такое глубокое обучение (deep learning) ? March 3rd, 2016

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


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

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

Давайте посмотрим на примере задачи распознавания изображений: раньше как — запихивали в обычную нейронную сеть с одним слоем огромную (1024×768 — около 800 000 числовых значений) картинку и смотрели как компьютер медленно умирает, задыхаясь от нехватки памяти и неспособности понять, какие пиксели важны для распознавания, а какие нет. Не говоря уже об эффективности такого способа. Вот архитектура такой обычной (неглубой) нейронной сети.

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

В 2006 году сразу несколько независимых исследователей решили эту проблему (к тому же аппаратные мощности развились уже достаточно, появились достаточно мощные видеокарты). Эти исследователи: Джеффри Хинтон (и его коллега Руслан Салахутидинов) с техникой предварительного обучения каждого слоя нейросети ограниченной машиной Больцмана (простите меня за эти термины...), Ян Лекун с сверточными нейронными сетями и Йошуая Бенджио с каскадными автокодировщиками. Первые два сразу же были рекрутированы Google и Facebook, соответственно. Вот две лекции: одна — Хинтона , другая — Лякуна , в которых они и рассказывают, что такое глубокое обучение. Лучше их об этом не расскажет никто. Ещё одна классная лекция Шмидхубера про развитие глубокого обучения, тоже одного из столпов этой науки. А у Хинтона ещё есть прекрасный курс на курсере по нейронкам.

На что способны глубокие нейронные сети сейчас? Они способны распознавать и описывать объекты, можно сказать «понимают» что это. Речь идет о распознавании смыслов.

Просто посмотрите это видео распознавания того, что видит камера, в реальном времени.

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

Если совсем просто, то сверточные сети — это такие сети, где основным структурным элементом обучения является группа (сочетание) нейронов (обычно квадрат 3×3,10×10 и т.д.), а не один. И на каждом уровне сети обучаются десятки таких групп. Сеть находит такие сочетания нейронов, которые максимизируют информацию об изображении. На первом уровне сеть извлекает самые базовые, структурно простые элементы картинки — можно сказать, строительные единицы: границы, штрихи, отрезки, контрасты. Повыше — уже устойчивые комбинации элементов первого уровня, и так далее вверх по цепочке. Хочу ещё раз отдельно подчеркнуть главную особенность глубокого обучения: сети сами формируют эти элементы и решают, какие из них более важный, а какие — нет. Это важно, так как в области машинного обучения, создание признаков — является ключевым и сейчас мы переходим на этап, когда компьютер сам учится создавать и отбирать признаки. Машина сама выделяет иерархию информативных признаков.

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


На втором уровне — это уже будет элемент из элементов первого уровня. На третьем — из второго. Надо понимать, что данная картинка — просто демонстрация. Сейчас в промышленной применение, такие сети имеют от 10 до 30 слоев (уровней).

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

Подробнее про сверточные сети —