распознавание речи CTC экономия памяти
arXiv eess.AS

Прореженный CTC для обучения распознаванию речи с большим словарём и меньшим расходом памяти

arXiv:2609.33645

Прореженный CTC решает практическую проблему очень больших словарей: полная матрица логитов для каждого кадра быстро исчерпывает память ускорителя. Авторы оставляют небольшой набор вероятных токенов, но сохраняют точный нормировочный множитель полного словаря и заново вычисляют только выбранные логиты.

Метод. Сначала дешёвая проекция определяет кандидатов, затем конечный луч выравниваний CTC отбрасывает маловероятные состояния. Полная нормировка не даёт функции потерь превратиться в приближение по усечённому словарю, а повторное вычисление освобождает память ценой дополнительной работы.

Результаты. При 16 тысячах кадров и словаре из 180 тысяч токенов память головки и функции потерь уменьшается с 43,0 до 1,29 ГиБ, в 33,3 раза. Полный шаг обучения занимает 10,1 вместо 51,7 ГиБ, при этом время растёт на 17%. WER на LibriSpeech test-clean остаётся 2,52%, на test-other 6,02%; на GigaSpeech результат даже меняется с 11,27 до 11,24%.

Ограничения. Экономия зависит от устройства и реализации ядра. Обучение становится на 14-17% медленнее, а конечная ширина луча оправдана экспериментально, а не строгой гарантией для любого распределения.

Фишка из статьи. Главный эффект виден не только внутри функции потерь: при росте словаря метод меняет предел допустимого размера пакета. Однако выигрыш полного шага существенно меньше 33-кратной экономии самой головки, потому что кодировщик продолжает занимать память.

Кадры / словарьОбычный шагПрореженный шагЭкономияВремя
16 тыс. / 180 тыс.51,7 ГиБ10,1 ГиБ5,1×+17%
32 тыс. / 130 тыс.77,3 ГиБ17,9 ГиБ4,3×+17%
64 тыс. / 50 тыс.76,2 ГиБ33,8 ГиБ2,3×+14%

Как это читать: польза максимальна при большом словаре и сравнительно короткой последовательности. Когда доминирует память кодировщика, дальнейшее прореживание CTC уже не даёт пропорционального выигрыша.

Оригинальная статья на arXiv