Почему softmax получает небольшой градиент, когда значение в бумаге большое "Внимание - это все, что вам нужно"

Это экран оригинальной бумаги: экран бумаги. Я понимаю, что смысл статьи в том, что когда значение точечного произведения велико, градиент softmax будет очень малым.
Однако я попытался вычислить градиент softmax с потерей перекрестной энтропии и обнаружил, что градиент softmax не имеет прямого отношения к значению, переданному в softmax.
Даже если одно значение велико, оно может получить большой градиент, когда другие значения велики. (извините за то, что я не знаю, как изложить процесс расчета здесь)

2 ответа

На самом деле градиент перекрестной энтропии с softmax для одного горячего вектора кодирования равен просто grad -log(softmax(x)) = (1 - softmax(x)) по индексу вектора соответствующего класса. ( https://eli.thegreenplace.net/2016/the-softmax-function-and-its-derivative/). Если значение, переданное в softmax, велико, то softmax выдает 1 и, следовательно, создает градиент 0.

Я немного опоздал и только начинаю свою карьеру в НЛП, но я думаю, что основная концепция управления исчезающими градиентами с большими входными данными в функцию softmax возвращается к определению softmax:

      softmax(x, X="some domain") = exp(x)/(Σexp(x')|x'∈X)

Основная интуиция заключается в том, что, полагая, чтоx∈[200,1000],exp(x+1)намного больше , чемexp(x)что вычисления softmax, подобные приведенным ниже, в конечном итоге приближаются к 1, что приводит к тому, что градиент приближается к 0:

      exp(500)/(exp(300) + exp(400) + exp(500)) ≈ 1

Чтобы дополнительно проиллюстрировать, как проблема может возникнуть в менее экстремальных случаях, посмотрите, насколько близко это вычисление softmax к 1:

      exp(500)/(exp(490) + exp(495) + exp(500)) ≈ 0.993262

Теперь возьмите 500, 495 и 490 и уменьшите их в простой коэффициент 10^2:

      exp(5)/(exp(4.9) + exp(4.95) + exp(5)) ≈ 0.350131861449

Очевидно, что последний вариант дает нам более справедливое преобразование к распределению вероятностей. На мой взгляд, ограничением выражения softmax является то, что использование высоких числовых значений приведет к менее полезным результатам.

Я надеюсь, что это объяснение поможет прояснить, что здесь происходит.

Другие вопросы по тегам