Я использую Двунаправленный RNN, чтобы обнаружить случай несбалансированного события. Положительный класс в 100 раз реже, чем отрицательный. Пока не используется регуляризация, я могу получить 100% точность в наборе поездов и 30% в наборе проверки. Я включаю регуляризацию l2, и в результате получается набор только для 30% точности набора поездов вместо более длительного обучения и 100% точности для набора проверки.
Я думал, что, возможно, мои данные слишком малы, поэтому просто для эксперимента я объединил поезд с тестовым набором, который раньше не использовал. Ситуация была такая же, как я бы использовал регуляризацию l2, чего я не делал сейчас. Я получаю 30% точности на тренировке + тестирование и проверка.
Используется 128 скрытых юнитов и 80 временных шагов в упомянутых экспериментах. Когда я увеличил количество скрытых юнитов до 256, я снова могу наложить на поезд + тестовый набор, чтобы получить 100% точность, но все еще только 30% на проверочном наборе.
Я пробовал так много вариантов гиперпараметров и почти безрезультатно. Возможно, весовая перекрестная энтропия является причиной проблемы, в данных экспериментах вес на положительном классе равен 5. При попытке увеличить вес, результаты часто хуже примерно на 20% точности.
Я пробовал клетки LSTM и GRU, без разницы.
Лучшие результаты, которые я получил. Я попробовал 2 скрытых слоя с 256 скрытыми блоками, это заняло около 3 дней вычислений и 8 ГБ памяти GPU. Я получил около 40-50% точности, прежде чем он снова начал переоснащаться, когда регуляризация l2 была включена, но не так сильно.
Я использую оптимизаторы Адама, другие не так хорошо работали. У меня достаточно возможностей, потому что при использовании конечного автомата я могу получить точность 90%. В этом автомате основной функцией является суммирование и определение пороговых значений на основе других свойств объекта, а его переменная длина иногда составляет 10, иногда 20 временных отметок, что говорит о функции.
Есть ли какое-то общее руководство, что делать в этой ситуации? Я не смог ничего найти.