Научно-технический вебинар «Обучение эффективным представлениям для обнаружения голосовых команд с помощью Triplet Loss»

9 марта 2021, 14:00 MCK

О вебинаре

  • Спикер

    Роман Выгон, НТР, Томск, Россия

  • Тема

    Научно-технический вебинар «Обучение эффективным представлениям для обнаружения голосовых команд с помощью Triplet Loss»

  • Подробнее про вебинар

    Спикер о вебинаре:

    За последние несколько лет представления на основе triplet loss стали стандартом для некоторых важных задач компьютерного зрения, в особенности идентификации личности. Однако в области распознавания речи они практически не используются даже для задач классификации. Мы заполняем этот пробел, показывая, что комбинация представлений на основе triplet-loss и вариации kNN для классификации, вместо кросс-энтропии заметно улучшают точность конволюционных сетей на датасете LibriWords, полученном из LibriSpeech.

    Статья: https://arxiv.org/abs/2101.04792

    Репозиторий: https://github.com/facebookresearch/faiss

    Видео: https://youtu.be/T0hqW9c_Zg0
    Презентация: https://drive.google.com/file/d/1-A4Olu0H5wNC6a0WvUKuObuTAEOsJ_Gu/view?usp=sharing

    (00:00:00) (Начало записи)

    Николай Михайловский: Приветствую вас на очередном вебинаре, который «НТР» проводит вместе с Высшей IT-Школой Томского государственного университета. И как раз мой коллега Роман Выгон сегодня выступает. Коллега в том смысле, что мы оба и к «НТР», и к Высшей IT-Школе Томского университета имеем самое прямое отношение. Роман сегодня будет рассказывать про представление, получаемое с помощью Triplet Loss для детекции слов. Роман, передаю микрофон.

    Роман Выгон: Спасибо. Доброго суток всем, кто меня сейчас слушает либо потом будет слушать в записи. Меня зовут Выгон Роман. Я студент третьего курса Высшей IT-Школы. Дата-сайентист в компании «Интер» (00:01:10). И сегодня я хотел бы поделиться с вами нашим исследование в области репрезентации слов.

    Изначально проблема, которую мы хотим решить — это то, что в области speech recognition (00:01:21) распознавания речи сейчас нет устоявшейся хорошей методики, которая позволит взять аудиофайл, который соответствует какому-то слову и получить из него embedding, репрезентацию, которая была бы компактна, то есть состояла из вектора небольшого размера и позволяла бы делать с ней дальнейшие вещи, то есть разделяла бы фонетическое просто слов так, что это было бы полезно. И все текущие методики, которые классифицируют слова, очень редко работают с большими словарями. В основном это работа только в области голосовых команд, когда нужно рассматривать всего 10-20 слов ключевых, таких как «on», «off», цифры, слова «да» и «нет» и т.д. Мы пытаемся все эти пробелы своим исследованием заполнить.

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

    Итак, классификация речи либо аудио делится на два архетипа: семантическая и не семантическая. К несемантической относятся задачи идентификации спикера, языка, диагностика каких-то заболеваний по речи человека и распознавание эмоций. В этой области были исследования с применением Triplet Loss. Команда из Google создала так называемую модель TRILL, которая показывала хорошие результаты на Data Set по этим задачам. И семантический архетип, к которому имеет отношение наше исследование: это распознавание команд, классификация слов и также возможна классификация фонема. В этой сфере Triplet Loss практически не используются и статьи, которые задевают Triplet Loss, обычно не отдают должного. Например, в статье, которая описывает методику и модель TRILL, эту модель на основе Triplet Loss также используют для того, чтобы оценивать один из датасетов, но хуже, чем можно получить, как мы покажем далее.

    Как сейчас выглядит обычный pipeline для того, чтобы классифицировать какое-либо аудио? На вход у нас продаётся аудио. Затем есть какая-либо акустическая модель, которая преобразует это аудио в репрезентацию в латентном (00:04:39) пространстве. И обычно такая репрезентация имеет три измерения: Batch, количество характеристик и время. То есть для каждого отдельного сэмпла репрезентация — это не вектор одномерный, а какой-то прямоугольник, где для каждого неопределённого временного отрезка — обычно аудио — допустим, 1 секунда делится на 128, на 64 таких временных отрезка за счёт модели. И для каждого из этих отрезков у нас получаются какие-то характеристики.

    (00:05:22)

    Такая репрезентация отнюдь не компактна, потому что обычно эти два последних измерения были где-то 128 на 128. Это уже 10 000 чисел на одно слово. И мы думаем, что можно реализовать такую репрезентацию гораздо-гораздо компактнее. И к тому же она не совсем имеет отношение к слову в целом, потом что, опять же, она делится на временные отрезки, а значит, слово представляется, как большое количество репрезентаций и отдельных его фонетических кусков, фонем, произношений букв и т.д. Поэтому по репрезентации слова в целом можно мало что сказать о его близости к другим словам, например, только о близости конкретных отрезков. И после того, как у нас получаются эти репрезентации, ни декодируются в классы полносвязным декодером. И, понятное дело, что если у нас 10 000-100 000 классов, то такой полносвязный декодер будет занимать очень много места. А в задачах распознавания команд, которые обычно применяются — на умных телевизорах, на часах и т.д. — я считаю, что это очень важная вещь. Какие датасеты сейчас существуют для обучения моделей на классификацию слов?

    Основных есть два. Это Common Voice от Mozilla. Это датасет по Speech cognition (00:07:01), но там также есть несколько десятков часов цифр и слов «да» и «нет». И основной пэйч марк (00:07:13), на котором складывются модели классификации слов — Google Speech Commands. В нем есть 35 основных команд, какие, как «Да», «Нет», нет, цифры от 0 до 9, несколько случайных слов и команды «вверх-вниз» и т.д. Основным бич марком (00:07:33) по этому датасету является его разделение на 12 классов. То есть выбирается десять основных слов — «да», «нет», «вниз», «вверх» — добавляется также класс тишины. И все остальные слова записываются под один класс другого. Таким образом мы можем распознавать ключевые слова, и тишину, и то, что какое-то слово не сходит в датасет.

    Эти два датасета абсолютно не могут быть применимы для того, чтобы оценивать модели, которые должны классифицировать огромные словари. Мы понимаем, что в любом языке десятки тысяч слов. И его невозможно представить только маленьким датасетом с маленьким  количеством команд.

    Поэтому, до нашего исследования, был создан датасет, который мы назвали LibriWords. Он основан на корпусе LibriSpeech. И в изначальном исследовании использовались 360 часов из этого корпуса. И также dev-clean и test-clean сеты. Мы разделили сначала этот корпус аудиокниг, и в нем есть транскрипция текста. Для того, чтобы получить отдельные аудио для каждого слова, мы использовали Montreal Aligner и получили не идеальный, но достаточно хороший alignment по словам. Затем эти слова мы посчитали. Выделили самые популярные 10, 100, 1 000 и 10 000 слов для того, чтобы оценивать модели на разных масштабах. И каждый из этих сетов — по 10, по 100, по 1 000 и по 10 000 слов —выделили в отдельный датасет, на котором затем тестировали модели.

    Основная методика, которая использовалась в нашем исследовании, это Triplet Loss. Это особая функция потерь, которая часто используется в задачах классификации, но не так часто в задачах классификации аудио. Она основана на достаточно простой идеи: на том, что репрезентации разных классов должны быть далеко друг от друга, а репрезентации одинаковых классов близко друг другу. То есть по ходу обучения мы выбираем якорь. Это просто любой объект из нашего датасета. И к нему мы подбираем тройку: негативный пример и позитивный пример. Негативный — это пример из другого класса. А позитивный — это пример из того же класса. Соответственно, по ходу обучения мы должны сделать так, чтобы в идеале для каждого якоря позитивный пример был ближе к нему, чем негативный. И здесь вы можете видеть функцию потерь.

    (00:10:35)

    Для каждой тройки оценивается расстояние. Из позитивного расстояния между якорем и позитивным примером вычитается негативное. И добавляется некий margin (00:10:40).  Здесь это α. Зачем нужен этот margin (00:10:47) мы поговорим прямо сейчас.

    Таким образом, у нас образуется огромное количество троек, потому что в наших датасетах могут быть десятки тысяч слов, могут быть миллионы. В каждый бач (00:11:05) влезет штук 300-400. И уже в этом баче (00:11:10) будут уже десятки тысяч, или даже больше троек, которые мы можем взять. Но мы разделим эти тройки на три типа. Это сложные тройки, полусложные и простые. Сложные — это те, которые находятся от якоря на расстоянии именно этого margin (00:11:29). Полусложные – это те, где негативный пример находится между позитивным и позитивным плюс margin (00:11:42). И сложные тройки — это те тройки, где негативный пример находится ближе к якорю, чем позитивный. И легкие тройки — это те, где негативный пример находится дальше от позитивного, чем margin (00:11:57).

    То есть сложные тройки — это те, где у нас совсем модель ошибается. Полусложные — те, где модель не ошибается, но достаточно близка к ошибке. И легкие тройки — это те тройки, на которых мы не хотели бы обучать модель, потому что это бесполезно. В итоге для того, чтобы реализовать эффективное обучение модели с Triplet Loss нужно выбрать методику майнинга троек, то есть для каждого бача (00:12:30) мы должны определять, какие тройки мы будем использовать для подсчета Loss, а какие – нет. Это можно делать либо онлайн, либо оффлайн. Для оффлайн мы просто разбиваем датасет на тройки перед началом обучение и обучаем на этих тройках. Берём все Loss (00:12:49). При онлайн-обучении мы делаем решения для каждого бача (00:12:54) по отдельности на основе того, насколько далеко находятся примеры друг от друга. Есть такие методики онлайн-майнинга, как hard-майнинг и semihard-майнинг. По названию hard-майнинг — это когда мы берем все сложные тройки и добавляем их в Loss. Semihard-майнинг — это когда мы берем все полусложные тройки и добавляем их в Loss. Однако, если мы беремся все сложные тройки, то есть те, где наша модель сильно ошибается, по обучению получается так, что модель не справляется с таким сложным заданием и единственный выход, который она может предложить, это схлопнуть абсолютно все примеры в одну точку. Тогда всё будет идеально и Loss всегда будет 0. Но мы этого не хотим. Поэтому можно использовать полусложный майнинг. Тогда мы будем обучать на чуть более легких примерах, но получается, что модель будет обучаться очень долго, либо практически не обучаться. В итоге нужна золотая середина.

    Нами был выбран метод random negative mining. То есть мы смотрим все тройки в баче (00:14:13), потом смотрим, для каких из них Loss получается негативным — либо сложные, либо полусложные тройки — и из них берем рандомную, то есть случайную для каждого якоря, для каждой пары якорь-Энкор Позитив (00:14:34). То есть для каждой пары основного примера и позитивного мы выбираем одну из негативных, такую, что она отрицательная.

    Из предыдущего следует, что в бачу (00:14:49) у нас будут попадать не все классы. То есть, если у нас в датасете 10 000 или 1 000 классов, а в бач (00:14:59) влезает только 300 примеров — и желательно, чтобы каждый класс был представлен несколькими примерами, чтобы находить эти сложные тройки — у нас получится, что в каждом баче (00:15:06) будет сидеть 30, а в идеале, может быть 100 классов, если у нас 4 гбу (00:15:15) с большим количеством памяти.

    (00:15:15)

    И в итоге получается, что, помимо того, что в модель могут попадаться легкие примеры, то есть легкие тройки, у нас могут попадаться и легкие бачи (00:15:28), то есть те, где все слова далеко друг от друга, фонетически совсем не похожи. И, если модель уже хоть чуть-чуть обучилась, для неё будет легко разделить эти классы и на этом баче (00:15:41) она ничему особо не обучиться. Поэтому, чтобы ускорить процесс обучения, чтобы было как можно меньше таких легких бачей (00:15:50), нужно по-умному выбирать классы, которые мы добавляем в бач (00:15:56).

    Мы сравнивали три разных методики. Первая — это случайная, то есть просто выбираем случайных 30-40 классов и из них берём 5-6 экземпляров и добавляем всё это в бач (00:16:13). Затем пропорционально датасету. На нашем сете LibreSpeech 10 000. Очень высокий эмбеленс (00:16:24) классов. То есть первое слово по популярности — это «да». Оно представлено двумя сотнями тысяч экземпляров. А последние слова, которые закрывают десятку тысяч, представлены 20-30 экземплярами. Казалось бы, нужно обучать на всех словах равномерно, но на самом деле эти самые популярные слова — это, в основном, артикли английского языка «the», «a» и т.д. И помимо того, что они короткие — их может быть сложно распознавать из-за постороннего шума или из-за того, что они слеплены с соседними словами — они также встречаются чаще всего и имеют наиболее разнообразные представления в нашем датасете. Поэтому, чтобы модель лучше распознавала эти топ-сколько-то популярных слов, нужна пропорциональная методика. Она заключается в том, что каждый класс имеет ровно такой шанс попасть в бач (00:17:31), как он представлен в датасете. То есть если слово занимает 10% от датасета, то у него есть 10-типроцентный шанс попасть в бач (00:17:42). Если слово занимается 0,01%, то именно такой у него способ попасть в бач (00:17:48). Всё равно все слова будут так или иначе попадать в обучение. Но популярные слова – чуть чаще.

    И последний метод. Это фонетический метод. Понятное дело, что в датасетах очень много пар, троек и т.д. слов, которые очень фонетически похожи, например «too» (00:18:11) и «two». И нам хотелось бы, чтобы они попадали в один и тот же в бач (00:18:21) как можно чаще, чтобы модель научилась их разделять между собой. Для этого можно сделать так, как мы сделали. Мы взяли несколько самых популярных алгоритмов о подсчетах (00:18:34)  фонетической близости, предпросчитали расстояние между словами для датасета по формуле на слайде с помощью четырех алгоритмов — саундэкс, каэрфон, метафон и _____ (00:18:50) — и получили некоторую матрицу расстояний между слова, и в итоге, когда у нас выпадает такой бач (00:19:01), который должен быть фонетически похож, мы берем половину бача (00:19:06) случайно, а вторую половину подбираем по фонетическим парам. То есть для каждого класса, который попал в бач (00:19:15), мы берем какого-то из его соседей фонетических. В бачи (00:19:24) у нас будут попадать фонетически близкие слова.

    На слайде вы видите график различных вариантов обучения. Обычный стандартный вариант где-то уступает, где-то нет, в итоге мы видим, что в f1 (00:19:40) метрика лучше всего у варианта, когда мы берём стандартный с шансом 50% плюс фонетический с тем же шансом. Это обуславливается тем, что слова, которые находятся внизу списка, которые представлены малым количеством экземпляров, мы будем чаще брать к более популярным, но похожим на них словам. Но в итоге в целом у нас точность предсказывания будет более равномерно распределена по всему датасету.

    (00:20:18)

    Либо мы можем выбрать вариант, который увеличивает экроси-метрику (00:20:22). Это стандартный с шансом 50% плюс пропорциональный. Тут также понятно, что, так как мы чаще выбираем экземпляры, которых больше, мы в итоге и получаем экроси (00:20:36) больше, потому что лучше подсказываем более популярные слова.

    Вот какие embedding получаются. В итоге слева вы можете видеть UMAP embedding на Google Speech Commands 12, то есть 12 отличных команд, в том числе тишина и другое. Как раз голубой кластер – это труба. И мы видим, что все остальные слова хорошо разделены в пространстве. Но есть негативные экземпляры. Это либо неправильно обозначенные экземпляры в датасете, либо очень похожие. И здесь часть от embedding на датасете LibriWords 10 000. Здесь можно видеть, что похожие фонетические слова находятся рядом. Слова «was» и «with» (00:21:34) близко. И так презентации выглядят для всего датасета. То есть все слова находятся рядом с фонетически близкими для них.

    Мы рассматривали несколько самых популярных в статьях по этой тематике моделей. Это multi head Attention (00:22:02), рекуррентная сеть. Она практически самая большая по размеру. У неё большой размер embedding, 256, по сравнению с остальными. И, в целом, на ней был результат хуже всего. Как мы посмотрим дальше, на Google Speech Commands она показывала наихудший результат, как и в целом рекуррентные сети. Так получилось, что с Triplet Loss они работают хуже, чем обычные _____ (00:22:34).

    И затем два варианта reset. Это reset8. И reset15. У первого меньше слоев, но больше размер embedding. У второго больше слоев, но меньше размер embedding. И reset8 чуть быстрее, а reset15 чуть точнее. Затем, чтобы получать лейблы классов после того, как мы получили презентации, мы использовали алгоритм ближайших соседей. Для того, чтобы реализовать это эффективно, мы использовали библиотеку FAISS. Её можно посмотреть. Это разработка Facebook для эффективного метода kNN. И датасеты занимают какое-то место в kNN, но плюсом является то, что это место не занимается во время обучения. То есть тогда, когда у нас модели обучаются просто с помощью Cross Entropy, у нас все эти полносвязные слои лежат в памяти видеокарты, и обучение сильно замедляется. Здесь же нам достаточно один раз прогнать весь датасет через нашу сеть после обучения и получить готовую модель, которую потом еще можно эффективно сжать с помощью квантования, и при не очень высокой потере в качестве получить десятикратное, стократное убыстрение по времени и уменьшение по занимаемой памяти.

    На этом слайде представлены результаты на всех датасетах, которые мы использовали. На датасете Google Speech Commands 12, у нас получилась модель _____ 98,4% (00:24:31). Это модель reset15. Она обучалась в течение 30 эпох с помощь аугментации сдвига. То есть мы сдвигаем аудиофайл на 100 миллисекунд назад или вперед. И также добавление шума. И стандартные аугментации спектрограммы. На датасетах LibriWords модель на основе Triplet Loss так же показывала стабильно лучший результат, чем те же модели, которые обучены с помощью декодера и Cross Entropy. И в итоге прирост метрики F1 получился от 8% на 10% LibriWords до 57% LibriWords 10 000. При этом модели обучались одинаковое количество эпох. То есть мы видим, что модели с помощью Triplet Loss обучаются гораздо быстрее. И на датасете с 35 словами разница не так заметна, _____ (00:25:42) модели на основе Triplet Loss.

    (00:25:43)

    На этом у меня всё по описанию нашего исследования. Можно переходить к вопросам.

    Николай Михайловский: Да, Роман, действительно, спасибо большое. Я забыл сказать, что можно задавать вопросы в чате. И здесь уже у нас есть два вопроса, которые в чате заданы.

    Андрей Иванов спрашивает: «А есть способы регуляризации, которые не дают схлопнуть Loss?».

    Роман Выгон: В целом на моделях используется регуляризация L2. То есть все embedding, которые у нас получаются, мы расставляем на сфере радиуса 1 в пространстве с 45 или со 128 измерениями. Можно использовать dropout (00:26:42) и прочее, но регуляризация – это то, как сделать задачу чуть сложнее для моделей, чтобы она не переобучалась. А здесь у нас проблема того, что задача уже супер-сложная и модель видит единственный легкий выход: схлопнуть все embedding в одну точку и Loss в 0. Сложно штрафовать модель за то, что она работает хорошо. Тут нужно полностью перерабатывать Loss, чтобы со сложными тройками он не схлопывался.

    Николай Михайловский: Я буквально только что читал статью — и всем сейчас её отправлю — где похожая задача действительно решается с помощью дополнительного члена в потере (00:27:51). Давайте дальше. Безымянный коллега у нас спрашивает: «Интересно, а Attention is all You Need как на них работает?». «На них» — видимо, в распознавании голосовых команд.

    Роман Выгон: Я не знаю, про какую конкретно модель говорится.

    Николай Михайловский: Видимо, модели трансформерного типа. Потому что Attention is all You Need  — это как раз про трансформеры.

    Роман Выгон: Пока я работал над этим исследованием, я смотрел, как будет автовег (00:28:44) справляться. Это одна из текущих методик, которая позволяет получить репрезентации аудио. И, в целом, они работают хуже, чем эта методика, отчасти потому, что они ансупервайзд (00:29:01), и не понятно, что в супервайз (00:29:02)-методике на этом датасете будет давать более хорошие метрики. Сами Attention-модели – multihard Attention RN (00:29:14) — дают по сравнению с 98% у reset 93% на этих моделях.

    Николай Михайловский: Я бы хотел добавить, что, если вопрос по модели трансформерного типа, то обычно в контексте распознавания команд рассматриваются очень лёгкие модели, буквально с небольшим количеством тысяч параметров. А трансформеры в этом смысле очень тяжелые и очень большие.

    Роман Выгон: И это исследование скорее не про модели, а про методику их обучения. Потому что мы брали те же самые модели и показывали, что с Triplet Loss они будут лучше и быстрее. Если модель хорошо справляется, то с Triplet Loss она с высоким шансом справится еще лучше.

    (00:30:07)

    Николай Михайловский: Сергей Стрельников (00:30:14) нас спрашивает: «Имеет ли значение, если голосовые команды будут подаваться не голосом, а шепотом? Подходит ли для шепота выбранная акустическая модель?».

    Роман Выгон: Отчасти вопрос к вам, Николай, потому что чуть больше опыта, отличается ли шепот.

    Николай Михайловский: Поскольку в данном случае я соавтор, буду помогать иногда Роману отвечать. Поскольку используется  спэк аугмент (00:30:47) — спэк аугмент (00:30:54) по сути вырезает куски из спектрограммы, а перевод мужского голоса в шепот фактически является вырезанием низких частот из спектрограммы, и женского тоже, там нужно немножко выше границу отреза (00:31:09) — я подозреваю, что скорее «да». Но экспериментов именно таких мы не проводили.

    Роман Выгон: Но и в сами датасеты входят разные аудио. И по тем, которые я вручную слушал, там есть если не совсем шепот, то приглушенный звук. Потому что этот датасет собирался в opensource (00:31:38) формате и только затем регулировался.

    Николай Михайловский: Да. Виталий Безуглый (00:31:49) спрашивает: «Разве регуляризация только про переобучение?»

    Роман Выгон: Те стандартные методы, которые приходят в голову, вроде дропаута (00:31:59) — да. Если предложите какие-то конкретные, можно подумать, как они будут помогать для этого сложного майнинга троек. Но в любом случае эти стандартные методы в данном случае не помогут. Нужно придумывать что-то специфичное к задаче.

    Николай Михайловский: Хорошо. Спасибо. Теперь у нас к UNA (00:32:25) есть несколько вопросов. Валерий Парубец — Привет, Валера! — спрашивает: «Добрый день. Поверхностно изучил ваш репозиторий по ссылке из статьи. Чем ваша реализация Triplet Loss отличается от touch NM Triplet margine Loss или Triplet Loss (00:32:43) из Flow Adonce (00:32:44).

    Роман Выгон: C ____ flow (00:32:50) отдельный разговор, потому что эту методику случайного майнинга, по крайней мере, мне пока не удалось реализовать на чистом тензорфлоу (00:32:59). Может быть, только на керс (00:33:03). Потому что очень сложно случайность закодировать в граф (00:33:07). И в те реализации, которые есть в тензорфлоу (00:33:11), просто подается список троек, список якорей, список позитивных примеров и негативных, и для них считается вот эта формула. Наша реализация реализует этот майнинг с помощью случайный троек сначала. А потом уже считают по ним Loss.

    Николай Михайловский: «Можете ли дать комментарий относительно худшей и лучшей Triplet Loss и negative mining и max up loss (00:33:42)?».

    Роман Выгон: С max up loss (00:33:46) не знаком. Поэтому ничего не смогу сказать.

    Николай Михайловский: Я тоже ничего про max up loss (00:33:59) не знаю. Но недавно было исследование из Корнельского университета — если очень интересно, напишите мне и я пришлю ссылку — о том, что примерно все контрастивного (00:34:18) типа функции потерь работают довольно похоже. Если их аккуратно сравнить с одними и теми же предобработками на одной и той же архитектуре (00:34:33), то Triplet Loss, contrastive loss (00:34:34) и многие другие варианты функций потерь, основанных на сравнениях, работают очень похоже. То есть разница между ними есть и для каждой архитектуры можно подбирать разницу конкретно, но не так велика, как иногда приводится в статьях. Я забыл фамилию авторов. Роман, не помнишь?

    (00:35:02)

    Роман Выгон: Нет.

    Николай Михайловский: В статьях про ошибки в области Triplet Loss.

    Роман Выгон: Я могу её найти.

    Николай Михайловский: Мы коллегам пришлем потом. Денис Грачёв нас спрашивает: «Почему не сравниваетесь с matchbox нет или tesirios net (00:35:25)? У них вроде бы результаты получше. Было бы интересно их получить с Triplet Loss».

    Роман Выгон: Мы пытаемся сравниваться. Основная проблема в том, что у matchbox (00:35:37), как и у _____ (00:35:38) embedding такой формы, про которую я рассказывал. То есть «Features» умножить на «время», то есть embedding там по 128 на 128. А потом, когда применяешь к ним L2 (00:35:53) регуляризацию, это всё теряет какой-либо смысл, потому что 10 000 чисел и мы приводим их к сумме «единица» и в целом они получаются маленькими. Triplet Loss нужно обучать на маленьких embedding, не 10 000. Поэтому пытаемся преобразовать архитектуру, чтобы там в итоге получались компактные вектора. Но пока те исследования, которые у меня были, получались хуже.

    Николай Михайловский: Если говорить про результаты, то я не знаю, какие результаты на ти сириос нет (00:36:34). Если я правильно понимаю, у matchbox.net (00:36:38) опубликован результат в районе 98% (97,9%) и не опубликован результат, который совпадает с нашим 98,4% с точностью уже до сотых. Относительно ти сириос нет (00:36:53). Я не могу сразу вспомнить, что это за архитектура. Роман, можешь вспомнить?

    Роман Выгон: Это тот же reset, но с темпорал коннекшн слоями (00:37:07), как у корснета (00:37:38), как у matchbox (00:37:09). Просто особые кёрнелы канализационных (00:37:15) слоев.

    Николай Михайловский: Какие там результаты по ти сириос нет (00:37:23), я не знаю.

    Роман Выгон: Там по статье Google было где-то 95,7%. В целом, не хуже matchbox (00:37:32).

    Николай Михайловский: Предыдущий опубликованный state-of-the-art (00:37:36) в гугловской статье. И там у них multi head attention RNM (00:37:42) лучший результат показывает. Нам пока не удалось заставить работать никакие рекуррентные сети хорошо с Triplet Loss.

    Роман Выгон: Андрей добавляет, что можно пулингом (00:38:00) получать компактные embedding. Да, можно. Но в итоге получается, что хорошие результаты эти модели получают со своими embedding, 128 на 128. Поэтому когда мы пулингом (00:38:17) уменьшаем количество информации, которое они несут, качество будет гораздо хуже.

    Николай Михайловский: Хорошо. Пожалуйста, коллеги, ещё вопросы.

    Роман Выгон: Шум для аугментации брал из той же методики, что использовалась для Google Speech Commands. То есть там прописано в статье, которая сопровождается к этому датасету. И есть несколько аудиофайлов. Там шум мытья посуды, шум улицы и белый шум. Из мос ан (00:39:11) не использовал.

    Николай Михайловский: И реверберацию, насколько я помню, тоже не использовали.

    Роман Выгон: Нет.

    Николай Михайловский: Пожалуйста, ещё вопросы. У нас больше вопросов нет. Тогда, если вопросов нет, большое спасибо всем, что пришли. Через неделю у нас вебинар про машинное обучение, 16 марта. Про машинное обучение в настройке оптических интерферометров. Resours Learning (00:40:23) в настройке оптических интерферометр. Это довольно далеко удаляется от того, что у нас делалось, от того, что у нас звучало на предыдущих вебинарах, которые в основном были сосредоточены вокруг тем распознавания речи и иногда вычислительной лингвистики. Но будем расширять кругозор: и физика, а также иные естественные науки, биология, химия, те места, где машинное обучение может привести к новым прорывам. Поэтому спасибо всем. Роман, спасибо большое за доклад. До свидания.

    Роман Выгон: Спасибо большое всем, кто слушал сегодня. Если еще будут какие-то вопросы, всегда готов ответить. Главное — найдите мои контакты. Я думаю, они где-то будут в материалах.

    Николай Михайловский: Да. Материалы, как всегда, будут опубликованы в группах в Telegram, в Facebook и т.д. и разосланы всем, кто зарегистрировался на вебинар. Спасибо. И до свидания.

    Роман Выгон: Пока.

    (00:41:39) (Конец записи.)