Настройте модель последовательности к последовательности, чтобы быть менее счастливым

У меня есть модель от последовательности к последовательности распознавания речи, которая обучена распознавать слово триггера. После нескольких часов обучения я получаю модель, которая очень хорошо находит это слово, но проблема в том, что оно также очень радует триггер, то есть распознает слово триггера, даже если его там нет. В моем конкретном приложении это большая проблема, я бы предпочел, чтобы оно было хуже при нахождении слова триггера, когда оно есть, а также при отсутствии ложных триггеров.

Как настроить этот тип поведения для seq2seq-моделей? Когда я сталкиваюсь с подобными проблемами с полностью подключенными или сверточными сетями, я обычно могу получить желаемое поведение, настроив class_weight параметры при обучении моих моделей Keras, что делает неправильную классификацию одного класса более дорогой, чем другой.

Более конкретно, моя модель принимает спектрограммы размера (n_time_frames, n_freq_bins) = (489, 64) и имеет соответствующие метки последовательности с размером y = (119,)временные рамки ввода сопоставляются с временными шагами вывода, так что сразу после произнесения слова триггера последовательность меток имеет набор единиц, соответствующих "только что произнесено слово триггера", для всех остальных случаев (другое слова или молчание), последовательность меток просто нули.

Я пытался с помощью class_weight так же, как и для других видов сетей, но я получаю следующую ошибку

ValueError: `class_weight` must contain all classes in the data. The classes {282, 314, 159} exist in the data but not in `class_weight`

Поскольку мои последовательности меток содержат только нули и единицы, я полагаю, что я не использую class_weight как предполагалось.

Любые идеи о том, как настроить частоту ложноположительных / ложноотрицательных моделей от последовательности к последовательности, очень приветствуются.

0 ответов

Другие вопросы по тегам