Вчерашний вебинар по матстату вроде вышел неплохо.
О чём сделать следующий? Классический ML? Более сложные темы из матстата? Эконометрика? Что-нибудь из NLP?
Предлагайте новые темы в комментах!
О чём сделать следующий? Классический ML? Более сложные темы из матстата? Эконометрика? Что-нибудь из NLP?
Предлагайте новые темы в комментах!
Многоруких бандитов пост
Неделю назад я рассказал, как рассчитывать размер выборки для простого эксперимента: закупаем фиксированное число кликов, потом сравниваем конверсию этой кампании с базовым значением. В комментариях резонно заметили, что на практике так делают редко, ибо клики стоят дорого, а различных комбинаций таргетингов и цен много. И выходит, что на уверенный выбор наилучшей комбинации уйдёт целый годовой бюджет. Поэтому подход "сначала провести эксперименты и выбрать лучший вариант, потом его использовать в остальной рекламе" часто экономически невыгоден.
Альтернатива такая: одновременно и проводить эксперименты, и эксплуатировать предварительные результаты этих экспериментов. Математически эта постановка задачи называется "multi-armed bandit" в честь американских игровых автоматов. Дано: несколько ручек автомата, каждая из которых приносит случайный выигрыш, и для каждой распределение возможных выигрышей может быть своё. Есть фиксированное число попыток, за которые надо заработать максимум денег. Вместо ручек могут быть рекламные объявления, предлагаемые юзеру музыкальным сервисом исполнители, торговые стратегии на бирже, странички в поисковой выдаче, you name it.
Универсального решения (для любого числа ручек и любого распределения выигрышей) эта задача не имеет. Но есть эвристические решения, которые работают неплохо. Например: для каждой из ручек построить 95% доверительный интервал для матожидания её выигрыша, и каждый раз дёргать ту ручку, у которой верхняя граница интервала самая высокая. Напомним, верхнюю границу можно вычислить примерно как mean + 2 * std / sqrt(n), где mean - это средний выигрыш из этой ручки, std - стандартное отклонение выигрышей из неё, n - число попыток с этой ручкой. Чтобы считать стандартные отклонения, каждую ручку сначала надо дёрнуть хотя бы дважды.
Если нам повезло, и мы сразу выбрали самую лучшую ручку, то всё хорошо, и надо продолжать в том же духе. Если же нам попалась плохая ручка, то по мере того, как мы её будем дёргать, выборка выигрышей из этой ручки будет расти, и доверительный интервал для среднего выигрыша - сужаться. А значит, верхняя граница интервала поползёт вниз, и довольно быстро мы выберем другую ручку. У новой ручки либо интервал более широкий (т.е. распределение выигрышей плохо изучено), либо середина интервала расположена достаточно высоко (т.е. средний выигрыш большой). А на интервалы с низким средним выигрышем, которые изучены уже неплохо, ресурсы зря расходоваться не будут. Профит!
Кроме этой стратегии, основанной на доверительных интервалах, есть много других подходов к многоруким бандитам (например, байесовские). Но все эти подходы так или иначе ищут баланс между exploration (исследованием новых опций) и exploitation (извлечением выгоды из уже известных опций).
И, кажется, это очень похоже на то, чем все мы, человеки, занимаемся по жизни.
Неделю назад я рассказал, как рассчитывать размер выборки для простого эксперимента: закупаем фиксированное число кликов, потом сравниваем конверсию этой кампании с базовым значением. В комментариях резонно заметили, что на практике так делают редко, ибо клики стоят дорого, а различных комбинаций таргетингов и цен много. И выходит, что на уверенный выбор наилучшей комбинации уйдёт целый годовой бюджет. Поэтому подход "сначала провести эксперименты и выбрать лучший вариант, потом его использовать в остальной рекламе" часто экономически невыгоден.
Альтернатива такая: одновременно и проводить эксперименты, и эксплуатировать предварительные результаты этих экспериментов. Математически эта постановка задачи называется "multi-armed bandit" в честь американских игровых автоматов. Дано: несколько ручек автомата, каждая из которых приносит случайный выигрыш, и для каждой распределение возможных выигрышей может быть своё. Есть фиксированное число попыток, за которые надо заработать максимум денег. Вместо ручек могут быть рекламные объявления, предлагаемые юзеру музыкальным сервисом исполнители, торговые стратегии на бирже, странички в поисковой выдаче, you name it.
Универсального решения (для любого числа ручек и любого распределения выигрышей) эта задача не имеет. Но есть эвристические решения, которые работают неплохо. Например: для каждой из ручек построить 95% доверительный интервал для матожидания её выигрыша, и каждый раз дёргать ту ручку, у которой верхняя граница интервала самая высокая. Напомним, верхнюю границу можно вычислить примерно как mean + 2 * std / sqrt(n), где mean - это средний выигрыш из этой ручки, std - стандартное отклонение выигрышей из неё, n - число попыток с этой ручкой. Чтобы считать стандартные отклонения, каждую ручку сначала надо дёрнуть хотя бы дважды.
Если нам повезло, и мы сразу выбрали самую лучшую ручку, то всё хорошо, и надо продолжать в том же духе. Если же нам попалась плохая ручка, то по мере того, как мы её будем дёргать, выборка выигрышей из этой ручки будет расти, и доверительный интервал для среднего выигрыша - сужаться. А значит, верхняя граница интервала поползёт вниз, и довольно быстро мы выберем другую ручку. У новой ручки либо интервал более широкий (т.е. распределение выигрышей плохо изучено), либо середина интервала расположена достаточно высоко (т.е. средний выигрыш большой). А на интервалы с низким средним выигрышем, которые изучены уже неплохо, ресурсы зря расходоваться не будут. Профит!
Кроме этой стратегии, основанной на доверительных интервалах, есть много других подходов к многоруким бандитам (например, байесовские). Но все эти подходы так или иначе ищут баланс между exploration (исследованием новых опций) и exploitation (извлечением выгоды из уже известных опций).
И, кажется, это очень похоже на то, чем все мы, человеки, занимаемся по жизни.
Посмотрел видео недавнего доклада Tinkoff про распознавание и синтез речи: https://youtu.be/N6DnPC0rwIo. Мне доклад показался очень толковым: спикеры за час с небольшим провели ликбез по технологиям распознавания и синтеза и поделились собственным опытом. Попробую вкратце его пересказать.
Чтобы синтезировать речь из текста, сначала нужно привести текст в читабельный вид: записать буквами числа, сокращения, и прочие специальные обозначения (т.е. нормализовать текст), расставить ударения и точки над ё, по возможности проставить паузы и метки для интонации. Дальше текст превращают в последовательность спектрограмм, т.е. гистограмм, показывающих зависимость высоты звука от частоты на коротком временном интервале. Делают это обычно seq2seq моделями, в качестве основы часто берут архитектуру tacotron, и которые обучаются довольно долго. Последний шаг - применение модели-вокодера, которая из спектрограммы генерирует непосредственно звук. Вокодер тоже может быть авторегрессионным (например, свёрточной сетью), может быть основан на нормализующих потоках, может быть GANом. Оценивают всё это обычно side-by-side краудсорсинговыми оценками.
Распознавание речи решает обратную задачу, получая из неё текст. Первая сложность - выравнивание: из большого количества коротких аудиосэмплов нужно получить относительно короткую последовательность букв, и нужно определить, какие сэмплы относятся к какой букве (а какие - ни к какой). Это решается beam search декодированием: на каждом временном шаге мы поддерживаем несколько гипотез о том, какой может быть последовательность букв к данному моменту, и в конце выбираем последовательность, набравшую максимальное суммарное правдоподобие. Во время декодирования к акустической модели (которая классифицирует каждый сэмпл по-отдельности) добавляют языковую модель (которая отвечает за правдоподобие получившейся последовательности букв с точки зрения языка). Если распознавать речь хочется в реальном времени, акустическая модель (рекуррентная нейронка) запускается на скользящем окне из нескольких семплов, продвигающемся вперёд по мере поступления данных. Чтобы избегать пауз в ответе голосового помощника, нужна ещё хорошая модель для детекции окончания речи. В целом, есть очевидный трейдофф между скоростью распознавания и качеством. Зато качество мерять просто: это доля правильно распознанных слов, которая у Tinkoff сейчас достигает 97% на аудиокнигах и 85-90% на телефонных разговорах.
Этот краткий пересказ упускает кучу важных деталей и интересных подробностей, так что, если есть время, лучше смотрите видео целиком. Хороших выходных!
Чтобы синтезировать речь из текста, сначала нужно привести текст в читабельный вид: записать буквами числа, сокращения, и прочие специальные обозначения (т.е. нормализовать текст), расставить ударения и точки над ё, по возможности проставить паузы и метки для интонации. Дальше текст превращают в последовательность спектрограмм, т.е. гистограмм, показывающих зависимость высоты звука от частоты на коротком временном интервале. Делают это обычно seq2seq моделями, в качестве основы часто берут архитектуру tacotron, и которые обучаются довольно долго. Последний шаг - применение модели-вокодера, которая из спектрограммы генерирует непосредственно звук. Вокодер тоже может быть авторегрессионным (например, свёрточной сетью), может быть основан на нормализующих потоках, может быть GANом. Оценивают всё это обычно side-by-side краудсорсинговыми оценками.
Распознавание речи решает обратную задачу, получая из неё текст. Первая сложность - выравнивание: из большого количества коротких аудиосэмплов нужно получить относительно короткую последовательность букв, и нужно определить, какие сэмплы относятся к какой букве (а какие - ни к какой). Это решается beam search декодированием: на каждом временном шаге мы поддерживаем несколько гипотез о том, какой может быть последовательность букв к данному моменту, и в конце выбираем последовательность, набравшую максимальное суммарное правдоподобие. Во время декодирования к акустической модели (которая классифицирует каждый сэмпл по-отдельности) добавляют языковую модель (которая отвечает за правдоподобие получившейся последовательности букв с точки зрения языка). Если распознавать речь хочется в реальном времени, акустическая модель (рекуррентная нейронка) запускается на скользящем окне из нескольких семплов, продвигающемся вперёд по мере поступления данных. Чтобы избегать пауз в ответе голосового помощника, нужна ещё хорошая модель для детекции окончания речи. В целом, есть очевидный трейдофф между скоростью распознавания и качеством. Зато качество мерять просто: это доля правильно распознанных слов, которая у Tinkoff сейчас достигает 97% на аудиокнигах и 85-90% на телефонных разговорах.
Этот краткий пересказ упускает кучу важных деталей и интересных подробностей, так что, если есть время, лучше смотрите видео целиком. Хороших выходных!
YouTube
Tinkoff.AI Speech — Трансляция митапа
На встрече с ведущими разработчиками машинного обучения в Тинькофф обсудили технологии синтеза и распознавания речи. В этой трансляции:
00:00 — Начало трансляции
00:54 — Приветствие
02:42 —Text-to-speech: cooking recipe, Сергей Дуканов
31:26 — Q&A с Сергеем…
00:00 — Начало трансляции
00:54 — Приветствие
02:42 —Text-to-speech: cooking recipe, Сергей Дуканов
31:26 — Q&A с Сергеем…
Наверное, вы знаете про DataFest (fest.ai) - большую конференцию по анализу данных. В следующий раз они будут в конце мая, очень рекомендую. А в конце апреля будет проходить менее масштабная, но тоже интересная встреча - Parsing Conf. Это маленькая конференция по сбору данных, на которой можно и послушать, и выступить, и даже обкатать свой доклад перед DataFest'ом.
Темы готовящихся докладов примерно такие:
- "Сбор и аугментация датасетов изображений на примере цифрового агро и фуднета"
- "Собираем датасет с медицинскими масками"
- "Почему важно уметь парсить"
- "Автоматические регистрации на веб-порталах"
- "Библиотека ferret" (доклад от автора)
- "Парсинг через Tor: Как скачать 1.5 млн патентов за 2 недели, а не за 40 лет"
Кроме этого, можно и нужно предлагать собственные доклады (объявить тему надо до 9 апреля). Подробности - в чатике https://t.iss.one/parsing_conf/47.
Темы готовящихся докладов примерно такие:
- "Сбор и аугментация датасетов изображений на примере цифрового агро и фуднета"
- "Собираем датасет с медицинскими масками"
- "Почему важно уметь парсить"
- "Автоматические регистрации на веб-порталах"
- "Библиотека ferret" (доклад от автора)
- "Парсинг через Tor: Как скачать 1.5 млн патентов за 2 недели, а не за 40 лет"
Кроме этого, можно и нужно предлагать собственные доклады (объявить тему надо до 9 апреля). Подробности - в чатике https://t.iss.one/parsing_conf/47.
Telegram
Parsing Conf
В конце апреля планируется Parsing Conf 2. Темы докладов — самые разные. От сбора данных в интернете до методологий сбора данных "в полях".
Приглашаются все желающие. Неважно: есть у Вас опыт или нет.
Для того, чтобы понять, какие темы и направления Вы…
Приглашаются все желающие. Неважно: есть у Вас опыт или нет.
Для того, чтобы понять, какие темы и направления Вы…
Хочу порекомендовать вам блог Lilian Weng. Он в целом про машинку, и довольно много тем посвящено NLP и RL. Там в основном обзоры исследований, но есть, например, и попытки воспроизвести некоторые из них. Например, пост от 2 января - про контролируемую генерацию текста языковыми моделями. Обсуждаются базовые подходы к генерации текстов (варианты жадного сэмплирования, beam search, их преимущества и недостатки), способы подбора правильных промптов для языковых моделей, и методы их файн-тюнинга, позволяющего контролировать стиль.
Я и сам собирался написать обзор по контролируемой генерации, но у меня вряд ли получится лучше. Поэтому держите и наслаждайтесь)
https://lilianweng.github.io/lil-log/2021/01/02/controllable-neural-text-generation.html
Я и сам собирался написать обзор по контролируемой генерации, но у меня вряд ли получится лучше. Поэтому держите и наслаждайтесь)
https://lilianweng.github.io/lil-log/2021/01/02/controllable-neural-text-generation.html
Lil'Log
Controllable Neural Text Generation
Ещё один вебинар на подходе, на этот раз - ликбез по NLP!
Регистрация: https://botcamp.timepad.ru/event/1612905
Мы разберём популярные задачи по обработке текстов и подходы к их решению. Поговорим про выбор моделей и их интерпретацию, разметку данных, и, конечно, про то, как начать свой путь в NLP максимально продуктивно. Решим пару практических задач. Должно идеально подойти для новичков.
Вебинар пройдёт в zoom в четверг 15 апреля с 19 до 21 по Мск.
Стоимость - 500р, но есть несколько бесплатных билетов.
Регистрация: https://botcamp.timepad.ru/event/1612905
Мы разберём популярные задачи по обработке текстов и подходы к их решению. Поговорим про выбор моделей и их интерпретацию, разметку данных, и, конечно, про то, как начать свой путь в NLP максимально продуктивно. Решим пару практических задач. Должно идеально подойти для новичков.
Вебинар пройдёт в zoom в четверг 15 апреля с 19 до 21 по Мск.
Стоимость - 500р, но есть несколько бесплатных билетов.
botcamp.timepad.ru
Ликбез по natural language processing / События на TimePad.ru
Вводный вебинар по NLP от Давида Дале (Сколтех, экс-Яндекс). Разберём популярные задачи по обработке текстов и подходы к их решению. Поговорим про выбор моделей и их интерпретацию, разметку данных, и, конечно, про то, как начать свой путь в NLP максимально…
Бизнес часто требует от data scientist'ов интерпретации предсказательных моделей в каких-то очень простых терминах. Например, "если клиенту позвонили из банка на мобильный и разговор длился больше 16 минут, то в результате клиент откроет депозит с вероятностью 64%". Сегодня я покажу, как такие правила можно извлечь из данных.
Можно догадаться, что подобные правила очень естественно выучиваются деревьями решений. Понятно, что отдельно взятое дерево решений обычно даёт не такие точные предсказания, как ансамбль деревьев или глубокая нейросеть. Но часто разрыв в точности не очень большой, и им можно пожертвовать ради простоты правил.
При работе с деревьями есть тонкости. Чтобы деревья не переобучались, их рост надо ограничивать. Проще всего для этого устанавливать минимальное число наблюдений на лист. Ну и потом из деревьев надо вытащить список листьев и путей до них, это не то чтобы сложно, но не совсем очевидно.
Если подумать, можно также догадаться, что если мы берём отдельно взятый лист дерева, то в цепочке правил, описывающих путь от корня до этого листа, много избыточных. Можно пройти по ним циклом и выкинуть те правила, которые не улучшают предсказательную силу листа - а таких часто бывает больше половины.
В результате мы оказываемся с мешком довольно простых правил "если комбинация фичей такая, то таргет в среднем такой", на которые может быть очень любопытно смотреть глазами. И да, если звонок длился меньше 75 секунд, то с вероятностью 99.6% депозит клиент не откроет.
Пример моего кода для извлечения сегментов можно посмотреть здесь:
https://gist.github.com/avidale/2aa018e6264a3e3887132d522b783561. Тут я тренируюсь на данных маркетинговой кампании одного португальского банка, но вы можете воспроизвести мой подход на чём угодно.
А тем временем, мы продолжаем игру: вы задаёте вопросы в комментариях, я еженедельно отвечаю на какой-то один из них длиннопостом. Собственно, этот пост был результатом одного из таких вопросов (спасибо @akogay).
Можно догадаться, что подобные правила очень естественно выучиваются деревьями решений. Понятно, что отдельно взятое дерево решений обычно даёт не такие точные предсказания, как ансамбль деревьев или глубокая нейросеть. Но часто разрыв в точности не очень большой, и им можно пожертвовать ради простоты правил.
При работе с деревьями есть тонкости. Чтобы деревья не переобучались, их рост надо ограничивать. Проще всего для этого устанавливать минимальное число наблюдений на лист. Ну и потом из деревьев надо вытащить список листьев и путей до них, это не то чтобы сложно, но не совсем очевидно.
Если подумать, можно также догадаться, что если мы берём отдельно взятый лист дерева, то в цепочке правил, описывающих путь от корня до этого листа, много избыточных. Можно пройти по ним циклом и выкинуть те правила, которые не улучшают предсказательную силу листа - а таких часто бывает больше половины.
В результате мы оказываемся с мешком довольно простых правил "если комбинация фичей такая, то таргет в среднем такой", на которые может быть очень любопытно смотреть глазами. И да, если звонок длился меньше 75 секунд, то с вероятностью 99.6% депозит клиент не откроет.
Пример моего кода для извлечения сегментов можно посмотреть здесь:
https://gist.github.com/avidale/2aa018e6264a3e3887132d522b783561. Тут я тренируюсь на данных маркетинговой кампании одного португальского банка, но вы можете воспроизвести мой подход на чём угодно.
А тем временем, мы продолжаем игру: вы задаёте вопросы в комментариях, я еженедельно отвечаю на какой-то один из них длиннопостом. Собственно, этот пост был результатом одного из таких вопросов (спасибо @akogay).
Недавно просили в комментах рассказать про reinforcement learning (обучение с подкреплением). Расскажу вкратце, а вы уж решайте, интересно ли это вам. В общем, RL - это когда модели обучаются методом проб и ошибок.
Делается это не от хорошей жизни. Гораздо проще и удобнее мир supervised learning (обучение с учителем), когда для обучения модели есть готовые пары (x, y), модель предсказывает y', и мы настраиваем её так, чтобы минимизировать различие между y и y'. Но такое возможно не всегда. Бывает, что правильные y получить сложно или дорого – например, надо рекомендовать пользователю контент, но мы не знаем, какие рекомендации являются верными, и можем ориентироваться только на лайки и дизлайки. А ещё бывает, что различие между y и y' невозможно выразить в виде дифференцируемой функции, а значит, сложно оптимизировать – например, если y и y' это тексты, а различие мы меряем как расстояние Левенштейна или BLEU. Для таких ситуаций и придумали RL.
В RL формализм такой: идёт «игра» в несколько шагов, на каждом шаге дано состояние S, модель выбирает действие A и получает за это награду R, и затем мы переходим к следующему шагу. Задача модели – выбирать действия так, чтобы максимизировать сумму наград за всю игру. Например, состояние S может описывать шахматную доску с расстановкой фигур, действие A может быть любым разрешённым шахматным ходом, а награда R на последнем шаге равна +1 в случае победы и -1 в случае поражения, и равна 0 на всех предыдущих шагах. Задача модели – много-много раз сыграть в шахматы и научиться выбирать действия, приводящие к победе.
Один подход к решению таких задач – научить модель по парам (S, A) предсказывать сумму будущих выигрышей. Тогда, оказавшись в состоянии S, можно выбрать действие A, для которого такая предсказанная сумма будет максимальна. Другой подход предлагает по состоянию S сразу предсказывать распределение над всеми возможными A, и выбирать действие из этого распределения. Оба подхода, как видите, сводят RL к SL.
На практике RL применяется мало где, кроме рекомендательных/рекламных систем и некоторых сложных задач генерации текста. Есть большие надежды, что методы RL помогут круто управлять беспилотниками, но, насколько я знаю, пока это не совсем так. А большая часть академических статей обкатывает методы RL на играх, как настольных, так и компьютерных. На Курсере есть курс Practical RL (coursera.org/learn/practical-rl), но, к сожалению, его название является оксюмороном. За весь курс рассматривается только одна прикладная задача (машинный перевод), а во всех остальных заданиях учат играть в игрушки. Впрочем, содержание и подача курса хороши, так что для общего развития я его рекомендовать могу.
Стоит ли вам изучать RL? Для решения прикладных задач – скорее всего, нет. Для удовольствия, тренировки мозгов, и развития собственной интуиции в области оптимальных решений, баланса exploration/exploitation, планирования и, прости господи, общего ИИ – да, вполне.
Делается это не от хорошей жизни. Гораздо проще и удобнее мир supervised learning (обучение с учителем), когда для обучения модели есть готовые пары (x, y), модель предсказывает y', и мы настраиваем её так, чтобы минимизировать различие между y и y'. Но такое возможно не всегда. Бывает, что правильные y получить сложно или дорого – например, надо рекомендовать пользователю контент, но мы не знаем, какие рекомендации являются верными, и можем ориентироваться только на лайки и дизлайки. А ещё бывает, что различие между y и y' невозможно выразить в виде дифференцируемой функции, а значит, сложно оптимизировать – например, если y и y' это тексты, а различие мы меряем как расстояние Левенштейна или BLEU. Для таких ситуаций и придумали RL.
В RL формализм такой: идёт «игра» в несколько шагов, на каждом шаге дано состояние S, модель выбирает действие A и получает за это награду R, и затем мы переходим к следующему шагу. Задача модели – выбирать действия так, чтобы максимизировать сумму наград за всю игру. Например, состояние S может описывать шахматную доску с расстановкой фигур, действие A может быть любым разрешённым шахматным ходом, а награда R на последнем шаге равна +1 в случае победы и -1 в случае поражения, и равна 0 на всех предыдущих шагах. Задача модели – много-много раз сыграть в шахматы и научиться выбирать действия, приводящие к победе.
Один подход к решению таких задач – научить модель по парам (S, A) предсказывать сумму будущих выигрышей. Тогда, оказавшись в состоянии S, можно выбрать действие A, для которого такая предсказанная сумма будет максимальна. Другой подход предлагает по состоянию S сразу предсказывать распределение над всеми возможными A, и выбирать действие из этого распределения. Оба подхода, как видите, сводят RL к SL.
На практике RL применяется мало где, кроме рекомендательных/рекламных систем и некоторых сложных задач генерации текста. Есть большие надежды, что методы RL помогут круто управлять беспилотниками, но, насколько я знаю, пока это не совсем так. А большая часть академических статей обкатывает методы RL на играх, как настольных, так и компьютерных. На Курсере есть курс Practical RL (coursera.org/learn/practical-rl), но, к сожалению, его название является оксюмороном. За весь курс рассматривается только одна прикладная задача (машинный перевод), а во всех остальных заданиях учат играть в игрушки. Впрочем, содержание и подача курса хороши, так что для общего развития я его рекомендовать могу.
Стоит ли вам изучать RL? Для решения прикладных задач – скорее всего, нет. Для удовольствия, тренировки мозгов, и развития собственной интуиции в области оптимальных решений, баланса exploration/exploitation, планирования и, прости господи, общего ИИ – да, вполне.
Яндекс продолжает набор на оплачиваемую летнюю стажировку по машинному обучению ⚡️
Важно: отлично проявившие себя стажеры получат шанс перейти в штат!
Машинное обучение и нейронные сети используются почти во всех ключевых продуктах Яндекса — от поиска и голосового помощника Алисы до беспилотных автомобилей. Вакансии для начинающих специалистов есть в разных командах, так что интересных задач хватит на всех. Стажёры улучшают алгоритмы машинного обучения для рекламных сервисов, обучают и внедряют классификаторы поисковых запросов, разрабатывают инструменты для обучения нейронных сетей. И это только несколько примеров.
Сколько длится: от 3 до 6 месяцев. Занятость от 20 до 40 часов в неделю.
Где: Москва.
Если вы из другого города — Яндекс оплатит дорогу и проживание в Москве.
Что нужно уметь: будьте готовы объяснить, как обучается логистическая регрессия, зачем нужны композиции или в чём заключается метод обратного распространения ошибки. Вам предстоит также написать код, реализующий тот или иной алгоритм. Тут пригодятся знания из классического курса по машинному обучению. Кроме того, Яндекс может предложить конкретную бизнес-задачу — нужно будет придумать метрики и объяснить, как правильно подготовить данные.
Как проходит отбор: необходимо выполнить тестовое задание, пройти два-три технических интервью, а затем выбрать команду.
Подавайте заявку до 31 мая: https://clck.ru/UUcRf
Важно: отлично проявившие себя стажеры получат шанс перейти в штат!
Машинное обучение и нейронные сети используются почти во всех ключевых продуктах Яндекса — от поиска и голосового помощника Алисы до беспилотных автомобилей. Вакансии для начинающих специалистов есть в разных командах, так что интересных задач хватит на всех. Стажёры улучшают алгоритмы машинного обучения для рекламных сервисов, обучают и внедряют классификаторы поисковых запросов, разрабатывают инструменты для обучения нейронных сетей. И это только несколько примеров.
Сколько длится: от 3 до 6 месяцев. Занятость от 20 до 40 часов в неделю.
Где: Москва.
Если вы из другого города — Яндекс оплатит дорогу и проживание в Москве.
Что нужно уметь: будьте готовы объяснить, как обучается логистическая регрессия, зачем нужны композиции или в чём заключается метод обратного распространения ошибки. Вам предстоит также написать код, реализующий тот или иной алгоритм. Тут пригодятся знания из классического курса по машинному обучению. Кроме того, Яндекс может предложить конкретную бизнес-задачу — нужно будет придумать метрики и объяснить, как правильно подготовить данные.
Как проходит отбор: необходимо выполнить тестовое задание, пройти два-три технических интервью, а затем выбрать команду.
Подавайте заявку до 31 мая: https://clck.ru/UUcRf
Forwarded from ̶с̶а̶м̶̶о̶изолента мёбиуса
На прошлой неделе прошла конференция Balto-Slavic NLP, на которой, в частности, презентовали несколько интересных работ по русскому языку.
Russian Paraphrasers: Paraphrase with Transformers. Авторы собрали датасет русских парафраз из субтитров, новостных заголовков и диалогов с чатботами (как набирали последние, непонятно). На таких парах дообучили GPT от Сбера и mT5 (T5 работает заметно лучше, чем GPT). При генерации разные варианты парафраз переранжируются по косинусной близости их эмбеддингов предложений. В результате получается около 60-70% хороших парафраз по оценкам авторов, и около 50% - по моим собственным. Пробовали применить парафразеры для аугментации обучающих выборок задач Russian superGLUE, но прироста качества почти не получилось. Нейросетки выложены на huggingface, а готовый пакет для перефразирования - на гитхаб. Моё мнение: результат неидеального качества, но это шаг в очень важном направлении, ибо хорошие парафразеры важны для кучи других задач NLU и NLG.
Creating an Aligned Russian Text Simplification Dataset from Language Learner Data. Авторы взяли книги для иностранцев на упрощённом русском языке и произвели выравнивание их абзацев с оригиналами книг на обычном русском. Получили параллельный корпус, где в более простой версии втрое меньше уникальных слов и вдвое короче предложения. Обучили на этом нейросетку для упрощения текстов, и вроде бы качество хорошее, но ни модель, ни корпус авторы пока не выложили, так что проверить сложно. Но если вам нужна симплификация для русского уже сейчас, берите дорожку с Диалога и модель Дани Анастасьева, занявшую первое место в этой дорожке.
Abusive Language Recognition in Russian. Авторы собрали датасет на 15К абзацев из Твиттера, субтитров к South park, и уже имеющегося датасета с Кэггла, и разметили его на предмет оскорбительности. На этом попробовали обучать разные модели, и tf-idf+SVM показал себя лучше, чем BERT. Видимо, токсичность на этом датасете сводится в основном к использованию плохих слов. Данные выложены, можно пользоваться. Впрочем, непонятно, насколько это лучше, чем данные из соревнования Одноклассников.
Detecting Inappropriate Messages on Sensitive Topics that Could Harm a Company’s Reputation - работа моих коллег по Сколтеху, в каком-то смысле дополняющая предыдущую. Задача - обезопасить диалоги с чатботом, научиться выделять в сообщениях потенциально опасные темы (от наркотиков и терроризма до боди шейминга и суицида), а также конкретные опасные предложения на эти темы. И в общем-то, это две разные задачи, поскольку не любое сообщение на опасную тему само по себе является опасным. Авторы собрали датасеты из двача и ответов mail.ru, пофильтровали эвристиками и разметили на Толоке. На этом обучили два BERTа, ими вполне можно пользоваться для фильтрации сообщений (скомбинировав их со стандартным фильтром на токсичную лексику).
Russian Paraphrasers: Paraphrase with Transformers. Авторы собрали датасет русских парафраз из субтитров, новостных заголовков и диалогов с чатботами (как набирали последние, непонятно). На таких парах дообучили GPT от Сбера и mT5 (T5 работает заметно лучше, чем GPT). При генерации разные варианты парафраз переранжируются по косинусной близости их эмбеддингов предложений. В результате получается около 60-70% хороших парафраз по оценкам авторов, и около 50% - по моим собственным. Пробовали применить парафразеры для аугментации обучающих выборок задач Russian superGLUE, но прироста качества почти не получилось. Нейросетки выложены на huggingface, а готовый пакет для перефразирования - на гитхаб. Моё мнение: результат неидеального качества, но это шаг в очень важном направлении, ибо хорошие парафразеры важны для кучи других задач NLU и NLG.
Creating an Aligned Russian Text Simplification Dataset from Language Learner Data. Авторы взяли книги для иностранцев на упрощённом русском языке и произвели выравнивание их абзацев с оригиналами книг на обычном русском. Получили параллельный корпус, где в более простой версии втрое меньше уникальных слов и вдвое короче предложения. Обучили на этом нейросетку для упрощения текстов, и вроде бы качество хорошее, но ни модель, ни корпус авторы пока не выложили, так что проверить сложно. Но если вам нужна симплификация для русского уже сейчас, берите дорожку с Диалога и модель Дани Анастасьева, занявшую первое место в этой дорожке.
Abusive Language Recognition in Russian. Авторы собрали датасет на 15К абзацев из Твиттера, субтитров к South park, и уже имеющегося датасета с Кэггла, и разметили его на предмет оскорбительности. На этом попробовали обучать разные модели, и tf-idf+SVM показал себя лучше, чем BERT. Видимо, токсичность на этом датасете сводится в основном к использованию плохих слов. Данные выложены, можно пользоваться. Впрочем, непонятно, насколько это лучше, чем данные из соревнования Одноклассников.
Detecting Inappropriate Messages on Sensitive Topics that Could Harm a Company’s Reputation - работа моих коллег по Сколтеху, в каком-то смысле дополняющая предыдущую. Задача - обезопасить диалоги с чатботом, научиться выделять в сообщениях потенциально опасные темы (от наркотиков и терроризма до боди шейминга и суицида), а также конкретные опасные предложения на эти темы. И в общем-то, это две разные задачи, поскольку не любое сообщение на опасную тему само по себе является опасным. Авторы собрали датасеты из двача и ответов mail.ru, пофильтровали эвристиками и разметили на Толоке. На этом обучили два BERTа, ими вполне можно пользоваться для фильтрации сообщений (скомбинировав их со стандартным фильтром на токсичную лексику).
Меня регулярно спрашивают, как запустить распознавание речи для русского языка бесплатно без смс?
Неплохой современный ответ - библиотека vosk.
Модель: https://alphacephei.com/vosk/models
Код: https://github.com/alphacep/vosk-api (я взял пример python/example/test_microphone.py)
Приятного распознавания!
Неплохой современный ответ - библиотека vosk.
Модель: https://alphacephei.com/vosk/models
Код: https://github.com/alphacep/vosk-api (я взял пример python/example/test_microphone.py)
Приятного распознавания!
Недавно наткнулся на клёвый курс по обработке аудио. Идея - объяснить математическое устройство звука и показать, как это устройство можно анализировать из python. На выходе слушатель будет способен извлекать из сырых wav-ок информативные фичи, которые можно и глазами разглядывать, и в нейросетку засовывать. Курс построен так, чтобы его могли понять музыканты, и объясняются все детали супер подробно.
По формату этот курс - ютубовский плейлист на насколько часов: https://www.youtube.com/playlist?list=PL-wATfeyAMNqIee7cH3q1bh4QJFAaeNv0. Пару мыслей из него я изложу ниже.
Вообще звук - это последовательность волн пониженного и повышенного давления воздуха. В формате wav он так и записывается - просто последовательность чисел, значений давления, с частотой (обычно) 44К чисел в секунду. Но анализировать его в таком виде не очень удобно.
Проще всего выделить в звуке громкость (это амплитуда колебаний) и тон (это их частота). Но звук, состоящий из единственной частоты (тупо одна синусоида) - это характерное "электронное" гудение, а "нормальные" звуки содержат кучу частот одновременно. В шумах и шепоте частоты намешаны хаотично, а в звуках голоса и "мелодичных" инструментов основные частоты пропорциональны друг другу. Соотношение различных частот в звуке - часть того, что мы называем тембром.
Чтобы понять, какие частоты вообще в звуке содержатся, его надо разложить в сумму синусоид. Если их фазы заранее известны, это можно сделать чем-то вроде обычной линейной регрессии. Если неизвестны, можно применить преобразование Фурье и вычислить фазы одновременно с коэффициентами амплитуды (если интересно, про преобразование Фурье могу написать подробнее отдельно). Разрезав звук на короткие кусочки и разложив каждый на частоты по отдельности, получаем спектрограмму - картинку, показывающую, как меняется громкость различных частот во времени. Спектрограмму можно скармливать нейросетям или анализировать глазами. При наличии опыта можно читать ее, как нотную запись, и даже различать буквы и слова.
А ещё по спектрограмме можно вычислять более сложные фичи. В типичном звуке голоса много частот, пропорциональных друг другу, а значит, его спектр (после логарифмирования) тоже будет периодическим, и значит, его можно _ещё раз_ разложить в сумму синусоид. Математики назвали такое представление cepstrum (типа spectrum наоборот), а его коэффициенты, MFCC, уже лет 50 являются едва ли не самыми информативными признаками для распознавания речи.
Про все эти фичи (и кучу других) подробно рассказано (и показано) в курсе. Если хотите сразу попробовать анализ звука самостоятельно, берите пакет librosa, и в бой! А если вам интересны какие-то детали, то пишите в комментарии, и я расскажу подробнее (:
По формату этот курс - ютубовский плейлист на насколько часов: https://www.youtube.com/playlist?list=PL-wATfeyAMNqIee7cH3q1bh4QJFAaeNv0. Пару мыслей из него я изложу ниже.
Вообще звук - это последовательность волн пониженного и повышенного давления воздуха. В формате wav он так и записывается - просто последовательность чисел, значений давления, с частотой (обычно) 44К чисел в секунду. Но анализировать его в таком виде не очень удобно.
Проще всего выделить в звуке громкость (это амплитуда колебаний) и тон (это их частота). Но звук, состоящий из единственной частоты (тупо одна синусоида) - это характерное "электронное" гудение, а "нормальные" звуки содержат кучу частот одновременно. В шумах и шепоте частоты намешаны хаотично, а в звуках голоса и "мелодичных" инструментов основные частоты пропорциональны друг другу. Соотношение различных частот в звуке - часть того, что мы называем тембром.
Чтобы понять, какие частоты вообще в звуке содержатся, его надо разложить в сумму синусоид. Если их фазы заранее известны, это можно сделать чем-то вроде обычной линейной регрессии. Если неизвестны, можно применить преобразование Фурье и вычислить фазы одновременно с коэффициентами амплитуды (если интересно, про преобразование Фурье могу написать подробнее отдельно). Разрезав звук на короткие кусочки и разложив каждый на частоты по отдельности, получаем спектрограмму - картинку, показывающую, как меняется громкость различных частот во времени. Спектрограмму можно скармливать нейросетям или анализировать глазами. При наличии опыта можно читать ее, как нотную запись, и даже различать буквы и слова.
А ещё по спектрограмме можно вычислять более сложные фичи. В типичном звуке голоса много частот, пропорциональных друг другу, а значит, его спектр (после логарифмирования) тоже будет периодическим, и значит, его можно _ещё раз_ разложить в сумму синусоид. Математики назвали такое представление cepstrum (типа spectrum наоборот), а его коэффициенты, MFCC, уже лет 50 являются едва ли не самыми информативными признаками для распознавания речи.
Про все эти фичи (и кучу других) подробно рассказано (и показано) в курсе. Если хотите сразу попробовать анализ звука самостоятельно, берите пакет librosa, и в бой! А если вам интересны какие-то детали, то пишите в комментарии, и я расскажу подробнее (:
Если вы хотите обучить seq2seq модель для текстов - например, переводчик, или парафразер, или болталку для чатбота, или модель для суммаризации - имеет смысл за основу взять большую предобученную text-to-text нейросетку. Одной из самых крутых таких моделей на сегодняшний день является Т5 от Гугла. Она состоит из двунаправленного энкодера (как BERT) и авторегрессионного декодера (как GPT), и потому идеально подходит для задач, где вход значительно отличается от выхода.
Модели T5, обученной специально под русский язык, нету, но есть мультиязычная mT5 на 101 язык. Правда, и по размеру эта модель весьма толста, причем более чем наполовину она состоит из эмбеддингов для токенов, которые в русском языке не встречаются никогда. И если вы хотите добучать mT5 только для русского языка (или, скажем, только для татарского), все неиспользуемые эмбеддинги можно выкинуть, сократив число параметров в модели в 2-3 раза без потери качества. Это я, собственно, на днях и сделал.
Статья с подробностями и кодом: https://towardsdatascience.com/how-to-adapt-a-multilingual-t5-model-for-a-single-language-b9f94f3d9c90
Small и base версии mT5 с русским словарём: https://huggingface.co/cointegrated
P.S. Пишите в комментах, на какую text-to-text задачу вам хотелось бы дообучить T5, и в каком-нибудь из ближайших постов я попробую её для вас приготовить.
Модели T5, обученной специально под русский язык, нету, но есть мультиязычная mT5 на 101 язык. Правда, и по размеру эта модель весьма толста, причем более чем наполовину она состоит из эмбеддингов для токенов, которые в русском языке не встречаются никогда. И если вы хотите добучать mT5 только для русского языка (или, скажем, только для татарского), все неиспользуемые эмбеддинги можно выкинуть, сократив число параметров в модели в 2-3 раза без потери качества. Это я, собственно, на днях и сделал.
Статья с подробностями и кодом: https://towardsdatascience.com/how-to-adapt-a-multilingual-t5-model-for-a-single-language-b9f94f3d9c90
Small и base версии mT5 с русским словарём: https://huggingface.co/cointegrated
P.S. Пишите в комментах, на какую text-to-text задачу вам хотелось бы дообучить T5, и в каком-нибудь из ближайших постов я попробую её для вас приготовить.
Towards Data Science
How to adapt a multilingual T5 model for a single language | Towards Data Science
Load embeddings only for the tokens from your language to reduce model size
Преобразование Фурье - крутой инструмент для обработки сигналов, помогающий распознавать речь, обрабатывать музыкальные записи, и лежащий в основе алгоритмов сжатия jpeg и mp3. И чтобы понять его логику, надо, внезапно, разобраться, как работает возведение в комплексную степень.
По сути, преобразование Фурье - это разложение функции в сумму синусоид с разными частотами и амплитудами. Но если вы откроете формулу, например, в Википедии, вы увидите, что в преобразовании Фурье используются не синусы и косинусы, а комплексная экспонента. Собственно, коэффициент Фурье для частоты w - это корреляция сигнала f(t) с функцией e^(-iwt). Почему оно так работает?
Магия в том, что в комплексной плоскости экспонента - это сумма синуса и косинуса: e^(ix)=cos(x) + i * sin(x) (формула Эйлера). Доказать эту странную связь можно, разложив правую и левую части в ряд Тейлора. А интуитивное доказательство можно прочитать на сайте Романа Парпалака: written.ru/articles/science/complex_exponent. Идея простая: можно подставить комплексный x в приближенную формулу e^x ≈ (1 + x/n)*n, и тогда возведение в комплексную степень сведётся к перемножению комплексных чисел. А мы знаем, что умножение комплексных чисел соответствует повороту их векторов в комплексной плоскости. Поэтому возведение в комплексную степень приводит к "вращению" чисел, а это вращение в проекции на реальную прямую выглядит как колебание.
Не знаю, почему, но меня эта связь между экспонентой и тригонометрическими функциями глубоко впечатляет.
По сути, преобразование Фурье - это разложение функции в сумму синусоид с разными частотами и амплитудами. Но если вы откроете формулу, например, в Википедии, вы увидите, что в преобразовании Фурье используются не синусы и косинусы, а комплексная экспонента. Собственно, коэффициент Фурье для частоты w - это корреляция сигнала f(t) с функцией e^(-iwt). Почему оно так работает?
Магия в том, что в комплексной плоскости экспонента - это сумма синуса и косинуса: e^(ix)=cos(x) + i * sin(x) (формула Эйлера). Доказать эту странную связь можно, разложив правую и левую части в ряд Тейлора. А интуитивное доказательство можно прочитать на сайте Романа Парпалака: written.ru/articles/science/complex_exponent. Идея простая: можно подставить комплексный x в приближенную формулу e^x ≈ (1 + x/n)*n, и тогда возведение в комплексную степень сведётся к перемножению комплексных чисел. А мы знаем, что умножение комплексных чисел соответствует повороту их векторов в комплексной плоскости. Поэтому возведение в комплексную степень приводит к "вращению" чисел, а это вращение в проекции на реальную прямую выглядит как колебание.
Не знаю, почему, но меня эта связь между экспонентой и тригонометрическими функциями глубоко впечатляет.
written.ru
Формула Эйлера и приближенные методы — Сайт Романа Парпалака
Объяснение связи между числами π, e и мнимой единицей на простых и наглядных примерах
Пока я пишу постики про трансформерные языковые модели и про преобразование Фурье, гугловские учёные соединили одно с другим. Эти больные ублюдки просто взяли BERT и заменили self-attention на два преобразования Фурье - и оказалось, что по качеству это близко к берту, а обучается и применяется в разы быстрее, особенно на длинных текстах.
Как это работает? Есть матрица эмбеддингов каждого слова - допустим, 100 слов, и у каждого эмбеддинг размера 512. Сначала делается fast Fourier transform (FFT) вдоль каждого эмбеддинга, т.е. мы вычисляем его спектр. Потом делается ещё одно FFT вдоль длины последовательности, т.е. спектры эмбеддингов токенов перемешиваются друг с другом, и переносятся из "frequency domain" снова в "time domain". Похоже на MFCC, только двумерное. И вот этот диковинный зверь работает по качеству сопоставимо с self attention. Кажется, авторы статьи сами не до конца понимают, почему так получается (:
https://arxiv.org/abs/2105.03824
Как это работает? Есть матрица эмбеддингов каждого слова - допустим, 100 слов, и у каждого эмбеддинг размера 512. Сначала делается fast Fourier transform (FFT) вдоль каждого эмбеддинга, т.е. мы вычисляем его спектр. Потом делается ещё одно FFT вдоль длины последовательности, т.е. спектры эмбеддингов токенов перемешиваются друг с другом, и переносятся из "frequency domain" снова в "time domain". Похоже на MFCC, только двумерное. И вот этот диковинный зверь работает по качеству сопоставимо с self attention. Кажется, авторы статьи сами не до конца понимают, почему так получается (:
https://arxiv.org/abs/2105.03824
На днях учёные из Фейсбука опубликовали статью про распознавание речи без учителя. То есть: чтобы обучить модель транскрибировать речь в текст, их методу нужно только много аудиозаписей речи (без аннотаций) и много текста, никак не привязанного к этой речи. И ещё тулза, конвертирующая текст в фонетическую запись. Закинув всё это в волшебный чёрный ящик, получают 94% верно распознанных фонем для английского (на уровне supervised SOTA 2017 года), и 85% - для малоресурсных языков типа татарского и киргизского. Как это работает?
Хитрость 1. Модель wav2vec 2.0, которая работает примерно как BERT для аудио. Запись нарезается на кусочки по 25 миллисекунд, одна модель (свёрточная) вычисляет их векторные представления, другая относит каждый кусочек к одной из возможных групп, а третья (трансформер) пытается предсказать выбранную группу по контексту (соседним кусочкам). Представления, выученные трансформером, оказываются полезными для дальнейшей расшифровки речи.
Хитрость 2. Переход к более длинным кусочкам. Над 25-миллисекундными сегментами делают обычную k-means кластеризацию, и соседние сегменты, оказавшиеся в одном кластере, склеивают в большие куски - потенциальные фонемы. Представление каждого куска считают как средний вектор всех кусочков в её составе, сжатый с помощь обычного же PCA в более короткий вектор.
Хитрость 3: GAN на фонемах. Одна свёрточная нейросеть (генератор) принимает на вход последовательность закодированных кусков аудио, а выдаёт последовательность фонем. Сначала она, конечно, не знает, какие фонемы выдавать, и предсказывает всякий трэш. Но вторая свёрточная сеть (дискриминатор) учится отличать этот трэш от нормальных текстов, сконвертированных в фонемы - и сначала делает это успешно. Но задача генератора - выдавать такие тексты, которые дискриминатор принимает за реальные, и обучаясь этому, он "нечаянно" начинает использовать свои входные данные (представления речи) и расшифровывать текст из них. Обучается эта сладкая парочка 12 часов на одной видеокарте.
Не знаю, велика ли прикладная ценность у этого подхода, но сам факт, что можно обучить модель для распознавания речи, не имея аннотаций - приколен.
Подробности можно почитать в постах FAIR: https://ai.facebook.com/blog/wav2vec-unsupervised-speech-recognition-without-supervision
https://ai.facebook.com/blog/wav2vec-20-learning-the-structure-of-speech-from-raw-audio
Хитрость 1. Модель wav2vec 2.0, которая работает примерно как BERT для аудио. Запись нарезается на кусочки по 25 миллисекунд, одна модель (свёрточная) вычисляет их векторные представления, другая относит каждый кусочек к одной из возможных групп, а третья (трансформер) пытается предсказать выбранную группу по контексту (соседним кусочкам). Представления, выученные трансформером, оказываются полезными для дальнейшей расшифровки речи.
Хитрость 2. Переход к более длинным кусочкам. Над 25-миллисекундными сегментами делают обычную k-means кластеризацию, и соседние сегменты, оказавшиеся в одном кластере, склеивают в большие куски - потенциальные фонемы. Представление каждого куска считают как средний вектор всех кусочков в её составе, сжатый с помощь обычного же PCA в более короткий вектор.
Хитрость 3: GAN на фонемах. Одна свёрточная нейросеть (генератор) принимает на вход последовательность закодированных кусков аудио, а выдаёт последовательность фонем. Сначала она, конечно, не знает, какие фонемы выдавать, и предсказывает всякий трэш. Но вторая свёрточная сеть (дискриминатор) учится отличать этот трэш от нормальных текстов, сконвертированных в фонемы - и сначала делает это успешно. Но задача генератора - выдавать такие тексты, которые дискриминатор принимает за реальные, и обучаясь этому, он "нечаянно" начинает использовать свои входные данные (представления речи) и расшифровывать текст из них. Обучается эта сладкая парочка 12 часов на одной видеокарте.
Не знаю, велика ли прикладная ценность у этого подхода, но сам факт, что можно обучить модель для распознавания речи, не имея аннотаций - приколен.
Подробности можно почитать в постах FAIR: https://ai.facebook.com/blog/wav2vec-unsupervised-speech-recognition-without-supervision
https://ai.facebook.com/blog/wav2vec-20-learning-the-structure-of-speech-from-raw-audio
Meta
wav2vec Unsupervised: Speech recognition without supervision
To enable speech recognition technology for many more languages spoken around the globe, Facebook AI is releasing wav2vec Unsupervised, a new method to train models with no supervision whatsoever. Wav2vec Unsupervised rivals the performance of the best supervised…
Важная новость: экономисты научились пользоваться компьютерами! И хотят 10 июня собраться в оффлайне и поговорить про компьютерные симуляции макроэкономических процессов. Поболтать придут: математик Савватеев (известен просветительскими видосами на ютубе), датасатанист Воронцов (если вы не прошли его вводный курс по машинке, жизни вы не знаете!), милые моему сердцу экономисты Алескеров и Пильник, и менее милый, но тоже родной Пеникас Генрих Йозович. И ещё куча крутых учёных мужей. И в этой компании вы можете выступить тоже!
Теперь формальнее. Инициативная группа Методологического проекта разработки и использования компьютерных симуляций в науке, промышленности и бизнесе (МИЭМ им. А.Н. Тихонова) совместно с Научно-учебной лабораторией моделирования и управления сложными системами (Факультет компьютерных наук) приглашает всех желающих принять участие в работе Круглого стола, посвященного проблематике компьютерных симуляций в исследованиях макроэкономических процессов.
К участию в работе Круглого стола приглашаются экономисты, инженеры, математики и философы-методологи научных экспериментов.
Желающим выступить с докладом (продолжительность не более 20 мин.), просьба до 05 июня выслать название и тезисы доклада отв. секретарю Хамдамову Тимуру на электронную почту: [email protected]
Количество мест в оффлайн и онлайн формате ограничены. Просьба
регистрироваться заранее по ссылке: https://fit-m.timepad.ru/event/1659290/
Дата и время начала:
10 июня, Четверг
10:30 –начало трансляции
Ссылка на публичную трансляцию:
https://www.youtube.com/watch?v=m45NCn6v5yE
Ссылка на страницу анонса Круглого стола: https://miem.hse.ru/fitm/announcements/473030549.html
Может быть не очень понятно, для чего вам нужны симуляции макроэкономических процессов. Но в такой хорошей компании - не всё ли равно?
Теперь формальнее. Инициативная группа Методологического проекта разработки и использования компьютерных симуляций в науке, промышленности и бизнесе (МИЭМ им. А.Н. Тихонова) совместно с Научно-учебной лабораторией моделирования и управления сложными системами (Факультет компьютерных наук) приглашает всех желающих принять участие в работе Круглого стола, посвященного проблематике компьютерных симуляций в исследованиях макроэкономических процессов.
К участию в работе Круглого стола приглашаются экономисты, инженеры, математики и философы-методологи научных экспериментов.
Желающим выступить с докладом (продолжительность не более 20 мин.), просьба до 05 июня выслать название и тезисы доклада отв. секретарю Хамдамову Тимуру на электронную почту: [email protected]
Количество мест в оффлайн и онлайн формате ограничены. Просьба
регистрироваться заранее по ссылке: https://fit-m.timepad.ru/event/1659290/
Дата и время начала:
10 июня, Четверг
10:30 –начало трансляции
Ссылка на публичную трансляцию:
https://www.youtube.com/watch?v=m45NCn6v5yE
Ссылка на страницу анонса Круглого стола: https://miem.hse.ru/fitm/announcements/473030549.html
Может быть не очень понятно, для чего вам нужны симуляции макроэкономических процессов. Но в такой хорошей компании - не всё ли равно?
fit-m.timepad.ru
Круглый стол "Компьютерные симуляции в исследовании макроэкономических процессов" / События на TimePad.ru
Инициативная группа Методологического проекта разработки и использования компьютерных симуляций в науке, промышленности и бизнесе (МИЭМ им. А.Н. Тихонова) совместно с Научно-учебной лабораторией моделирования и управления сложными системами (Факультет компьютерных…
Я как-то давно писал о дисбалансе классов в задачах ML (habr.com/ru/post/349078) и объяснял, почему чаще всего перебалансировать ничего не надо. А позавчера Александр Дьяконов написал примерно о том же, но более понятно и обоснованно, чем я 🙃. Рекомендую к прочтению: https://dyakonov.org/2021/05/27/imbalance/
А ещё у него приятный канал https://t.iss.one/smalldatascience
А ещё у него приятный канал https://t.iss.one/smalldatascience
Хабр
Нужно ли бояться несбалансированности классов?
В сети есть множество постов и ресурсов, которые учат нас бороться с несбалансированностью классов (class imbalance) в задаче классификации. Обычно они предлагают методы сэмплирования: искусственно...
Я тут недавно talkнул рассказ про предобученные языковые модели для русского языка. Получилось длинновато, но, кажется, содержательно. Приглашаю к просмотру: https://youtu.be/YHgOFKmx8qo
YouTube
Давид Дале - Предобученные модели для русского языка
Поговорим про особенности, ограничения и рецепты использования русского BERT. Обсудим опыт дистилляции BERT и сжатия fastText. Разберёмся, какая магия нужна, чтобы заставить GPT от Сбера генерировать нужный вам текст, и почему с T5 то же самое можно сделать…
На всякий случай напомню, что игра, начатая в марте, всё ещё в силе. Задавайте в комментариях вопросы по математике, машинке, анализу данных и смыслу жизни, а мы будем на них отвечать. А на темы самых интересных вопросов будут не менее интересные посты 🙃
Ещё в апреле поступил вопрос: как искать научные статьи, отвечающие на определенные вопросы, типа "в каком диапазоне бывает инкубационный период ковида у людей". На эту тему в прошлом году было соревнование на Кэггле: из огромного датасета статей нужно было отбирать релевантные, отвечающие на определённые вопросы по ковиду. Вот одна из задач этого соревнования: https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge/tasks?taskId=568
Сам я в нём не участвовал, но поделюсь чужим решением, которое, несмотря на свою простоту, вполне справляется с задачей. Оказывается, достаточно старинного пайплайна из информационного поиска: выделить информативные слова из запроса (в блокноте это сделали вручную, но есть и рабочие автоматические методы), нормализовать их (стемминг), и отсортировать статьи по встречаемости ключевых слов в абстракте. Дёшево и сердито.
Вот блокнот с решением: https://www.kaggle.com/mlconsult/transmission-incubation-and-environment-2-0
Сам я в нём не участвовал, но поделюсь чужим решением, которое, несмотря на свою простоту, вполне справляется с задачей. Оказывается, достаточно старинного пайплайна из информационного поиска: выделить информативные слова из запроса (в блокноте это сделали вручную, но есть и рабочие автоматические методы), нормализовать их (стемминг), и отсортировать статьи по встречаемости ключевых слов в абстракте. Дёшево и сердито.
Вот блокнот с решением: https://www.kaggle.com/mlconsult/transmission-incubation-and-environment-2-0
Kaggle
COVID-19 Open Research Dataset Challenge (CORD-19)
An AI challenge with AI2, CZI, MSR, Georgetown, NIH & The White House