Как я отношусь к глубокому обучению?

Я часто спрашивал себя об этом, когда думал о машинном обучении и о том, какой вклад я хочу внести в эту область в будущем. С одной стороны, глубокое обучение имело огромный коммерческий успех. Большая часть тяжелой работы по анализу изображений и текста в крупных корпорациях, таких как Google и Facebook, осуществляется с помощью глубокого обучения. При всех своих успехах глубокое обучение, возможно, является самым современным способом обработки огромных массивов неуправляемых данных и извлечения выводов или выполнения операций. Технологическая индустрия также уверенно смотрит в будущее. С момента своего недавнего возрождения глубокое обучение было частично ответственно за многие из новых безумных футуристических изобретений в мире, таких как автономный автомобиль Google или интеллектуальные видеозапросы Clarifai.

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

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

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

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

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

Почему же я до сих пор двояко отношусь к нейронным сетям?

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

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

Вот еще одна вещь, о которой стоит подумать. Цель машинного обучения — создать интеллектуальные алгоритмы, имитирующие возможности нашего мозга (и, возможно, превосходящие их). Если бы глубокое обучение действительно было моделью, по которой функционирует наш мозг, тогда наш мозг должен был бы быть гигантского размера, чтобы хранить вычислительную мощность, количество узлов и внутренние вероятностные модели, чтобы делать то, что делает глубокое обучение. Подумайте, какая большая сеть нужна, чтобы просто распознать изображение кота (около миллиарда параметров). Наш мозг не обучается, бомбардируя себя сенсорными стимулами. Точно так же передача как можно большего количества данных в произвольную модель может не привести к созданию наилучшего классификатора. Настоящая модель должна быть более простой.

Что еще есть, кроме глубокого обучения?

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

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

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

0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 ,0 , 0, 0, 0, 0, 0

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

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

a, a, a, a, a, a, a, a, a, a, a, a, a, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a

Сразу же это выглядит менее случайным, чем любая другая последовательность, но что это значит? Если вы внимательно посмотрите, две языковые модели сошлись, чтобы описать два скрытых шаблона данных в последовательности. Символ «а» представляет «постоянное состояние», в котором данные имеют последовательность последовательных нулей или последовательность последовательных единиц. Буквы b представляют «изменяющееся состояние», когда данные быстро колеблются между 0 и 1.

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

Я читал Deep Simplicity Джона Гриббина и был очарован тем, как просто он описал одну из самых сложных теорий в физике. Конечно, Теория Хаоса становится намного сложнее, чем то, о чем писал Гриббин, но суть науки очень интуитивна. Точно так же я думаю, что лучший алгоритм обучения должен быть несколько простым. Я поддерживаю инициативу глубокого обучения, направленную на более глубокое изучение данных и поиск менее очевидных функций, и я очень поражен ее прогностической силой, но я не думаю, что ее природа черного ящика / больших данных — лучший способ получить правильный ответ. Я думаю, что одной из моих самых больших целей в моем академическом будущем является поиск лучшего алгоритма обучения. Может быть, я закончу тем, что буду работать с нейронными сетями, а может быть, и нет. Но я знаю, что что бы это ни было, оно должно быть глубже и проще.