Slides from the talk on UseData 2019 conference. Describes what happened in the NN architecture space in the last two years. Focus on production-ready things. Other interesting but more research-related topics (like Graph networks) are not covered here.
Введение в архитектуры нейронных сетей / HighLoad++ 2016Grigory Sapunov
Slides from HighLoad++ 2016 conference.
Introduction into neural network architectures (Rus)
Презентация для конференции HighLoad++ 2016.
http://www.highload.ru/2016/abstracts/2454.html
Видеозапись доклада:
https://www.youtube.com/watch?v=XY5AczPW7V4
Современные архитектуры диалоговых систем / Анатолий Востряков (Segmento)Ontico
В докладе я рассмотрю современные архитектуры диалоговых систем или чат-ботов. Неполный список архитектур влючает Dual Encoders, Neural Conversational Networks with and without context, Generative Hierarchical Neural Networks, Memory Networks and Dynamic Memory Networks. В том числе немного коснемся использования Reinofcement Learning в диалоговых системах. Вначале будет мягкое введение в Deep Learning for NLP для лучшего понимания представленных архитектур.
Введение в архитектуры нейронных сетей / HighLoad++ 2016Grigory Sapunov
Slides from HighLoad++ 2016 conference.
Introduction into neural network architectures (Rus)
Презентация для конференции HighLoad++ 2016.
http://www.highload.ru/2016/abstracts/2454.html
Видеозапись доклада:
https://www.youtube.com/watch?v=XY5AczPW7V4
Современные архитектуры диалоговых систем / Анатолий Востряков (Segmento)Ontico
В докладе я рассмотрю современные архитектуры диалоговых систем или чат-ботов. Неполный список архитектур влючает Dual Encoders, Neural Conversational Networks with and without context, Generative Hierarchical Neural Networks, Memory Networks and Dynamic Memory Networks. В том числе немного коснемся использования Reinofcement Learning в диалоговых системах. Вначале будет мягкое введение в Deep Learning for NLP для лучшего понимания представленных архитектур.
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)Ontico
Artisto - первое в мире мобильное приложение для обработки видео с помощью нейросетей в стиле картин художников и любых исходных изображений. Приложение вошло в топы AppStore и Google Play в США.
В рамках доклада расскажу:
- как научить нейросети рисовать, а, главное, красиво и быстро;
- про особенности переноса стиля на видео;
- про технологический стек.
Machine learning c использованием нейронных сетей, Дмитрий ЛапинIT61
Обзор популярных фреймворков для обучения нейронных сетей, поделюсь собственным опытом их внедрения. Расскажу об использовании готовых предобученных сетей "как есть", дообучении (fine-tuning) и обучении собственных сетей с нуля.
Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...Yandex
Свёрточные нейронные сети позволяют получать потрясающие результаты во многих задачах компьютерного зрения. В этом докладе я расскажу о нашем опыте обучения и применения свёрточных нейронных сетей. Отдельно будет затронут актуальный вопрос сжатия и ускорения нейросетевых моделей.
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решенияFProg
В докладе рассматривается мотивация и опыт перехода процесса разработки API с большим количеством внутренней логики с Python на сочетание Erlang и Haskell, проблемы в процессе разработки и способы их решения.
В презентации рассказывается о структурах памяти в JVM: Heap, Non-Heap, Stack, об атомарности операций и о garbage collector. Рассмотрен пример, как работает стек. Также, приведены примеры, как использовать jVisualVM и что она может показать.
Пишем самый быстрый хеш для кэширования данныхRoman Elizarov
Типичный случай — приложению работающему с БД некоторые объекты нужны так часто, то их необходимо кэшировать в памяти. В этом случае их кладут в структуру данных типа хэш. Однако, бывают случаи, когда даже поиск в этом хэше становится узким местом приложения и решения из стандартных библиотек перестают устраивать по своей производительности.
Основной упор доклада будет не на конкретный алгоритм, а на та техниках дизайна быстрых алгоритмов — на что надо обращать внимание, как вообще подходить к решению подобных задач.
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
Теория языков программирования (немного об интерпретаторах, триадах, оптимизации, парсерах и прочее)
Compilers construction some lectures of whole course, it covers some methods on interpreters, optimisations, antlr, dsl (introduction)
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)Ontico
Artisto - первое в мире мобильное приложение для обработки видео с помощью нейросетей в стиле картин художников и любых исходных изображений. Приложение вошло в топы AppStore и Google Play в США.
В рамках доклада расскажу:
- как научить нейросети рисовать, а, главное, красиво и быстро;
- про особенности переноса стиля на видео;
- про технологический стек.
Machine learning c использованием нейронных сетей, Дмитрий ЛапинIT61
Обзор популярных фреймворков для обучения нейронных сетей, поделюсь собственным опытом их внедрения. Расскажу об использовании готовых предобученных сетей "как есть", дообучении (fine-tuning) и обучении собственных сетей с нуля.
Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...Yandex
Свёрточные нейронные сети позволяют получать потрясающие результаты во многих задачах компьютерного зрения. В этом докладе я расскажу о нашем опыте обучения и применения свёрточных нейронных сетей. Отдельно будет затронут актуальный вопрос сжатия и ускорения нейросетевых моделей.
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решенияFProg
В докладе рассматривается мотивация и опыт перехода процесса разработки API с большим количеством внутренней логики с Python на сочетание Erlang и Haskell, проблемы в процессе разработки и способы их решения.
В презентации рассказывается о структурах памяти в JVM: Heap, Non-Heap, Stack, об атомарности операций и о garbage collector. Рассмотрен пример, как работает стек. Также, приведены примеры, как использовать jVisualVM и что она может показать.
Пишем самый быстрый хеш для кэширования данныхRoman Elizarov
Типичный случай — приложению работающему с БД некоторые объекты нужны так часто, то их необходимо кэшировать в памяти. В этом случае их кладут в структуру данных типа хэш. Однако, бывают случаи, когда даже поиск в этом хэше становится узким местом приложения и решения из стандартных библиотек перестают устраивать по своей производительности.
Основной упор доклада будет не на конкретный алгоритм, а на та техниках дизайна быстрых алгоритмов — на что надо обращать внимание, как вообще подходить к решению подобных задач.
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
Теория языков программирования (немного об интерпретаторах, триадах, оптимизации, парсерах и прочее)
Compilers construction some lectures of whole course, it covers some methods on interpreters, optimisations, antlr, dsl (introduction)
Так бывает, что иногда ваше приложение начинает долго выполнять казалось бы обыденные задачи и потреблять большое количество оперативной памяти. А вы как разработчик и понятия не имеете, почему же так происходит (но вам интересно). В ходе доклада поговорим о средствах, которые могут нам понять причины странного поведения наших программ. Если не боитесь таких слов как Valgrind, gprof, gperftools и многих других - добро пожаловать!
Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот термин намного старше и более всеохватывающий. На уровне ознакомления с технологией мы поговорим о виртуализации ресурсов в кластере и на примере pacemaker.
Мы покажем, как можно перенести разработанные алгоритмы для работы с Big Data с минимальными изменениями исходных программ. Рассмотрим возможности по распараллеливанию счета на многоядерных процессорах (вычислительных кластерах) и графических процессорах, поддерживающих CUDA.
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...Unigine Corp.
Павел Наказненко, разработчик, freelance (Красноярск)
На основе нашего опыта портирования Unreal Engine 3 и Free Heroes 2 на Flash, расскажу немного о технологии FLASCC, а также тонкостях портирования С++ игр с помощью нее.
Презентация к докладу на UAFPUG-1 (первой встрече Ukrainian Adobe Flash Platform User Group, состоявшейся 15 марта 2008 г. в Харькове).
Обзор методов разработки приложений, введение в рефакторинг, шаблоны проектирования и фреймворк PureMVC.
Автор: Ростислав Сирык (http://flash-ripper.com/)
Предупреждение: презентация выкладывается "как есть". Автор осознает необходимость ее доработки. Планируется вторая часть.
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
В докладе речь пойдёт о языке Go. Вячеслав расскажет о внутреннем устройстве языка (структуре, оптимизации, сборщике мусора и т.д.), о том, как и почему Go используют в Яндексе и что о нём говорят разработчики на С++. Отдельно Вячеслав остановится на многопоточном программировании и особенностях отладки и профилирования в Go.
A more deeper talk on the Transformer architecture from the webinar at NTR
https://www.ntr.ai/webinar/transformery
Google slides version: https://docs.google.com/presentation/d/1dIadh_nIszxXG8-672vJmvFGT6jBp0mOqzNV4g3e2Lc/edit?usp=sharing
A talk on Transformers at GDG DevParty
27.06.2020
Link to Google Slides version: https://docs.google.com/presentation/d/1N7ayCRqgsFO7TqSjN4OWW-dMOQPT5DZcHXsZvw8-6FU/edit?usp=sharing
Discussing two papers on applying Deep Learning for Biology:
BERTology Meets Biology: Interpreting Attention in Protein Language Models
https://arxiv.org/abs/2006.15222
Evaluating Protein Transfer Learning with TAPE
https://arxiv.org/abs/1906.08230
The most significant (not purely scientific) results in AI in the last year (2018-2019).
Disclaimer: may be very subjective :)
Slides to the set of lectures given in Feb-Apr 2019.
This one was conducted in Atlas Biomed Group, 2019-04-26
Практический подход к выбору доменно-адаптивного NMTGrigory Sapunov
Выбор правильного машинного перевода (Machine Translation, MT) под конкретный проект крайне сложен: качество движков сильно разнится между различными доменами и языковыми парами и постоянно меняется с обновлением моделей. С доменно-адаптивным MT ситуация ещё более усложняется — добавляются требования к обучающему корпусу и становится менее прозрачной стоимость владения.
В докладе мы рассмотрим гибридный подход к оценке качества сервисов облачного доменно-адаптивного нейросетевого машинного перевода (NMT), при котором автоматическая оценка сравнивается с оценкой, данной экспертами, использующими единую метрику. Мы также обсудим детали обоих подходов, поделимся результатами оценки и мыслями относительно сравнения обоих методов.
Мы ответим на вопросы, насколько хорош доменно-адаптивный NMT, какова стоимость владения таким решением, как долго он обучается, сколько данных требуется, насколько это безопасно и как его использовать.
2. План доклада
• Recap: основные типы нейросетей
• Self-Attention и Трансформер
• Трансформер
• BERT, XLNet, GPT-2
• GAN
• Modern Sequence Learning
• Другие архитектурные улучшения
• Процедуры обучения
4. FNN: Feedforward Neural Network
Multilayer Perceptron (MLP) — классика FFN.
Хорошо работают для классификации, но
есть трудности:
● много параметров
● градиенты затухают в глубокой сети → трудно обучать
6. СNN: Convolutional Neural Network
FNN сеть специального вида для работы с данными, имеющими
локальную структуру
7. RNN: Recurrent Neural Network
RNN имеют циклические связи в структуре сети, подходит для
работы с последовательностями.
8. LSTM/GRU: более хитрые RNN
http://kvitajakub.github.io/2016/04/14/rnn-diagrams
Позволяет выучивать более “длинные” закономерности, помогает
бороться с затуханием или взрывом градиентов.
12. Проблемы архитектуры Encoder-Decoder
Энкодер кодирует всю входную последовательность в вектор
фиксированной длины (контекст) независимо от её размера.
Достаточен ли размер этого вектора? Одинаково ли хорош этот
вектор для каждого генерируемого выходного элемента?
13. Механизм внимания
Механизм внимания позволяет декодеру учитывать разные
элементы входной последовательности по-разному при генерации
каждого элемента выходной последовательности.
Мы даём модели возможность сформировать свой контекст для
каждой позиции.
14. Механизм внимания (soft attention)
http://en.diveintodeeplearning.org/chapter_natural-language-processing/attention.html
20. Трансформер
Энкодер-декодер специального вида,
построенный на блоках attention без
использования RNN/CNN.
Основной компонент — multi-head self-attention.
Быстрые матричные операции, хорошее качество
на различных задачах (в первую очередь
машинный перевод).
21.
22. Multi-head self-attention
По сути, просто несколько слоёв внимания,
производящие различные линейные
преобразования над входными данными и
составленные вместе.
31. Другие виды трансформеров
● Image Transformer
● Music Transformer
● Universal Transformer
● Transformer-XL
● Sparse Transformer
● ...
32. BERT
Bidirectional Encoder Representations from Transformers
Использует только энкодер трансформера.
Предобучается на больших массивах текстов, учитывая
для каждой позиции контекст слева и справа.
Можно взять предобученный BERT (представления из
него) и дообучить его под свою задачу (часто на небольшом
датасете).
Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing,
https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html
33. BERT vs. GPT vs. ELMo
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding,
https://arxiv.org/abs/1810.04805
37. XLNet: Permutation Language Modeling
BERT — это, по сути, denoising autoencoder.
Он не учитывает взаимозависимость
маскируемых слов.
Традиционные LM не видят правый
контекст.
Как устранить проблемы этих методов?
Берём в качестве левого контекста
различные перестановки слов во всём
предложении.
XLNet = Transformer-XL + PLM
XLNet: Generalized Autoregressive Pretraining for Language Understanding
https://arxiv.org/abs/1906.08237
38. RoBERTa: A Robustly Optimized BERT
https://arxiv.org/abs/1907.11692
BERT был “недотюнен”.
Улучшения:
● Взять больше данных, тренировать дольше
● Next sentence prediction лишний
● Более длинные предложения
● Большие батчи
● Динамическое маскирование
Результат: state-of-the-art на 4 из 9 задачах в GLUE.
39. GPT-2
Языковая модель на декодере трансформера.
Умеет генерить продолжение текста. Настолько хорошо, что
OpenAI отказался её публиковать и устроил мощный PR.
Публикует понемногу, начиная с маленьких моделей.
Разные языковые модели на трансформерах можно попробовать
здесь: https://transformer.huggingface.co/
https://openai.com/blog/better-language-models/
51. Проблемы GAN
Одна из главных проблем — нестабильность процесса обучения.
Много трюков предназначены для решения этого класса проблем:
● Более хитрые loss-функции
● Различные процедуры нормализации и регуляризации
● Модификации процедуры обучения (например, на одну
итерацию обучения дискриминатора выполняем N итераций
обучения генератора)
● Модификации архитектуры нейросети (например, добавление
BatchNorm)
● Пример: “How to Train a GAN? Tips and tricks to make GANs
work”, https://github.com/soumith/ganhacks
52. DCGAN: deep convolutional GAN
https://arxiv.org/abs/1511.06434
● Генератор и дискриминатор становятся свёрточными
● Используется batch normalization
58. SGAN: Semi-Supervised GAN
Improved Techniques for Training GANs
https://arxiv.org/abs/1606.03498
● Дискриминатор — мультиклассовый классификатор (N классов
объектов + 1 класс для real/fake, а не, как обычно, бинарный
real/fake)
● Здесь ценность не в обученном генераторе, а в обученном
дискриминаторе
● Позволяет обучаться на небольшом числе размеченных
примеров и большом — неразмеченных. GAN, по сути,
используется для задачи, похожей на multi-task learning.
59. CGAN: Conditional GAN
Conditional Generative Adversarial Nets
https://arxiv.org/abs/1411.1784
● Хочется иметь генератор, способный генерировать объекты
заданных классов
60. pix2pix: CGAN для целых изображений
Image-to-Image Translation with Conditional Adversarial Networks
https://arxiv.org/abs/1611.07004
61. pix2pix: CGAN для целых изображений
Image-to-Image Translation with Conditional Adversarial Networks
https://arxiv.org/abs/1611.07004
● Зачем GAN? Почему не свести к задаче supervised learning?
● Есть трудности с формулированием loss function, особенно под
специальные варианты трансляции.
● GAN позволяет использовать универсальный фреймворк без
“hand-engineering our loss functions”.
● GAN — это и есть обучаемая loss функция!
● Одна нейросеть используется в качестве loss функции для
обучения другой нейросети.
63. pix2pix: CGAN для целых изображений
Image-to-Image Translation with Conditional Adversarial Networks
https://arxiv.org/abs/1611.07004
● Проблема: нужны пары изображений.
● В некоторых случаях пары можно получить или сгенерировать
(например, цветное→ч/б), но в других случаях это сделать
трудно или нельзя.
● Как перейти к задаче unpaired domain translation?
64. CycleGAN: Cycle-Consistent GAN
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
https://arxiv.org/abs/1703.10593
Как перейти к задаче unpaired domain translation?
65. CycleGAN: Cycle-Consistent GAN
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
https://arxiv.org/abs/1703.10593
Как перейти к задаче unpaired domain translation?
→ Хитрые функции потерь
66. CycleGAN: Cycle-Consistent GAN
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
https://arxiv.org/abs/1703.10593
Как перейти к задаче unpaired domain translation?
→ Хитрые функции потерь:
● Cycle-consistent loss: обеспечивает F(G(X)) ≈ X и наоборот.
● Identity loss: помогает сохранить цвет исходных
изображений.
● Adversarial loss: обеспечивает реалистичность картинки.
72. StackGAN: Мультимодальный GAN
StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks
https://arxiv.org/abs/1612.03242
73. SA-GAN: Self-attention GAN
При генерации изображений хочется учитывать дальние
зависимости (long-range dependencies), в то время как CNN
оперируют в основном локальными признаками.
В случае CNN локальная
структура может быть
непротиворечива, но
глобальная —
бессмысленна.
74. SA-GAN: Self-attention GAN
Self-Attention Generative Adversarial Networks
https://arxiv.org/abs/1805.08318
Специальный self-attention модуль + spectral normalization
76. BigGAN: прогресс в качестве генерации
Large Scale GAN Training for High Fidelity Natural Image Synthesis,
https://arxiv.org/abs/1809.11096
77. BigGAN: особенности
Large Scale GAN Training for High Fidelity Natural Image Synthesis,
https://arxiv.org/abs/1809.11096
● SAGAN + class conditioning (CGAN)
● Более тяжёлая архитектура (больше каналов, 2-4x больше
параметров, 8x больше размер батча)
● Более мощное железо для обучения
● Различные улучшения и хаки в процессе обучения: Truncation
Trick, Spectral Normalization, ...
83. Classical RNN Encoder-Decoder
Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation,
https://arxiv.org/abs/1609.08144
87. Modern seq2seq architectures
Why Self-Attention? A Targeted Evaluation of Neural Machine Translation Architectures,
https://arxiv.org/abs/1808.08946
93. Роль skip connections
Visualizing the Loss Landscape of Neural Nets
https://arxiv.org/abs/1712.09913, https://www.cs.umd.edu/~tomg/projects/landscapes/