Обучение одной нейронной сети для логистической регрессии
В этой статье дается обзор обучения нейронной сети с одним нейроном (также известной как восприятие) для решения задачи логистической регрессии.
Набор данных:
Набор данных состоит из входных данных X, содержащих m выборок, каждая выборка имеет n признаков, и выходной/целевой переменной y, которая представляет собой вектор-столбец размера (m, 1) со значениями 0 или 1, как показано
У нас есть проблема бинарной классификации, где при заданном X нам нужно предсказать, будет ли y = 1 или 0. Мы сформулируем это в виде следующего уравнения:
ŷ = σ(wX+b)
где :
ŷ - прогнозируемый вектор в форме (m, 1) для заданного входа X
w - весовой вектор формы (m, 1) и
b - это точка пересечения, которая является скалярным значением
𝜎 — функция активации. Мы используем сигмовидную функцию в качестве нашей функции активации в случае задачи бинарной классификации 0–1, поскольку она легко отображает любой ввод в вывод между 0 и 1.
Функция потерь для логистической регрессии задается (векторизованная форма):
Loss, L = -(y*log(ŷ) + (1-y)*(log(1-ŷ))∕m
где y - вектор истинных меток
и ŷ - прогнозируемые значения, рассчитанные выше.
Наша цель в логистической регрессии — найти оптимальные w и b, которые минимизируют потери L. Или, другими словами, найти такие w и b, что
∂L∕∂w = 0 and ∂L/∂b = 0
Мы будем использовать нейронную сеть с одним нейроном, чтобы найти оптимальные w и b. Структура нейронной сети будет такой, как показано на рисунке:
Шаги прямого распространения:
- Инициализируйте весовой вектор w формы (n,1) с 0 (используйте np.zeros).
- Инициализировать перехват b = 0.0
- Вычислите z = w*x+b .
- Вычислите a = 𝜎(z). {где 𝜎 — сигмовидная функция}
- Рассчитайте потери, используя:
L = (y*log(a) + (1-y)*(log(1-a))
Теперь нам нужно использовать обратное распространение, чтобы вычислить градиенты ∂L ∕ ∂w и ∂L ∕ ∂b и обновить веса ‘w’ и перехватить ‘b’ с помощью уравнений
Используя цепное правило дифференцирования, мы можем написать
Вычисляя каждый термин отдельно:
мы получаем
Подставляя все в формулу цепного правила, получаем,
Точно так же мы можем получить
Кроме того, мы можем показать, что
что подразумевает
и
Обычно, поскольку мы берем производную функции потерь по w, b и z, соглашение состоит в том, чтобы представлять их как «dw», «db» и «dz». Таким образом, приведенные выше уравнения становятся:
Шаг обратного распространения включает в себя вычисление вышеуказанных градиентов, как только мы получим значение «а» после прямого распространения.
Мы продолжаем вычислять градиенты для каждой из выборок и добавлять их кумулятивно, чтобы, наконец, получить градиенты за один проход по всем данным. Затем мы используем эти градиенты для обновления w и b, используя уравнения обновления, определенные выше.
Векторизация
Вместо того, чтобы повторять этот процесс «m» раз, мы можем использовать векторизацию, чтобы избежать использования дорогостоящих в вычислительном отношении циклов for для вычисления градиентов.
Затем формулы станут (используя numpy для операции векторизации)
Z = wᵀ.X +b
= np.dot(wᵀ, X) +b
A = 𝜎(Z)
dZ = A-Y
dw = np.dot(X,dZᵀ)/м
db = np.sum(dZ, axis=1,keepdims=True)/м
w := w-𝛼dw
b := b-𝛼db
где 𝛼 — скорость обучения.
Нам все равно придется пройти через несколько итераций, чтобы потери сошлись, приведенная выше векторизация позволяет нам избежать повторения количества выборок.
Это была простая демонстрация того, как прямое и обратное распространение работают в нейронной сети. Для более крупных нейронных сетей вычисления могут стать сложными из-за изменения размера и количества скрытых слоев, но процесс остается тем же для вычисления градиентов, используя прямое распространение для вычисления прогнозов, а затем используя обратное распространение ошибки для получения градиентов. «dw» и «db» и использовать его для обновления весов «w» и перехватов «b» и повторять весь процесс до тех пор, пока потери не будут минимизированы.
Все идеи взяты из DeepLearning.AI. Здесь я попытался воспроизвести то, что узнал, своими словами.
Спасибо, что прочитали. Поделитесь своими впечатлениями, предложениями или вопросами, если таковые имеются.