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

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

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

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

При такой настройке один из способов думать о глубоком обучении — представить грузовик, едущий по стране с кучей вещей в кузове. Он начинается в каком-то городе, и его цель — добраться до другого города через всю страну. Грузовик идет от начала до конца, выбирая разные города для проезда по пути. Например, как показано ниже, он может перейти из города 1 в город Б, а затем в цель. Или он может выбрать город 3, город C, а затем цель. Все это действительные пути от начала до конца.

Однако некоторые маршруты (или «пути») будут лучше, чем другие. Предположим, что все пути занимают одинаковое время, но некоторые из них действительно ухабистые, а некоторые — гладкие. Может быть, путь из города 3 в город С к цели тернист и мы теряем по пути много вещей! Но переход из города 1 в город Б проходит совершенно гладко, так что мы ничего не теряем. На рисунке ниже показаны ящики, которые мы потеряли, в зависимости от того, какие города мы выбрали.

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

Как это работает?

Как мы уже говорили, цель состоит в том, чтобы присвоить веса каждому пути из города в город, имея в виду, что мы предпочитаем (подчеркиваем) пути, на которых мы теряем меньше всего. Для этого каждый раз, когда грузовик проезжает от начала до конца, мы подсчитываем, сколько вещей он потерял по пути. Это называется «функцией потерь». Как мы видели выше, на пути из города 3 в город С было потеряно много вещей, так что на этом пути были большие потери. Но город 1 и город Б ничего не потеряли, поэтому его функция потерь была небольшой.

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

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

Учитывая, что у нас есть способ сказать, насколько дорого обходится каждая ошибка, мы можем учиться на них! Каждый маленький отрезок пути (переход из города в город) вносил свою лепту в нашу общую ошибку. Возможно, выбор Города 3 в начале заставил нас потерять 2 ящика, а затем выбор Города C после этого привел к потере еще одного (таким образом, мы потеряли всего 3 ящика, как показано выше). Следовательно, мы можем назначить «обвинение» каждому выбранному городу и обновить наш вес (насколько мы предпочитаем этот маршрут через этот город) в соответствии с тем, насколько мы обвинили каждый город. Это называется «обратным распространением».

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

Так учится Глубокий Ученик! Он вычисляет ошибки, используя прямое распространение, а затем возлагает вину за ошибки, допущенные при обратном распространении. Это корректирует веса так, что со временем мы делаем все меньше и меньше ошибок. В нашем примере с собакой мы в конце концов узнаем, какие части изображения соответствуют «собачьим» частям изображения, поскольку части, которые не «собачьи», будут обвиняться в совершении ошибок, а затем не будут подчеркиваться. следующее решение, в то время как те, которые «по-собачьи», получат предпочтение.

Что в этом особенного?

Некоторые из вас могут просто сказать: «Ну, это просто нейронная сеть», и вы будете правы! «Глубокая» часть глубокого обучения заключается в том, что вместо того, чтобы ваша сеть выглядела так:

Выглядит это больше так (да и то мелко):

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

Почему он так популярен?

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

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