Выучить функцию модуло, кстати, возможно, если всё свести к регрессии:
https://github.com/HStrand/modulo/blob/master/modulo.ipynb
Однако это не тоже самое. Одно дело выучить прикидку функции по 8000 примерам. Другое дело "вот тебе три примера, зависимость на них очевидна второкласснику, что будет в следующем примере?". И вот для решения такой задачи у нас нет ни одного инструмента, а значит скайнет пока даже не в зародыше
https://github.com/HStrand/modulo/blob/master/modulo.ipynb
Однако это не тоже самое. Одно дело выучить прикидку функции по 8000 примерам. Другое дело "вот тебе три примера, зависимость на них очевидна второкласснику, что будет в следующем примере?". И вот для решения такой задачи у нас нет ни одного инструмента, а значит скайнет пока даже не в зародыше
GitHub
modulo/modulo.ipynb at master · HStrand/modulo
Can a neural network learn the modulo operation? Contribute to HStrand/modulo development by creating an account on GitHub.
👍1
Forwarded from 🏆 Data Feeling | AIeron (Алерон Миленькин)
pTZKz.png
29.8 KB
#Трюк №16
Вы же тоже часто смотрите на важность признаков в вашей модели? Иначе как понять, на что обращает внимание ваша модель?!
И вот вы смотрите на гистограмму важности признаков, и что дальше?) Что с этим делать?) Ничего?
Вот вам трюк🏂 - заранее генерируем случайный признак и далее смело выбрасываем все признаки, которые рандомный признак отсек. Взлет скора модели гарантирован✈️
Почему это работает? Если случайных признак оказался важнее имеющихся, то скорее всего в них нет никакой полезной информации - разумнек их убрать из модели.
Вы же тоже часто смотрите на важность признаков в вашей модели? Иначе как понять, на что обращает внимание ваша модель?!
И вот вы смотрите на гистограмму важности признаков, и что дальше?) Что с этим делать?) Ничего?
Вот вам трюк🏂 - заранее генерируем случайный признак и далее смело выбрасываем все признаки, которые рандомный признак отсек. Взлет скора модели гарантирован✈️
Почему это работает? Если случайных признак оказался важнее имеющихся, то скорее всего в них нет никакой полезной информации - разумнек их убрать из модели.
Внезапно лекцию про метрики ML моделей, которую я читал в Иннополисе, выложили в открытый доступ:
https://www.youtube.com/watch?v=R4hbxLDsEJo
https://www.youtube.com/watch?v=R4hbxLDsEJo
YouTube
Метрики оценки качества модели, переобучение и недообучение, тестирование и валидация моделей
# Я присоединился к команде Яндекс.Толоки в качестве ML исследователя.
Именно из-за этого я уже неделю собираюсь написать хотя бы один пост в канал. Пока я привыкаю к огромному количеству встреч и всячески акклиматизируюсь к корпоративной жизни постов будет поменьше. Мне очень хочется подробно описать поиск работы, но нехватает сил.
Скажу только, что ковидная статья неождианно быстро окупилась и действительно повлияла на получение трех офферов, один из которых я в итоге принял.
Until we meet again
Именно из-за этого я уже неделю собираюсь написать хотя бы один пост в канал. Пока я привыкаю к огромному количеству встреч и всячески акклиматизируюсь к корпоративной жизни постов будет поменьше. Мне очень хочется подробно описать поиск работы, но нехватает сил.
Скажу только, что ковидная статья неождианно быстро окупилась и действительно повлияла на получение трех офферов, один из которых я в итоге принял.
Until we meet again
Лайфхак: как не быть чертовой мразью.
Появилась отличная идея по работе? Хочется написать её коллеге, но близится конец рабочего дня? Напиши долбанное отложенное сообщение на следующее утро, мать твою.
Набираешь текст, зажимаешь кнопочку "отправить", в выпадающем меню выбираешь "отложенное сообщение" и выставляешь следующее утро. Вуаля, ты восхитителен: не продлил себе с коллегой рабочий день на два часа!
Появилась отличная идея по работе? Хочется написать её коллеге, но близится конец рабочего дня? Напиши долбанное отложенное сообщение на следующее утро, мать твою.
Набираешь текст, зажимаешь кнопочку "отправить", в выпадающем меню выбираешь "отложенное сообщение" и выставляешь следующее утро. Вуаля, ты восхитителен: не продлил себе с коллегой рабочий день на два часа!
👍1
Да, черт возьми, да. Бекендеры давно изобрели эту схему: пишешь код локально, исполняешь всегда в докере.
Forwarded from STACK MORE LAYERS (Alexander Mamaev)
🐍 Мысли в слух про Enviroment и Conda 📦
Я пользуюсь Anaconda достаточно долгое время, примерно с того дня, когда я заинтересовался Data Science как таковым.
Мне его представили как удобный инструмент, чтобы устанавливать библиотеки на рабочую машину.
Я пользовался windows и тогда мне это показалось безумно удобным инструментом, ведь многие пакеты не хотели просто так устанавливаться под виндой.
Шли годы, я оброс бородой и опытом, давно променял windows на более удобные платформы, но по прежнему продолжал пользоваться conda.
Я спрашивал себя - а что есть действительно наилучший способ организации рабочего окружения? Почему я должен отказаться от conda?
Внятного ответа в интернете я найти так и не смог, везде были свои за и против. Кто-то находится в лагере venv, кто-то в virtualenv.
Но недавно мне пришло осознание и я понял как сделать лучше, а самое главное - зачем.
Главная особенность conda заключается в том, что в отличие от pip оно так же поставляет собранные бинарники под любые задачи, то есть вы можете устновить ffmpeg, openblas, openfst и другие вещи прямо из конды, хотя сами эти пакеты могут быть совсем не связаны с питоном. В то же время pip и средства виртуализации venv и ему подобные позволяют вам "изолировать" именно ваше питоновское окружение, это означат, что проблемы с конфликтами бинарных пакетов все еще остаются.
Во многом виртуализация conda меня устраивала, но недавно произошло важное событие - я перешел на macbook m1, соответсвенно архитектура процессора полностью поменялась, больше никаких x86, только arm. И соответсвенно мои попытки скачать какие-то бинарные пакеты из conda не увенчались успехом. Их просто не существует, нет никаких вариантов поставить их от туда. Придется скачивать source code и собирать их самостоятельно с помощью cmake и gcc. Естественно делать это просто на тачке - глупо. Завтра я перееду на другой ноут - придется вспоминать все инструкции и процесс инсталяции, что не есть хорошо.
Решение вырисовывается само собой - давайте использовать докер по умолчанию для любого окружения проекта. То есть буквально, новый проект - создаете новый docker контейнер под него.
Какие плюсы из этого есть?
- Реальная изоляция окружения, то есть у вас по умолчанию проекты никогда не будут конфликтовать между собой, вы не забудете поменять env, ведь у каждого проекта он свой, а если и забудете, будет не проблематично откатить его назад.
- Фиксация всех изменений окружения. В dockerfile вы сами прописываете все инструкции того, куда что скачать, как что распаковать и это не забудется, и не придется писать отдельную инструкцию в confluence и любую другую систему вики.
- Легкая переносимость между устройствами - если вы меняете рабочую станцию или просто хотите создать аналогичное окружение на сервере, вы просто пуллите последнюю версию dockerfile и делаете билд
- Прозрачное понимание проблем сборки - если что-то не собралось под вашу платформу, вы не попадаете в патовую ситуацию, что раз уж нет бинарника - вы ничего не можете сделать, вы можете просто прописать свои "правильные" инструкции для сборки под эту платформу.
Я пользуюсь Anaconda достаточно долгое время, примерно с того дня, когда я заинтересовался Data Science как таковым.
Мне его представили как удобный инструмент, чтобы устанавливать библиотеки на рабочую машину.
Я пользовался windows и тогда мне это показалось безумно удобным инструментом, ведь многие пакеты не хотели просто так устанавливаться под виндой.
Шли годы, я оброс бородой и опытом, давно променял windows на более удобные платформы, но по прежнему продолжал пользоваться conda.
Я спрашивал себя - а что есть действительно наилучший способ организации рабочего окружения? Почему я должен отказаться от conda?
Внятного ответа в интернете я найти так и не смог, везде были свои за и против. Кто-то находится в лагере venv, кто-то в virtualenv.
Но недавно мне пришло осознание и я понял как сделать лучше, а самое главное - зачем.
Главная особенность conda заключается в том, что в отличие от pip оно так же поставляет собранные бинарники под любые задачи, то есть вы можете устновить ffmpeg, openblas, openfst и другие вещи прямо из конды, хотя сами эти пакеты могут быть совсем не связаны с питоном. В то же время pip и средства виртуализации venv и ему подобные позволяют вам "изолировать" именно ваше питоновское окружение, это означат, что проблемы с конфликтами бинарных пакетов все еще остаются.
Во многом виртуализация conda меня устраивала, но недавно произошло важное событие - я перешел на macbook m1, соответсвенно архитектура процессора полностью поменялась, больше никаких x86, только arm. И соответсвенно мои попытки скачать какие-то бинарные пакеты из conda не увенчались успехом. Их просто не существует, нет никаких вариантов поставить их от туда. Придется скачивать source code и собирать их самостоятельно с помощью cmake и gcc. Естественно делать это просто на тачке - глупо. Завтра я перееду на другой ноут - придется вспоминать все инструкции и процесс инсталяции, что не есть хорошо.
Решение вырисовывается само собой - давайте использовать докер по умолчанию для любого окружения проекта. То есть буквально, новый проект - создаете новый docker контейнер под него.
Какие плюсы из этого есть?
- Реальная изоляция окружения, то есть у вас по умолчанию проекты никогда не будут конфликтовать между собой, вы не забудете поменять env, ведь у каждого проекта он свой, а если и забудете, будет не проблематично откатить его назад.
- Фиксация всех изменений окружения. В dockerfile вы сами прописываете все инструкции того, куда что скачать, как что распаковать и это не забудется, и не придется писать отдельную инструкцию в confluence и любую другую систему вики.
- Легкая переносимость между устройствами - если вы меняете рабочую станцию или просто хотите создать аналогичное окружение на сервере, вы просто пуллите последнюю версию dockerfile и делаете билд
- Прозрачное понимание проблем сборки - если что-то не собралось под вашу платформу, вы не попадаете в патовую ситуацию, что раз уж нет бинарника - вы ничего не можете сделать, вы можете просто прописать свои "правильные" инструкции для сборки под эту платформу.
The bind is this. For the first 99% of human history the global economy (initially mostly food production) grew very slowly: under 0.1% a year. But since the industrial revolution around 1800, growth has exploded to over 2% a year.
To us in 2020 that sounds perfectly sensible and the natural order of things. But Holden points out that in fact it’s not only unprecedented, it also can’t continue for long.
The power of compounding increases means that to sustain 2% growth for just 10,000 years, 5% as long as humanity has already existed, would require us to turn every individual atom in the galaxy into an economy as large as the Earth’s today. Not super likely.
So what are the options? First, maybe growth will slow and then stop. In that case we today live in the single miniscule slice in the history of life during which the world rapidly changed due to constant technological advances, before intelligent civilization permanently stagnated or even collapsed. What a wild time to be alive!
Alternatively, maybe growth will continue for thousands of years. In that case we are at the very beginning of what would necessarily have to become a stable galaxy-spanning civilization, harnessing the energy of entire stars among other feats of engineering. We would then stand among the first tiny sliver of all the quadrillions of intelligent beings who ever exist. What a wild time to be alive!
https://80000hours.org/podcast/episodes/holden-karnofsky-most-important-century/
To us in 2020 that sounds perfectly sensible and the natural order of things. But Holden points out that in fact it’s not only unprecedented, it also can’t continue for long.
The power of compounding increases means that to sustain 2% growth for just 10,000 years, 5% as long as humanity has already existed, would require us to turn every individual atom in the galaxy into an economy as large as the Earth’s today. Not super likely.
So what are the options? First, maybe growth will slow and then stop. In that case we today live in the single miniscule slice in the history of life during which the world rapidly changed due to constant technological advances, before intelligent civilization permanently stagnated or even collapsed. What a wild time to be alive!
Alternatively, maybe growth will continue for thousands of years. In that case we are at the very beginning of what would necessarily have to become a stable galaxy-spanning civilization, harnessing the energy of entire stars among other feats of engineering. We would then stand among the first tiny sliver of all the quadrillions of intelligent beings who ever exist. What a wild time to be alive!
https://80000hours.org/podcast/episodes/holden-karnofsky-most-important-century/
80,000 Hours
Holden Karnofsky on the most important century
"...it doesn't look like things have been normal for a long time... we just live on this rocket ship that took off 5 seconds ago, and nobody knows where it's going."
Forwarded from Just links
Twitter
Lior Pachter
It's time to stop making t-SNE & UMAP plots. In a new preprint w/ Tara Chari we show that while they display some correlation with the underlying high-dimension data, they don't preserve local or global structure & are misleading. They're also arbitrary.…
Forwarded from Мишин Лернинг
🤖🏆 SimVLM - Новый CLIP
Представьте себе одну модель, которая может:
- Классифицировать фото
- Отвечать на вопросы по фото
- Дополнять текстовые описания
- Решать задачу «визуального обоснования»
- Выполнять мультимодальный перевод
А самое главное, делать все это в режиме zero-shot (обучение без обучения)!
Встречайте: SimVLM, который по факту является мультимодальной сетью Text + Image (как CLIP), с классической трансформер архитектурой. ViT+Bert энкодер + декодер GPT (см картинку поста).
Такой текстовый-визуальный претрейн сравнили с современными (SOTA) методами, включая, LXMERT, VL-T5, UNITER, OSCAR, Villa, SOHO, UNIMO и VinVL.
SimVLM превосходит все существующие модели и бьет SOTA по всем рассматриваемым задачам, часто со значительным отрывом.
Скоро сделаю подробный обзор архитектуры.
📄 paper
#sota #paper #multimodal #zeroshot #сохраненки
Представьте себе одну модель, которая может:
- Классифицировать фото
- Отвечать на вопросы по фото
- Дополнять текстовые описания
- Решать задачу «визуального обоснования»
- Выполнять мультимодальный перевод
А самое главное, делать все это в режиме zero-shot (обучение без обучения)!
Встречайте: SimVLM, который по факту является мультимодальной сетью Text + Image (как CLIP), с классической трансформер архитектурой. ViT+Bert энкодер + декодер GPT (см картинку поста).
Такой текстовый-визуальный претрейн сравнили с современными (SOTA) методами, включая, LXMERT, VL-T5, UNITER, OSCAR, Villa, SOHO, UNIMO и VinVL.
SimVLM превосходит все существующие модели и бьет SOTA по всем рассматриваемым задачам, часто со значительным отрывом.
Скоро сделаю подробный обзор архитектуры.
📄 paper
#sota #paper #multimodal #zeroshot #сохраненки
Решил собрать в одном месте все фотки, разбросанные по разным телефонам, дискам и углам. Загрузил их все в Google Photos. Оказалось, что перебор старых фотографий это отличный способ взять паузу. Медитативное занятие. У меня вообще плохая память на даты и воспоминания, поэтому прикольно пролистать к случайной дате и удивиться: "Вау, и такое было!".
https://astralcodexten.substack.com/p/too-good-to-check-a-play-in-three?token=eyJ1c2VyX2lkIjoxNjE4ODAxOSwicG9zdF9pZCI6NDA5NjY3MzcsIl8iOiJsQlFsMSIsImlhdCI6MTYzMDk0NTEwOSwiZXhwIjoxNjMwOTQ4NzA5LCJpc3MiOiJwdWItODkxMjAiLCJzdWIiOiJwb3N0LXJlYWN0aW9uIn0.jwL1da9VwKiYsY6wKiKSNyf_HjexayLlL3tdcYyUzpo
Веселое чтение минут на 10: как маленькая неверная интерпретация превратилась в одну из национально обсуждаемых тем в США.
Слабо связанная мысль вечера: читать новости больно и неприятно, но читать про новости совсем другие ощущения.
Веселое чтение минут на 10: как маленькая неверная интерпретация превратилась в одну из национально обсуждаемых тем в США.
Слабо связанная мысль вечера: читать новости больно и неприятно, но читать про новости совсем другие ощущения.
Astral Codex Ten
Too Good To Check: A Play In Three Acts
...
Сейчас по работе делаю датасет для небольшого контеста. Есть датасет с идеальной разметкой, на которой любая модель учится на 100% качество, даже думать не надо. Я пытаюсь эту разметку поломать так, чтобы получилась интересная, но выполнимая задача. Необычно смотреть на задачу с обратной стороны: обычно мы пытемся обучить модель для нужного качества, а в этот раз нужно изменить датасет под качество.
После моих танцев с бубном получаем такой датасет.
Идеально размеченный трейн сет: 500 картинок.
Неразмеченный трейн сет: 2500 картинок.
Тестовый сет: достаточно большой.
Есть две одинаковые модели (CNN с 300к параметров):
1. Первая обучена на 500 идеальных примерах.
2. Вторая обучена на 500 идеальных примерах + размеченных 2500 примерах, где в разметке 2500 примеров 15% меток неверные. Обучается с выделением валидационного сета и early stopping, чтобы не переобучаться.
Вопрос: у какой модели лучше качество на тесте?
Интуитивный ответ очевиден: вторая модель видела 500 + 2500* 75% = 2375 хороших картинок, а первая только 500. Конечно у второй качество будет лучше. Больше данных == лучше модель, несите мою золотую медаль кагл грандмастера.
Но в реальности качество первой гораздо лучше. Прям на 30% лучше. И это ломает весь мой опыт с шумными лейблами. Я пока не готов поставить деньги на то, что я нигде не напутал при тренировке моделей, но кажется, что для мелких моделей лучше немного идеальных примеров, чем много шумных.
UPD: Эффект не сохраняется если вместо мелких моделей взять MobileNet с 2М параметров. То есть большие модели могут жить с шумом.
После моих танцев с бубном получаем такой датасет.
Идеально размеченный трейн сет: 500 картинок.
Неразмеченный трейн сет: 2500 картинок.
Тестовый сет: достаточно большой.
Есть две одинаковые модели (CNN с 300к параметров):
1. Первая обучена на 500 идеальных примерах.
2. Вторая обучена на 500 идеальных примерах + размеченных 2500 примерах, где в разметке 2500 примеров 15% меток неверные. Обучается с выделением валидационного сета и early stopping, чтобы не переобучаться.
Вопрос: у какой модели лучше качество на тесте?
Интуитивный ответ очевиден: вторая модель видела 500 + 2500* 75% = 2375 хороших картинок, а первая только 500. Конечно у второй качество будет лучше. Больше данных == лучше модель, несите мою золотую медаль кагл грандмастера.
Но в реальности качество первой гораздо лучше. Прям на 30% лучше. И это ломает весь мой опыт с шумными лейблами. Я пока не готов поставить деньги на то, что я нигде не напутал при тренировке моделей, но кажется, что для мелких моделей лучше немного идеальных примеров, чем много шумных.
UPD: Эффект не сохраняется если вместо мелких моделей взять MobileNet с 2М параметров. То есть большие модели могут жить с шумом.
🔥2