Конспект лекций FAU по глубокому обучению

Сети прямого распространения — часть 2

Как на самом деле можно обучать Сети?

Это конспект лекций FAU YouTube Lecture Deep Learning. Это полная стенограмма видео лекции и соответствующие слайды. Мы надеемся, вам понравится это так же, как видео. Конечно, эта стенограмма была создана с использованием методов глубокого обучения в основном автоматически, и вручную были внесены лишь незначительные изменения. Если вы заметили ошибки, сообщите нам об этом!

Навигация

Предыдущая лекция / Посмотреть это видео / Высший уровень / Следующая лекция

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

До сих пор мы описывали основную истину с помощью меток -1 и +1, но, конечно, у нас также могли бы быть классы 0 и 1. Это действительно вопрос определения, если мы принимаем решение только между двумя классами. Но если вы хотите перейти к более сложным случаям, вы хотите иметь возможность классифицировать несколько классов. Так что в этом случае вы, вероятно, захотите иметь выходной вектор. Здесь у вас есть по существу одно измерение для класса k, где K — количество классов. Затем вы можете определить базовое истинное представление как вектор, который имеет все нули, кроме одной позиции, и это истинный класс. Итак, это также называется горячим кодированием, потому что все остальные части вектора равны 0. Только одна из них имеет 1. Теперь вы пытаетесь вычислить классификатор, который будет производить наш соответствующий вектор, и с этим вектором y шляпу, вы можете продолжить классификацию.

Так что, по сути, я угадываю выходную вероятность для каждого из классов. В частности, было показано, что для проблем с несколькими классами это более эффективный способ решения этих проблем. Проблема в том, что вы хотите получить своего рода вероятностный вывод в направлении 0 и 1, но обычно у нас есть некоторый входной вектор x, который можно масштабировать произвольно. Итак, чтобы произвести наши предсказания, мы прибегаем к хитрости. Хитрость в том, что мы используем экспоненциальную функцию, поскольку она отображает все в положительное пространство. Теперь вы хотите убедиться, что максимум, который может быть достигнут, равен ровно 1. Итак, вы делаете это для всех своих классов и вычисляете сумму по всем экспонентам всех входных элементов. Это дает вам максимум, который может быть достигнут этим преобразованием. Затем вы делите на это число все заданные вами входные данные, и это всегда будет масштабироваться до домена [0, 1]. Полученный вектор также будет обладать тем свойством, что если сложить все элементы, то он будет равен 1. Это две аксиомы распределения вероятностей, введенные Колмогоровым. Таким образом, это позволяет нам всегда рассматривать выход сети как своего рода вероятность. Если вы посмотрите в литературе и на примеры программного обеспечения, иногда функция softmax также известна как нормализованная экспоненциальная функция. Это то же самое.

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

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

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

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

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

Что ж, теперь у нас есть некий математический принцип, который говорит нам, что делать, и мы знаем минимизацию. Давайте попробуем один из очевидных вариантов: градиентный спуск. Итак, мы решили найти минимальное w, которое минимизирует потерю всех обучающих выборок. Для этого мы вычисляем градиент, и нам нужно некоторое начальное предположение для w. Существует множество различных способов инициализации w. Некоторые люди просто используют случайно инициализированные веса, а затем вы переходите к градиентному спуску. Итак, вы шаг за шагом следуете отрицательному направлению градиента, пока не достигнете некоторого минимума. Итак, здесь вы можете увидеть этот начальный w, и этот шаг может быть случайным. Затем на шаге 2 повторяйте до сходимости. Итак, вы вычисляете градиент относительно w функции потерь. Тогда вам нужна скорость обучения η. η, по сути, говорит вам, какова длина шагов этих отдельных стрелок. Затем вы следуете в этом направлении, пока не достигнете минимума. Теперь η обычно называют скоростью обучения. Самое интересное в этом подходе то, что он очень прост, и вы всегда найдете минимум. Это может быть только локальное, но вы сможете минимизировать функцию. Что делают многие люди, так это запускают несколько случайных инициализаций. Затем эти случайные инициализации используются для поиска различных локальных минимумов. Затем они просто берут лучшие локальные минимумы для своей окончательной системы.

Что это за L, который мы пытаемся оптимизировать? Итак, L вычисляется здесь на самом выходном слое. Итак, мы вводим входные данные в наш сетевой процесс со всей сетью, а затем, в конце концов, вычисляем по существу разницу, соответствие или потерю желаемому результату. Таким образом, можно сказать, что если первый слой — это f, второй — g, то нас интересует вычисление Lнекоторых входных данных x и w. Мы вычисляем f, используя индекс w f. Затем используем веса w, индекс g, вычисляем g, а затем, в конце, мы вычисляем соответствие между g и г. Итак, это, по сути, то, что нам нужно вычислить в функции потерь.

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

Если вам понравился этот пост, вы можете найти больше эссе здесь, больше учебных материалов по машинному обучению здесь или посмотреть нашу Глубокое обучение Лекцию. Я также был бы признателен за аплодисменты или подписку на YouTube, Twitter, Facebook или LinkedIn, если вы хотите получать информацию о новых эссе, видео и исследованиях в будущем. Эта статья выпущена на условиях Creative Commons 4.0 Attribution License и может быть перепечатана и изменена при ссылке.

использованная литература

[1] Р. О. Дуда, П. Э. Харт и Д. Г. Сторк. Классификация узоров. John Wiley and Sons, Inc., 2000.
[2] Кристофер М. Бишоп. Распознавание образов и машинное обучение (информатика и статистика). Секокус, Нью-Джерси, США: Springer-Verlag New York, Inc., 2006.
[3] Ф. Розенблатт. «Персептрон: вероятностная модель хранения и организации информации в мозгу». В: Psychological Review 65.6 (1958), стр. 386–408.
[4] WS. Маккалок и У. Питтс. «Логическое исчисление идей, имманентных нервной деятельности». В: Бюллетень математической биофизики 5 (1943), стр. 99–115.
[5] Д. Э. Румельхарт, Г. Э. Хинтон и Р. Дж. Уильямс. «Изучение представлений путем обратного распространения ошибок». В: Nature 323 (1986), стр. 533–536.
[6] Ксавье Глорот, Антуан Бордес и Йошуа Бенжио. «Глубокие разреженные нейронные сети выпрямителя». В: Труды четырнадцатой Международной конференции по искусственному интеллекту Vol. 15. 2011, стр. 315–323.
[7] William H. Press, Saul A. Teukolsky, William T. Vetterling, et al. Числовые рецепты 3-е издание: Искусство научных вычислений. 3-е изд. Нью-Йорк, штат Нью-Йорк, США: Издательство Кембриджского университета, 2007.