Guided Attention Plot



Консультирую одного паренька, пишет диплом по Voice Cloning (генерация голоса другого человека). Сегодня обучали сетку, которая по архитектуре почти полностью повторяет статью Efficiently Trainable Text-to-Speech System Based on Deep Convolutional Networks with Guided Attention.



К
своему стыду, первый раз услышал о такой штуке как Guided Attention. В чём идея: когда мы генерируем аудио по тексту, то номер символа в предложении и расположение его звука в аудио – почти линейно зависят друг от друга.



Как рисуется:



• по оси X - номер фрейма аудио (например если строили спектрограмму на каждые 0.1 сек, то позиция 7 - звук между 0.6 и 0.7 секундами аудио);

• по оси Y - номер символа;

• распределение в каждом столбце говорит о том, какой фрейм звука какой букве соответствует (для инженеров: карта активации, получается путём перемножения Q и K, эмбеддингов звука у аудио и у символов);

• "хороший график" почти диагональный (в реальности из-за того что разные буквы в разном контексте мы произносим с разной скоростью, будут отклонения, но в целом по мере обучения attention plot от полного хаоса переходит в этот почти линейный (с той лишь погрешностью, что какие-то буквы мы произносим быстрее, какие-то медленнее).



Guided Attention в задачах text-to-speech (TTS) и speech-to-text (STT), во-первых, играет роль эвристики для модели (через пробрасывание дополнительного лосса, требование линейности этого графика), во-вторых, используется для анализа ошибок (смотрим глазками каждые N шагов обучения).



Прикольно находить в Deep Learning параллели с классическим Machine Learning. В данном случае Attention Plot – это анализ остатков (Residual Analysis), который часто ассоциируют только с регрессией: по отклонению от диагонали можно судить, адекватна ли модель в целом и на каких буквах/фразах/звуках она теряется – соответственно, каких данных в выборку нужно добавить больше.