TGTGInsightаналитика telegramLIVE / telegram public index
К списку каналов
DeepSchool avatar

TGINSIGHT CHAT

DeepSchool

@deep_school

Образование

Это канал школы deepschool.ru. Здесь мы будем: - напоминать вам теорию ML/DL в виде коротких постов, - задавать вопросы с собеседований, - рассказывать про полезные фреймворки - и делиться советами, которые помогут вам в работе. @deepschool_support

Подписчики1.1万Текущее число подписчиков
Постов530Проиндексировано постов
Охват32,610Просмотры последних постов
Последние посты

Последние посты

Стр. 42 из 45 · 530 постов

Опубликован 10 окт.

Хотели рассказать вам про Efficient Net, потому что многие путаются в этой архитектуре и не до конца понимают причем тут “efficient” то вообще) Взяли на себя ответственность поставить точку в этом вопросе. Чтобы в следующий раз, когда вас спросят что это за EffNet такой, вы без проблем могли ответить. Изучать архитектуры — полезно. Эти знания позволят вам правильно подобрать сеть под ваши задачи и ограничения, а иногда даже помогут пропатчить какую-нибудь китайскую сетку, чтобы потом сконвертить ее в TRT)) Но рассказывая про EffNet, нельзя не упомянуть MBConv блоки из MobileNet. Объясняя Inverted Residual хорошо бы рассказать про обычный Residual и так далее. Поэтому логичнее уже пройтись по всей истории эволюции и начать с VGG😅 Вот и начали… Представляем вашему вниманию первую статью из серии “вспоминаем архитектуры”: разбираем VGG. Давайте вместе пройдемся по истории и вспомним/изучим/дополним_наши_знания: https://telegra.ph/VGG-10-10

3,580 views

Опубликован 20 сент.

Сегодня вторник, а значит в эфире рубрика “повторяем теорию”🤓 Вспомним про регуляризацию сетей, а именно про три популярных метода: L1, L2 и Dropout (ведь был популярен когда-то, надо отдать дань старичку). Статья в телеграфе 👉Регуляризуем правильно! #регуляризация#L1#L2#dropout

3,020 views

Опубликован 19 сент.

Записали для вас видео про ускорение инференса! 🚀 В нем Дима Чудаков рассказал как быстро и дешево ускорить инференс ваших сетей при помощи фьюзинга и дистилляции, а также оставил несколько советов по их применению. Это наш дебют на ютубе! Будем рады поддержке) Подписывайтесь и ставьте лайки если вам понравилось видео в подобном формате👍 Переходите по ссылке, чтобы посмотреть: https://youtu.be/6UJn0J1Sul4

2,980 views

Опубликован 13 сент.

Давно хотели завести рубрику “повторяем теорию”🤓 И кажется, что вторник отлично для нее подходит😉 Ранее мы вспоминали Batch Normalization, поэтому сперва закончим с нормализацией в рамках новой рубрики, а после пойдем дальше. В этот раз для удобства написали пост в формате статьи в телеграфе: там можно вставлять картиночки между текстом, а на телефоне меньше скроллить и оставаться в приложении телеграма. Если вы хотите вспомнить, какие проблемы есть у батчнорма, и какие “аналоги” были призваны их решить: Layer Norm, Instance Norm и Group Norm — то читайте нашу статью в телеграфе🙂 #повторяем_теорию#нормализация

2,720 views

Опубликован 28 авг.

​​Training Tricks И последняя часть советов из статьи Bag Of Tricks 1. Label Smoothing. В классическом Cross Entropy Loss оптимальным значением логита (то что до софтмакса) будет inf, что приводит к очень сильному разрыву для top1 логита, что может легко привести к оверфиту. Авторы предлагают использовать label smoothing. Проще говоря, вместо того чтобы тянуть верный лейбл к 1, мы будем тянуть его к 0.9 (оставшийся ε = 0.1 скор равномерно распределим по остальным К классам) (рис. 3) В результате на валидации наш gap (расстояние между top1 и top2) будет сконцентрирован вокруг теоретического оптимума (рис. 4) и будет значительно меньше случаев с overconfidence. При ε = 0.1 и К = 1000, этот теоретичиский оптимум будет равен 9.1, который считается по формуле на рис. 5. 2. Knowledge Distillation. Выучим предварительно большую сеть которая будет выдавать крутые метрики, а потом используем её в качестве сети учителя при обучении нашей сетки поменьше. В процессе обучения “ученика” будем также тянуть его выходы к выходам учителя, передавая таким образом Dark Knoweledge — скрытые распределения в датасете, которые выучила большая сетка. Итоговая функция потерь будет выглядеть вот так (рис. 6). Параметр T — параметр температуры, который позволяет сгладить распределения ученика и учителя при дистилляции. Такой трюк помогает ученику больше внимания обращать на top2 и top3 классы и лучше обучаться на dark knoweledge. 3. Mixup Training. Интересная ауга, которая предлагает вам линейно сблендить два изображения и учиться на этом новом изображении (рис. 7). Усредняем 2 картинки и усредняем их GT лейблы. Накидывает практически 1 процент на imagenet, крутота. Результаты экспериментов указаны на рис. 8

3,060 views

Опубликован 27 авг.

​​Model Tweaks За основу авторы взяли “самую популярную реализацию ResNet-50” (рис. 2, слева). И ссылаются на две статьи, в которых были внесены правки в эту архитектуру. Первую правку они обозначили как ResNet-B, вторую ResNet-C. И, вдохновившись этими идеями, протестировали еще одно изменение прямо в своей статье, обозначив новую архитектуру как ResNet-D (рис. 2). ResNet-B — Передвинем stride=2 из первой свёртки блока во вторую, потому что из-за этого stride мы отбрасываем 3/4 входящей информации. Помним, что ядро шагает и по вертикали, и по горизонтали. И если мы применяем ядро 1х1, шагая через пиксель, то для фичи со spatial size 4х4 свернем лишь 4 пикселя. ResNet-C — Заменяем первую свёртку 7х7, на 3 свёртки 3х3, у первой будет stride=2. Это будет только чуть-чуть дороже, зато неплохо добавит к точности и мощности сети. ResNet-D — на скипах из-за свёртки 1х1 опять теряется 3/4 информации, уберём из свёртки stride=2 и перед ней добавим average pool (практическим путем выявили, что это докидывает).

2,470 views

Опубликован 27 авг.

​​Train Strategy 1. Линейный скейлинг learning rate. Эмпирически заметили, что с ростом batchsize модель начинает сходиться медленнее. Если мы просто увеличим batchsize, то за тоже количество эпох модель сойдётся хуже. Что в целом логично, при увеличении batchsize уменьшается итоговое число шагов, при этом математическое ожидание стохастического градиента (т.е. оценка градиента для модели на каком-то батче) не изменится, уменьшится лишь дисперсия. Для решения этой проблемы просто увеличивают градиент во столько раз, во сколько изменили размер батча. Например, авторы предлагают брать такую формулу 0.1 * (batchsize / 256), считаем что для batchsize 256 оптимальный lr будет 0.1. Похожий трюк следует применять и при обучении на нескольких GPU: используете 8 GPU — увеличивайте lr в 8 раз (ведь батч стал больше в 8 раз). 2. Learning rate warmup. В начале обучения сеть ещё очень далека от финального решения и слишком большой lr может привести к нестабильности. Авторы предлагают в начале обучения стартовать с нулевого lr и постепенно линейно от батча к батчу увеличивать lr на протяжении, например, 5 эпох. То есть на 5-ой эпохе уже будет ваш выбранный lr. Для оптимизатора Adam это особенно важно. Он капризный в начале обучения, потому что статистики ещё не стабилизовались. А трансформеры вообще отказываются сходиться без warmup. 3. Инициализировать гамму батчнорма нулём. Блок Resnet можно представить как x + block(x). И после каждого слоя свёртки у нас идёт слой батчнорма. Если в конце каждого block мы будем инициализировать обучаемый параметр gamma нулём (который скейлит распределение после нормализации), то каждый блок в ResNet будет просто возвращать свой вход. Таким образом, в начале обучения сеть будет вести себя так, будто у неё намного меньше параметров. А это благоприятно влияет на сходимость во время первых эпох. 4. Не использовать регуляризацию для баесов. Использование регуляризации позволяет бороться с оверфитом, но регуляризация нужна только для весов. Для баесов, обучаемых beta и gamma в батчнорме регуляризации не нужны и ухудшают метрики. 5. Обучение сети во float16. Современные GPU намного шустрее во float16. Например, Tesla V100 в fp32 выдаёт 14 TFLOPS, а в fp16 больше 100 TFLOPS. Главное помнить, что fp16 сильно экономит на битах в экспоненте, что сильно влияет на ошибку вблизи нуля. Предлагается хранить и применять обновления к весам во float32, а делать forward pass и считать градиенты во float16. Также советуют скелить лосс, чтобы не так страдать от проблем рядом с нулём. В pytorch есть отличный гайд для этого. А ещё придумали bfloat16, у которого экономят на битах не в экспоненте, а в мантисе — там нужно значительно меньше упражнений, но не все GPU поддерживают данный формат. 6. Cosine Learning Rate Decay. Вместо того чтобы ступеньками уменьшать LR в процессе обучения, или экспоненциально вниз, авторы предлагают использовать Cosine Annealing. Результаты экспериментов указаны на рис. 1

2,530 views

Опубликован 27 авг.

​​Разбираем статью Bag of Tricks for Image Classification with Convolutional Neural Network В какой-то момент разработки модели начинаются упражнения с тем, чтобы слегка поднять метрики до целевых. Один из любимых методов уважаемых дип лёрнинг ресёрчеров это вставлять разные модные и не очень штуки в свой пайплайн, чтобы в один момент что-то из этого хорошо так накинуло. И потом можно было гордо ходить по офису\конференциям и рассказывать как удалось внести важный вклад в свой продукт. Классный способ набираться подобных трюков и знаний — это читать обзорные статьи, где за вас уже проверили и актуализировали много подходов. Bag Of Tricks — как раз одна из таких работ. Несмотря на то что в названии статьи указано “Image Classification” и авторы изначально экспериментировали с ResNet-50, перечисленные трюки помогают также в других задачах и с другими архитектурами. В конце статьи авторы также указали результаты успешных экспериментов на задачах детекции и сегментации (рис. 0). Основная идея всей работы — авторы собрали в большую пачку кучу триков\твиков\уловок которые накопились в комьюнити, проверили их эффективность и подняли точность резнета на ImageNet с 75% до 79%. Последуем примеру авторов и разобьем советы на 3 части: - Train Stratedy - Model Tweaks - Training Tricks Сегодня опубликуем первые две, а завтра третью, чтобы не высыпать слишком много букав за один раз) И так, погнали👇

2,430 views

Опубликован 27 авг.

По количеству китов поняли, что тема интересна, поэтому не будем откладывать до будних дней! Спасибо всем за ваши реакции! Ниже более подробный разбор статьи, как и обещали👇

2,020 views

Опубликован 24 авг.

​​Красивая картинка как Bag Of Tricks доминирует другие архитектуры в своё время. Кстати, если хотите пост с более подробным разбором трюков из статьи Bag Of Tricks, нажмите китенка в реакции🐳 Если соберем 17 китят, подготовим отдельный пост 🙂

2,230 views

Опубликован 24 авг.

​​​​Какую архитектуру взять в качестве бейзлайна и что докинуть в свою? Вдохновимся статьёй из OpenAI и посмотрим какую сетку они используют в качестве feature extractor для картиночек. А там ResNet из статьи Bag Of Tricks и какой-то antialiased rect-2 blur pooling. Кто такие и почему? • ResNet Bag Of Tricks это такая сборная статья в которой проверили и попробовали кучу всяких советов\триков\твиков\мудростей накопившихся для свёрточных сетей и соединили всё в одну модель ResNet-D (рис. 1). Статья выступает в роли такого бывалого коллеги сеньёра, который накидывает вам “А вот ты у батчнормов, которые в конце блока, гамму в ноль поставь, тогда у тебя сетка круто по началу сходится начнёт”. В ней подробно описано как учить, что менять в +- современном мире (конечно у нас уже трансформеры, потом собрали ConvNeXt, но Bag Of Tricks всё ещё актуален). Удобно это тем что можно кусочками к себе в пайплайн тянуть всякие улучшения, и не пересобирать всё своё решение. • Антиалиасинг в нейронных сетях. Сетки которые мы используем не инварианты к сдвигу. Вот так вот, придумали свёртки с учётом, что они инвариантны к сдвигу, а сети у нас совсем не инварианты. Всё из-за коварного пулинга, который как и при обычном сжатии картинок даёт эффект алиасинга. Нам бы очень хотелось сгладить этот эффект, особенно это хочется сделать после того как мы посмотрим на графики зависимости score от сдвига (рис. 2). Решается это проблема обычным размытием перед пулингом. Основное в ResNet Bag Of Tricks. • Как скейлить learning rate, какой взять scheduler, кто такой warmup, какой батч сайз взять и прочие training strategy. • Польза обучения в FP16 на современных видеокартах. • Что поменять в дефолтной архитектуре ResNet чтобы стало лучше, на что заменить первые свёртки, как поменять Residual Block. • Какие ауги зашли на ImageNet и у вас наверное сработают. Это не статья откровение, возможно многое вы уже слышали или даже использовали, но когда всё в одном месте с красивыми табличками и подробно описано, то жить сразу как-то приятнее. Основное в Making Convolutional Networks Shift-Invariant Again. Всё что нужно сделать, это из официального репозитория достать реализацию BlurPool и по гайду вставить в свою сеть (рис. 3). В репозитории есть функции, которые это делают за вас, но надёжней просто в своём коде поменять, чтобы вы наверняка знали что у вас поменялось. А самое классное в том что сеть не надо учить заново, она не сильно изменится и можно со спокойной душой дотюнивать со своего претрейна. #советы#nn#training

2,680 views
12•••10•••20•••30•••404142434445