Вы же помните, что этот канал создан, как карго-культ pola.rs?
Так вот, к поларсу пришла Nvidia и предложила им дать своих инженеров, чтобы они впиливали RAPIDS в polars.
Ставлю на то, что команда рапидс будет отставать, но это все равно мощный шаг к признанию полярных медведей.
Думайте. Подписаться.
Так вот, к поларсу пришла Nvidia и предложила им дать своих инженеров, чтобы они впиливали RAPIDS в polars.
Ставлю на то, что команда рапидс будет отставать, но это все равно мощный шаг к признанию полярных медведей.
Думайте. Подписаться.
pola.rs
Accelerating Polars DataFrames
DataFrames for the new era
Снимок экрана 2024-04-09 в 15.57.02.png
66.1 KB
HMS- Harmful Brain Activity Classification закончился и значит в ближайшем будущем будем разбирать топовые решения из него. Соревнование оказалось дико конкурентным, 2800+ команд. Нам удалось залезть в top 2%, но всегда же интересно, что там придумали гении из золота?
Разбор enefit кстати отменяется: там скучно и нас удалили с ЛБ по неизвестным причинам. Скорее всего кернел умер от ошибки в kaggl forecasting API.
Разбор enefit кстати отменяется: там скучно и нас удалили с ЛБ по неизвестным причинам. Скорее всего кернел умер от ошибки в kaggl forecasting API.
#HMS
HMS - Harmful Brain Activity Classification
Последнее время решал медицину.
Данные:
Уважаемые люди из Harvard Medical School (на секундочку лидер рейтингов лучших ресерчерских медицинских школ) собрали нам датасет ЭЭГ и кардиограмм своих пациентов и даже разметили их.
У данных есть иерархическая структура:
Для одного и того же пациента могут быть записаны несколько ЭЭГ произвольной длины.
Из этих ЭЭГ могут быть выбраны участки по 50 секунд, из которых разметчиков попросили оценить центральные 10 секунд. Разметчиков для одного такого семпла обычно более одного (может быть больше двадцати)
Каждый такой семпл разметчиков попросили отнести к одному из 6 классов:
1. Судороги (SZ)
2. Генерализованные эпилептические разряды (LPD)
3. Латеризованные эпилептические разряды (GPD)
4. Латерализованнная ритмическая дельта-активность (LRDA)
5. Генерализованная ритмическая дельта-активность (GRDA)
6. Прочее
Как метрику выбрали KL-div. В силу того, что по разным семплам могло пройтись несколько разметчиков, голоса разметчиков нормировали на число проверяющих и именно это великолепие стали рассматривать как вероятности, которые нам надо учить.
По ощущениям- там еще и качество разметчиков страдало. Там, где перекрестной проверки больше поведение сильно отличалось от участков с малой перекрестностью. Это прямо на ЭЭГ видно- идут пару минут с 1-3 голосами и преобладает класс otherпо-русски назовем его "я не знаю" , а за ним сразу идет уверенное SZ от 16 из 17 размечающих. Странное совпадение, но пока организаторы не признались- не правда.
В этот раз хочу пройтись по большему числу топовых решений, потому что сил в сореву было какое-то невыносимое количество потрачено.
Как решать будете?
Думайте. Подписаться
HMS - Harmful Brain Activity Classification
Последнее время решал медицину.
Данные:
Уважаемые люди из Harvard Medical School (на секундочку лидер рейтингов лучших ресерчерских медицинских школ) собрали нам датасет ЭЭГ и кардиограмм своих пациентов и даже разметили их.
У данных есть иерархическая структура:
Для одного и того же пациента могут быть записаны несколько ЭЭГ произвольной длины.
Из этих ЭЭГ могут быть выбраны участки по 50 секунд, из которых разметчиков попросили оценить центральные 10 секунд. Разметчиков для одного такого семпла обычно более одного (может быть больше двадцати)
Каждый такой семпл разметчиков попросили отнести к одному из 6 классов:
1. Судороги (SZ)
2. Генерализованные эпилептические разряды (LPD)
3. Латеризованные эпилептические разряды (GPD)
4. Латерализованнная ритмическая дельта-активность (LRDA)
5. Генерализованная ритмическая дельта-активность (GRDA)
6. Прочее
Как метрику выбрали KL-div. В силу того, что по разным семплам могло пройтись несколько разметчиков, голоса разметчиков нормировали на число проверяющих и именно это великолепие стали рассматривать как вероятности, которые нам надо учить.
По ощущениям- там еще и качество разметчиков страдало. Там, где перекрестной проверки больше поведение сильно отличалось от участков с малой перекрестностью. Это прямо на ЭЭГ видно- идут пару минут с 1-3 голосами и преобладает класс other
В этот раз хочу пройтись по большему числу топовых решений, потому что сил в сореву было какое-то невыносимое количество потрачено.
Как решать будете?
Думайте. Подписаться
#HMS
Разберем 15 топовых мест еще и потому, что в сореве ровно столько золота
Аккуратно, на картинке ошибка. Там не 10 мин, а 10 сек спектрограммы
15 место:
Использовали три бекбона, которые мерджили в одну мегамодель.Обязательно попорбую в следующий раз, судя по всему это крайне продуктивный для каггла подход
Первая модель:
Вариация на тему Wavenet1D (Первая дополнительная картинка)
Добавили в активации еще и Mish.
Выражается как f(x) = x * tang(softplus(x))
Статью пока не читал, но судя по графикам она еще и не монотонная. Как учится в активациях немонотонность стоит обдумать. Пишите в комментах, почему это вообще может быть полезно.
Вторая модель: построена на Short Term Furier Transform
Брали фурье трансформ и рестакали его из чередования в конкатенации. Почему-то работало, сами не знают почему.
Третьяя модель: стандартная сетка для вижна, которую не сильно измывались. Даже не описывают конкретную модель. Подозреваю там был стак из кучи бекбонов.
Кстати в этой сореве FP16 ломал зачастую сетки и тренировка часто либо деградировала, либо вообще скатывалась в Nanы. Получается запретили включать FP16.
Разберем 15 топовых мест еще и потому, что в сореве ровно столько золота
15 место:
Использовали три бекбона, которые мерджили в одну мегамодель.
Первая модель:
Вариация на тему Wavenet1D (Первая дополнительная картинка)
Добавили в активации еще и Mish.
Выражается как f(x) = x * tang(softplus(x))
Статью пока не читал, но судя по графикам она еще и не монотонная. Как учится в активациях немонотонность стоит обдумать. Пишите в комментах, почему это вообще может быть полезно.
Вторая модель: построена на Short Term Furier Transform
Брали фурье трансформ и рестакали его из чередования в конкатенации. Почему-то работало, сами не знают почему.
Третьяя модель: стандартная сетка для вижна, которую не сильно измывались. Даже не описывают конкретную модель. Подозреваю там был стак из кучи бекбонов.
Кстати в этой сореве FP16 ломал зачастую сетки и тренировка часто либо деградировала, либо вообще скатывалась в Nanы. Получается запретили включать FP16.
Kaggle
HMS - Harmful Brain Activity Classification
Classify seizures and other patterns of harmful brain activity in critically ill patients
Для обучения всего этого зоопарка использовали набор доменных аугментаций:
1. Флипы электродов правых и левых долей
2. Флипы электродов передних и задних долей
3. CropCat. Примерная идея на картинке. В принципе засчитываем за угаданный MixUp в комментах, только не с весами, а по времени.
4. Шум на входной сигнал
Из данных использовали только семплы, в которых больше 10 голосов. И никакого псевдолейблинга :(
1. Флипы электродов правых и левых долей
2. Флипы электродов передних и задних долей
3. CropCat. Примерная идея на картинке. В принципе засчитываем за угаданный MixUp в комментах, только не с весами, а по времени.
4. Шум на входной сигнал
Из данных использовали только семплы, в которых больше 10 голосов. И никакого псевдолейблинга :(
#HMS
Пост коротких идей из минорых мест
14 место:
1. Использовали двухстадийное обучение(это все использовали). . В соревновании быстро заметили, что обучаться надо сначала на всех данных, а потом файнтюнить модель семплах, на которые посмотрели много экспертов, потому что в паблик/прайвет тесте были именно такие семплы. Но эти парни решили, что вместо того, чтобы выкидывать низкокачественные семплы на втором этапе, их можно запсевдолейблить той же моделью с первого этапа и уже с меньшим весом чем у нормальных данных файнтюниться еще и на этих псевдолейблах, а не только на высококачественных.
2. Прочитали все дискашены и нашли в них статью одного из авторов соревнования. Там нашли похожее на соревание исследование, где автор использовал довольно специфичную модель валидации. Краткая суть: один из авторов соревнования использовал разнородных по обученности экспертов и некоторые из них не были до конца обучены на работу с ЭЭГ, поэтому значимо чаще предсказывали 'я не знаю', что отправлялось в Other. При этом они могли попадать в 'высосокачественные семплы' и портить распределение. Поэтому они разбили трейн как в статье и выкинули семплы, от которых должен был исходить шум. А еще тут работало простое советское 'домножать вероятность класса Other на констатнту'. Читайте статьи авторов соревы, они может и не специально, но подсказывают дизайном вам правильные решения
3. Использовали вместо STFTshort-time Fourier transform другое преобразование сырых ээг: CWT continuous wavelet transform
4. Ну и дальше как все использовали сетки для CV: resntet/effnet/etc
12 место:
1. Заранее поняли, что надо учиться на высококачественных семплах, и использовали семплы низкого качества только для псевдолейблинга
2. Использовали случаный шум к оффсету на этапе TTA, что давало примерно ~0.01. Это много, между 12 и 18 местом примерно такой разрыв. Т.е. это то, что явно мешало на медальку
3. Использовали для стакинга hill climbing. Как-нибудь про нее отдельно напишу, тоже важная техника для сорев
Пост коротких идей из минорых мест
14 место:
1. Использовали двухстадийное обучение
2. Прочитали все дискашены и нашли в них статью одного из авторов соревнования. Там нашли похожее на соревание исследование, где автор использовал довольно специфичную модель валидации. Краткая суть: один из авторов соревнования использовал разнородных по обученности экспертов и некоторые из них не были до конца обучены на работу с ЭЭГ, поэтому значимо чаще предсказывали 'я не знаю', что отправлялось в Other. При этом они могли попадать в 'высосокачественные семплы' и портить распределение. Поэтому они разбили трейн как в статье и выкинули семплы, от которых должен был исходить шум. А еще тут работало простое советское 'домножать вероятность класса Other на констатнту'. Читайте статьи авторов соревы, они может и не специально, но подсказывают дизайном вам правильные решения
3. Использовали вместо STFT
4. Ну и дальше как все использовали сетки для CV: resntet/effnet/etc
12 место:
1. Заранее поняли, что надо учиться на высококачественных семплах, и использовали семплы низкого качества только для псевдолейблинга
2. Использовали случаный шум к оффсету на этапе TTA, что давало примерно ~0.01. Это много, между 12 и 18 местом примерно такой разрыв. Т.е. это то, что явно мешало на медальку
3. Использовали для стакинга hill climbing. Как-нибудь про нее отдельно напишу, тоже важная техника для сорев
#HMS
Пост коротких идей из минорых мест 2
11 место:
1. Использовали как инпут зоопарк модальностей:
STFT
MFCCMel-frequency cepstral coefficients
LFCClinear-frequency cepstrum coefficients
RMS
2. Усредняли KL-div loss по всем классам и лоссы по каждому классу индивидуально. Т.е. считали 6 One-Versus-Other лоссов дополнительно и все вместе усредняли
3. Стакнули на OOF модель второго уровня, которая давала буст 0.01 относительно простого усреднения. Всего было 16 базовых архитектур, каждая по 5 фолдов.Думайте, подписаться
10 место:
1. Взял все 19 каналов и просто нарисовал их амплитуду
2. Приправил картинками спектрограмм для вязкости
3. Добавил туда визуализацию STFT и других преобразованийчтобы обои точно отклеивались
4. Пожарил 20 моделей на своей гпу
5. Сказал "оххх, золото мое золото"
Нет вы просто зайдите по ссылке и посмотрите на его картинку входную, я не шучу.
Образ мышления грандмастеров сводит иногда с ума, но я кажется улавливаю. Следует ли из деепричастия причастие- вопрос открытый
Пост коротких идей из минорых мест 2
11 место:
1. Использовали как инпут зоопарк модальностей:
STFT
MFCC
LFCC
RMS
2. Усредняли KL-div loss по всем классам и лоссы по каждому классу индивидуально. Т.е. считали 6 One-Versus-Other лоссов дополнительно и все вместе усредняли
3. Стакнули на OOF модель второго уровня, которая давала буст 0.01 относительно простого усреднения. Всего было 16 базовых архитектур, каждая по 5 фолдов.
10 место:
1. Взял все 19 каналов и просто нарисовал их амплитуду
2. Приправил картинками спектрограмм для вязкости
3. Добавил туда визуализацию STFT и других преобразований
4. Пожарил 20 моделей на своей гпу
5. Сказал "оххх, золото мое золото"
Нет вы просто зайдите по ссылке и посмотрите на его картинку входную, я не шучу.
Образ мышления грандмастеров сводит иногда с ума, но я кажется улавливаю. Следует ли из деепричастия причастие- вопрос открытый
Kaggle
HMS - Harmful Brain Activity Classification
Classify seizures and other patterns of harmful brain activity in critically ill patients
#HMS
9 место:
1. Использовали двух и трехмодальные системы. На вход сырой ЭЭГ, ванильные спектрограммы от каггла и спектрограммы Криса Дейота (о его решении следующий пост).
2. Учили мультихед, который предсказывал конкретную запись и предсказывали, будет ли в этой записи Nan. Это скорее такой auxiliary loss, чтобы модель лучше генерализовывала данные и училась понимать саму доменную область, чем улучшала понимание задачи. Подробнее можно тут почитать: тык
3. Чтобы стакнуть свою кучу моделей использовали L-BFGS-B, а там 150 моделей было примерно.
4. Использовали аугментацию таргетов. Интуиция такая: раз у нас есть 15 разметчиков с одним мнением, то может нам в качестве аугментации использовать только часть из них?
Ситуация с таргетом не должна поменяться критически, но разнообразие это для модели внесет. Был вектор таргета
[1, 0, 0, 0, 14]
Мы можем «забыть одного размечающего» и из него получить
[0, 0, 0, 0, 14] и [1, 0, 0, 0, 13]
Делали так только для семплов, у которых число голосов было больше 10.У меня к сжоалению этот трюк не завелся
5. Использовали веса семплов равные числу голосов размечающих. Когда 3 человека говорят, что это судороги, это в тре раза надежнее, чем один человек.
9 место:
1. Использовали двух и трехмодальные системы. На вход сырой ЭЭГ, ванильные спектрограммы от каггла и спектрограммы Криса Дейота (о его решении следующий пост).
2. Учили мультихед, который предсказывал конкретную запись и предсказывали, будет ли в этой записи Nan. Это скорее такой auxiliary loss, чтобы модель лучше генерализовывала данные и училась понимать саму доменную область, чем улучшала понимание задачи. Подробнее можно тут почитать: тык
3. Чтобы стакнуть свою кучу моделей использовали L-BFGS-B, а там 150 моделей было примерно.
4. Использовали аугментацию таргетов. Интуиция такая: раз у нас есть 15 разметчиков с одним мнением, то может нам в качестве аугментации использовать только часть из них?
Ситуация с таргетом не должна поменяться критически, но разнообразие это для модели внесет. Был вектор таргета
[1, 0, 0, 0, 14]
Мы можем «забыть одного размечающего» и из него получить
[0, 0, 0, 0, 14] и [1, 0, 0, 0, 13]
Делали так только для семплов, у которых число голосов было больше 10.
5. Использовали веса семплов равные числу голосов размечающих. Когда 3 человека говорят, что это судороги, это в тре раза надежнее, чем один человек.
Cross Validated
What is auxiliary loss as mentioned in PSPNet paper
What is auxiliary loss that is mentioned in the PSPNet(Pyramid Scene Parsing Network) paper link ?
I'm quoting the part of the paper down below
An example of our deeply supervised ResNet101 [13]
I'm quoting the part of the paper down below
An example of our deeply supervised ResNet101 [13]
#HMS #акакстакать
Поступил вопрос про пункт 3 и заявление, что там ничего не ясно. А там с одной стороны классика, с другой не совсем интуитивно:
Допустим у нас есть 150 моделей на одинаковых OOF и мы по ним хотим построить какой-то ансамбль, который будет лучше каждой индивидуальной.
1. Возьмем оптимизатор L-BFGS-B (знаю, в подписчиках есть фанаты) и на OOF построим оптимум заданной лосс функции. Это для нас будет линейная комбинация с положительными весами. Ну например [0.0001, 0.95, 0.003 ..., 0.0]
2. У какой-то доли моделей веса будут близкими к нулю, потому что они не слишком хорошо перформят относительно прочих. Так давайте установим трешхолд, например 0.01, и все модели с весом меньше этого из списка выкинем и пользоваться ими не будем
3. На оставшихся повторим процедуру и будем делать до тех пор, пока у всех моделей веса не будут больше, чем заданный наперед трешхолд
4. ...
5. Profit! У нас остались только уверенные и разнообразные модели
В этом смысле прием похож на совсем уж античную классику: отобрать фичи с помощью L1-регрессии и на выбраных фичах обучить уже обычную линейную/гребневую регрессию
Поступил вопрос про пункт 3 и заявление, что там ничего не ясно. А там с одной стороны классика, с другой не совсем интуитивно:
Допустим у нас есть 150 моделей на одинаковых OOF и мы по ним хотим построить какой-то ансамбль, который будет лучше каждой индивидуальной.
1. Возьмем оптимизатор L-BFGS-B (знаю, в подписчиках есть фанаты) и на OOF построим оптимум заданной лосс функции. Это для нас будет линейная комбинация с положительными весами. Ну например [0.0001, 0.95, 0.003 ..., 0.0]
2. У какой-то доли моделей веса будут близкими к нулю, потому что они не слишком хорошо перформят относительно прочих. Так давайте установим трешхолд, например 0.01, и все модели с весом меньше этого из списка выкинем и пользоваться ими не будем
3. На оставшихся повторим процедуру и будем делать до тех пор, пока у всех моделей веса не будут больше, чем заданный наперед трешхолд
4. ...
5. Profit! У нас остались только уверенные и разнообразные модели
В этом смысле прием похож на совсем уж античную классику: отобрать фичи с помощью L1-регрессии и на выбраных фичах обучить уже обычную линейную/гребневую регрессию
#HMS
8 место, мастер-класс от Криса Дейота:
Самое первое, на чем акцентирует внимание Крисс: нам в соревновании не надо поставить диагноз, нам надо угадать мнения разметчиков. Казалось бы так всегда, но конкретно в этом соревновании из-за разнородности разметчиков это решало сильнее, чем обычно.
Крис прочитал статью организаторов и выяснил, что аннотаторов было всего 119 в трейне и 20 в тесте. А еще он вычитал, что судороги в трейне предсказывали в 18.8% случаев, а в тесте- 1.5%. И вот именно вычистку этих самых малоушмных экспертов из теста и делал хак с разделением трейна
Он так же посмотрел на то, как проходил процесс разметки данных и увидел там, что разметка проходила и по спектрограммам и по обычным графикам формы волны одновременно. Значит это и надо подавать как инпут моделей.
И того у него было три модели:
1. По сырым сигналам, a-la WaveNet
2. Трансформемер по спектрограммам
3. Трансформемер по plt.plot форм волныВ СМЫСЛЕ ОН ВЗЯЛ И ИСПОЛЬЗОВАЛ МАТПЛОТЛИБ ДЛЯ ИНПУТА, НУ ГЕНИЙ
Используя уже эти три модели он псевдолейблил кусочки трейна, в которых было меньше 10 размечающих.
Ну и все, 0.29 на приватном лидерборде.
Так же Крис заботливо выделил для нас лайфхаки:
1. Все сырые данные обработал с помощью библиотеки MNE. Она как раз специализированна для работы с ЭЭГ
2. Для перфоманса можно было все сырые ЭЭГ загрузить в RAM и формировать спектрограмы используя torchaudio.transforms
3. На каждой эпохе показывать одну ЭЭГ один раз, но семплировать каждый раз случайно.
4. Пользоваться его гайдом по подбору ЛР для модели
Скажу, что читать райтапы Криса- сплошной кайф. Однажды он прочитает моей райтап и скажет то же самое
8 место, мастер-класс от Криса Дейота:
Самое первое, на чем акцентирует внимание Крисс: нам в соревновании не надо поставить диагноз, нам надо угадать мнения разметчиков. Казалось бы так всегда, но конкретно в этом соревновании из-за разнородности разметчиков это решало сильнее, чем обычно.
Крис прочитал статью организаторов и выяснил, что аннотаторов было всего 119 в трейне и 20 в тесте. А еще он вычитал, что судороги в трейне предсказывали в 18.8% случаев, а в тесте- 1.5%. И вот именно вычистку этих самых малоушмных экспертов из теста и делал хак с разделением трейна
train.loc[train.vote_count>=10]
Он так же посмотрел на то, как проходил процесс разметки данных и увидел там, что разметка проходила и по спектрограммам и по обычным графикам формы волны одновременно. Значит это и надо подавать как инпут моделей.
И того у него было три модели:
1. По сырым сигналам, a-la WaveNet
2. Трансформемер по спектрограммам
3. Трансформемер по plt.plot форм волны
Используя уже эти три модели он псевдолейблил кусочки трейна, в которых было меньше 10 размечающих.
Ну и все, 0.29 на приватном лидерборде.
Так же Крис заботливо выделил для нас лайфхаки:
1. Все сырые данные обработал с помощью библиотеки MNE. Она как раз специализированна для работы с ЭЭГ
2. Для перфоманса можно было все сырые ЭЭГ загрузить в RAM и формировать спектрограмы используя torchaudio.transforms
3. На каждой эпохе показывать одну ЭЭГ один раз, но семплировать каждый раз случайно.
4. Пользоваться его гайдом по подбору ЛР для модели
Скажу, что читать райтапы Криса- сплошной кайф. Однажды он прочитает моей райтап и скажет то же самое
13% НДФЛ - лютейшая нищета на грани выживания
15% НДФЛ - обычная нищета, ипотека на 20 лет, кино и рестораны раз в неделю, еда из ашана
18% НДФЛ - нормальная жизнь, ипотека на 10 лет, машина среднего класса (B, C)
20% НДФЛ - хорошая жизнь, ипотека на 5 лет, путешествия
22% НДФЛ - достаточно хорошая жизнь, ипотека на 2 года, машина бизнес класса, девушка, возможность говорить с инженерами из реально топового квантиля
15% НДФЛ - обычная нищета, ипотека на 20 лет, кино и рестораны раз в неделю, еда из ашана
18% НДФЛ - нормальная жизнь, ипотека на 10 лет, машина среднего класса (B, C)
20% НДФЛ - хорошая жизнь, ипотека на 5 лет, путешествия
22% НДФЛ - достаточно хорошая жизнь, ипотека на 2 года, машина бизнес класса, девушка, возможность говорить с инженерами из реально топового квантиля
Forwarded from Вадим Новосёлов | Удалёнка 🏝
Тут мой старый знакомый, Александр Червов, автор sberloga, делает какой-то большой научный проект по нейронкам, которые собирают кубик рубика
👨🔬 Проект
В общем, ему нужны волонтёры для написания моделей и проведения экспериментов. Взамен вы получите опыт написания реальных RL, DL, ML моделей под наставничеством Александра. Участникам проекта нужно будет проводить эксперименты и создавать модели аналогичные AlphaGo для теории групп, например для группы кубика Рубика.
📜 Что вам это даст
- Реальный опыт работы с RL, DL, ML
- Ценный пункт в вашем резюме, который подчеркнет ваш профессионализм и знания в области
- Инсайты можно будет опубликовать в научной статье для научного журнала
💌 Пишите Саше Червову
👨🔬 Проект
В общем, ему нужны волонтёры для написания моделей и проведения экспериментов. Взамен вы получите опыт написания реальных RL, DL, ML моделей под наставничеством Александра. Участникам проекта нужно будет проводить эксперименты и создавать модели аналогичные AlphaGo для теории групп, например для группы кубика Рубика.
📜 Что вам это даст
- Реальный опыт работы с RL, DL, ML
- Ценный пункт в вашем резюме, который подчеркнет ваш профессионализм и знания в области
- Инсайты можно будет опубликовать в научной статье для научного журнала
💌 Пишите Саше Червову
Я там тоже альтрузимом занимаюсь, и вас советую присоединиться. Однажды неизбежно надо будет диссер защищать
FOUND 1 #TODO
В португальском/испанском todo означается 'все' и является стоп-словом. Для пайчарма конечно это тоже стоп-слово и признак халутры