grokaem себя @grokaem_seby Channel on Telegram

grokaem себя

@grokaem_seby


A bunch of things that I encounter during my journey as NLP/Audio developer

grokaem себя (Russian)

grokaem себя (грокаем себя) - это канал в Telegram, созданный молодым разработчиком NLP. Здесь вы найдете небольшую подборку вещей, с которыми я сталкиваюсь во время своего пути как молодой специалист в области естественного языка: математика, глубокое обучение, машинное обучение, Python и истории. Если вы интересуетесь темами NLP, хотите узнать больше о разработке искусственного интеллекта, а также быть в курсе последних тенденций в этой области, то канал grokaem себя идеально подойдет вам. Здесь вы сможете подписаться на увлекательные истории, изучить математические основы, освоить глубокое обучение и машинное обучение на простых и понятных примерах, а также узнать как применять язык программирования Python в вашей работе. Присоединяйтесь к нашему каналу grokaem себя и начните свое погружение в мир искусственного интеллекта прямо сейчас!

grokaem себя

05 Nov, 22:07


короткий обзор

DeSTA2 - descriptive speech-text alignment approach
link

Все очень громко и приторно, а методики не такие сложные.

SLM - Speech Language Model - модель, которая по входу аудио может дать ответ и при этом может описать, что происходит. SLM ≠ ASR. Главное отличие - описание. Например, From the 5-second audio clip, I can hear a female English speaker says “The food is really good” in a happy tone. Все не в кавычках - способности LLM. Однако необходимо как-то понять, а что именно звучит. Так есть новые бенчи, например, AIR-Bench

Из (по сути уже известных) находок:

0️⃣ LLM хороши в форматировании, поэтому всю важную информацию добавим через паттерн ”[00:00:00-00:00:03] How are you? (Gender: Female, Emotion: Happy...)”.. Это необходимо при создании датасета. Это мы итак знаем в NLP, но в том же Prompt-TTS на такое не сильно обращали внимание.
1️⃣ Как взять описания? Нужно получить описания речи (аля мужчина, семьянин, 40 лет) Вместо того, чтобы тянуть 10 больших моделей для этого давайте возьмем одну. Qformer как просто адаптер поставим на speech, чтобы получить speech features с intermediate layers и вставим их как seed prompt в LLM и будем учиться их правильно аггрегировать. То есть: мы просто создали одну модель, которая декодирует несколько параметров сразу и при этом делает это не как лейбл, а просто как текст.

#grokaem_audio

grokaem себя

05 Nov, 14:14


Почти при каждом новом собесе я готовлюсь к LeetCode, наконец-то решила сохранить и поделиться ссылками.

1. Ссылка на мои записи этой зимы. Там я использовала схему
task sample
- task description
- task tips I use
- the code with explanation
- time and memory complexity


В notion доке вы сможете найти все задачки, которые я не поленилась написать. Для меня было важно писать именно свое понимание. Часто я старалась делать так: если я решила задачку с подсказками, то описание решения я пишу не сегодня, а завтра, чтобы вспомнить.

Блоки, которые я люблю делать:
1. arrays
2. hashing
3. two pointers
4. sliding window
5. stack

какие я не люблю, но надо:
6. linked list
7. trees
8. dynamic programming

Хорошие ссылки:
Набор важных топиков, которые классно покрыть (+ примеры задач)
100 задач по типам для two pointers
Алгоритмы динамического программирования
Neetcode roadmap
Его же канал
Канал крутого чувака, которого я раньше часто смотрела

Но самая главная recommendation - это explore карточки самого Leetcode, они оказались супер классными, concise ю ноу

Что используете вы?

grokaem себя

03 Nov, 16:15


ОКТЯБРЬ 2024

Надеюсь, у вас был приятный месяц Сбор новостей в этом месяце - халтура, да. Что хорошего произошло?

NLP
1. Вышла Aya Expanse - mutlilingual (23 languages)
2. Метод с late chunking для RAG вместо/с contextualized

AUDIO
1. Вышел F5-TTS, про фишку у него писала постом выше. Также рекомендую к прочтению. В эту же тему MaskGCT
2. DMDSpeech от StyleTTS
3. MoonShine для ASR
4. Voice-conversation model GLM-4-Voice
5. MOSEL multilingual датасет на 950K часов

random
1. Про nvidia-smi output, в эту же тему про почему nvidia-smi нельзя доверять
2. Интересная статья для decodec с диффузиями
3. У gonzo-ML появился канал с gonzo подкастами и "онлайн" разборами статей

grokaem себя

15 Oct, 11:42


про alignment в tts

Если в текстах мы работаем всегда в одной модальности, то с речью у нас две последовательности (аудио aka спектрограмма и текст). Прямого соотношения между которыми - нет. Попробуйте взять любую спектрограмму и сказать, где какая фонема звучит. Именно на задаче alignment и сделаем фокус.

И тут мне нравится мысль из небезызвестного ТРИЗ о стадиях идеального объекта:

🧩
«Система сама выполняет эту функцию»
«Системы нет, а ее функции выполняются»
«Функция вообще не нужна»

🧩

Эта же концепция перекликается с мыслью о постоянной накопленной ошибке мультиступенчатых систем. Если мы посмотрим на развитие TTS систем не с самых раних времен, то как раз и будем следовать стадиям развития системы.

Важная заметка на полях, здесь я не разделяю NAR и AR системы, however мы можем сказать, что в AR alignment проблема может решаться относительно легче.

Система: модель или алгоритм.
Задача системы: сделать идеальное соответствие между спетрограммой и текстом.

1️⃣Стадия 1: система существует.
Glow-TTS (11.2020), модель на основе flow-matching. В ней предложили monotonic alignment (система) - алгоритм на основе концепции динамического программирования со сложностью O(T_text * T_mel). Сильно, да? В общем и целом он должен занимать примерно 2% времени обучения. Нехило. Важно, что кроме самой системы при тренировки, нам нужен еще и duration predictor на инференсе. В том же VITS, MatchaTTS также используется monotonic alignment.

Совсем недавно его улучшили с super monotonic alignment search, но не поздняк ли уже метаться?

Сюда же я осмелюсь отнести FastSpeech 2 с duration predictor в сравнении с golden MFA (Montreal Forced Alignment).

2️⃣Стадия 2: системы нет.
Позволю себе упрощение: критерием, что системы нет можно считать, что отсутствует отдельная функция потерь. Если в том же FastSpeech 2 мы добавляли отдельный блок для duration, то в более старом Tacotron 2 у нас был location sensitive attention, никаких таргетов. Для TTS систем это удобно, так как мы априорно знаем, что зависимости монотонны (мы не можем сказать фонему n, ссылаясь на фонему n + k). Тот же nvidia в этом году стрехнули пыль с FastSpeech 2 в статье T5TTS , ссылаясь на advantages in seq-seq transformer based models и добавили prior "regularization" на cross-attention, чтобы сделать его монотонным. Однако у них мы можем сказать, что система все таки существует, так как поверх они добавляют CTCLoss, чтобы поддерживать мотонность alignment'а.

И в этом моменте вспоминаем, что все это время мы надеялись на какой-то external алгоритм, который скажет как правильно. Но доподлинно правильно мы не знаем как. Может ну его тогда?

3️⃣Стадия 3: функция вообще не нужна.
А что если вообще не думать о проблеме? Именно это и сделали в Embarassingly Easy TTS. Мы не затроним сегодня flow matching часть, это объемная тема. Что они сделали с alignment? Особо не парились: берем c - characters transcription размерности M. Берем наш mel-filter bank features размерности T. И просто добавляем к (T-M) filler tokens до полной T длины. А что так можно было? Похоже да. Мы оставили текст таким какой он есть, не растягивали, не дублировали, не делали буквально ничего. Наверное можно ждать много статей по ablation studies такого подхода и анализ attention у трансформера, как это было с подходами у T5TTS. По этому же подходу пошли F5TTS, которые только тренируют на diffusion.

Как и всегда, жду ваши поправки и комментарии❤️

#grokaem_audio

grokaem себя

07 Oct, 07:34


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

#grokaem_seby_thoughts

За день у меня может быть масса теорий и гипотез, которые я хотела бы проверить. Вот только в день у меня как минимум два проекта. Я очень не люблю держать все в голове. Стараюсь уходить домой без раздумий о задачах. Да, какой-то баг или мысль может как дементор меня преследовать и испариться с быстрым решением где-то в душе, но вот помнить все - нет, спасибо, у меня есть жизнь вне этого всего.

И вот проблема с которой я столкнулась: появляется идея - я ее записываю и забываю, а что хотел сказать автор? Ну проверишь ты это и что?

Поэтому новый паттерн для всех гипотез, которые у меня появляются:
🏔
Гипотеза:
Результат, который я ожидаю:
Как проверить:

🏔

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

Да, это кажется очевидным, но почему-то все наставники, что у меня были, не заставляли меня это делать, а зря! Пример такой записи в комментариях.

grokaem себя

05 Oct, 06:43


Я на какой-то период перестала сидеть в чатах, но вернула эту привычку. Один из любимых чатов от канала Speech Recognition. Длинные ответы нужно бы постить и тут.

🦘Я все еще в поиске хорошего денойзера для спецэффектов, плача, смеха и аплодисментов. Если вам такой известен, поделитесь, пожалуйста.

#grokaem_audio

Про предобработку:

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

1. Denoise - использую почти всегда старый добрый demucs.api. Он удобен, если у вас например, есть задача сначала отделить музыку, а потом вернуть ее обратно. Вместо demucs можете попробовать MVSEP. Не могу сказать, что я увидела много разницы с demucs, но это типо их расширение.


2. Дальше я всегда делаю enhance перед любой TTS, так как пару раз уже проверяла, что качество всегда будет лучше (как mos, так и objective metrics). Однако, если вы будет потом просто сравнивать мелспеки, помните, что вы сделали enhance.

Для быстрых кейсов я юзаю resemble-enhance, у него я ставлю их denoise, а потом enhance только на vocals от demucs. Качество мне нравится. Плюс они делают поддержку подсчета на gpu.

Однако если вы прям запарились и нужно качество лучше по enhance, то советую ребят MP-SENet, у них хорошая модель с двумя енкодерами и для phase и для магнитуды. Также можно натренировать (я проверяла), все збс воспроизводится и тренеруется недолго.

Минусы двухэтапной обработки - вам нужно сохранять файл от demucs, я не долго и не сильно копала, может можно как-то его перекинуть сразу в enhance.

код от resemble-enhance, он у них в app.py
def enhance_audio(audio_path, save_path, solver="midpoint",
nfe=64, tau=0.5, device="cuda", target_sr=16000):
solver = solver.lower()
nfe = int(nfe)
lambd = 0.9

dwav, sr = torchaudio.load(audio_path)
dwav = dwav.mean(dim=0)

wav1, new_sr = denoise(dwav, sr, device)
wav2, new_sr = enhance(dwav, sr, device, nfe=nfe, solver=solver, lambd=lambd, tau=tau)

wav2 = wav2.cpu().unsqueeze(0)

if new_sr != target_sr:
resampler = torchaudio.transforms.Resample(new_sr, target_sr)
wav2 = resampler(wav2)

torchaudio.save(save_path, wav2, target_sr)

grokaem себя

03 Oct, 14:14


XCodec: Codec Does Matter: Exploring the semantic shortcoming of codec for ALM

paper
code - у них нет нормального примера на HF, но все легко запускается через inference.py

Тренд - подружить между собой модальности не нов. Одна из дорожек - надеяться и верить, что LLM поймет другую модальность как-то так сама. Для этого все, что от нас требуется - это превратить нашу исходную модальность - в токены.

Если мы будем погружаться, то этим мы занимались всегда - те самый скрытые представления чем вам не токены? Просто теперь нам нужно число, а не вектор. Для этого существуют codecs - про encodec вот тут.

Мы можем смотреть на них как на квантизаторы. Перешли из m аудио семлов в n точек. По сути это схоже и с любым другим преобразованием. Изначально, как я понимаю, использовали их больше для музыки и звуков. И как следствие - мы выучивали low-level acoustic fluctuations. Однако для end-to-end систем нам нужно понимать, о чем идет речь.

🤓
Поэтому добавляют так называемые semantic tokens - токены, которые несут семантический смысл, спасибо кэп. А где мы учим семантику? В SST, который собираемся потом переносить на asr - это всякие hubert, wav2vec.

🤓
Поход 1. Делаем дистилляцию на первые, вторые, n-ные слои. В SpeechTokenizer - это cosine loss между первым RVQ слоем и HuBERT фичами. Это будет работать из-за каскадности RVQ. Такой же подход предложен у Moshi.

🤓
Подход 2. Добавлять семантические фичи explicitly - а именно перед RVQ. Можно, конечно просто взять HuBERT и фичи аудио энкодера, но как-то это не fancy🎩. Поэтому сделаем отдельный Encoder - Decoder, который будет брать на вход фичи HuBERT, потом они идут в semantic encoder (convs). И тут мы ловим фичи с audio encoder, конкатим от линейной проекции и вот теперь подаем в RVQ. Что также интересно: мы же не зря сделали encoder-decoder для semantic features? Будем подавать выход от RVQ в semantic decoder, чтобы как раз восстановить наши исходные фичи от HuBERT c MSE loss. И тут как раз моя ирония в начале падает, так как этот encoder-decoder и нужен нам, чтобы найти "правильные" semantic features, которые помогут и акустику восстановить, и семантику как у HuBERT оставить. А правильные они, потому что они идут в RVQ, над которым мы и пыжимся.

В комментариях пример восстановления записи.

#grokaem_audio #grokaem_papers

grokaem себя

02 Oct, 16:08


СЕНТЯБРЬ 2024 🍁

Как-то у меня получилось негусто собрать, месяц был странный

NLP:
1. Вышла LLAMA 3.2, on device, multimodal (image, text)
2. Вышла OpenAI O1 с позиции а порассуждай, пост В эту же песню вот этот пост о подходах к рассуждениям (DaG, IoT...)
3. Интересный пост о MoNE - мультиэксперте с нарезкой по глубине и по размерности эмбеддинга.
4. Есть теория, что pixtral (мультимодал text, image) основана на технологии с MoNE
5. Apple выложила insights по sigmoid self-attention.

AUDIO:
1. Вышла Moshi - multimodal conversational (text, audio)
2. IPA фономенизатор для русского
3. Был interspeech
4. Вышла FishSpeech, многим она не понравилась, но мне семплы были по душе
5. Вышла статья от авторов StyleTTS, будет небольшой обзор

grokaem себя

26 Sep, 07:18


🥸 36. Объясните маскирование в attention.
👩🏻‍💻 Если говорить кратко, то в encoder transformer части мы используем только self-attention, в decoder части в первом transformer блоке мы используем также self-attention с маскированием, а вот во втором cross attention.

Мы можем разделить два понимания маскирования. Если например у нас есть паддинги, мы все равно будем их маскировать в attention и encoder. Почему? Если у нас последовательности разной длины и вы используете padding, то в attention части нам не нужно брать 'влияние' padding токенов.
masked softmax implementation

В causal attention мы используем другой вид маскирования, мы маскируем только будущие токены. Почему? Потому что в causal language modelling мы делаем предсказания только на основе предыдущих примеров.

интерактивная визуализация для bert и gpt эмбеддингов
статья про интерпретацию

🥸37. Какая размерность у матриц self-attention?
👩🏻‍💻Размерность матрицы self-attention зависит от числа входных элементов и параметров модели. Обычно она имеет форму (seq_length, seq_length), где seq_length - это длина последовательности, для которой применяется механизм self-attention. Таким образом, если у нас есть seq_length элементов во входной последовательности, мы имеем квадратную матрицу размером seq_length x seq_length.

Внутри файла и в notion ответы на следующие вопросы:
🥸 34. Сравните RNN и attention. Когда лучше использовать каждый из них?
🥸35. Напишите attention с нуля.
🥸38. В чем разница между BERT и GPT в рамках подсчета attention?
🥸39. Какая размерность у эмбединового слоя в трансформере?

🥸40. Почему эмбеддинги называются контекстуальными? Как это работает?
🥸41. Что используется в трансформере layer norm или batch norm и почему?
🥸42. Зачем в трансформерах PreNorm и PostNorm?
🥸43. Объясните разницу между soft и hard (local/global) attention?
🥸44. Объясните multihead attention.
🥸45. Какие другие виды механизмов внимания вы знаете? На что направлены эти модификации?
🥸46. На сколько усложнится self-attention при увеличении числа голов?


notion
файл в комментариях

grokaem себя

26 Sep, 07:17


🥸 - взрослый дядя собеседующий
👩🏻‍💻 - я и вы

🥸 32. Как считаете attention? (доп. для какой задачи его предложили? и почему?)
👩🏻‍💻Attention intro

You compare the query with the keys to get scores/weights for the values (Сравниваем query с keys, чтобы получить веса для обновления values)

- key - относительно кого считаем, исходный текст на языке оригинала
- query - для кого считаем, переведенный текст на таргет языке
- value - на чем мы считаем, снова исходный текст

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


Внутри функция для attention может быть разной. Главное - нам нужны скоры, чтобы обновить наши эмбеддинги.

1. dot product - базовая и самая используемая функция: просто перемножаем)
допом можно делать scaled dot product - это когда вы перед тем, как добавлять softmax, нормализуете на квадратный корень от dimension эмбеддингов. Это нужно для стабилите, когда dimension большой))

2. additive attention он же concat, soft and global (Bahdanau attention) - родоначальник attention, скор считается с помощью дополнительной фидфорвад сети
одна из имплементаций

история от Андрея Карпатова, как ему Bahdanau рассказал, как он придумал attention

3. Luong-Attention он же general, location based и любимый dot product (они все разные)
Немного про различия


🥸 33. Сложность attention? Сравните с сложностью в RNN?
👩🏻‍💻Computation:

Attention: вычислительная сложность O(n² * d), где n — длина последовательности, d — размерность эмбеддингов.
RNN: O(n * d²), где n — длина последовательности, d — размерность hidden state.
Attention сложнее при больших последовательностях, но имеет преимущество за счет параллелизации вычислений. RNN, напротив, обрабатывает последовательность шаг за шагом, что может быть выгоднее для длинных последовательностей, но из-за проблемы исчезающего градиента теряет в эффективности.

В дополнение, self-attention работает быстрее, когда длина последовательности меньше размерности эмбеддингов. Источник для глубокого погружения — Transformer arXiv.

grokaem себя

26 Sep, 07:17


Когда я долго не пишу, это значит что-то из трех: я забила хер, мне херово, я занимаюсь чем-то охереть важным

В этом месяце третье и выливается оно во второе, но где-то между я дописала ответы на вопросы для части с attention. И вот я уже где-то на экваторе всех ответов и вопросов. Многое я хочу переписать, написать лучше, удалить. Но перфекционизма не занимать и доработки будут идти постепенно.

Быть честной, я не знаю где это опубликовать для моих читатей в рф (ни notion, ни medium уже не работает) - наверное соберусь с силами и перенесу на гитхаб.

grokaem себя

01 Sep, 13:14


С 1 сентября! Лишь недавно осознала, что в детстве родители пытались выстроить связь: 1 сентября - начало учебного года - праздник. Это вам пицца в Сеньоре Помидоре, тортик и банты.

Давайте и мы проведем ассоциативную связь между началом месяца и радостью, что а) начинается новый, б) было много хорошего в старом


АВГУСТ 2024

🎒NLP🎒
0. Вышел REFT - PEFT для representation fine-tuning, узнала тут, а код тут
1. Интересная статья MobileLLM, paper c подходами к уменьшению моделей без квантизации, но поддержки и бусту качества с помощью: embeddings sharing, immediate block-wise layer sharing, deeper networks over wider networks
3. Вышла ColPali, sota для поиска документов, анализирует также визуальные фрагменты, узнала тут
4. Новая мультимодальная модель от meta с diffusion, которая предиктит сразу discreate text tokens и картинки paper

🎒AUDIO🎒
0. Вышла WavTokenizer, codec модель по качеству в опережающая Encoder, DAC, SpeechTokenizer и при этом квантующая в 75 токенов. paper
1. Люди начали тюнить LLAMA 3.1 с audio input
2. Вышла Language Model Can Listen While Speaking, пайплайн с LLM для двухканального слушания, перебивки и tts.
3. В эту же песню вышел Qwen2-Audio code, для хорошего понимания советую прочитать обзор codec моделей
4. SimpleSpeech, paper, non-autoregressive TTS на диффузии и без alignment
5. Желтый AI провел конфу Turbo ML conf, выступления уже на youtube
6. Новая модель для utterance speaker recognition от русскоговорящих ребят paper
Большинство статей с канала Speech Technology

🎒RANDOM🎒
0. Открыла для себя канал SpeechAI Pro, иногда там про бизнесовые штуки, которые я скипаю, а иногда короткие ревью докладов
1. Интересный подход для knowledge distillation.
2. Также статьи, которые я планирую прочитать или читаю можно наблюдать тут в notion page

grokaem себя

30 Aug, 07:26


PEDALBOARD

Какие эффекты? Их много, но мне важно было сделать а-ля эффект большого зала и микрофона. Для второго я поиграю с chorus effect и reverb, а для первого будут добавлять equalizers и distortion.

Подробнее (удивительно) написано в документации. Но конечно, я не аудио инженер, я просто натюнила с claude примеры.

И вот какой мне +- подошел:
        board = Pedalboard([
Compressor(threshold_db=-15, ratio=2, attack_ms=5, release_ms=50),
HighpassFilter(cutoff_frequency_hz=85),
LowShelfFilter(cutoff_frequency_hz=200, gain_db=-2),
HighShelfFilter(cutoff_frequency_hz=4000, gain_db=1.5),
Distortion(drive_db=0.7),
Reverb(room_size=0.6, damping=0.4, wet_level=0.2, dry_level=0.8),
Gain(gain_db=-1)
])


Not the best, but still better than before.

Я все еще в поисках speech restoration сетки, чтобы возвращаться из чистой записи в грязную, знаете такие?

#grokaem_audio

grokaem себя

30 Aug, 07:25


Преамбула:

Как-то раз мы обсуждали, что по сути когда мы генерим что-то с TTS системой, мы не должны ожидать, что речь будет похожа на исходную. Например, если у вас речь в большой комнате, то сгенерированная скорее всего не будет звучать с эхо эффектом. Это ведет наше повествование в две ветви:
- audio language models - про них еще поговорим и говорили тут и тут и почти тут
- а как мы мерить будем качество?
- а что мы вообще хотим?

Если с тем, что хотим, мы разобрались - губу закатали и просто хотим приятную речь, то вот с сравнением нужно быть осторожнее. Например, если вы не берете MOS (для экспериментов это), то вы можете сравнить спектрограммы. Но тут способов облажаться дохрена: alignment, speaker conditions, length, audio power, но допустим вы удовлетворили все условия, какой-нибудь максимально наивный MSE будет очень высоким, как раз из-за "спецэффектов".

Так сижу я и атакую одну FAD систему, получается хреново. В рамках FAD это значит, что система работает и распознает мои записи как сгенерированные. Чтобы ее обмануть я могу:
- улучшить TTS
- улучшить voice conversion
- понять, а в чем еще сорс и мои записи различаются (?)

И тут нам везет, ведь работать мы можем в две стороны:
(грязный - с спецэффектам, чистый - без спецэффектов только речь)
Изначально у меня: грязный source VS чистый generated

И я могу:
- почистить source и будет: чистый source VS чистый generated
- загрязнить generated и будет: грязный source VS грязный generated

Почистить можно с demucs, speech enhancement, speech restoration. А вот загрязнить можно с аугментациями, про них я писала в этом посте.

Но грязнить мы должны ВСЕГДА по умному, тупые аугментации для умных сеток - время обучения на ветер. Поэтому буду пытаться воссоздать setting исходных записей. Для этого я буду использовать библиотеку от spotify pedalboard.

grokaem себя

29 Aug, 07:54


Визуализация initialization methods

Почти всегда в самом начале изучают initialization methods для сеток. Наткнулась на классную визуализацию методов, чтобы понять, что начнет обучаться, что нет и тд. На примере простой классификации на два класса и mnist. Тыкаете методы инициализации и то, как будет меняться лосс и распределения весов.

Почему это важно?
Как мы видели в буквально последнем посте иногда инициализация с предобученной модели не так уж и хороша. Ну и не только предобученные сетки вы юзаете же))

Принято считать:
1. A too-large initialization leads to exploding gradients
2. A too-small initialization leads to vanishing gradients

Популярные методы основываются на разделении с uniform и normal distribution.
- Xavier/Glorot initialization
- Kaiming He
- LeCun
- Orthogonal Initialization

Как обычно, нет идеального метода, хоть и считается, что Xavier например лучше для tanh & sigmoid activations, а Kaiming He для ReLU.

Небольшая статья с плюсами и минусами для remote sensing.

Похожая визуализация для regularization.

#grokaem_ml

grokaem себя

24 Aug, 20:02


Спасибо, что лайкаете узконаправленные посты ❤️ А не только всякие ссылки

grokaem себя

24 Aug, 19:45


LAYER-WISE ANALYSIS OF A SELF-SUPERVISED SPEECH REPRESENTATION MODEL
статья

Задача: понять, учит ли Wav2Vec слова в SST.

Метод:
Подход похож на Zero Resource Speech Benchmark, только считать его будем по слоям. Такое мы видели у Voita например, в MI для NLP.

Считают:
- CCA (canonical correlation analysis)
- MI (mutual information) - определяем лейбл через подготовленные кластеры
- Word discrimination
- Word Similarity - достаем эмбеддинги слов - считаем cosine similarity с скрытым состоянием

Сразу к результатам:
- Is Wav2Vec an autoencoder? Доказали, что SST training следует autoencoder style, где сначала до +- середины мы получаем скрытое состояние, которые отличаются от input features, а потом начинаем их восстанавливать в исходные и CCA растет.
- Согласно MI и word discrimination, средние (6-7) показывают наилучшую инфу о фонемах.
- Тот же тренд для средних слоев для word similarity как для малых, так и для больших моделей.

Question 1. Но мы же будет обучать модельку для ASR. Оказывается, что fine-tuning для ASR поможет нам уйти от autoencoder стиля и стабильно улучшать MI. Что по сути абсолютно логично, так как лосс меняется.

Question 2. Но если подготовленные веса для этих последних слоев такие плохие, мб и не будем их использовать? Оказалось, что если не инициализировать последние слои с SSF модели - результаты для WER буду лучше.

- Также показали, что для почти всех слоев растет высокая корреляция к Filter banks, предлагая подавать именно их.

Вопрос "а спикеры на каком слое тогда?" остается открытым или нет?

#grokaem_audio

grokaem себя

24 Aug, 19:45


Преамбула:
По сути дела self-supervised mode помогает нам в том, чтобы выучить природу предмета. Как для текста это семантика, синтаксис и что-то еще (я плохо слушала на парах). Почему бы не делать это для речи? Да, все логично - маскируй и предсказывай, не rocket science, you know. Но! Когда ты учишь gpt генерить текст, исходная задача SST - сгенерить текст никак не мешает в downstream задачке его классифицировать. А что с речью? Ну тоже проблем не должно быть, мы же говорим и все тут.

Downstream задача - automatic speech recognition. Просто предсказывай слово. Неважно где, шепотом или ором, медленно или быстро, зло или добро, та и я вообще его говорю или нет - просто предскажи. И вот лежит у меня на письменном столе wav2vec на SST, по вкусу вкусный, а на вкус? А на вкус могу ли я заиспользовать его для классификации спикера? А акцента? А ASR?

Безусловно, могу. Я вообще все могу, вопрос на сколько хорошо ;) И на что училась? А учу я просто self-supervised learning модель, где на первом этапе меня не так уж сильно интересует asr, меня интересует mutual info с "квантованой" репрезентацией от zi. При этом я за скобки выношу тот факт, что речь continuous, а мне нужны дискретные юниты, которые я учу. Но что они в себе несут?

Пусть даже если большинство downstream задач ортогональны upstream задаче, мы все еще используем эти модели, но знают ли они слова или нет?

grokaem себя

23 Aug, 20:39


FLEURS - (R)
paper

🐕🐕🐕
подводка:
В борьбе за натуральность есть два пути: много данных, но с шумом VS меньше данных, но чистые и звук также будет в конце чистый. Если вы пробовали использовать какие-то шумные данные, как condition для генерации, то вы часто получали кучу артифактов. Почему так? Потому что в большинстве случаев мы тренируемся с идеально чистыми студийными данными. Что грустно? Часто эти данные есть только на одном языке. Есть LibriTTS, из него сделали LibriTTS-R - датасет, который прошел speech restoration. Он на английском, то же самое можно сделать и мультилингвально.

🐕🐕🐕
FLEURS-R - датасет c 102 параллельными языками.

Что сделали? Используют speech restoration алгоритм Mipher поверх записей.

0. Подробнее про Mipher:
Mipher берет w2v-BERT, тащим их в Conformer-DF (extended Conformer with linear complexity attention). Но поверх этого мы несем также text и speaker фичи, потом генерим с WaveFit.

1. Для мультилингвальности меняем пару частей, просто кидаемся крутыми словами:
w2vBert -> USM (Universal Speech Model)
А вот text и speaker фичи убрали, потому что USM с обоими справлялась

🐕🐕🐕
Что мне было интересно, так это проверка:
В теории, когда мы генерим что либо с любой нейронкой - мы получаем "сгенерированные данные". То есть мы может увидить артифакты тут и там.

Поэтому делаем фильтрацию поверх:
- asr - тут мы следим за двумя вещами: не упал WER, а лучше, чтобы WER или/и CER подрос, как это случилось для 32%
- поверх мы считаем squid MOS, тут авторы говорят, что так и так squid не sensitive к linguistics -> юзаем его, людей спрашивать не будет. И действительно MOS на 0.2 лучше для чистых новых записей.
- Но как мы знаем - любой ASR датасет можно использовать как TTS, но для TTS нам всегда нужно качество лучше. Тогда получается: если сделали speech restoration, то и результаты будут лучше? Будут, да? Ну 3.89 VS 3.79 для MOS, и почти идентичные, а иногда и хуже результаты для CER.

Пример записей в комментариях.

grokaem себя

20 Aug, 09:17


я вам вопрос, а вы мне ответ

В чем различие между learning to initialize (meta-learning) и self-supervised learning, если в обоих случаях мы пытаемся выучить классные initial parameters?

grokaem себя

14 Aug, 19:47


Галопом по европам: Pre-train, prompt and predict. да 2021 год и что?

- что такое промтинг? какие виды answer бывают?
- какие претрейны у лм и под какие answer паттерны и задачи лучше подходят?
- методы prompt engineering и дискретный и continuous
- training strategies для prompts
- multi-prompts

Подойдет для освежить память, структурировать или подготовиться к экзамену)

link
github с тем же самым

#grokaem_nlp #grokaem_books