Forwarded from Insider X5
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#cv #ml
Оказывается, не вся информация хорошо считывается с дисплеев. Не так давно узнал, что для обычных экранов, типа весов, бензоколонок и электронных часов есть отдельная задача распознавания.
Такой тип отображения на экранах называется seven segment digits. То есть, у нас есть 7 полосок: 3 вверху, 3 внизу и еще одна посередине.
И для этой задачки есть отдельные модели, которые улучшают распознавание (проверено не себе, решения из коробки с обычным распознаванием нещадно тупили, хотя, казалось бы, такая простая задачка). Напрмиер, в PaddleOCR (которые, видимо, должны теперь мне миска рис за рекламу) есть модели DBNet для детекции и PARSeq для распознавания. Как только мы решили применить эти модели, качество распознавания сразу подросло.
Какой же вывод из этой истории? Даже если что-то кажется очень простым или банальным, то всегда случиться так, что мы попадем не corner case, для которого нужно будет искать специфичное решение. Второй вывод - попробуйте получше порыться в вашей "черной коробке" (если используете коробочное решение). Как знать, возможно в ней есть то, о чем вы просто не знали.
P.S. Пара статей по теме:
Detecting and recognizing seven segment digits
using a deep learning approach
Real-Time Seven Segment Display Detection and
Recognition Online System using CNN
Оказывается, не вся информация хорошо считывается с дисплеев. Не так давно узнал, что для обычных экранов, типа весов, бензоколонок и электронных часов есть отдельная задача распознавания.
Такой тип отображения на экранах называется seven segment digits. То есть, у нас есть 7 полосок: 3 вверху, 3 внизу и еще одна посередине.
И для этой задачки есть отдельные модели, которые улучшают распознавание (проверено не себе, решения из коробки с обычным распознаванием нещадно тупили, хотя, казалось бы, такая простая задачка). Напрмиер, в PaddleOCR (которые, видимо, должны теперь мне миска рис за рекламу) есть модели DBNet для детекции и PARSeq для распознавания. Как только мы решили применить эти модели, качество распознавания сразу подросло.
Какой же вывод из этой истории? Даже если что-то кажется очень простым или банальным, то всегда случиться так, что мы попадем не corner case, для которого нужно будет искать специфичное решение. Второй вывод - попробуйте получше порыться в вашей "черной коробке" (если используете коробочное решение). Как знать, возможно в ней есть то, о чем вы просто не знали.
P.S. Пара статей по теме:
Detecting and recognizing seven segment digits
using a deep learning approach
Real-Time Seven Segment Display Detection and
Recognition Online System using CNN
Оп, новый опрос о зарплатах в этом вашем data science. Интересно, какие выйдут результаты?
Forwarded from Нескучный Data Science (Евгений Смирнов)
💸 Сколько ты зарабатываешь на Data Science?
👉 Пройди опрос сейчас, не откладывай на потом❗️
🤔 Вы можете примерно оценить вилку на вашей позиции благодаря вакансиям из каналов, где они публикуются. Тем не менее вилки довольно широкие и одни работодатели недоплачивают или платят строго по низу вилки, другие наоборот переплачивают и выходят за ее пределы. Вам в свою очередь нужно на собеседовании или при повышении назвать одно число, ровно столько вам будет платить довольно продолжительный период времени.
📊 Запускаю опрос, который в будущем поможет подписчикам сопоставить свой набор навыков с рынком труда. Прошу вас ответить на вопросы про ваш опыт, текущую роль в компании, ваш уровень удовлетворенности и планы на будущее. Чем прозрачнее будет рынок труда, тем выгоднее будет обоим сторонам, ведь дата сайентисты не будут смотреть в лес рынка труда.
🔖 Результаты опроса буду порционно публиковать в канале Нескучный Data Science @not_boring_ds.
😉 классические вопросы с популярных интервью тоже включены)
P.S. при публикации статистики дам ссылки на каналы поддержавшие опрос.
👉 Пройди опрос сейчас, не откладывай на потом❗️
🤔 Вы можете примерно оценить вилку на вашей позиции благодаря вакансиям из каналов, где они публикуются. Тем не менее вилки довольно широкие и одни работодатели недоплачивают или платят строго по низу вилки, другие наоборот переплачивают и выходят за ее пределы. Вам в свою очередь нужно на собеседовании или при повышении назвать одно число, ровно столько вам будет платить довольно продолжительный период времени.
📊 Запускаю опрос, который в будущем поможет подписчикам сопоставить свой набор навыков с рынком труда. Прошу вас ответить на вопросы про ваш опыт, текущую роль в компании, ваш уровень удовлетворенности и планы на будущее. Чем прозрачнее будет рынок труда, тем выгоднее будет обоим сторонам, ведь дата сайентисты не будут смотреть в лес рынка труда.
🔖 Результаты опроса буду порционно публиковать в канале Нескучный Data Science @not_boring_ds.
😉 классические вопросы с популярных интервью тоже включены)
P.S. при публикации статистики дам ссылки на каналы поддержавшие опрос.
Forwarded from Data Secrets
Media is too big
VIEW IN TELEGRAM
Он создан специально для работы с DS/ML и может создавать не просто фрагменты кода, а целые ноутбуки. Все просто:
1. Нужно подгрузить свои данные
2. Описать цели (например, «визуализируй», «проведи EDA», «напиши и оптимизируй модель предсказания таргета»)
3. Сидеть и наслаждаться тем, как агент сам пишет и запускает ячейки, импортирует нужные библиотеки и совершенствует свой код
Кстати, на бенчмарке DABStep (он как раз оценивает способности анализировать дату) агент занял четвертое место, сразу после o1, o3-mini и Claude, а это довольно мощный уровень.
Доступно для всех юзеров
Please open Telegram to view this post
VIEW IN TELEGRAM
#random
Я тут недавно быстренько накидал короткий стишок на 8 марта. Собственно, почему бы и не запостить.
"Товарищи женщины!
Во все громогласное горло
Готовы поздравить вас
Снова и снова.
Не зря ведь боролись
Роза и Клара:
Марта восьмое —
Не просто забава!
И наши слова —
Не просто игра,
А слово и дело.
Ура вам, ура!"
Я тут недавно быстренько накидал короткий стишок на 8 марта. Собственно, почему бы и не запостить.
"Товарищи женщины!
Во все громогласное горло
Готовы поздравить вас
Снова и снова.
Не зря ведь боролись
Роза и Клара:
Марта восьмое —
Не просто забава!
И наши слова —
Не просто игра,
А слово и дело.
Ура вам, ура!"
Forwarded from Knowledge Accumulator
Конкретный автоэнкодер [2019] и его улучшение [2024]
Итак, обычно в автоэнкодерах мы решаем задачу сжатия изначального вектора фичей в пространство маленькой размерности. Мы обучаем энкодер
Конкретный автоэнкодер ставит задачу более интересным образом - вместо перевода вектора фичей в скрытое пространство мы хотим выбрать список фичей в
Иначе говоря, какие фичи содержат наибольшее количество информации, которое позволит восстановить исходный вектор
Слово "конкретный" в названии - "concrete" - на самом деле сокращение от Continuous Discrete - это параллельное изобретение того самого Gumbel Softmax трюка, который я описывал в позапрошлом посте.
Единственным параметром энкодера является матрица
Делая это независимо K раз, мы выбираем K фичей, которые и становятся выходом энкодера. В базовой статье про конкретный автоэнкодер иллюстрация на MNIST демонстрируют способность такой схемы обучиться игнорировать пиксели по краям и при этом задействовать по 1 пикселю из всех остальных частей картинки, никогда не беря соседние. Эксперименты на других датасетах там тоже есть.
Indirectly Parameterized CAE - улучшение данного подхода. Я с CAE не развлекался, но утверждается, что у базовой модели есть проблемы со стабильностью обучения, а также она почему-то всё же дублирует фичи по несколько раз, что, вроде как, тоже связано с этой нестабильностью.
Один простой трюк очень сильно улучшает ситуацию. Вместо обучаемой матрицы
Честно говоря, в статье не хватает нормальной мотивации и интуиции, но, судя по результатам, у них это обучается гораздо лучше бейзлайна и всегда выдаёт уникальные фичи.
Главный вопрос - а нахрена вообще всё это нужно?
Внезапно эта идея имеет отличное практическое применение в нейросетях, а именно для проведения Feature Selection! В ситуации, когда обучать сеть супердорого и вы можете позволить это делать единичное число раз, а фичей у вас тысячи, использование Конкретного Энкодера в самом начале модели позволяет обучить Selection
Коллеги рапортуют о том, что у нас это заработало, так что, с чистой совестью делюсь хаком.
@knowledge_accumulator
Итак, обычно в автоэнкодерах мы решаем задачу сжатия изначального вектора фичей в пространство маленькой размерности. Мы обучаем энкодер
q(z|x)
и декодер p(x|z)
таким образом, чтобы у нас получалось восстановить изначальный вектор x
из вектора скрытых переменных z
.Конкретный автоэнкодер ставит задачу более интересным образом - вместо перевода вектора фичей в скрытое пространство мы хотим выбрать список фичей в
x
, который и будет этим самым вектором скрытых переменных.Иначе говоря, какие фичи содержат наибольшее количество информации, которое позволит восстановить исходный вектор
x
наилучшим образом? Конкретный автоэнкодер решает именно эту задачу. Слово "конкретный" в названии - "concrete" - на самом деле сокращение от Continuous Discrete - это параллельное изобретение того самого Gumbel Softmax трюка, который я описывал в позапрошлом посте.
Единственным параметром энкодера является матрица
KxN
- размерность скрытого вектора на кол-во фичей. В каждой строке у нас находится обучаемый вектор "логитов" для каждой фичи, к которому мы применяем Gumbel Softmax и получаем soft one-hot вектор-маску для всех фичей, которую затем скалярно умножаем на исходный вектор фичей - получая таким образом дифференцируемую аппроксимацию выбора одной фичи из всего списка. Делая это независимо K раз, мы выбираем K фичей, которые и становятся выходом энкодера. В базовой статье про конкретный автоэнкодер иллюстрация на MNIST демонстрируют способность такой схемы обучиться игнорировать пиксели по краям и при этом задействовать по 1 пикселю из всех остальных частей картинки, никогда не беря соседние. Эксперименты на других датасетах там тоже есть.
Indirectly Parameterized CAE - улучшение данного подхода. Я с CAE не развлекался, но утверждается, что у базовой модели есть проблемы со стабильностью обучения, а также она почему-то всё же дублирует фичи по несколько раз, что, вроде как, тоже связано с этой нестабильностью.
Один простой трюк очень сильно улучшает ситуацию. Вместо обучаемой матрицы
KxN
используется Indirect Parameterization - эта матрица вычисляется как функция от 3 обучаемых штук: умножения матрицы KxN
на матрицу NxN
и прибавления вектора размера N
к каждой строке результата.Честно говоря, в статье не хватает нормальной мотивации и интуиции, но, судя по результатам, у них это обучается гораздо лучше бейзлайна и всегда выдаёт уникальные фичи.
Главный вопрос - а нахрена вообще всё это нужно?
Внезапно эта идея имеет отличное практическое применение в нейросетях, а именно для проведения Feature Selection! В ситуации, когда обучать сеть супердорого и вы можете позволить это делать единичное число раз, а фичей у вас тысячи, использование Конкретного Энкодера в самом начале модели позволяет обучить Selection
K
фичей из N
напрямую. При этом, если качество модели совпадает с качеством изначальной модели, можно смело выкидывать из прода целых N-K
фичей. Коллеги рапортуют о том, что у нас это заработало, так что, с чистой совестью делюсь хаком.
@knowledge_accumulator
#random
Только что увидел, что победил в номинации "сценарий комикса" во всероссийском конкурсе фантастики и проектирования будущего в сеттинге «Берлога».
Очень доволен. Теперь буду ждать акселерации по тексту и публикации комикса (напишу потом, когда про это будут новости).
Наверное, могу считать себя титулованным автором, хехе ;)
Только что увидел, что победил в номинации "сценарий комикса" во всероссийском конкурсе фантастики и проектирования будущего в сеттинге «Берлога».
Очень доволен. Теперь буду ждать акселерации по тексту и публикации комикса (напишу потом, когда про это будут новости).
Наверное, могу считать себя титулованным автором, хехе ;)
Кстати, 5 апреля буду рассказывать про то, как мы делали автоматическое протоколирование встреч в X5.
Регистрация по ссылке. Залетайте послушать, пообщаться в кулуарах, просто поинтересоваться (доклады клевые собрались)!
Регистрация по ссылке. Залетайте послушать, пообщаться в кулуарах, просто поинтересоваться (доклады клевые собрались)!
Тинькофф Банк
T-Meetup: CV & Speech
Обсудим компьютерное зрение и речевые технологии
#ml #llm #random
Дал комментарий для статьи про ИИ-агентов. Компания для комментариев там подобралась весьма мощная, в таком списке приятно быть ;)
Материал интересный, если интересно понять общие концепты про ИИ-агентов. Если вы уже в теме, то много нового вряд ли увидите. В общем, прочитайте на досуге, если есть интерес и время.
Дал комментарий для статьи про ИИ-агентов. Компания для комментариев там подобралась весьма мощная, в таком списке приятно быть ;)
Материал интересный, если интересно понять общие концепты про ИИ-агентов. Если вы уже в теме, то много нового вряд ли увидите. В общем, прочитайте на досуге, если есть интерес и время.
#math #random
Случилось история в виде мема "мои сны при температуре 38". Немного приболел (но вроде без температуры). А при простуде у меня в последнее время ломается сон. И вот вместо того, чтобы спать, мой простуженный мозг начал думать "а сколько маленьких окружностей диаметра r/2 влезет в большую окружность диаметра 2r без пересечения?".
Оказалось, это даже известная задачка (не совсем в такой постановке, но все же). Называется circle packing in circle. Одно из решений по ссылке доказано оптимальным аж только в 2024. Короче, прикольная красивая задачка.
Еще нашел пост какого-то чела про примерно похожую оптимизацию.
А вот LLM справились так себе (ну или я мало пытался). Пробовал написать с помощью R1, Claude Sonnet, GPT-4o (все на Perplexity). Но какой-то код вроде получился, закинул на gist в github (и он вроде даже укладывает окружности в окружность). Результаты работы кода выглядят скорее субоптимально, а не оптимально (как на картинках в wiki).
Случилось история в виде мема "мои сны при температуре 38". Немного приболел (но вроде без температуры). А при простуде у меня в последнее время ломается сон. И вот вместо того, чтобы спать, мой простуженный мозг начал думать "а сколько маленьких окружностей диаметра r/2 влезет в большую окружность диаметра 2r без пересечения?".
Оказалось, это даже известная задачка (не совсем в такой постановке, но все же). Называется circle packing in circle. Одно из решений по ссылке доказано оптимальным аж только в 2024. Короче, прикольная красивая задачка.
Еще нашел пост какого-то чела про примерно похожую оптимизацию.
А вот LLM справились так себе (ну или я мало пытался). Пробовал написать с помощью R1, Claude Sonnet, GPT-4o (все на Perplexity). Но какой-то код вроде получился, закинул на gist в github (и он вроде даже укладывает окружности в окружность). Результаты работы кода выглядят скорее субоптимально, а не оптимально (как на картинках в wiki).
#statistics
Недавно прочитал статью "Choosing a Proxy Metric from Past Experiments". В авторах челики из google и deepmind. Сама статья, как можно понять из названия, про выбор правильных прокси-метрик.
Пока читал, не покидало ощущение, что что-то тут не так. Вроде идея интересная, какие-никакие аргументы в пользу их решения есть, но все равно интуитивно кажется, что решение в реальности не полетит. Ну да ладно, будущее покажет.
В общем, основных идей несколько:
1. Давайте введем метрику "качества прокси", которая будет зависеть от скрытой корреляции между долгосрочным и прокси эффектами и от соотношения сигнал/шум прокси-метрики.
2. Давайте будем выводить оптимальную прокси-метрику в виде линейной комбинации других прокси. Получаем такую себе портфельную оптимизацию, где мы хотим оптимально "вложиться" в наши прокси, чтобы получить наилучшее решение.
3. Для оценки скрытых параметров давайте будем использовать иерархическую модель (добро пожаловать в Байесовский мир).
4. Ну и все это вместе собирается в некий "фреймворк" для оценки и выбора наилучшего прокси.
Идея прикольная. Я думал о похожем, но скорее в плане вложений в результаты на основе А/Б тестов. У нас же есть какие-то оценки результатов (и в плане ожидания, и в плане неуверенности оценки). Так почему бы не пытаться из этого "портфеля" инициатив собрать оптимальный "портфель". Но я так эту идею и не добил (если кто вдруг знает такую статью или напишет таковую - скиньте почитать).
А вот по статье у меня есть вопросики:
1. Предполагается, что у нас набор все эксперименты i.i.d., что весьма сильное предположение. В статье идет сравнение с мета-анализом. И в мета-анализе это как раз более или менее логичное предположение, Но вот просто в наборе А/Б тестов слишком уж сильное.
2. По тому, как мы получаем итоговую прокси в виде комбинации других прокси с максимизации "хорошести" прокси, у меня есть вопросики к возможному переобучению. В статье вроде даже есть кросс-валидация, но я это ставлю на уровень "сомнительно, но окэй".
3. Не факт, что эта история хорошо обобщается. Впрочем, авторы так явно и заявляют в статье. Но там реально примеры весьма специфичные. Рек. системы, еще и на каких-то гигантских объемах выборок (гугл же). И вроде как еще и группа тестов с примерно одной системой (ну как я понял, иначе откуда i.i.d.).
4. Кажется, что иерархическая модель может быть не такой уж быстрой. Там будет много MCMC симуляций же. Но тут надо тестить, может и все быстро будет работать.
5. В appendix'е какая-то странная матрица ошибок с отсечениями по размеру t-статистик на тестах по двум метрикам (прокси и north-star). Выглядит скорее эвристикой. Возможно, даже рабочей, но как-то не очень надежно выглядит на такое смотреть.
Если подводить итог.
Идея прикольная, но про реальное применение большие вопросики. Может как-то руки дойдут с чем-нибудь таким поковыряться. Ну или в какой-нибудь из докладов утащу как идею.
Недавно прочитал статью "Choosing a Proxy Metric from Past Experiments". В авторах челики из google и deepmind. Сама статья, как можно понять из названия, про выбор правильных прокси-метрик.
Пока читал, не покидало ощущение, что что-то тут не так. Вроде идея интересная, какие-никакие аргументы в пользу их решения есть, но все равно интуитивно кажется, что решение в реальности не полетит. Ну да ладно, будущее покажет.
В общем, основных идей несколько:
1. Давайте введем метрику "качества прокси", которая будет зависеть от скрытой корреляции между долгосрочным и прокси эффектами и от соотношения сигнал/шум прокси-метрики.
2. Давайте будем выводить оптимальную прокси-метрику в виде линейной комбинации других прокси. Получаем такую себе портфельную оптимизацию, где мы хотим оптимально "вложиться" в наши прокси, чтобы получить наилучшее решение.
3. Для оценки скрытых параметров давайте будем использовать иерархическую модель (добро пожаловать в Байесовский мир).
4. Ну и все это вместе собирается в некий "фреймворк" для оценки и выбора наилучшего прокси.
Идея прикольная. Я думал о похожем, но скорее в плане вложений в результаты на основе А/Б тестов. У нас же есть какие-то оценки результатов (и в плане ожидания, и в плане неуверенности оценки). Так почему бы не пытаться из этого "портфеля" инициатив собрать оптимальный "портфель". Но я так эту идею и не добил (если кто вдруг знает такую статью или напишет таковую - скиньте почитать).
А вот по статье у меня есть вопросики:
1. Предполагается, что у нас набор все эксперименты i.i.d., что весьма сильное предположение. В статье идет сравнение с мета-анализом. И в мета-анализе это как раз более или менее логичное предположение, Но вот просто в наборе А/Б тестов слишком уж сильное.
2. По тому, как мы получаем итоговую прокси в виде комбинации других прокси с максимизации "хорошести" прокси, у меня есть вопросики к возможному переобучению. В статье вроде даже есть кросс-валидация, но я это ставлю на уровень "сомнительно, но окэй".
3. Не факт, что эта история хорошо обобщается. Впрочем, авторы так явно и заявляют в статье. Но там реально примеры весьма специфичные. Рек. системы, еще и на каких-то гигантских объемах выборок (гугл же). И вроде как еще и группа тестов с примерно одной системой (ну как я понял, иначе откуда i.i.d.).
4. Кажется, что иерархическая модель может быть не такой уж быстрой. Там будет много MCMC симуляций же. Но тут надо тестить, может и все быстро будет работать.
5. В appendix'е какая-то странная матрица ошибок с отсечениями по размеру t-статистик на тестах по двум метрикам (прокси и north-star). Выглядит скорее эвристикой. Возможно, даже рабочей, но как-то не очень надежно выглядит на такое смотреть.
Если подводить итог.
Идея прикольная, но про реальное применение большие вопросики. Может как-то руки дойдут с чем-нибудь таким поковыряться. Ну или в какой-нибудь из докладов утащу как идею.
Всем привет. Я тут написал монолог для конкурса (и это даже не шутка). И часть оценки зависит от голосования. Если вам не сложно, проголосуйте за мой монолог под номером 6 "Колыбельная".
Почитать монологи можно по ссылке.
Почитать монологи можно по ссылке.
Telegram
FabulaNova Истории в звуке
#конкурсхорроров
Шорт-лист конкурса "Один на один со страхом"
1⃣ Катерина Митт “Супом пахнет”
2️⃣ Игорь Крючков “Вы отлично справляетесь, Дмитрий Александрович”
3️⃣ Руслан Мамедов “Выпьем чаю”
4️⃣ Екатерина Архипова “Вернуть к жизни”
5️⃣ Юлия Берестова…
Шорт-лист конкурса "Один на один со страхом"
1⃣ Катерина Митт “Супом пахнет”
2️⃣ Игорь Крючков “Вы отлично справляетесь, Дмитрий Александрович”
3️⃣ Руслан Мамедов “Выпьем чаю”
4️⃣ Екатерина Архипова “Вернуть к жизни”
5️⃣ Юлия Берестова…
Forwarded from FabulaNova Истории в звуке
#конкурсхорроров
Народное голосование конкурса "Один на один со страхом" группа 1
Народное голосование конкурса "Один на один со страхом" группа 1
Final Results
8%
1. Катерина Митт "Супом пахнет"
1%
2. Игорь Крючков "Вы отлично справляетесь, Дмитрий Александрович"
32%
3. Руслан Мамедов "Выпьем чаю"
1%
4. Екатерина Архипова "Вернуть к жизни"
3%
5. Юлия Берестова "Должок"
25%
6. Артем Ерохин "Колыбельная"
3%
7. Дарья Дрофа "Кукла"
13%
8. Даниил Лобковский "Материнский инстинкт"
1%
9. Иван Парфенов "Мамочка"
12%
10. Дарья Владимирова "Монолог"