Теоретическое обоснование оператора Hardmax - PullRequest
0 голосов
/ 19 ноября 2018

В тензорном потоке Github-репозитория, в файле Вниманиеwrapper.py , был определен оператор hardmax. На документах было упомянуто tf.contrib.seq2seq.hardmax

Я хочу знать, какова теоретическая основа обеспечения этой функциональности для оператора hardmax. Первоначальный поиск в Google за последние несколько недель не привел меня к конкретному пониманию концепции.

  1. Если softmax является дифференцируемым (soft), зачем использовать hardmax? Если его нельзя использовать при обратном распространении (из-за недифференцируемости, требуемой при расчете градиента), где еще его можно использовать?

  2. В учебной литературе по усилению говорится о «Мягком» и «Жестком» внимании. Однако я не смог увидеть ни конкретных примеров, ни объяснений того, где tf.contrib.seq2seq.hardmax может фактически использоваться в некоторой модели RL.

  3. Судя по всему, поскольку он упоминается в seq2seq, он, очевидно, должен иметь какое-то применение в обработке естественного языка. А где именно? Есть тонны задач НЛП. Не удалось найти алгоритм прямой задачи SOTA, использующий hardmax.

1 Ответ

0 голосов
/ 19 ноября 2018

Hardmax используется, когда у вас нет выбора, кроме как принять непробабистическое решение.Например, когда вы используете модель для генерации нейронной архитектуры, как в нейронных модульных сетях, вы должны сделать дискретный выбор.Чтобы сделать это обучаемым (поскольку это будет недифференцируемо, как вы заявляете), вы можете использовать REINFORCE (алгоритм в RL) для обучения с помощью градиента политики и оценки этого вклада в потери с помощью выборки по методу Монте-Карло.Нейронные модульные сети являются конструкцией NLP и зависят от seq2seq.Я уверен, что есть много примеров, но это тот, который сразу пришел в голову.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...