Может ли процедура автоматического дифференцирования в TensorFlow вычислять субградиент при необходимости?Если субградиентов много, то какой из них будет выбран в качестве выходного?
Я пытаюсь реализовать статью по ссылке https://www.aclweb.org/anthology/P13-1045, которая использует рекурсивные нейронные сети для эффективного синтаксического анализа языка.Целевая функция использует функцию потери шарнира для выбора оптимальных выходных векторов, что делает функцию не дифференцируемой.Я использовал TensorFlow (v1.12) в активном режиме для программирования модели и использовал автоматическое дифференцирование для вычисления градиентов.После каждой партии я мог видеть, как меняются значения градиента, и точность немного улучшается.Через некоторое время оно уменьшается и этот процесс продолжается.Модель не сходится вообще для всех конфигураций гиперпараметров.
Размер мини-пакета: 256, 512, 1024;Параметры регуляризации - 0,1, 0,01, 0,001;Скорость обучения - 0,1, 0,01, 0,001;Функция оптимизации - градиентный спуск, адаград, адам;
В статье они описали, как найти субградиент для оптимальной функции очень абстрактным способом, который я еще не понял.Вначале я придерживался мнения, что автоматическое вычисление градиента вычисляет субградиент.Но в этот момент я начинаю сомневаться в этом, потому что кажется, что единственная переменная отсутствует.