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

Убыток и оптимизация - Часть 2

Превосходят ли SVM глубокое обучение?

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

Навигация

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

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

Вы помните, что мы минимизировали сумму по всем ошибочно классифицированным образцам. Мы выбрали это, потому что мы могли каким-то образом избавиться от функции знака и изучать только те образцы, которые имели отношение к ошибочной классификации. Также обратите внимание, что здесь у нас нет категории 0/1, а есть -1/1, потому что это позволяет нам умножаться с меткой класса. Тогда это всегда будет приводить к отрицательному числу неправильно классифицированных образцов. Затем мы добавляем этот отрицательный знак в самом начале, так что всегда получаем положительное значение. Чем меньше это положительное значение, тем меньше будут наши потери. Итак, мы стремимся минимизировать эту функцию. У нас нет знаковой функции в этом критерии, потому что мы нашли элегантный способ сформулировать эту функцию потерь без нее. Теперь, если бы он был в, мы бы столкнулись с проблемами, потому что это только подсчитало бы количество ошибочных классификаций, и мы не смогли бы различать, далеко ли он от границы решения или близко к границе решения. Мы просто закончили бы счетом. Если мы посмотрим на градиент, он практически исчезнет повсюду. Так что это непростая задача оптимизации. Мы не знаем, в каком направлении двигаться, поэтому не можем найти хорошую оптимизацию. Что мы с этим делали в прошлый раз? Что ж, нам нужно как-то ослабить это, и есть способы исправить это.

Один из способов продолжить - включить так называемую потерю шарнира. Теперь с потерей шарниров мы можем ослабить эту функцию 0/1 до чего-то, что ведет себя линейно в большой области. Идея состоит в том, что мы, по сути, используем линию, которая попадает на ось x в 1 и ось Y также в 1. Если мы сделаем это таким образом, мы можем просто переписать это, используя функцию max. Таким образом, потери на шарнире являются суммой по всем выборкам, которые по существу получают 0, если наше значение больше 1. Итак, мы должны переписать правую часть, чтобы немного переформулировать это. Возьмем 1 - y нижний индекс m раз y hat. Здесь вы можете видеть, что у нас будет такое же ограничение. Если у нас есть противоположные стороны границы, этот член будет отрицательным, и, судя по знаку, он, конечно, будет перевернут, так что мы получим большие значения для большого количества ошибочных классификаций. Мы избавились от проблемы, связанной с поиском набора ошибочных классификаций M. Теперь мы можем взять полный набор образцов, используя эту функцию max, потому что все, что будет выполнять это ограничение, будет автоматически ограничено до 0. Таким образом, это не будет. влияют на эту функцию потерь. Таким образом, это очень интересный способ постановки той же проблемы. Мы неявно получаем ситуацию, когда в этой функции потерь мы рассматриваем только неправильно классифицированные выборки. Можно показать, что потеря на шарнире является выпуклой аппроксимацией потери от неправильной классификации, которую мы рассматривали ранее. Одна важная особенность такого рода задач оптимизации - это, конечно, градиент. Здесь у этой функции потерь есть излом. Таким образом, производная не является непрерывной в точке x = 1. Итак, здесь неясно, что такое производная, и теперь вы можете сказать: «Хорошо, я не могу вычислить производную этой функции. Итак, я обречен! »

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

Итак, давайте расширим градиент и перейдем в сторону субградиентов. В субградиентах мы определяем то, что сохраняет это свойство, но не обязательно является градиентом. Таким образом, вектор g является субградиентом выпуклой функции f (x₀), если у нас есть то же свойство. Итак, если мы проследим направление субградиента, умножим его на разницу между x и x₀, тогда у нас всегда будет нижняя граница. Приятная вещь в том, что мы, по сути, можем ослабить требование возможности вычислять градиент. Может быть несколько таких g, которые удовлетворяют этому свойству. Таким образом, g не обязательно должен быть уникальным. Набор всех этих субградиентов затем называется субдифференциальным. Итак, субдифференциал - это набор субградиентов, которые все удовлетворяют вышеуказанному свойству. Если f (x) дифференцируема в x₀, мы можем просто сказать, что набор, содержащий все субдифференциалы, - это просто набор, содержащий градиент.

Теперь давайте рассмотрим случай, когда это не так. В этом примере здесь у нас есть выпрямленный линейный блок (ReLU), который также имеет точно такую ​​же проблему. Опять же, это выпуклая функция, что означает, что здесь, в точке излома, мы можем найти довольно много субградиентов. На самом деле вы видите зеленую и красную линии. Оба они являются допустимыми субградиентами и обладают тем свойством, что являются нижними границами соответствующей функции. Это означает, что теперь мы можем определить субдифференциал, и наш субдифференциал равен 1, где x₀ больше 0. У нас есть 0, где он меньше 0. У нас есть ровно g - и теперь g может. быть любым числом от 0 до 1 в позиции x₀ = 0. Это хорошо, потому что теперь мы можем по существу следовать этому субградиентному направлению. Просто градиент определяется по-разному в разных частях кривой. В частности, в положении излома у нас есть ситуация, когда у нас будет несколько возможных решений. Но для нашей оптимизации достаточно просто знать один из субградиентов. Нам не нужно вычислять весь набор. Итак, теперь мы можем просто расширить наш алгоритм градиентного спуска для обобщения на субградиенты. Существуют доказательства того, что для выпуклых задач вы все равно найдете глобальный минимум с помощью теории субградиентов. Итак, теперь мы можем сказать: «Ну, функции, на которые мы смотрим, они локально выпуклые». Затем это позволяет нам находить локальные минимумы даже с ReLU и потерями на шарнире.

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

Что, если люди скажут: «О, машины опорных векторов (SVM) намного лучше, чем то, что вы делаете, потому что они всегда достигают глобального минимума». Итак, не лучше ли использовать SVM? Итак, давайте немного посмотрим, что на самом деле делает SVM. SVM вычисляют оптимально разделяющую гиперплоскость. Он также вычисляет некоторую плоскость, разделяющую два класса, с целью максимизировать разницу между двумя наборами. Итак, вы пытаетесь найти плоскость или здесь, в этом простом примере, линию, которая дает максимальный запас. Гиперплоскость или граница решения - это черная линия, а пунктирные линии указывают здесь запас. Итак, SVM пытается найти максимально большой запас при разделении этих классов. Обычно вы находите эту проблему минимизации, где w - нормальный вектор нашей гиперплоскости. Затем мы минимизируем величину вектора нормали. Обратите внимание, что этот вектор нормали не масштабируется, а это означает, что если вы увеличиваете величину w, ваш вектор нормали становится длиннее. Если вы хотите вычислить расстояние со знаком, вы обычно делите его на величину вектора нормали. Итак, это означает, что если вы увеличиваете длину этого вектора нормали, ваши расстояния становятся меньше. Если вы хотите максимизировать расстояния, вы минимизируете длину вектора нормали. Очевидно, вы можете просто свернуть его до нуля, и тогда у вас будут практически бесконечные расстояния. Простое сведение к минимуму w приведет к тривиальному решению: w = 0. Чтобы предотвратить это, вы помещаете это в оптимизацию ограничений, где вам требуется для всех наблюдений m для всех ваших выборок, чтобы они проецировались на правую сторону границы решения. Здесь это вводится посредством минимизации ограничений. Итак, вы хотите, чтобы расстояние со знаком умножалось на истинную метку за вычетом единицы, чтобы оно было меньше 0.

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

Затем это приводит нас к полной формулировке SVM с мягким запасом, и если я хочу сделать это в совместной оптимизации, вы конвертируете это в двойственную функцию Лагранжа. Для этого вы вводите множители Лагранжа λ и ν. Итак, вы можете видеть, что ограничения, которые были у нас на предыдущем слайде, теперь получают множители λ и ν. Конечно, есть дополнительный новый m, который вводится для отдельных ограничений. Теперь вы видите, что это представляет собой довольно сложную проблему оптимизации. Тем не менее, у нас есть одна функция Лагранжа, которую можно минимизировать для всех w, ξ, λ и ν. Итак, здесь введено множество параметров. Мы можем немного изменить это и свести многие параметры в одну сумму. Если отказаться от интерпретации опорного вектора, мы можем считать эту сумму постоянной. Поскольку мы знаем, что все лямбды больше или равны 0, это означает, что все, что будет неправильно классифицировано или находится ближе к границе решения, чем 1, приведет к положительным потерям. Если вы замените лямбда-член максимальной функцией, вы получите тот же результат. Оптимизация всегда будет давать что-то, что будет равно нулю или больше в случае неправильной классификации или если вы находитесь в пределах области маржи. В этом трюке мы аппроксимируем это, вводя функцию max для подавления всего, что ниже 0, то есть с правильной стороны и за пределами поля. Теперь вы видите, что мы можем очень элегантно выразить это как потерю петли. Итак, вы можете показать, что машина опорных векторов и формулировка потерь на шарнирах с этими ограничениями эквивалентны с точностью до общей мультипликативной константы, как показано в ссылке [1]. Если люди говорят: «О, вы не можете заниматься глубоким обучением. Возьмите вместо этого SVM! ». Что ж, если вы выберете правильную функцию потерь, вы также можете включить машину опорных векторов в свою структуру глубокого обучения. На самом деле это довольно хорошее наблюдение.

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

Итак, давайте подытожим это немного: мы увидели, что мы можем включить SVM в нейронную сеть. Мы можем сделать это с помощью потерь на шарнире, которые представляют собой функцию потерь, в которую вы можете накладывать всевозможные ограничения. Вы даже можете включить эксперименты с принудительным выбором в качестве функции потерь. Тогда это было названо потерей пользователей. Таким образом, это очень гибкая функция, которая позволяет вам также формулировать все виды задач оптимизации с ограничениями в рамках глубокого обучения. Вы также можете включить все виды ограниченной оптимизации в фреймворки глубокого обучения. Также очень здорово, что вы узнали о субградиентах и ​​о том, почему мы можем иметь дело с негладкими целевыми функциями. Так что это тоже очень полезная часть, и если вы столкнетесь с математиком, и он скажет вам: «О, вот этот излом, и вы не можете вычислить градиент!». Так что с этого момента вы говорите: «Эй, субградиенты, спасите день!». Таким образом, нам просто нужно найти один возможный градиент, и тогда он по-прежнему работает. Это действительно здорово. Проверьте наши ссылки, если кто-нибудь когда-нибудь скажет вам, что ReLU не подходят для вашей процедуры градиентного спуска. Этому есть доказательства.

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

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

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

[1] Кристофер М. Бишоп. Распознавание образов и машинное обучение (информатика и статистика). Секакус, штат Нью-Джерси, США: Springer-Verlag New York, Inc., 2006.
[2] Анна Чороманска, Микаэль Хенафф, Майкл Матье и др. «Поверхности потерь в многослойных сетях». В: АИСТАТС. 2015.
[3] Янн Дофин, Разван Паскану, Чаглар Гульчере и др. «Выявление и решение проблемы седловой точки в невыпуклой оптимизации большой размерности». В кн .: Достижения в области нейронных систем обработки информации. 2014, стр. 2933–2941.
[4] Yichuan Tang. «Глубокое обучение с использованием машин линейных опорных векторов». В: препринт arXiv arXiv: 1306.0239 (2013).
[5] Сашанк Дж. Редди, Сатьен Кале и Санджив Кумар. «О конвергенции Адама и загробного мира». В кн .: Международная конференция по обучающимся представлениям. 2018.
[6] Катажина Яноча и Войцех Мариан Чарнецкий. «О функциях потерь для глубоких нейронных сетей в классификации». В: препринт arXiv arXiv: 1702.05659 (2017).
[7] Джеффри Дин, Грег Коррадо, Раджат Монга и др. «Крупномасштабные распределенные глубокие сети». В кн .: Достижения в области нейронных систем обработки информации. 2012, стр. 1223–1231.
[8] Марен Махсеречи и Филипп Хенниг. «Поиск вероятностной линии для стохастической оптимизации». В: Достижения в системах обработки нейронной информации. 2015, стр. 181–189.
[9] Джейсон Уэстон, Крис Уоткинс и др. «Поддержка векторных машин для мультиклассового распознавания образов». В: ESANN. Vol. 99. 1999, pp. 219–224.
[10] Chiyuan Zhang, Samy Bengio, Moritz Hardt, et al. «Понимание глубокого обучения требует переосмысления обобщения». В: препринт arXiv arXiv: 1611.03530 (2016).