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