Более захватывающее внимание (глаз машинного обучения)~
вводить
-
Машина опорных векторов в основном состоит из двух частей: функции потерь при сворачивании (
Hinge Loss
) и метод ядра (Kernel Method
)
функция потерь
-
Предположим, что наш формат входных данных выглядит следующим образом:
-
Где x представляет вектор данных, y представляет метку данных, а метки делятся на две категории, а именно + 1 и - 1. Здесь функция демоделирования:
-
Таким образом, функция потерь для классификации:
-
Определено, что когда вычисляемое значение функции не равно метке, она принимает 1, а при равенстве принимает 0, но полученная таким образом функция немного плоха, ее нельзя дифференцировать, т. е. градиентный спуск не может быть выполнен. Поэтому мы используем другую функцию в качестве функции потерь, а именно:
Обсуждение различных функций потерь
-
Далее мы обсудим свойства различных функций потерь, как показано на следующем рисунке:
-
На приведенном выше рисунке абсцисса равна yf(x), если прогнозируемый знак совпадает с исходной меткой, то их значение потерь равно 0, если знак противоположен, значение потерь равно 1, где черная линия — это идеальная кривая функции потерь, но ясно видно, что это недифференцируемая функция, поэтому вместо этого мы используем приблизительную функцию потерь.Эта приблизительная функция потерь может быть выбрана различными способами, и каждый возможный выбор будет обсуждаться ниже :
-
Красная кривая представляет собой кривую квадратичной функции, и выражение ее функции потерь:
-
Мы видим, что когда значение метки данных равно +1, прогнозируемое значение +1 может привести к наименьшим потерям; когда значение метки равно -1, прогнозируемое значение -1 может привести к наименьшим потерям. Следовательно, когда yf(x)=1, получается минимальное значение функции потерь, но последняя функция является необоснованной, потому что по мере того, как прогнозируемое значение постепенно становится больше, значение функции потерь фактически становится все больше и больше, что, очевидно, необоснованный.
-
Далее мы рассмотрим использование
sigmoid+square loss
В качестве функции потерь ее функциональная кривая показана синим цветом Конкретная функция потерь выглядит следующим образом:
Нарисуйте кривую функции потерь, как показано на рисунке выше. Эффект от этого метода не так хорош, как при использовании перекрестной энтропии. Конкретные причины заключаются в следующем:
-
Из выражения видно, что если yf(x) стремится к бесконечности, то полное значение функции будет стремиться к ln1=0, а если yf(x) стремится к отрицательной бесконечности, то полное значение функции будет стремиться к ∞, поэтому Кривая функции показана выше. Эта кривая функции разумна, потому что значение функции постепенно уменьшается по мере увеличения y^nf(xn). Сравнивая метод сигмовидной + квадратной лоос как функцию потерь, мы видим, что когда независимая переменная (значение, соответствующее оси абсцисс) принимает отрицательную бесконечность, сигмовидная + перекрестная энтропия будет иметь большое значение градиента, а сигмоидная + квадратная Значение градиента loos почти равно 0, то есть в процессе градиентного спуска первый будет вознагражден за свои основные усилия, а второй не будет вознагражден, поэтому весьма вероятно, что он не хочет много работать. Еще один момент, здесь мы делим значение функции перекрестной энтропии на ln2, основная цель состоит в том, чтобы надеяться получить верхнюю границу идеальной функции потерь.
-
Наконец, мы рассмотрим функцию потерь при сворачивании (
Hinge Loss
), конкретное выражение и кривая функции показаны на следующем рисунке:
Для приведенной выше функции потерь мы видим, что для положительного примера, если f(x)>1, получается идеальный результат классификации, а для отрицательного примера, если f(x)1, это достаточно хорошо, но они находятся в одном направлении.penalty
Считается, что на самом деле он недостаточно хорош.Хотя его можно правильно классифицировать, функция потерь по-прежнему или сдвигает независимую переменную вправо, чтобы стать лучше.Этот интервал также называется запасом. где функция потерь принимает
1, который дает точную верхнюю границу идеальной функции потерь.
-
Если сравнивать функцию кросс-энтропии и функцию потерь при сворачивании, то самая большая разница между ними заключается в отношении к правильно классифицированным примерам. Если черную точку на рисунке переместить из позиции 1 в позицию 2, мы увидим, что значение функции кросс-энтропийной потери будет продолжать уменьшаться, а это значит, что она надеется получить лучшие результаты после нее. уже получил хорошие результаты. ; Но функция складывания - это хорошая функция, когда она больше, чем поле, это хорошо. При практическом использовании функция свертывания немного лучше, чем функция кросс-энтропийных потерь, то есть ненамного. Однако функция складывания лучше учитывает общую ситуацию, и эффект будет лучше при выполнении мультиклассификации.
Линейный классификатор SVM
-
Шаги линейного SVM в основном разделены на три части, как показано на следующем рисунке:
-
Второй шаг состоит в построении функции потерь.Здесь используются складывающаяся функция потерь и обычный член L2, поскольку предыдущая функция потерь, очевидно, является выпуклой функцией, а последний член регуляризации также, очевидно, является выпуклой функцией, поэтому их комбинация также является выпуклой функцией;
-
Таким образом, параметры могут быть обновлены с использованием метода градиентного спуска на третьем этапе. Некоторые люди могут подумать, что эта функция кусочно-линейна и может использовать градиентный спуск, да. Подумайте о предыдущем RElu, который тоже имеет место быть, его также можно обучить с помощью метода градиентного спуска.
-
Здесь мы видим, что разница между логистической регрессией и линейным SVM на самом деле является разницей в функции потерь. С другой стороны, на первом этапе мы видим, что SVM и нейронная сеть на самом деле связаны, поэтому в ICML в 2013 году есть статья «Глубокое обучение с использованием линейных машин опорных векторов».
Обучите SVM с градиентным спуском
-
Во-первых, мы выносим функцию потерь при сворачивании в функции потерь и оцениваем, равны ли следующие два уравнения:
На самом деле, если рассматривать только эти два уравнения, они не равны, но с учетом одновременной минимизации следующей функции потерь они одинаковы:
В настоящее время мы используем ϵ для замены исходной функции потерь при сворачивании, где ϵ удовлетворяет двум неравенствам в красном прямоугольнике ранее, поэтому здесь мы думаем, что это резервная переменная, и такая проблема может быть решена с помощью квадратичного программирования.
ядерный метод
двойное представительство
-
Вес окончательной функции классификации на самом деле является линейной комбинацией входных данных, как показано на следующем рисунке.
-
Происхождение этого результата можно рассматривать с точки зрения обновления параметров с помощью упомянутого ранее метода градиентного спуска. Как показано на рисунке выше, мы объединяем все процессы обновления веса в вектор, где производная функции потерь при свертывании обозначается как c(w), а ее конкретное выражение также показано на рисунке выше. Если мы установим начальное значение веса равным 0, то параметр w на самом деле является линейной комбинацией входных данных, а поскольку для складывающейся функции потерь в ней много нулевых значений, то и нулей в коэффициент α , так что вес фактически является разреженной комбинацией входных данных, а точки данных, соответствующие разреженности, отличной от нуля, называются опорными векторами. Этот результат делает модель более надежной.Даже если есть выбросы или необоснованные точки, пока они не выбраны в качестве опорных векторов, влияние на результаты классификации не будет большим.
-
Поскольку в предыдущем разделе было доказано, что вес SVM фактически получается линейной комбинацией входных точек, его можно выразить в следующем виде:
-
Вот преобразование исходной суммы в форму векторного умножения, которое часто используется в машинном обучении. После получения двойного выражения веса первым шагом является выполнение замены переменных, как показано на следующем рисунке.
-
После ввода w вы можете видеть, что f (x) в основном состоит из этих трех частей. Первая часть - это коэффициент α, который представляет собой вектор-строку с общим количеством столбцов N. Последние две могут использовать ассоциативный закон умножение матриц, чтобы получить вектор-столбец A с общим количеством N строк. Таким образом, f(x) может быть выражено в виде приведенного выше рисунка, где (xn x) может быть выражено как K(xn, x) , мы будем
K
называется методом ядра. -
Как показано на рисунке ниже, после выражения целевой функции в виде линейной комбинации коэффициентов и K(xn, x) следующей задачей является минимизация функции потерь:
-
Следует отметить, что хотя в последнем элементе есть n и n', диапазон суммирования этих двух одинаковый, за исключением того, что операция суммирования выполняется сначала над n', а затем операция суммирования над n. Здесь нам действительно не нужно знать вектор xn, нам просто нужно знать внутреннюю связь между векторами xn и xn'. Этот метод называется Kernel Trick.
Уловка ядра
-
Когда мы сопоставляем исходные точки данных с многомерным пространством, часто бывает очень полезно использовать трюк ядра, как показано на следующем рисунке:
-
Как показано на рисунке выше, мы сопоставляем х с Φ(x). В это время мы преобразуем расчет в большие размеры, а затем делаем скалярное произведение. Благодаря упрощению мы можем знать, что этот процесс эквивалентен первому выполнению точечного произведение на исходные данные, а затем возведение в квадрат. Этот метод может сократить объем вычислений, когда входными данными являются многомерные данные, как показано на следующем рисунке:
-
Если вы сначала выполняете многомерное отображение, вам нужно выполнить k + C (K, 2) умножение, чтобы получить точки многомерных данных, а затем сделать скалярное произведение между многомерными точками, всего 3 *k+C(K,2) умножения. Однако, если сначала выполняется операция скалярного произведения, а затем выполняется операция возведения в квадрат, необходимо вычислить k+1 умножений. Этот расчет значительно меньше. Таким образом, основная роль трюка с ядром заключается в уменьшении объема вычислений.
-
Далее мы представим ядро радиальной базисной функции в качестве примера.
-
Мы можем видеть, что если радиальную базисную функцию разложить по формуле Тейлора, мы увидим, что это сумма бесконечных членов, поэтому нет способа решить ее, сначала отобразив в большие измерения, а затем выполнив скалярное произведение. Кроме того, с помощью описанного выше процесса мы также можем узнать, что ядро RBF (радиальная базисная функция) на самом деле является классификатором в бесконечном измерении.Хотя эффект лучше, его также очень легко переобучить.
-
Далее мы представим ядро сигмоида в качестве примера.
-
На самом деле мы можем видеть, что процесс вычисления f (x) может быть рассчитан следующей нейронной сетью.Для входных данных x он сначала выполняет скалярное произведение с x1.Этот процесс фактически вычисляет вес первого нейрона.Ввод, всего таких нейронов n, их можно умножить на соответствующие коэффициенты, а затем добавить к целевой функции f(x). Следовательно, SVM, использующая ядро сигмоида, на самом деле представляет собой нейронную сеть только с одним скрытым слоем, а функцией активации является функция сигмоида.
-
Не все скалярные произведения векторов перед другими операциями имеют соответствующие функции ядра, можно проверить только те, которые удовлетворяют теории Мерсера.
Взаимосвязь между глубоким обучением и машинами опорных векторов
-
Машины глубокого обучения и опорных векторов в принципе тесно связаны, как показано на следующем рисунке:
-
Скрытый слой перед глубоким обучением фактически выполняет многомерное отображение признаков и, наконец, использует линейный классификатор для классификации;
-
SVM использует метод ядра для нелинейного отображения данных, а затем использует линейный классификатор для классификации.
-
Оба являются методами сначала сопоставления признаков, а затем классификации, Фактически, метод ядра SVM также поддается обучению, но они не могут обучаться до уровня глубокого обучения.
-
Когда вы используете несколько функций ядра, можно узнать вес связи между двумя ядрами, точно так же, как предыдущая SVM имеет только один скрытый слой, при использовании метода с несколькими ядрами это эквивалентно наличию нескольких скрытых слоев. веса между ними изучаемы.