Примечания к курсу нейронных сетей и глубокого обучения
Я начал писать заметки для этого конкретного курса, и эта статья содержит заметки второй недели. Если вы еще не сослались, примечания к 1-й неделе, пожалуйста, ознакомьтесь с этой статьей.
2 неделя
Двоичная классификация
Логистическая регрессия - это алгоритм двоичной классификации. Возьмем задачу идентификации кошек с некоторыми входными изображениями. Здесь X будет некоторым набором изображений, а y будет меткой вывода как 0 или 1. Далее, давайте посмотрим, как изображения представлены на компьютере. Они хранятся в виде трех отдельных каналов красного, синего и зеленого цвета. Итак, если изображение имеет размер 64 X 64 пикселя, то у нас будет три матрицы 64 X 64, соответствующие значениям интенсивности красного, зеленого и синего пикселей для изображений. Чтобы превратить эти значения интенсивности пикселей в вектор признаков, мы развернем эти значения пикселей во входной вектор признаков x. Чтобы развернуть значения, мы сначала поместим все значения пикселей красного канала в вектор, а затем значения синего и зеленого каналов. Таким образом, если изображение имеет размер 64 X 64 пикселя, тогда общие размеры входного вектора x будут 64 X 64 X 3 = 12 288.
Обозначения
- Один обучающий пример представлен парой (x, y), где x = N-мерный вектор признаков, а y выводится {0,1}
- m - это ряд обучающих примеров. {(x¹, y¹), (x², y²)… (xᵐ, yᵐ)}
- Чтобы объединить все обучающие примеры в одну нотацию, мы будем использовать X, где мы определяем все входные функции в столбцах, как показано ниже. Таким образом, X - это {Nx, m} мерная метрика.
- Y было бы равно [y¹, y², y³, y⁴ …… yᵐ], таким образом, {1, m} мерные метрики.
Логистическая регрессия
Логистическая регрессия - это алгоритм обучения, который мы используем, когда выход y равен 0 или 1. Учитывая входную характеристику x, мы хотим предсказать вероятность того, что y ^ (Y hat) будет равно y.
Учитывая параметры w и b, мы можем переписать формулу линейной регрессии, используя сигмовидную функцию, следующим образом:
В приведенной выше формуле Wˣ + b представлено буквой Z. Если на горизонтальной оси отложена Z, то сигмоид функции Z выглядит как на следующем изображении. Он плавно идет от нуля до единицы и пересекает вертикальную ось как 0,5.
Сигмоид Z представлен как 1/1 + e-ᶻ, поэтому, если значение Z очень велико, e-ᶻ становится очень маленьким, что приводит к общему значению 1. Если Z - минимальное отрицательное значение, то e-ᶻ становится огромное число, приводящее к нулю общей стоимости. Итак, при реализации логистической регрессии наша задача - попытаться изучить параметры w и b, чтобы y-шляпа стала хорошей оценкой вероятности того, что y будет равно единице.
Функция стоимости логистической регрессии
Чтобы обучить параметры w и b модели логистической регрессии, нам нужно определить функцию стоимости. Она также известна как функция потерь, которая нам понадобится, чтобы измерить, насколько хороша y-шляпа, когда истинная метка - y. Функция следующая.
Мы хотели бы, чтобы эта функция была как можно меньше, чтобы убедиться, что y-шляпа правильно предсказана логистической регрессией. Чтобы понять, в чем смысл этой функции потерь, давайте рассмотрим два сценария.
- Когда y = 1, замена значения y в приведенном выше уравнении дает L (y ^, y) = -log (y ^). Итак, если мы скажем y = 1, нам нужно будет убедиться, что y-шляпа как можно больше. В логистической регрессии мы используем сигмовидную функцию, поэтому значение y-hat не может превышать 1, следовательно, оно должно быть близко к 1.
- Когда y = 0, замена значения y в 1-м уравнении дает L (y ^, y) = -log (1- (y ^). Таким образом, если мы говорим y = 0, нам нужно будет гарантировать, что log (1-y ) является как можно большим с учетом отрицательного знака, поэтому y-шляпа должна быть как можно меньше.
Уравнение 1 предназначено для одного обучающего примера, а для всего обучающего набора функция потерь может быть записана следующим образом.
Градиентный спуск
На проиллюстрированной диаграмме горизонтальные оси представляют параметры w и b, а ось над этими горизонтальными осями представляет функцию стоимости. Наша цель - найти такие значения w и b, чтобы значение функции затрат было минимальным.
Используемая здесь функция стоимости J (w, b) является выпуклой функцией. Следовательно, градиентный спуск выглядит как большая чаша в отличие от нескольких маленьких локальных минимумов.
Далее, чтобы получить наилучшие значения параметров, нам нужно будет инициализировать их некоторыми начальными значениями. Обычно при логистической регрессии значения инициализируются нулем. Градиентный спуск начнется в начальной точке и будет спускаться в направлении наиболее крутого спуска как можно быстрее, чтобы достичь глобального минимума, представленного на диаграмме красной точкой. Он будет принимать значения w и b и обновлять их следующим образом.
Где альфа - скорость обучения. Наряду со скоростью обучения частная производная от w и b поможет обновить значение w и b соответственно.
Python и векторизация
При вычислении потерь и градиентов для m обучающих примеров необходимо повторять каждый пример с помощью цикла for, а наличие явных циклов for в коде делает алгоритм менее эффективным. В случае алгоритмов глубокого обучения мы собираемся переходить к все большим и большим наборам данных. Таким образом, выполнение алгоритма без явных циклов for становится чрезвычайно важным и помогает масштабироваться до гораздо больших наборов данных. Следовательно, одним из действительно важных приемов, которые приходят на помощь, является векторизация.
Невекторизованная реализация логистической регрессии в Python:
Векторизованная реализация логистической регрессии в Python:
Для заметок 3 и 4 недель, пожалуйста, щелкните здесь.