В последнем посте мы узнали о градиентах и ​​якобианах. В этом посте мы рассмотрим:

  1. Правило векторной цепочки.
  2. Градиент функции активации нейрона.

Небольшое отступление:

Обязательно ознакомьтесь с оригинальной газетой Терренса Парра и Джереми Ховарда. Несмотря на то, что сообщения являются довольно исчерпывающими, они не раскрывают всех деталей, которые делает статья. Посты исследуют концепции, которые мне было трудно понять и запомнить лично, в надежде, что кто-то другой сочтет это полезным.

В частности, просмотрите разделы 4.2–5 статьи. Концепции, упомянутые в этих разделах, довольно легко понять из самой статьи. Раздел комментариев - это ваше королевство, и Google в вашем распоряжении, если у вас есть вопросы.

Правило векторной цепочки

Хотя я предполагаю, что вы уже знакомы с правилом цепочки для дифференциации, правило цепочки векторов заслуживает статуса VIP.

Золотым самородком, извлеченным из всего этого испытания, будет то, что правило векторной цепи может быть выражено как продукт якобианов. Это важно, поскольку это же правило будет использоваться для определения градиента функции активации нейрона.

Рассмотрим следующую функцию:

Введите две промежуточные переменные, чтобы мы могли заменить x² и 4x этими переменными. Это сделает блюдо более аппетитным и вкусным. Мне сказали, что с каждой заменой функция приближается к звезде Мишлен.

Подставляя по вкусу, получаем:

Чтобы увидеть правило векторной цепочки в цепочке, посмотрите на третью матрицу выше. Подумайте об этом так: если нам нужно различать функцию, и мы ввели две промежуточные функции, чтобы облегчить нашу жизнь, то:

В этом случае у нас есть 2 промежуточные функции. Мы дифференцируем нашу исходную функцию относительно них, а затем умножаем ее на производную промежуточной функции. Мы делаем это по всем промежуточным функциям. Подводить итоги:

Обратитесь к разделу 4.5.2 документа для более подробного рассмотрения правила векторной цепочки. Возвращаясь к нашей исходной проблеме, мы можем выразить нашу матрицу правил векторной цепочки как произведение 2 якобианов следующим образом:

Теперь мы готовы найти градиент активации нейронов.

Градиент активации нейронов

Теперь мы можем найти производную от -

Давайте сначала найдем производную w.x

Мы можем выразить скалярное произведение w и x как сумму их поэлементных произведений. Иногда это также называют произведением Адамара.

Мы можем использовать цепное правило, чтобы найти производную этой функции -

Производная y согласно цепному правилу будет:

Это следует из нашей работы над якобианом. В целях демонстрации рассмотрим случай, когда w - матрица 3x3, а x - матрица 3x1.

Довольно просто предположить, что производные будут диагональным вектором с элементами x ₁, x ₂ и x ₃ -

Умножение вектора 1 x 3 на вектор 3 x 3 даст нам вектор 1 x 3 -

Теперь мы нашли производную y по w. Нам также необходимо оптимизировать b:

На данный момент у нас есть производная от части функции активации:

Нам известна производная от w.x + b как по w, так и по b. Теперь нам нужно найти производную компонента max () функции стоимости. Подробное математическое объяснение можно найти в статье Терренса и Джереми.

Однако давайте попробуем отнестись к этому интуитивно. Функция max имеет 2 аргумента: 0 и t,, если вы рассматриваете функцию - max (0, t). Если значение t меньше 0, то различать нечего. В противном случае мы бы дифференцировали t, в случае, если t больше нуля.

Подводить итоги,

Градиент функции потерь нейронной сети

Скажем, у нас есть следующие входы в нашу нейронную сеть:

Целевые элементы, такие как target ( x ₁) и target (x ₂). скаляры.

Это дает нам следующую функцию стоимости:

Тогда у нас есть следующие промежуточные переменные:

Градиент относительно веса

В предыдущем разделе мы вычислили производную функции активации по весам и смещениям:

Глядя на наши промежуточные переменные, мы видим, что u совпадает с нашей функцией активации из последнего раздела. Итак, перейдем к поиску производной от v.

Производная y по весам равна 0, поскольку y здесь - цель, которая будет постоянной. Мы просто заменили производное от u на w, из нашей работы в предыдущем разделе.

Теперь нам осталось различить C по отношению к w-

Замена частной производной от v:

После некоторой математической акробатики мы приходим к:

Выше термин в скобках - это разница между прогнозируемым и целевым значением. Называть это ошибкой более чем уместно.

Аналогичным образом мы можем вычислить производную по смещению.

На этом мы подошли к концу этой серии статей о матричном исчислении, необходимом для глубокого обучения. Я планирую продолжить писать по математике, необходимой для глубокого обучения. В следующем посте, вероятно, будет больше кода вместе с математическими концепциями.

Обращайтесь, если у вас есть какие-либо комментарии, вопросы или предложения.