Ах, мой друг, у вас проблема в том, что с мягкими целями, особенно теми, которые не близки к 1 или нулю, кросс-энтропийная потеря существенно не меняется при улучшении алгоритма.Одна вещь, которая поможет вам понять эту проблему, - это взять пример из ваших данных обучения и вычислить энтропию .... тогда вы будете знать, какое минимальное значение может иметь ваша функция стоимости.Это может пролить свет на вашу проблему.Итак, для одного из ваших примеров, скажем, целевые значения [0.39019628, 0.44301641, 0.16678731].Хорошо, используя формулу для кросс-энтропии
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
, но затем используя цели "y_" вместо прогнозируемых вероятностей "y", мы получаем истинное значение энтропии 1.0266190072458234.Если ваши прогнозы немного отклоняются от цели ... допустим, они равны [0,39511779, 0,44509024, 0,15979198], то перекрестная энтропия равна 1,026805558049737.
Теперь, как и в случае большинства сложных проблем, это не так.только одна вещь, но комбинация вещей.Функция потерь реализована правильно, но вы допустили «ошибку» в том, что вы должны делать в 99,9% случаев при обучении алгоритмам глубокого обучения… вы использовали 32-битные операции с плавающей запятой.Тем не менее, в этом конкретном случае вы исчерпаете значащие цифры, которые 32-разрядный код с плавающей запятой может представить задолго до того, как ваш алгоритм обучения сойдет к хорошему результату.Если я использую ваши точно такие же данные и код, но меняю только типы данных на 64-битные числа с плавающей точкой, вы увидите ниже, что результаты намного лучше - ваш алгоритм продолжает хорошо тренироваться после 2000 итераций, и вы увидите, что он отражаетсяв твоей точности.На самом деле, вы можете видеть с наклона, если поддерживается 128-битная плавающая точка, вы можете продолжить обучение и, возможно, увидеть преимущества от этого.Вам, вероятно, не понадобится такая точность в ваших окончательных весах и смещениях ... только во время обучения, чтобы поддержать постоянную оптимизацию функции стоимости.