Борис опять
15.9K subscribers
1.46K photos
72 videos
34 files
1.5K links
life = curiosity + irreducible noise

Whois: https://t.me/boris_again/3400

Лс: @btseytlin
Download Telegram
Я упоролся и решил изобрести новый статистический метод, но кажется у меня не получилось.

Типичная ситуация: у нас есть две колонки X и Y. Мы хотим знать есть ли истиная зависимость между Y от X. Однако в нашем распоряжении только выборка пар (x, y), которая может не отражать истиной зависимости.
1 картинка: вся совокупность
2: наш семпл
При этом зависимости может вообще не быть. А ещё может быть такое, что зависимости на самом деле нет, но нам попалась такая "удачный" выборка, что кажется, будто зависимость есть.

Чтобы принять какое-то решение, есть зависимость или нет, мы считаем корреляцию Пирсона между X и Y. Это число от -1 до 1, и чем оно ближе к 1 или -1, тем больше линейная зависимость. Корреляция около 1 примерно значит "всегда, когда X больше своего среднего на eps стандартных отклонений, соответствующий Y тоже больше своего среднего на eps стандартных отклонений". Однако для "удачной" выборки мы всё ещё можем получить большую корреляцию, просто потому что нам не повезло.

Поэтому мы так же считаем p-value: вероятность, с которой наблюдаемая корреляция могла возникнуть случайно. Мы наобум задаемся каким-то уровнем значимости alpha таким, что если p-value меньше этого уровня, мы принимаем, что наблюдаемая зависимость неслучайна. Часто используют alpha=0.05. Это примерно означает, что 5% раз мы будем принимать ложную зависимость за настоящую, и нам это ок.
Я подумал: пусть у нас есть датасет, мы посчитали на нём корреляцию и p-value, и прилетает новая точка (x, y).
Пересчитываем p-value и тогда:
* Если реальная зависимость есть, то новая точка скорее всего должна уменьшить p-value. Т.е. более вероятно, что новая точка будет указывать на имеющуюся зависимость.
* Если реальной зависимости нет, то скорее всего новая точка по крайней мере не уменьшит p-value.

Конечно нам может снова неповезти с конкретными точками, поэтому "скорее всего" тут означает "в среднем".
То есть для выборки с настоящей зависимостью добавление новых данных должно чаще подвтерждать эту зависимоть, а не размывать её.
На основе этого придумал такой метод:
1. Берем половину выборки, считаем на ней p-value для корреляции
2. Докидываем по 10 точек из второй половины, пересчитываем p-value
3. Получаем завивисомть p-value от количества данных в выборке
4. ???

Вот чё с этим делать я пока не придумал, но первая идея такая: если p-value в среднем уменьшается, то всё круто и делаем вывод о значимости. Чтобы понять уменьшается она или нет, возьмем производную в каждой точке, и посчитаем среднюю производную. Получается что-то типа среднего наклона зависимости p-value от количества данных
Раскочегарил jupyter notebook, нагеренил два датасета: чисто шум и слабая зависимость, взял мелкие семплы из обоих, проверил этот метод.

Реально кажется, будто p-value для настоящей зависимости (inf) падает с добавлением данных, а для шума растет. P-value на оси Y на графике
🔥1
Переформулировал эту штуку как задачу классификации: пусть нам на вход поступает семпл, а нам надо по нему ответить: он из датасета с реальной зависимостью (1) или из шума (0). Далее считаем точность

Запустил кросс-валидацию
Для моего велосипеда получлось так: 75% аккураси
А вот что получается, если не выделываться и просто по сеплу считать корреляцию и p-value: 90% аккураси, гораздо лучше велосипеда
В случае с методом "не выделываться" я предсказывал, что зависимость есть (1), просто если p-value меньше alpha.
В случае с новым методом, я предсказывал 1 если среднее/медианная производная p-value при добавлении данных меньше нуля (p-value умеьшается) и p-value меьнше alpha
Короче говоря, не сработало, но меня не оставляет ощущение, что что-то в этом есть, и что мне не хватает мозгов понять, что именно. Другой вариант в том, что возможно нет никакой информации в добавлении новых данных, потому что все точки независимы между собой. Или корреляция пирсона уже внутри себя учитывает эффект, который я пытаюсь найти.

Можете поиграться: https://colab.research.google.com/drive/1AhAoTAzhvpXyLkk-7xmkzdF7RW29HgyA?usp=sharing

Вопросы в зал:
* Что за велосипед я изобрел? Может кто-то более погруженный в статистику узнает в нём что-то давно изобретенное?
* Как можно это докрутить?
* Как можно это опровергнуть? Моё предположение, что с добавлением новых данных мы ожидаем уменьшения p-value только если зависимость есть, неверное?
👍1
В комментах описали всю суть ML рисерч
👍2
Интересно, как всё в науке работает задом-наперед.

Обычно: заказчик ставит задачу, согласует её с исполнителем, исполнитель делает, сдает работу.
В науке: несколько месяцев делаешь что-то, потом пытаешься найти журнал, куда это примут, подгоняешь структуру/результат под требования журнала.

Ещё пример: публикация в журнале стоит $500 - $2000. Если ты афилирован с университетом, то он платит за тебя. Однако процесс тоже задом-наперед: ты сначала платишь из своих денег, а потом подаешь запрос на возмещение. И тебе вполне могут не возместить.
Больше всего интересен этот вывод: у людей работающих с графами больше денег. Я удивлен, я думал графы в индустрии встречаются относительно редко
Обзор на научную статью, попробуем этот формат.

# The Benchmark Lottery, NeurIPS 2021

Минутка meta-science. Прогресс в ML делается во многом за счет бенчмарков. Это датасеты, на которых сообщество оценивает качество новых моделей. Самый известный это ImageNet. Ученые делают новые методы, проверяют их на одной и той же задаче, пытаются превзойти предыдущий лучший результат. Это работает, но авторы статьи утверждают, что текущий процесс не гаранитрует, что если новый метод показал себя лучше на бенчмарке, то он значительно лучше альтернатив. На результативность на бенчмарке влияет очень много параметров помимо качества модели, поэтому выбор новой SOTA напоминает лотерею.

На примере бенчмарка с 8 датасетами SuperGLUE, авторы показывают, что на разных датасетах схожие модели показывают себя как самые лучшие. Грубо говоря всегда можно найти такой датасет, на котором твоя модель будет самой лучшей. Авторы так же приводят примеры, когда при изменении метрик оценки качества, при тех же самых датасетах, ранкинг моделей целиком меняется. Помимо этого, если поправить ошибки разметки в известных бенчмарках, турнирная таблица моделей так же меняется. Эти примеры показывают, что победа модели на текущих бенчмарках не гарантирует, что она будет лучше на новых задачах.

Авторы приводят чрезвычайно интересную мысль: если ученые долгое время работают над одним бенчмарком, то они начинают подгонять новые модели под тестовые данные бенчмарка. Фишка в том, что делая новую модель ученый смотрит на результативность предыдущих подходов на тестовых данных. Таким образом он получает немного обратной связи от тестового сета и делает свою модель с учетом этой связи. Эффект незаметен на коротких промежутках времени, но накапливается если все работают над одним датасетом годами (привет ImageNet-у). Это можно наблюдать по появлению датасет-специфичных трюков, которые кочуют из статьи в статью после того, как они сработали, но не улучшают модель в целом. Я лично наблюдал такое в статьях по Deep Metric Learning: очередная SOTA состоит на 10% из модели 2007 года и на 90% из сотни хаков.
👍1
Самый хот тейк статьи: почему в ML не используют статистические тесты?

Кто-то обучил модель один раз и получил accuracy 95%. Ты обучил новую модель один раз и получил accuracy 96%. Откуда ты знаешь, что улучшение твоей модели статистически значимо и не является случайной ошибкой?

Авторы предлагают рассматривать оценки качества как случайные семплы и использовать статистические тесты.

Смейтесь над DS-ами: они делают статистические модели, но не используют статистику для их проверки. Лично я сейчас испытываю испанский стыд.
👍1
Что с этим делать?
Предложения авторов:
1. Договориться между собой и установить гайдлайны, как делать бенчмарки, как их использовать, как ревьюить статьи (а может не надо отклонять статьи по причине "не SOTA на одном датасете"?)
2. Не делать один трейн-тест сплит в банчмарках, а делать кросс-валидацию. Ну камон ребят, это же очевидно.
3. Делать бенчмарки со статистическими тестами значимости.
4. Тестировать на нескольких датасетах.
5. Вместо того, чтобы годами оверфититься под один датасет, можно использовать контесты, где задача остается одной и той же, но датасет меняется. В качестве примера приводится конференция WMT, где каждый год проводится соревнование по машинному переводу.