Часть содержания статьи взята изcaptainbed.vip/1-3-3/
неглубокая нейронная сеть
Вычислительный процесс мелкой нейронной сети почти такой же, как у одиночной нейронной сети, но он сложнее.
Векторизация мелких нейронных сетей
Использование векторизации почти повсеместно в программировании искусственного интеллекта.Можно сказать, что наименьшая единица данных, с которой мы имеем дело в большинстве случаев в программировании искусственного интеллекта,вектор, а когда мы будем писать мультинейронную сеть, мы будем использовать единицу данных на один уровень выше вектора —матрица. Таким образом, векторизация неглубоких нейронных сетей на самом делематрица.
В качестве примера возьмем неглубокую нейронную сеть на следующем рисунке:
Верхний индекс указывает количество слоев, а нижний индекс указывает количество строк.первоначальная формаследующее:
Мы знаем, что каждое значение весавектор-строка, которому соответствуетТри значения , на данный момент у нас есть четыре таких вектора-строки, которые образуютматрица.в виде вектораСледующее:
Советы: если вы не понимаете, перейдите к обзору умножения матриц линейной алгебры.
Мы опускаем нижний индекс и следуемматричная формаЭто также может быть сокращено как:
Второй слой такой же:
Однако, учитывая, что нам часто нужно обучать нейронные сетиНесколько обучающих выборок, записанный следующим образом (числа в скобках в верхнем индексе обозначают i-ю обучающую выборку):
довекторизацияУпоминается, что мы обычно не рекомендуем использовать циклы for, и мы должны максимально использовать векторизацию вместо циклов for. мыОбъедините собственные векторы x каждой выборки в матрицу,Следующее:
Таким образом, приведенный выше цикл for можно записать следующим образом.Форма матричного умножения(Если вы не понимаете, пожалуйста, просмотрите егоумножение матриц):
где Z и A — матрицы,Каждый вектор-столбец в матрице соответствует обучающей выборке(Например— z первого слоя второго образца):
Функции потерь для мелких нейронных сетей
Мы используем следующую формулу, чтобы найти функцию потерь нейронной сети с несколькими нейронами, По сравнению с функцией потерь нейронной сети с одним нейроном, есть только верхний индекс A. В конце концов, каждому слою требуется функция потерь:
⭐ Обратное распространение неглубоких нейронных сетей
Можно сказать, что обратное распространение является стандартом для нейросетевых моделей, а его эффективность при решении частных производных самая высокая.
Идея вычисления частных производных в мелких нейронных сетях такая же, как и в одиночных нейронных сетях, Сначала мы вычисляем частные производные последнего слоя, а затем продвигаемся вперед в обратном направлении, вычисляем частные производные предыдущего слоя и затем найти частные производные предыдущего слоя и так далее.
Найдите частные производные второго слоя
Формула частной производной второго слоя выглядит следующим образом, она такая же, как и в сети с одним нейроном (один образец), и может бытьрассматривается как:
⭐️ Найдите частную производную первого слоя
Частные производные первого слоя отличаются от производных второго слоя, потому что второй слой непосредственно примыкает к функции потерь, а первый слой непосредственно примыкает к функции потерь.нет прямого контакта. ?Вы можете видеть, что функция потерь выше использует последний слойДля поиска средний слой используется только для перехода.
мы проходим черезправило вывода цепиЧтобы найти частные производные первого слоя:
иМы уже получили его ранее, и окончательный результат вывода таков:
(Представляет собой сигмовидную функцию активации, на самом деле можно использовать и другие функции активации)
предполагаемыйЗадний,а такжеты можешь пройтиФормула такая же, как и для одиночной нейронной сети:
Когда несколько обучающих выборок
При наличии нескольких обучающих выборок нам необходимо преобразовать вектор в матрицу (строчные буквы в прописные) посредством векторизации, чтобы повысить эффективность работы. А также разделите на общее количество выборок m, чтобы получить среднее значение.
последнийnp.sum()
Параметры отличаются, потому что в первом слое больше нет одного нейрона.Размерность(— количество нейронов в первом слое, m — количество обучающих выборок), нам необходимо накопить результирующие параметры обучающих выборок, соответствующих каждому нейрону:
asix=1
Эффект, чтобы позволитьsum
Просто соберите все элементы в каждой строке. иkeepdims
состоит в том, чтобы предотвратитьsum
Выходной результат становитсяВ таком виде нужная нам форма.