Примечания к курсу нейронных сетей и глубокого обучения

Я начал писать заметки для этого конкретного курса, и эта статья содержит заметки второй недели. Если вы еще не сослались, примечания к 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-шляпа правильно предсказана логистической регрессией. Чтобы понять, в чем смысл этой функции потерь, давайте рассмотрим два сценария.

  1. Когда y = 1, замена значения y в приведенном выше уравнении дает L (y ^, y) = -log (y ^). Итак, если мы скажем y = 1, нам нужно будет убедиться, что y-шляпа как можно больше. В логистической регрессии мы используем сигмовидную функцию, поэтому значение y-hat не может превышать 1, следовательно, оно должно быть близко к 1.
  2. Когда 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 недель, пожалуйста, щелкните здесь.