Forwarded from Мathshub (Aira)
В понедельник 26 июля прошёл вебинар по ML-прототипированию. Мы надеемся, что вы смогли разобрать основные вопросы.
Запись трансляции в YouTube
Слайды презентации вебинара
Оставьте отзыв по качеству вебинара — это поможет нам поработать над качеством организации и контента.
Мы повторим вебинар в августе и планируем ещё больше ивентов, материалов по теме — оставайтесь с нами.
Запись трансляции в YouTube
Слайды презентации вебинара
Оставьте отзыв по качеству вебинара — это поможет нам поработать над качеством организации и контента.
Мы повторим вебинар в августе и планируем ещё больше ивентов, материалов по теме — оставайтесь с нами.
YouTube
Вебинар по ML-прототипированию
Курс по ML-прототипированию. Кол-в мест ограничено:
https://maths-h.com/ru/mlprototype
Старт вебинара: https://youtu.be/f2kXyMCsn4A?t=1811
Полезные ссылки:
— про BERT https://arxiv.org/abs/1810.04805
— про GPT-3 https://openai.com/blog/openai-api/
Тг…
https://maths-h.com/ru/mlprototype
Старт вебинара: https://youtu.be/f2kXyMCsn4A?t=1811
Полезные ссылки:
— про BERT https://arxiv.org/abs/1810.04805
— про GPT-3 https://openai.com/blog/openai-api/
Тг…
Всем привет!
17 августа мы проводим бесплатный воркшоп по ML-прототипированию. Покажем, как за пару часов можно собрать MVP продукта, использующего машинное обучение, и поговорим о том, как его можно дальше развивать. Регистрируйтесь и приходите, будет интересно)
https://mathshub.timepad.ru/event/1728260/?utm_refcode=255bbce96f88bcbca2fceafa810afa40eccf1332
17 августа мы проводим бесплатный воркшоп по ML-прототипированию. Покажем, как за пару часов можно собрать MVP продукта, использующего машинное обучение, и поговорим о том, как его можно дальше развивать. Регистрируйтесь и приходите, будет интересно)
https://mathshub.timepad.ru/event/1728260/?utm_refcode=255bbce96f88bcbca2fceafa810afa40eccf1332
mathshub.timepad.ru
Как запустить прототип IT-проекта на машинном обучении и привлечь инвесторов / События на TimePad.ru
Приглашаем на бесплатный вебинар по созданию ML-прототипа с нуля и разбору примера построения и обучения рекомендательной системы
Хочу рассказать про Gumbel straight-through estimator, ибо я сам его наконец-то понял 🙈
Этот трюк пропускает градиент через дискретное представление, а что это такое, я сейчас объясню. Например, мы хотим обучить GAN: генератор порождает контент, дискриминатор оценивает его качество, и генератор обновляет свои веса в направлении улучшения качества. Это хорошо работает с картинками, потому что они непрерывные: генератор может на эпсилон подкрутить цвет каждого пикселя и картинка чуть улучшится. Математически это возможно потому, что мы можем взять производную сгенерированной картинки по параметрам генератора, и делать с её помощью градиентный шаг.
А как быть, если наш генератор генерирует тексты? Проблема текста, что он - тупо последовательность слов. У каждого слова есть какой-то номер в словаре, и фраза, например, "привет мир" может кодироваться как [14050, 5840, 1] (здесь единичка - это символ конца текста). И вот как это дифференцировать? Следите за руками!
1. Превращаем текст в sparse представление: матрицу размера (text_length, vocab_size), с единицами в позициях соответствующих слов, и нулями в остальных местах. Такая матрица выглядит уже чуть более дифференцировабельной. Но какая у неё может быть производная?
2. Вообще-то генератор текста сэмплирует его из предсказанного им распределения: softmax(logits), где logits - предсказания генератора. Их-то мы точно умеем дифференцировать, а вот оператор случайного выбора - недифференцируемый.
3. Оказывается, существует распределение Гумбеля, обладающее полезным свойством: распределения величин sample(softmax(logits)) и argmax(logits + gumbel_random()) - совпадают! В первом случае мы считаем вероятности каждого токена и случайно выбираем токен в соответствии с этими вероятностями. Во втором мы к скору каждого токена прибавляем гумбелевскую случайную величину, и выбираем токен с максимальным результатом. И эти процедуры - эквивалентны.
4. argmax всё ещё не дифференцируемая функция, но дифференцируемо её приближение: softmax. Получается, наша разреженная матрица hard_scores из пункта (1) примерно равна soft_scores=softmax(logits + gumbel_random()), и производную этой штуки мы уже умеем вычислять.
5. Как использовать матрицу hard_scores, прилепив к ней производную матрицы soft_scores? В pytorch это делается так: вычтем из разреженной матрицы приближенную, сбросим градиент этой разницы, и потом прибавим приближенную матрицу обратно. То есть выдадим (hard_scores - soft_scores).detach() + soft_scores.
Собственно, вот исходный код этой нечисти: https://pytorch.org/docs/stable/_modules/torch/nn/functional.html#gumbel_softmax. Там ещё используется температура в софтмаксе: чем она меньше, тем ближе softmax к argmax. С подбором температуры для этого кейса я не экспериментировал, но если экспериментировали вы, то делитесь своими находками в комментах)
Этот трюк пропускает градиент через дискретное представление, а что это такое, я сейчас объясню. Например, мы хотим обучить GAN: генератор порождает контент, дискриминатор оценивает его качество, и генератор обновляет свои веса в направлении улучшения качества. Это хорошо работает с картинками, потому что они непрерывные: генератор может на эпсилон подкрутить цвет каждого пикселя и картинка чуть улучшится. Математически это возможно потому, что мы можем взять производную сгенерированной картинки по параметрам генератора, и делать с её помощью градиентный шаг.
А как быть, если наш генератор генерирует тексты? Проблема текста, что он - тупо последовательность слов. У каждого слова есть какой-то номер в словаре, и фраза, например, "привет мир" может кодироваться как [14050, 5840, 1] (здесь единичка - это символ конца текста). И вот как это дифференцировать? Следите за руками!
1. Превращаем текст в sparse представление: матрицу размера (text_length, vocab_size), с единицами в позициях соответствующих слов, и нулями в остальных местах. Такая матрица выглядит уже чуть более дифференцировабельной. Но какая у неё может быть производная?
2. Вообще-то генератор текста сэмплирует его из предсказанного им распределения: softmax(logits), где logits - предсказания генератора. Их-то мы точно умеем дифференцировать, а вот оператор случайного выбора - недифференцируемый.
3. Оказывается, существует распределение Гумбеля, обладающее полезным свойством: распределения величин sample(softmax(logits)) и argmax(logits + gumbel_random()) - совпадают! В первом случае мы считаем вероятности каждого токена и случайно выбираем токен в соответствии с этими вероятностями. Во втором мы к скору каждого токена прибавляем гумбелевскую случайную величину, и выбираем токен с максимальным результатом. И эти процедуры - эквивалентны.
4. argmax всё ещё не дифференцируемая функция, но дифференцируемо её приближение: softmax. Получается, наша разреженная матрица hard_scores из пункта (1) примерно равна soft_scores=softmax(logits + gumbel_random()), и производную этой штуки мы уже умеем вычислять.
5. Как использовать матрицу hard_scores, прилепив к ней производную матрицы soft_scores? В pytorch это делается так: вычтем из разреженной матрицы приближенную, сбросим градиент этой разницы, и потом прибавим приближенную матрицу обратно. То есть выдадим (hard_scores - soft_scores).detach() + soft_scores.
Собственно, вот исходный код этой нечисти: https://pytorch.org/docs/stable/_modules/torch/nn/functional.html#gumbel_softmax. Там ещё используется температура в софтмаксе: чем она меньше, тем ближе softmax к argmax. С подбором температуры для этого кейса я не экспериментировал, но если экспериментировали вы, то делитесь своими находками в комментах)
Привет! Пост не про математику, но мне очень надо (:
Мне нужно потестировать одного игрового бота в Телеге.
Игра — бродилка по лабиринту, причем вы там будете встречаться с другими участниками. Поэтому тестировать надо одновременно. Предлагается сделать это завтра примерно с 11 до 12.
Если вы готовы помочь, вступайте в чатик https://news.1rj.ru/str/joinchat/2rO7ios4NuA3Yjdi, там будут инструкции.
Мне нужно потестировать одного игрового бота в Телеге.
Игра — бродилка по лабиринту, причем вы там будете встречаться с другими участниками. Поэтому тестировать надо одновременно. Предлагается сделать это завтра примерно с 11 до 12.
Если вы готовы помочь, вступайте в чатик https://news.1rj.ru/str/joinchat/2rO7ios4NuA3Yjdi, там будут инструкции.
Сегодня выкатилась scikit-learn==1.0.0, и в ней - квантильная линейная регрессия
Когда я рассказываю новичкам про регрессию, меня обычно спрашивают, почему мы минимизируем сумму квадратов ошибок, а не их модулей? Я отвечаю "так принято" и говорю что-то про дифференцируемость всюду и про то, что одна большая ошибка критичнее нескольких маленьких. Но аргумент с ошибками применим не всегда (особенно если в данных есть выбросы), и есть куча методов оптимизации, которые плевать хотели на производную в нуле. Таки что получится, если минимизировать сумму модулей ошибок?
А получится предсказание медианы. Ибо сумма модулей ошибок минимальна, когда половина ошибок - отрицательные, а половина - положительные. А если минимизировать, например, 0.9 модулей положительных ошибок плюс 0.1 модулей отрицательных ошибок, то в результате получится 90% квантиль. Поэтому такая модель и называется "квантильная регрессия".
Запускается это очень просто:
Как понять, что квантильная регрессия предпочтительнее классической?
- Ваша целевая метрика - MAE, а не RMSE или R^2.
- В данных есть выбросы, и вы не хотите, чтобы они слишком влияли на результат.
- Вам важнее правильно предсказать медиану, чем среднее арифметическое.
- Большие и маленькие ошибки одинаково важны: например, одна ошибка в 300 рублей для вас не более плачевна, чем три ошибки в 100 рублей.
- Важность ошибок несимметричная, например, ошибка -100 гораздо хуже, чем ошибка +100. Тогда вам может быть полезно предсказывать квантиль, отличную от 50%.
- Вы хотите доверительный интервал для вашего предсказания, но не хотите завязываться на допущение, что ошибки распределены нормально с одинаковой дисперсией. Тогда вы можете просто предсказать, например, 5% и 95% квантили отдельными формулами.
- Ваши данные гетероскедастичные, т.е. дисперсия ошибок в разных частях выборки разная. И при этом вы хотите, чтобы модель одинаково усердно старалась предсказывать и в зонах высокой дисперсии, и в зонах низкой.
Примеры кода, картинки и дополнительные рассуждения вы можете посмотреть в документации: https://scikit-learn.org/stable/auto_examples/linear_model/plot_quantile_regression.html
Собственно, идея имплементировать квантильную регрессию в sklearn пришла мне ещё в 2017, когда я начал переодеваться из аналитиков в кодеры. Тогда я закодил свой градиентный спуск, и работал он не очень стабильно, а занятые ревьюеры sklearn давали свой фидбек очень долго. И в результате я погрузился в свою работу и забил. А в этом году я решил добить этот пул-реквест, и пересадил его на scipy.linprog: он масштабируется не так хорошо, как градиентный спуск, зато гарантированно сходится за не очень большое число итераций. Совместными усилиями с активистами sklearn мы привели пул-реквест в порядок и катнули, а сегодня выехала версия sklearn, в которую он вошёл.
Когда я рассказываю новичкам про регрессию, меня обычно спрашивают, почему мы минимизируем сумму квадратов ошибок, а не их модулей? Я отвечаю "так принято" и говорю что-то про дифференцируемость всюду и про то, что одна большая ошибка критичнее нескольких маленьких. Но аргумент с ошибками применим не всегда (особенно если в данных есть выбросы), и есть куча методов оптимизации, которые плевать хотели на производную в нуле. Таки что получится, если минимизировать сумму модулей ошибок?
А получится предсказание медианы. Ибо сумма модулей ошибок минимальна, когда половина ошибок - отрицательные, а половина - положительные. А если минимизировать, например, 0.9 модулей положительных ошибок плюс 0.1 модулей отрицательных ошибок, то в результате получится 90% квантиль. Поэтому такая модель и называется "квантильная регрессия".
Запускается это очень просто:
#! pip install --upgrade scikit-learn
from sklearn.linear_model import QuantileRegressor
model = QuantileRegressor().fit(X,y)
Как понять, что квантильная регрессия предпочтительнее классической?
- Ваша целевая метрика - MAE, а не RMSE или R^2.
- В данных есть выбросы, и вы не хотите, чтобы они слишком влияли на результат.
- Вам важнее правильно предсказать медиану, чем среднее арифметическое.
- Большие и маленькие ошибки одинаково важны: например, одна ошибка в 300 рублей для вас не более плачевна, чем три ошибки в 100 рублей.
- Важность ошибок несимметричная, например, ошибка -100 гораздо хуже, чем ошибка +100. Тогда вам может быть полезно предсказывать квантиль, отличную от 50%.
- Вы хотите доверительный интервал для вашего предсказания, но не хотите завязываться на допущение, что ошибки распределены нормально с одинаковой дисперсией. Тогда вы можете просто предсказать, например, 5% и 95% квантили отдельными формулами.
- Ваши данные гетероскедастичные, т.е. дисперсия ошибок в разных частях выборки разная. И при этом вы хотите, чтобы модель одинаково усердно старалась предсказывать и в зонах высокой дисперсии, и в зонах низкой.
Примеры кода, картинки и дополнительные рассуждения вы можете посмотреть в документации: https://scikit-learn.org/stable/auto_examples/linear_model/plot_quantile_regression.html
Собственно, идея имплементировать квантильную регрессию в sklearn пришла мне ещё в 2017, когда я начал переодеваться из аналитиков в кодеры. Тогда я закодил свой градиентный спуск, и работал он не очень стабильно, а занятые ревьюеры sklearn давали свой фидбек очень долго. И в результате я погрузился в свою работу и забил. А в этом году я решил добить этот пул-реквест, и пересадил его на scipy.linprog: он масштабируется не так хорошо, как градиентный спуск, зато гарантированно сходится за не очень большое число итераций. Совместными усилиями с активистами sklearn мы привели пул-реквест в порядок и катнули, а сегодня выехала версия sklearn, в которую он вошёл.
scikit-learn
Quantile regression
This example illustrates how quantile regression can predict non-trivial conditional quantiles. The left figure shows the case when the error distribution is normal, but has non-constant variance, ...
👍1🙏1
Надеюсь, что для квантильной регрессии в scikit-learn найдутся подходящие кейсы для применения. А если у вас уже дошли руки её попробовать, то пишите в комментах: как впечатления?
Мой канал - преимущественно про анализ данных и причастную к нему высшую математику, но сюда иногда приходят и за "обычной" математикой школьного уровня. К сожалению, её тут практически нет.
Зато она есть в канале @mathfromzero. Формат очень простой: каждый день в канал выкладывают по одной задаче, обычно на алгебру, геометрию или логику. Можно выкладывать своё решение в комменты и получать фидбек от админа. Кроме задач, попадаются материалы в формате "страница из учебника", занимательные факты и цитаты.
Если математика вас пугает, но хочется с ней подружиться, регулярно получая лёгкий и базовый математический контент – подписывайтесь 🙃
Зато она есть в канале @mathfromzero. Формат очень простой: каждый день в канал выкладывают по одной задаче, обычно на алгебру, геометрию или логику. Можно выкладывать своё решение в комменты и получать фидбек от админа. Кроме задач, попадаются материалы в формате "страница из учебника", занимательные факты и цитаты.
Если математика вас пугает, но хочется с ней подружиться, регулярно получая лёгкий и базовый математический контент – подписывайтесь 🙃
ШАД выложил в открытый доступ учебник по машинному обучению (что приятно, русскоязычный). Пока написано только несколько глав, но базовые алгоритмы и метрики ML уже неплохо покрыты. По стилю похоже на хорошо отформатированную лекцию, с не очень сложными формулами и весьма наглядными картинками.
Сами авторы анонсируют его так:
"Онлайн-учебник по машинному обучению от ШАД — для тех, кто не боится математики и хочет разобраться в технологиях ML. Вы изучите классическую теорию и тонкости реализации алгоритмов, пройдя путь от основ машинного обучения до тем, которые поднимаются в свежих научных статьях".
https://ml-handbook.ru
Сами авторы анонсируют его так:
"Онлайн-учебник по машинному обучению от ШАД — для тех, кто не боится математики и хочет разобраться в технологиях ML. Вы изучите классическую теорию и тонкости реализации алгоритмов, пройдя путь от основ машинного обучения до тем, которые поднимаются в свежих научных статьях".
https://ml-handbook.ru
Несколько месяцев назад мне в предложку кинули вот эту замечательную подборку, а я её проигнорировал. Теперь исправляюсь и выкладываю, ибо, возможно, кто-то тут что-то полезное для себя найдёт.
🔧 Сборка лекций и семинаров по математике.
🔧 Сборка лекций и семинаров по математике.
Техники появляются все чаще. Времени на освоение каждой всё меньше. Распыляясь на множество техник, ни одну глубоко не понять. Как адаптироваться к технологической сингулярности? Ограничить своё внимание какой-то одной техникой, или выбрать 2-3 в рамках одного выбранного на длительный период направления?
Такой вопрос задали полгода назад в комментариях к посту Матчасти, и мы его проигнорировали. А вопрос-то животрепещущий! Поэтому давайте разбираться.
Для начала, что такое "технологическая сингулярность". В математике "сингулярность" - это любая особенная точка на графике функции, но чаще всего – вертикальная асимптота, как у гиперболы. Этот термин забрали у математиков физики, применив его к математическому описанию чёрных дыр, и уже оттуда его слямзили футурологи, чтобы обозначить гипотетический момент в будущем, к которому технологический прогресс станет бесконечно быстрым. Если честно, я не могу понять, каким образом прогресс может быть бесконечно быстрым, и, скорее всего, эту фразу нужно понимать в смысле "технологии развиваются так быстро, что нам сложно что-либо предсказывать", и проблема скорее не в слишком быстрых изменениях, а в недостаточно мощных предсказательных способностях наших футурологов. Но в футурологов нам так или иначе приходится играть, ибо внешние изменения наступают, и к ним хочется адаптироваться по возможности заранее.
Ещё лет 30 назад HRы придумали, как классифицировать людей по охвату их навыков. Тех, кто максимально глубоко роет в одну точку, назвали "I-shaped". Для тех, у кого широкий кругозор, но ни в чём нет глубины, названия не придумали, но можно было бы сказать "минус-shaped", хоть это и звучит обидно. А любовь HR-ов – это "T-shaped" люди, которые сочетают общую широту знаний с глубоким погружением в какую-то одну область. Некоторые из моих знакомых называют себя "Ш-shaped", мол, они умудряются поддерживать глубину сразу в нескольких независимых областях. Так какие из этих стратегий работают на самом деле?
Такой вопрос задали полгода назад в комментариях к посту Матчасти, и мы его проигнорировали. А вопрос-то животрепещущий! Поэтому давайте разбираться.
Для начала, что такое "технологическая сингулярность". В математике "сингулярность" - это любая особенная точка на графике функции, но чаще всего – вертикальная асимптота, как у гиперболы. Этот термин забрали у математиков физики, применив его к математическому описанию чёрных дыр, и уже оттуда его слямзили футурологи, чтобы обозначить гипотетический момент в будущем, к которому технологический прогресс станет бесконечно быстрым. Если честно, я не могу понять, каким образом прогресс может быть бесконечно быстрым, и, скорее всего, эту фразу нужно понимать в смысле "технологии развиваются так быстро, что нам сложно что-либо предсказывать", и проблема скорее не в слишком быстрых изменениях, а в недостаточно мощных предсказательных способностях наших футурологов. Но в футурологов нам так или иначе приходится играть, ибо внешние изменения наступают, и к ним хочется адаптироваться по возможности заранее.
Ещё лет 30 назад HRы придумали, как классифицировать людей по охвату их навыков. Тех, кто максимально глубоко роет в одну точку, назвали "I-shaped". Для тех, у кого широкий кругозор, но ни в чём нет глубины, названия не придумали, но можно было бы сказать "минус-shaped", хоть это и звучит обидно. А любовь HR-ов – это "T-shaped" люди, которые сочетают общую широту знаний с глубоким погружением в какую-то одну область. Некоторые из моих знакомых называют себя "Ш-shaped", мол, они умудряются поддерживать глубину сразу в нескольких независимых областях. Так какие из этих стратегий работают на самом деле?
Один работающий подход – развивать те навыки, которые точно долго не устареют, а это в первую очередь soft skills. Если ты просто клёвый чувак – работоспособный, коммуникабельный, структурный, умеющий концентрироваться, и хорошо принимающий решения, то ты в принципе уже не пропадёшь. Минус в том, что нужно очень внимательно заботиться о себе, и всё равно это не гарантирует, что в такой хорошей форме ты будешь всегда. Другая очевидно работающая стратегия – правильно выбрать одно направление, которая будет перспективным достаточно долго, напрячься, и стать в нём топовым специалистом. Для этого нужна концентрация, а ещё выносливость, ибо путь до "самого лучшего" небыстр. Основной риск здесь – что выбранное направление утратит свою перспективность быстрее, чем окупятся силы и время, вложенные в него. Поэтому разумной кажется смешанная стратегия – инвестировать 50% своих ресурсов в то, чтобы становиться "клёвым чуваком в целом", другие 50% – в специализацию на том, в чём хочешь стать лучшим, а третьи 50% – в изучение ещё пары областей, на которые в случае чего можно будет перепрофилироваться. Ну, или если не хочется черпать недостающие 50% из сна, здоровья и личной жизни, можно использовать веса типа 25/50/25. Тоже T-shaped, только буква T – с засечками. Я сам, например, сейчас специализируюсь на NLP, но дополнительно занимаюсь преподаванием и фулстэк-разработкой, для разнообразия и на всякий случай.
Есть ли у меня какие-то данные, чтобы подтвердить своё голословное мнение? Увы, нету. И, боюсь, собрать толковый датасет по связи специализации навыков с успехом очень сложно, ибо и свои навыки, и свой успех люди оценивают субъективно, и такой датасет отражал бы скорее совокупное мнение респондентов по этому вопросу, чем объективные закономерности.
А вот собственное мнение по вопросам типа "как заботать конкретную область Х", или "на что обратить внимание при выборе между областью Х и областью Y" я вполне могу. Равно как и давать мини-обзоры по каким-то конкретным областям и вопросам. С чем и приглашаю в комментарии (:
Есть ли у меня какие-то данные, чтобы подтвердить своё голословное мнение? Увы, нету. И, боюсь, собрать толковый датасет по связи специализации навыков с успехом очень сложно, ибо и свои навыки, и свой успех люди оценивают субъективно, и такой датасет отражал бы скорее совокупное мнение респондентов по этому вопросу, чем объективные закономерности.
А вот собственное мнение по вопросам типа "как заботать конкретную область Х", или "на что обратить внимание при выборе между областью Х и областью Y" я вполне могу. Равно как и давать мини-обзоры по каким-то конкретным областям и вопросам. С чем и приглашаю в комментарии (:
👍1
Техники появляются все чаще. Времени на освоение каждой всё меньше. Распыляясь на множество техник, ни одну глубоко не понять. Как адаптироваться к технологической сингулярности? Ограничить своё внимание какой-то одной техникой, или выбрать 2-3 в рамках одного выбранного на длительный период направления?
Наиболее верным видится первое. У каждого человека, какой бы позиции он ни придерживался в вопросах изучения боевых искусств, должен быть конкретный, ограниченный сетами и тренировочными курсами набор техник. Каждую из техник надо, как минимум, понимать, уметь анализировать на основе того, что знаешь, и понимать, как поступать в случае нестандартной ситуации.
Карта у тебя есть, а боевых искусств нет? Научись их держать в руках.
Хочу быть физически здоровым, а умственной и духовной гибкостью обладаю? Используй свое тело для адаптации к современной технической сингулярность.
В обществе потребления мозг человека рассматривается как расходный материал, а не как важнейший стратегический ресурс. Наступила эпоха интеллектуальной роботизации, и главное для выживания - интеллект. Развивай свой интеллект. Умение владеть своим интеллектуальным и физическим капиталом - гарантия выживания и нормальной жизни.
Как быть эффективным при компьютерной, сенсорной и прочей информационной сингулярностях? Следовать за трендами. Ненужные навыки выкидывать. Лишь при их отсутствии по-настоящему совершенствоваться.
Если будет трудно, ты всегда можешь бросить тренировки и уйти в любой другой спорт. Боевые искусства, физика и все остальное - как системы адаптации к новым условиям, не имеющие циклов и не останавливающиеся в развитии.
Слишком мало времени? Не заморачивайся на деталях. Примени список методов, указанные выше, на занятиях любым видом спорта. Если после усвоения всего этого ты дашь слабину, или если тебе станет лень развиваться дальше, ты и на этот раз избежит продолжения бессмысленного развития.
Мне нравится, как ты сейчас двигаешься. Это твой шанс прожить еще немного.
Поддерживай форму. Расти над собой. Тогда ты не будешь почивать на лаврах, а сможешь на основе своего понимания и опыта сделать что-то новое и полезное. А в конечном итоге и поможет реализации глобальных планов.
Этот текст сгенерировала GPT-3 (russiannlp.github.io/rugpt-demo) по первому абзацу. Мне любопытно, насколько больше лайков он наберёт по сравнению с предыдущим текстом, куда я пытался вложить какую-то мысль. Буду не удивлён, если окажется, что языковая модель уже лучше меня справляется с задачей рассуждения на пространные темы ¯\_(ツ)_/¯
Наиболее верным видится первое. У каждого человека, какой бы позиции он ни придерживался в вопросах изучения боевых искусств, должен быть конкретный, ограниченный сетами и тренировочными курсами набор техник. Каждую из техник надо, как минимум, понимать, уметь анализировать на основе того, что знаешь, и понимать, как поступать в случае нестандартной ситуации.
Карта у тебя есть, а боевых искусств нет? Научись их держать в руках.
Хочу быть физически здоровым, а умственной и духовной гибкостью обладаю? Используй свое тело для адаптации к современной технической сингулярность.
В обществе потребления мозг человека рассматривается как расходный материал, а не как важнейший стратегический ресурс. Наступила эпоха интеллектуальной роботизации, и главное для выживания - интеллект. Развивай свой интеллект. Умение владеть своим интеллектуальным и физическим капиталом - гарантия выживания и нормальной жизни.
Как быть эффективным при компьютерной, сенсорной и прочей информационной сингулярностях? Следовать за трендами. Ненужные навыки выкидывать. Лишь при их отсутствии по-настоящему совершенствоваться.
Если будет трудно, ты всегда можешь бросить тренировки и уйти в любой другой спорт. Боевые искусства, физика и все остальное - как системы адаптации к новым условиям, не имеющие циклов и не останавливающиеся в развитии.
Слишком мало времени? Не заморачивайся на деталях. Примени список методов, указанные выше, на занятиях любым видом спорта. Если после усвоения всего этого ты дашь слабину, или если тебе станет лень развиваться дальше, ты и на этот раз избежит продолжения бессмысленного развития.
Мне нравится, как ты сейчас двигаешься. Это твой шанс прожить еще немного.
Поддерживай форму. Расти над собой. Тогда ты не будешь почивать на лаврах, а сможешь на основе своего понимания и опыта сделать что-то новое и полезное. А в конечном итоге и поможет реализации глобальных планов.
Этот текст сгенерировала GPT-3 (russiannlp.github.io/rugpt-demo) по первому абзацу. Мне любопытно, насколько больше лайков он наберёт по сравнению с предыдущим текстом, куда я пытался вложить какую-то мысль. Буду не удивлён, если окажется, что языковая модель уже лучше меня справляется с задачей рассуждения на пространные темы ¯\_(ツ)_/¯
russiannlp.github.io
RuGPT3 demo
Web site created using create-react-app
👍4👎2
Всем привет!
В марте мы запускаем новый поток курса по машинному обучению.
Курс, как и раньше, состоит из трёх компонент:
1) Общеобразовательная: по две лекции и два семинара в неделю в течение двух месяцев; будем погружаться в теорию и практику ML.
2) Проектная: каждый студент работает над своим проектом и регулярно консультируется с нами, чтобы на выходе у каждого был свой работающий прототип какого-нибудь небесполезного приложения.
3) Нетворкинговая: будут встречи с гостями из индустрии и мира стартапов, и, конечно, общение внутри курса.
В отличие от других подобных курсов, наш стоит десятки тыщ (подробнее расскажем на дне открытых дверей, ибо ценообразование нетривиальное), но эту в цену входят регулярные личные консультации с преподавателями-экспертами. Так что если у вас будет достаточно времени и сил, выжать из курса вы сможете очень много: не только знания, но и личный проект в приличной степени готовности.
В этот раз в курсе будет несколько веток:
- Можно выбрать свою "расу": в варианте для разработчиков больше технических деталей, программирования и математики, в варианте для менеджеров – больше обзорных штук.
- Можно выбрать фокусное направление: компьютерное зрение или обработка естественного языка.
Вот ссылка на всю палитру выбора: https://maths-h.com/ru/mlprojects/
На этой неделе у нас будут "дни открытых дверей" в зуме: в среду для менеджеров (https://mathshub.timepad.ru/event/1936496), и в четверг для инженеров (https://mathshub.timepad.ru/event/1936513). Расскажем подробнее, что да как.
Так что регистрируйтесь и приходите! (:
В марте мы запускаем новый поток курса по машинному обучению.
Курс, как и раньше, состоит из трёх компонент:
1) Общеобразовательная: по две лекции и два семинара в неделю в течение двух месяцев; будем погружаться в теорию и практику ML.
2) Проектная: каждый студент работает над своим проектом и регулярно консультируется с нами, чтобы на выходе у каждого был свой работающий прототип какого-нибудь небесполезного приложения.
3) Нетворкинговая: будут встречи с гостями из индустрии и мира стартапов, и, конечно, общение внутри курса.
В отличие от других подобных курсов, наш стоит десятки тыщ (подробнее расскажем на дне открытых дверей, ибо ценообразование нетривиальное), но эту в цену входят регулярные личные консультации с преподавателями-экспертами. Так что если у вас будет достаточно времени и сил, выжать из курса вы сможете очень много: не только знания, но и личный проект в приличной степени готовности.
В этот раз в курсе будет несколько веток:
- Можно выбрать свою "расу": в варианте для разработчиков больше технических деталей, программирования и математики, в варианте для менеджеров – больше обзорных штук.
- Можно выбрать фокусное направление: компьютерное зрение или обработка естественного языка.
Вот ссылка на всю палитру выбора: https://maths-h.com/ru/mlprojects/
На этой неделе у нас будут "дни открытых дверей" в зуме: в среду для менеджеров (https://mathshub.timepad.ru/event/1936496), и в четверг для инженеров (https://mathshub.timepad.ru/event/1936513). Расскажем подробнее, что да как.
Так что регистрируйтесь и приходите! (:
Maths-H
Курсы по созданию портфолио в машинном обучении
Экспресс-курсы по анализу данных и машинному обучению с упором на практику
👍6👎3🔥1
Открытое письмо российских айтишников против войны в Украине.
https://docs.google.com/forms/d/e/1FAIpQLScEsxsoXl_7R4aD5F8-B7fCCBVwU_BXBaOVJsKszbFyRHRkkw/viewform
https://docs.google.com/forms/d/e/1FAIpQLScEsxsoXl_7R4aD5F8-B7fCCBVwU_BXBaOVJsKszbFyRHRkkw/viewform
Google Docs
Оставить подпись под открытым письмом представителей российской ИТ-индустрии по поводу военной операции на территории Украины
Открытое письмо представителей российской ИТ-индустрии против военной операции на территории Украины
Мы, работники российской ИТ-индустрии, категорически против военных действий на территории Украины, начатых вооруженными силами Российской Федерации.
Мы…
Мы, работники российской ИТ-индустрии, категорически против военных действий на территории Украины, начатых вооруженными силами Российской Федерации.
Мы…
❤27👎16👍11
Со следующей недели коллеги из MathsHub будут проводить открытый и бесплатный месячный интенсив по математике и питону.
Он подойдёт тем, кто хочет активно приступить к ML, но боится, что технических навыков не хватит.
Будет обзор инструментов python для работы с данными, и вспоминалочка базового матана/линейной алгебры/теорвера.
Подробности: https://maths-h.com/ru/intensive-mathpython
Он подойдёт тем, кто хочет активно приступить к ML, но боится, что технических навыков не хватит.
Будет обзор инструментов python для работы с данными, и вспоминалочка базового матана/линейной алгебры/теорвера.
Подробности: https://maths-h.com/ru/intensive-mathpython
🔥11❤2👍1
Недавно мне понадобилось для калибровки регрессионных моделей обучить формулу y=f(X), которая хорошо бы приближала заданное облако точек (возможно, нелинейно) и была бы монотонно возрастающая и по возможности гладкая.
В scikit-learn нашлись три примерно подходящие модели:
1) Старая добрая LinearRegression: монотонная и максимально гладкая, но неспособная описывать нелинейности.
2) IsotonicRegression: монотонная и умеющая в произвольные нелинейности, но очень негладкая и склонная к переобучению.
3) HistGradientBoostingRegressor: нечто кусочно-постоянное, вроде IsotonicRegression, но приспособленное и для многомерных Х.
Мне захотелось создать что-то среднее: модель, которая была бы настолько же гибкая, как IsotonicRegression, но в которой можно было бы задавать степень гладкости (так, что максимально гладкая версия сходилась бы к линейной регрессии). Для этого можно обучать линейную регрессию над базисом из множества непрерывных кусочно-линейных ступенек, минимизируя одновременно MSE и средний модуль разностей крутизны соседних ступенек, с ограничением, что крутизна каждой ступеньки – неотрицательная. Чем больше вес второй компоненты в функции потерь, тем более гладкая получится в результате функция.
Попробовал имплементировать эту идею, получилось ровно 100 строк кода:
- Ступеньки такие: слева и справа от – константа, между ними – линейная функция.
- Границы ступенек делаем в каждом наблюдении, если данных мало, и в процентилях (либо с равномерным шагом), если датасет большой.
- Веса ступенек инициализируем из Ridge-регрессии: она тоже добавляет гладкости, но минимизирует не разность крутизны соседних ступенек, а сумму квадратов крутизны ступенек.
- Дальше "правильную" функцию потерь минимизируем с помощью scipy.optimize.
- После обучения модель можно сконвертировать в IsotonicRegression, которая делает predict эффективнее (под капотом очень быстрая numpy.interp).
Код тут: https://gist.github.com/avidale/83998aa24e5d9c40c894e9e39c9f9c86
В scikit-learn нашлись три примерно подходящие модели:
1) Старая добрая LinearRegression: монотонная и максимально гладкая, но неспособная описывать нелинейности.
2) IsotonicRegression: монотонная и умеющая в произвольные нелинейности, но очень негладкая и склонная к переобучению.
3) HistGradientBoostingRegressor: нечто кусочно-постоянное, вроде IsotonicRegression, но приспособленное и для многомерных Х.
Мне захотелось создать что-то среднее: модель, которая была бы настолько же гибкая, как IsotonicRegression, но в которой можно было бы задавать степень гладкости (так, что максимально гладкая версия сходилась бы к линейной регрессии). Для этого можно обучать линейную регрессию над базисом из множества непрерывных кусочно-линейных ступенек, минимизируя одновременно MSE и средний модуль разностей крутизны соседних ступенек, с ограничением, что крутизна каждой ступеньки – неотрицательная. Чем больше вес второй компоненты в функции потерь, тем более гладкая получится в результате функция.
Попробовал имплементировать эту идею, получилось ровно 100 строк кода:
- Ступеньки такие: слева и справа от – константа, между ними – линейная функция.
- Границы ступенек делаем в каждом наблюдении, если данных мало, и в процентилях (либо с равномерным шагом), если датасет большой.
- Веса ступенек инициализируем из Ridge-регрессии: она тоже добавляет гладкости, но минимизирует не разность крутизны соседних ступенек, а сумму квадратов крутизны ступенек.
- Дальше "правильную" функцию потерь минимизируем с помощью scipy.optimize.
- После обучения модель можно сконвертировать в IsotonicRegression, которая делает predict эффективнее (под капотом очень быстрая numpy.interp).
Код тут: https://gist.github.com/avidale/83998aa24e5d9c40c894e9e39c9f9c86
🔥8👍4❤1💩1
Слева: линейная, изотоническая, и сглаженная изотоническая регрессии.
Справа: в зависимости от степени регуляризации мы можем как угодно интерполировать между линейной и изотонической регрессией.
Справа: в зависимости от степени регуляризации мы можем как угодно интерполировать между линейной и изотонической регрессией.
👍1
Представляю бесплатный интенсив из 20 занятий по питону и математике для начинающих.
Организует MathsHub, с которым я много чего преподавал последние два года, а проводит Аня Чувилина, моя бывшая коллега по Yandex Data Factory.
Подробности: https://maths-h.com/ru/python-math-aug22
Организует MathsHub, с которым я много чего преподавал последние два года, а проводит Аня Чувилина, моя бывшая коллега по Yandex Data Factory.
Подробности: https://maths-h.com/ru/python-math-aug22
🔥10❤1👎1💩1
Forwarded from Diana Safina
Ищем в нашу команду Mathshub талантливых инструкторов в сфере machine learning!
Кто мы? Mathshub - международная школа программирования и анализа данных. Создатели школы - практики и предприниматели, построившие карьеру в разработке и управлении продуктов с машинным обучением в Яндекс, Mail.Ru Group, Alfabank, Ozon, МВидео, Aitarget с опытом преподавания в ВШЭ, МФТИ, Y-DATA.
Какие требования к кандидатам?
- Отличное знание языка Python
- Опыт преподавания более 3х лет(обсуждаемо)
- текущая позиция - Junior/middle Data Scientist
Что нужно делать?
- Проверять домашние работы студентов
- Проводить живые групповые уроки (не чаще 1 раза в неделю) по разбору домашних заданий
Как откликнуться и что делать после?
- Заполните, пожалуйста, эту форму: https://forms.gle/yPYPJ2qj2myoX6iy5
- Если вам не придет ответ на почту, пожалуйста, свяжитесь со мной в тг @diswana
Кто мы? Mathshub - международная школа программирования и анализа данных. Создатели школы - практики и предприниматели, построившие карьеру в разработке и управлении продуктов с машинным обучением в Яндекс, Mail.Ru Group, Alfabank, Ozon, МВидео, Aitarget с опытом преподавания в ВШЭ, МФТИ, Y-DATA.
Какие требования к кандидатам?
- Отличное знание языка Python
- Опыт преподавания более 3х лет(обсуждаемо)
- текущая позиция - Junior/middle Data Scientist
Что нужно делать?
- Проверять домашние работы студентов
- Проводить живые групповые уроки (не чаще 1 раза в неделю) по разбору домашних заданий
Как откликнуться и что делать после?
- Заполните, пожалуйста, эту форму: https://forms.gle/yPYPJ2qj2myoX6iy5
- Если вам не придет ответ на почту, пожалуйста, свяжитесь со мной в тг @diswana
❤1❤🔥1🤩1💩1💋1
Forwarded from epsilon correct
Почему почти у всех полезных матриц маленький ранг?
В нашей с вами жизни матрицы малого ранга встречаются на каждом шагу, например, в моделировании физических свойств физических систем (анализ теплопроводности или модальный анализ вибраций), в рекомендательных системах, сжатие изображений – везде, если поискать , можно найти матрицы с небольшим рангом.🧐
Это невероятно удобно: с матрицами малого ранга можно делать абсолютно неприличные вещи – например, для матрицы n × n ранга d можно восстановить все её элементы из случайно выбрав C*N^{1.2}*r*log n значений. Понятное дело, все операции – матвеки, подсчёт нормы и всяких разложений тоже существенно ускоряются. В наших любимых LLMках матрицы малого ранга используются для тюнинга и создания адаптеров для решения разнообразных задач.
При этом, случайные Гауссовские матрицы имеют (с огромной вероятностью) полный ранг. Каким-то образом получается, что для матриц "из жизни" ранг оказывается небольшим.🤪
Самое, наверное, известное – наш мир образуют гладкие функции (скалярные и векторные), а они порождают матрицы маленького ранга. На днях я набрёл на альтернативное объяснение (откуда украл картинку для поста): матрицы в реальном мире похожи на результат матричных уравнений Сильвестра. У таких матриц будет маленький displacement rank – он свойственен системам, где можно выбрать разные точки отсчёта. Оценки у ребят получаются довольно некрасивые (кому нравится считать числа Золотарёва?), но зато точные. Кстати, в этом нашем диплёрнинге low displacement rank matrices уже успели поприменять. Широко известные в узких кругах Albert Gu и Tri Dao тоже отметились.
Всем подписчикам желаем низкого ранга по жизни – ну, чтобы гладко всё было, да.👍
В нашей с вами жизни матрицы малого ранга встречаются на каждом шагу, например, в моделировании физических свойств физических систем (анализ теплопроводности или модальный анализ вибраций), в рекомендательных системах, сжатие изображений – везде, если поискать , можно найти матрицы с небольшим рангом.
Это невероятно удобно: с матрицами малого ранга можно делать абсолютно неприличные вещи – например, для матрицы n × n ранга d можно восстановить все её элементы из случайно выбрав C*N^{1.2}*r*log n значений. Понятное дело, все операции – матвеки, подсчёт нормы и всяких разложений тоже существенно ускоряются. В наших любимых LLMках матрицы малого ранга используются для тюнинга и создания адаптеров для решения разнообразных задач.
При этом, случайные Гауссовские матрицы имеют (с огромной вероятностью) полный ранг. Каким-то образом получается, что для матриц "из жизни" ранг оказывается небольшим.
Самое, наверное, известное – наш мир образуют гладкие функции (скалярные и векторные), а они порождают матрицы маленького ранга. На днях я набрёл на альтернативное объяснение (откуда украл картинку для поста): матрицы в реальном мире похожи на результат матричных уравнений Сильвестра. У таких матриц будет маленький displacement rank – он свойственен системам, где можно выбрать разные точки отсчёта. Оценки у ребят получаются довольно некрасивые (кому нравится считать числа Золотарёва?), но зато точные. Кстати, в этом нашем диплёрнинге low displacement rank matrices уже успели поприменять. Широко известные в узких кругах Albert Gu и Tri Dao тоже отметились.
Всем подписчикам желаем низкого ранга по жизни – ну, чтобы гладко всё было, да.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤1