Что делать, если хочется побольше узнать про нейронные сети, методы распознавания образов, компьютерное зрение и глубокое обучение? Один из очевидных вариантов — подыскать для себя какие-либо курсы и начать активно изучать теорию и решать практические задачи. Однако на это придется выделить значительную часть личного времени. Есть другой способ — обратиться к «пассивному» источнику знаний: выбрать для себя литературу и погрузиться в тему, уделяя этому всего полчаса-час в день.
Поэтому, желая облегчить жизнь себе и читателям, мы сделали краткую подборку из книг, статей и текстов по направлению нейросетей и глубокого обучения, рекомендуемых к прочтению резидентами GitHub, Quora, Reddit и других платформ. В неё вошли материалы как для тех, кто только начинает знакомство с нейротехнологиями, так и для коллег, желающих расширить свои знания в этой области или просто подобрать «легкое чтение» на вечер.
/ Flickr / Giuseppe Milo / CC
Любой предложенный список, сколь бы длинным он ни был, будет обладать главной и определяющей чертой — неполнотой. Потому что жизнь не стоит на месте: и научная мысль, и технологии развиваются, многие постановки задач описываются, а полученные решения — раскрываются в отчетных публикациях конференций, в журналах и сборниках. Для тех, кто задается вопросом, что происходит в настоящий момент и чем живет сообщество, стоит порекомендовать следить за материалами профильных мероприятий — ICML и NIPS.
Neural Networks and Deep Learning
Это бесплатная онлайн-книга ученого и программиста Майкла Нильсена (Michael Nielsen). Автор раскрывает тему глубокого обучения нейронных сетей и отвечает на такие вопросы, как: «Почему нейросети сложно тренировать?», «Как работает алгоритм обратного распространения ошибки?».
![](https://habrastorage.org/r/w780q1/web/81e/db9/d70/81edb9d7008346a1a745bcf453036cc6.jpg)
Автор книги: Tariq Rashid
Make Your Own Neural Network
Книга раскрывает математические принципы, лежащие в основе нейронных сетей, и предлагает написать собственную нейросеть на Python. Сеть будет распознавать написанные от руки цифры. Цель книги — дать читателю четкое понимание того, как работают нейросистемы, сделать информацию доступнее.
A Brief Introduction to Neural Networks
Автор книги, специалист по анализу данных и машинному обучению, простым языком объясняет принципы работы нейронных сетей. После прочтения можно самому начать работать с нейросистемами и разбираться в чужом коде. Книга постоянно улучшается, в обновленных версиях, на основании фидбека от читателей.
An Introduction to Statistical Learning
Книга-введение в методы статистического обучения. Целевая аудитория — студенты и выпускники вузов, в том числе нематематических специальностей. Всё очень доступно и с туториалами на R.
Programming Collective Intelligence
Книга рассказывает, как анализировать пользовательский опыт и человеческое поведение на основании информации, получаемой нами ежедневно. Предложенные алгоритмы сопровождаются кодом, который можно сразу использовать на веб-сайте или в приложении. Каждая глава включает практические упражнения, задача которых — усилить, отшлифовать алгоритмы.
Neural Networks: A Systematic Introduction
Общая теория о создании искусственных нейронных сетей. Каждая глава содержит примеры, иллюстрации и библиографию. Книга подойдет для тех, кто хочет углубить свои знания в этой сфере, но также может служить неплохой базой для курсов по нейровычислениям.
Deep Learning: Methods and Applications
Книга от Microsoft Research с основными методологиями глубокого обучения. Авторы рассказывают о том, как нейросети используются в задачах обработки сигналов и информации. Рассматриваются области, в которых глубокое обучение уже нашло активное применение, а также сферы, где оно может оказать значительное влияние в долгосрочной перспективе.
Deep Learning Tutorial
Издание Монреальского университета (Канада). Здесь собраны руководства по наиболее важным алгоритмам глубокого обучения. В книге показано, как реализовать их с помощью библиотеки Theano. Как отмечают авторы, читатель должен иметь представление о Python и NumPy, а также пройти курс по обращению с Theano.
Pattern Recognition and Machine Learning
Это первый учебник по распознаванию образов, представляющий Байесовский метод. В книге собраны алгоритмы приближенного вывода для ситуаций, в которых точные ответы получить невозможно. Информация подкрепляется графическими моделями для описания распределения вероятностей. Книга подходит каждому, поскольку для её свободного чтения не требуется доскональное знание концепций машинного обучения и распознавания паттернов.
![](https://habrastorage.org/r/w780q1/web/79f/145/0e6/79f1450e68b249fc9ce805f5fd71bd27.jpg)
Автор книги: Simon S Haykin
Neural Networks and Learning Machines
В книге разбираются концепции и принципы работы нейронных сетей и самообучающихся машин. На сегодняшний день выпущено уже третье издание.
Hands-On Machine Learning
С помощью наглядных примеров, минимума теории и двух production-ready фреймворков для Python автор помогает понять, как строятся интеллектуальные системы. Вы узнаете о различных техниках: начиная с простой линейной регрессии и заканчивая глубоким обучением. В каждой главе предусмотрены упражнения для закрепления приобретенных знаний.
Руководство хакера по нейронным сетям
Андрей Карпаты (Andrej Karpathy), заведующий разработкой ИИ в Tesla, предлагает заглянуть в прошлое нейронных сетей и начать знакомство с технологией real-valued circuits. Автор также является преподавателем курса CS231 в Стэнфорде, материалы которого тесно связаны с этой статьей. Слайды можно найти по ссылке. А заметки – тут.
Глубокое обучение, обработка естественного языка и представление данных
Как использовать глубокие нейронные сети для обработки естественного языка (NLP). Автор также старается дать ответ на вопрос, почему работают нейронные сети.
Глубокое обучение: Руководство
Java-разработчик Иван Васильев представляет ключевые концепции и алгоритмы, стоящие за глубоким обучением, используя для этого язык программирования Java. Библиотека Java для глубокого обучения находится здесь.
Происхождение глубокого обучения
Эта публикация — исторический обзор развития глубоких моделей обучения. Авторы начинают повествование с того, как появились нейронные сети, и плавно переходят к технологиям последнего десятилетия: глубоким сетям доверия, сверточным и рекуррентным нейронным сетям.
Глубокое обучение с подкреплением: Обзор
Материал посвящен последним достижениям в отрасли глубокого обучения с подкреплением (RL). Сперва авторы обращаются к принципам глубокого обучения и обучения с подкреплением, а затем переходят к проблемам их реальной применимости: играм (AlphaGo), робототехнике, чат-ботам и др.
/ Flickr / Brandur Øssursson / PD
Neural Networks for Applied Sciences and Engineering
Обзор архитектур нейронных сетей для непосредственного анализа данных. В отдельных главах авторы рассуждают о применимости самоорганизующихся карт для кластеризации нелинейных данных, а также об использовании рекуррентных сетей в науке.
Нейронные сети. Полный курс
В книге рассматриваются парадигмы искусственных нейронных сетей с иллюстрациями и примерами конкретных задач. Анализируется роль нейронных сетей при решении задач распознавания образов, управления и обработки сигналов. Книга будет полезна для инженеров, специалистов в области компьютерных наук, физиков, а также для всех, кто интересуется искусственными нейронными сетями.
Самоорганизующиеся карты
Самоорганизующиеся карты, вместе с их разновидностями, представляют собой одну из наиболее популярных нейросетевых архитектур, ориентированных на обучение без учителя. В книге дается детальное изложение математического аппарата и применений для самоорганизующихся карт. Подходит для специалистов в области нейромоделирования, а также студентов и аспирантов университетов.
![](https://habrastorage.org/r/w780q1/web/246/efe/941/246efe9416b247a6a8c11eee6f57020c.jpg)
Автор книги: Ian Goodfellow
Deep Learning (Adaptive Computation and Machine Learning series)
«Deep Learning» является единственной исчерпывающей книгой в этой области», — это слова Илона Маска, соучредителя Tesla и SpaceX. В тексте аккумулирован математический бэкграунд, рассматриваются важные концепции линейной алгебры, теории вероятностей, теории информации и машинного обучения.
Neural Networks for Pattern Recognition
В книге приведены техники для моделирования функций плотности вероятности. Рассматриваются алгоритмы минимизации функции ошибок, а также Байесовский метод и его применение. Кроме того, авторы собрали под этой обложкой более ста полезных упражнений.
Быстрый обучающий алгоритм для глубоких сетей доверия
Авторы статьи предлагают алгоритм, способный обучать глубокие сети доверия (DBM) по одному слою за раз. Также стоит обратить внимание на видеоруководство по глубоким сетям доверия от одного из авторов — Джеффри Хинтона (G. E. Hinton).
Обучение представлений методом обратного распространения ошибки
Считается основой концепции обучения нейронных сетей. Исторический экскурс и реализация. Рекомендуется к прочтению.
Учимся генерировать кресла, столы и автомобили с помощью сверточных сетей
Статья показывает, что генеративные сети могут находить сходства между объектами, обладая более высокой производительностью, по сравнению с конкурентными решениями. Концепция, представленная в этой статье, также может использоваться для генерации лиц.
Завершение изображений с глубоким обучением в TensorFlow
Статья рассказывает, как использовать глубокое обучение для завершения изображений, используя DCGAN. Пост рассчитан на техническую аудиторию с бэкграундом в машинном обучении. Весь исходный код автор выложил на GitHub.
Генератор лиц в Torch
Автор реализует генеративную модель, которая превращает случайный «шум» в изображения лиц. Делается это с помощью генеративной состязательной сети (GAN).
Практическое руководство по тренировке ограниченных машин Больцмана
Обзор ограниченных машин Больцмана. Авторы приводят множество рецептов по отладке и улучшению работы системы: назначению весов, мониторингу, выбору числа скрытых узлов.
Улучшение нейронных сетей путем предотвращения коадаптации детекторов признаков
Когда крупная нейронная сеть обучается на небольшом тренировочном наборе данных, она обычно выдает плохие результаты. Авторы предлагают способ, который должен решить проблему «переобучения», научив нейроны определять признаки, помогающие сгенерировать корректный ответ.
YOLO: обнаружение объектов в реальном времени
Авторы демонстрируют подход к распознаванию объектов — YOLO (You Only Look Once). По их задумке, с изображением работает одна нейронная сеть, которая делит его на регионы. Регионы очерчиваются граничными рамками и «взвешиваются» на основании предсказанных вероятностей. Как реализовать «миниверсию» YOLO для работы на мобильных устройствах под iOS вы можете узнать из этой статьи.
Как предсказать нераспознаваемые изображения
Одно из недавних исследований показало, что изменение изображения (незаметное для человека) способно обмануть глубокие нейронные сети, заставив последнюю установить неверный маркер. Эта работа проливает свет на интересные различия между человеческим и машинным зрением.
Deep Voice: преобразование «текст-в-речь» в реальном времени
Авторы представляют систему Deep Voice для преобразования текста в речь, построенную на глубоких нейронных сетях. По уверениям ученых, за каждый компонент отвечает своя нейросеть, поэтому их система гораздо быстрее традиционных решений. Стоит пощупать.
PixelNet: Представление пикселей, пикселями и для пикселей
Авторы исследуют принципы генерализации на пиксельном уровне, предлагая алгоритм, адекватно показывающий себя в таких задачах, как семантическая сегментация, выделение границ и оценка нормалей к поверхностям.
Генеративные модели от OpenAI
Этот пост описывает четыре проекта, которые адаптируют генеративные модели. Авторы рассказывают, что это такое, где они используются и почему важны.
Учимся генерировать кресла с помощью сверточных нейронных сетей
Здесь описан процесс тренировки генеративной сверточной нейронной сети для генерации изображений объектов по типу и цвету. Сеть умеет интерполировать ряды изображений и заполнять «пустые места» недостающими элементами.
Генеративно-состязательная сеть в 50 строках кода
Как натренировать генеративную состязательную сеть (GAN)? Нужно лишь взять PyTorch и написать 50 строчек кода. Попробуем на досуге.
Какая книга лежит на столах у многих сотрудников Neurodata Lab и может считаться одной из любимых?
![](https://habrastorage.org/r/w1560/web/1cd/845/d27/1cd845d275044300b3629a643b547d43.png)
Авторы книги: Amit Konar, Aruna Chakraborty
Emotion Recognition. A Pattern Analysis Approach
Прекрасный материал, грамотно структурированный и опирающийся на большой объем источников и данных. Книга подходит для всех, кто увлечен проблематикой детекции и распознавания эмоций с технической точки зрения, и тем кто просто ищет захватывающее чтение.
P.S. Мы понимаем, что осветить все доступные материалы на эту тему в рамках одной статьи невозможно. Поэтому если вам интересно, то можете уделить толику своего внимания подборкам на GitHub и прочих платформах. Вот некоторые из них:
Поэтому, желая облегчить жизнь себе и читателям, мы сделали краткую подборку из книг, статей и текстов по направлению нейросетей и глубокого обучения, рекомендуемых к прочтению резидентами GitHub, Quora, Reddit и других платформ. В неё вошли материалы как для тех, кто только начинает знакомство с нейротехнологиями, так и для коллег, желающих расширить свои знания в этой области или просто подобрать «легкое чтение» на вечер.
![](https://habrastorage.org/web/96a/bd4/b83/96abd4b83965408b9994c0239ee450fd.jpg)
Актуальный контекст
Любой предложенный список, сколь бы длинным он ни был, будет обладать главной и определяющей чертой — неполнотой. Потому что жизнь не стоит на месте: и научная мысль, и технологии развиваются, многие постановки задач описываются, а полученные решения — раскрываются в отчетных публикациях конференций, в журналах и сборниках. Для тех, кто задается вопросом, что происходит в настоящий момент и чем живет сообщество, стоит порекомендовать следить за материалами профильных мероприятий — ICML и NIPS.
И всё же, с чего начать?
Neural Networks and Deep Learning
Это бесплатная онлайн-книга ученого и программиста Майкла Нильсена (Michael Nielsen). Автор раскрывает тему глубокого обучения нейронных сетей и отвечает на такие вопросы, как: «Почему нейросети сложно тренировать?», «Как работает алгоритм обратного распространения ошибки?».
![](https://habrastorage.org/web/81e/db9/d70/81edb9d7008346a1a745bcf453036cc6.jpg)
Автор книги: Tariq Rashid
Make Your Own Neural Network
Книга раскрывает математические принципы, лежащие в основе нейронных сетей, и предлагает написать собственную нейросеть на Python. Сеть будет распознавать написанные от руки цифры. Цель книги — дать читателю четкое понимание того, как работают нейросистемы, сделать информацию доступнее.
A Brief Introduction to Neural Networks
Автор книги, специалист по анализу данных и машинному обучению, простым языком объясняет принципы работы нейронных сетей. После прочтения можно самому начать работать с нейросистемами и разбираться в чужом коде. Книга постоянно улучшается, в обновленных версиях, на основании фидбека от читателей.
An Introduction to Statistical Learning
Книга-введение в методы статистического обучения. Целевая аудитория — студенты и выпускники вузов, в том числе нематематических специальностей. Всё очень доступно и с туториалами на R.
Programming Collective Intelligence
Книга рассказывает, как анализировать пользовательский опыт и человеческое поведение на основании информации, получаемой нами ежедневно. Предложенные алгоритмы сопровождаются кодом, который можно сразу использовать на веб-сайте или в приложении. Каждая глава включает практические упражнения, задача которых — усилить, отшлифовать алгоритмы.
Neural Networks: A Systematic Introduction
Общая теория о создании искусственных нейронных сетей. Каждая глава содержит примеры, иллюстрации и библиографию. Книга подойдет для тех, кто хочет углубить свои знания в этой сфере, но также может служить неплохой базой для курсов по нейровычислениям.
Deep Learning: Methods and Applications
Книга от Microsoft Research с основными методологиями глубокого обучения. Авторы рассказывают о том, как нейросети используются в задачах обработки сигналов и информации. Рассматриваются области, в которых глубокое обучение уже нашло активное применение, а также сферы, где оно может оказать значительное влияние в долгосрочной перспективе.
Deep Learning Tutorial
Издание Монреальского университета (Канада). Здесь собраны руководства по наиболее важным алгоритмам глубокого обучения. В книге показано, как реализовать их с помощью библиотеки Theano. Как отмечают авторы, читатель должен иметь представление о Python и NumPy, а также пройти курс по обращению с Theano.
Pattern Recognition and Machine Learning
Это первый учебник по распознаванию образов, представляющий Байесовский метод. В книге собраны алгоритмы приближенного вывода для ситуаций, в которых точные ответы получить невозможно. Информация подкрепляется графическими моделями для описания распределения вероятностей. Книга подходит каждому, поскольку для её свободного чтения не требуется доскональное знание концепций машинного обучения и распознавания паттернов.
![](https://habrastorage.org/web/79f/145/0e6/79f1450e68b249fc9ce805f5fd71bd27.jpg)
Автор книги: Simon S Haykin
Neural Networks and Learning Machines
В книге разбираются концепции и принципы работы нейронных сетей и самообучающихся машин. На сегодняшний день выпущено уже третье издание.
Hands-On Machine Learning
С помощью наглядных примеров, минимума теории и двух production-ready фреймворков для Python автор помогает понять, как строятся интеллектуальные системы. Вы узнаете о различных техниках: начиная с простой линейной регрессии и заканчивая глубоким обучением. В каждой главе предусмотрены упражнения для закрепления приобретенных знаний.
Руководство хакера по нейронным сетям
Андрей Карпаты (Andrej Karpathy), заведующий разработкой ИИ в Tesla, предлагает заглянуть в прошлое нейронных сетей и начать знакомство с технологией real-valued circuits. Автор также является преподавателем курса CS231 в Стэнфорде, материалы которого тесно связаны с этой статьей. Слайды можно найти по ссылке. А заметки – тут.
Глубокое обучение, обработка естественного языка и представление данных
Как использовать глубокие нейронные сети для обработки естественного языка (NLP). Автор также старается дать ответ на вопрос, почему работают нейронные сети.
Глубокое обучение: Руководство
Java-разработчик Иван Васильев представляет ключевые концепции и алгоритмы, стоящие за глубоким обучением, используя для этого язык программирования Java. Библиотека Java для глубокого обучения находится здесь.
Происхождение глубокого обучения
Эта публикация — исторический обзор развития глубоких моделей обучения. Авторы начинают повествование с того, как появились нейронные сети, и плавно переходят к технологиям последнего десятилетия: глубоким сетям доверия, сверточным и рекуррентным нейронным сетям.
Глубокое обучение с подкреплением: Обзор
Материал посвящен последним достижениям в отрасли глубокого обучения с подкреплением (RL). Сперва авторы обращаются к принципам глубокого обучения и обучения с подкреплением, а затем переходят к проблемам их реальной применимости: играм (AlphaGo), робототехнике, чат-ботам и др.
![](https://habrastorage.org/web/ae4/bbc/113/ae4bbc113a8240cc94c0927ef62832de.jpg)
Продвинутое чтение
Neural Networks for Applied Sciences and Engineering
Обзор архитектур нейронных сетей для непосредственного анализа данных. В отдельных главах авторы рассуждают о применимости самоорганизующихся карт для кластеризации нелинейных данных, а также об использовании рекуррентных сетей в науке.
Нейронные сети. Полный курс
В книге рассматриваются парадигмы искусственных нейронных сетей с иллюстрациями и примерами конкретных задач. Анализируется роль нейронных сетей при решении задач распознавания образов, управления и обработки сигналов. Книга будет полезна для инженеров, специалистов в области компьютерных наук, физиков, а также для всех, кто интересуется искусственными нейронными сетями.
Самоорганизующиеся карты
Самоорганизующиеся карты, вместе с их разновидностями, представляют собой одну из наиболее популярных нейросетевых архитектур, ориентированных на обучение без учителя. В книге дается детальное изложение математического аппарата и применений для самоорганизующихся карт. Подходит для специалистов в области нейромоделирования, а также студентов и аспирантов университетов.
![](https://habrastorage.org/web/246/efe/941/246efe9416b247a6a8c11eee6f57020c.jpg)
Автор книги: Ian Goodfellow
Deep Learning (Adaptive Computation and Machine Learning series)
«Deep Learning» является единственной исчерпывающей книгой в этой области», — это слова Илона Маска, соучредителя Tesla и SpaceX. В тексте аккумулирован математический бэкграунд, рассматриваются важные концепции линейной алгебры, теории вероятностей, теории информации и машинного обучения.
Neural Networks for Pattern Recognition
В книге приведены техники для моделирования функций плотности вероятности. Рассматриваются алгоритмы минимизации функции ошибок, а также Байесовский метод и его применение. Кроме того, авторы собрали под этой обложкой более ста полезных упражнений.
Быстрый обучающий алгоритм для глубоких сетей доверия
Авторы статьи предлагают алгоритм, способный обучать глубокие сети доверия (DBM) по одному слою за раз. Также стоит обратить внимание на видеоруководство по глубоким сетям доверия от одного из авторов — Джеффри Хинтона (G. E. Hinton).
Обучение представлений методом обратного распространения ошибки
Считается основой концепции обучения нейронных сетей. Исторический экскурс и реализация. Рекомендуется к прочтению.
Учимся генерировать кресла, столы и автомобили с помощью сверточных сетей
Статья показывает, что генеративные сети могут находить сходства между объектами, обладая более высокой производительностью, по сравнению с конкурентными решениями. Концепция, представленная в этой статье, также может использоваться для генерации лиц.
Завершение изображений с глубоким обучением в TensorFlow
Статья рассказывает, как использовать глубокое обучение для завершения изображений, используя DCGAN. Пост рассчитан на техническую аудиторию с бэкграундом в машинном обучении. Весь исходный код автор выложил на GitHub.
Генератор лиц в Torch
Автор реализует генеративную модель, которая превращает случайный «шум» в изображения лиц. Делается это с помощью генеративной состязательной сети (GAN).
Практическое руководство по тренировке ограниченных машин Больцмана
Обзор ограниченных машин Больцмана. Авторы приводят множество рецептов по отладке и улучшению работы системы: назначению весов, мониторингу, выбору числа скрытых узлов.
Улучшение нейронных сетей путем предотвращения коадаптации детекторов признаков
Когда крупная нейронная сеть обучается на небольшом тренировочном наборе данных, она обычно выдает плохие результаты. Авторы предлагают способ, который должен решить проблему «переобучения», научив нейроны определять признаки, помогающие сгенерировать корректный ответ.
YOLO: обнаружение объектов в реальном времени
Авторы демонстрируют подход к распознаванию объектов — YOLO (You Only Look Once). По их задумке, с изображением работает одна нейронная сеть, которая делит его на регионы. Регионы очерчиваются граничными рамками и «взвешиваются» на основании предсказанных вероятностей. Как реализовать «миниверсию» YOLO для работы на мобильных устройствах под iOS вы можете узнать из этой статьи.
Как предсказать нераспознаваемые изображения
Одно из недавних исследований показало, что изменение изображения (незаметное для человека) способно обмануть глубокие нейронные сети, заставив последнюю установить неверный маркер. Эта работа проливает свет на интересные различия между человеческим и машинным зрением.
Deep Voice: преобразование «текст-в-речь» в реальном времени
Авторы представляют систему Deep Voice для преобразования текста в речь, построенную на глубоких нейронных сетях. По уверениям ученых, за каждый компонент отвечает своя нейросеть, поэтому их система гораздо быстрее традиционных решений. Стоит пощупать.
PixelNet: Представление пикселей, пикселями и для пикселей
Авторы исследуют принципы генерализации на пиксельном уровне, предлагая алгоритм, адекватно показывающий себя в таких задачах, как семантическая сегментация, выделение границ и оценка нормалей к поверхностям.
Генеративные модели от OpenAI
Этот пост описывает четыре проекта, которые адаптируют генеративные модели. Авторы рассказывают, что это такое, где они используются и почему важны.
Учимся генерировать кресла с помощью сверточных нейронных сетей
Здесь описан процесс тренировки генеративной сверточной нейронной сети для генерации изображений объектов по типу и цвету. Сеть умеет интерполировать ряды изображений и заполнять «пустые места» недостающими элементами.
Генеративно-состязательная сеть в 50 строках кода
Как натренировать генеративную состязательную сеть (GAN)? Нужно лишь взять PyTorch и написать 50 строчек кода. Попробуем на досуге.
And last but not least
Какая книга лежит на столах у многих сотрудников Neurodata Lab и может считаться одной из любимых?
![](https://habrastorage.org/web/1cd/845/d27/1cd845d275044300b3629a643b547d43.png)
Авторы книги: Amit Konar, Aruna Chakraborty
Emotion Recognition. A Pattern Analysis Approach
Прекрасный материал, грамотно структурированный и опирающийся на большой объем источников и данных. Книга подходит для всех, кто увлечен проблематикой детекции и распознавания эмоций с технической точки зрения, и тем кто просто ищет захватывающее чтение.
P.S. Мы понимаем, что осветить все доступные материалы на эту тему в рамках одной статьи невозможно. Поэтому если вам интересно, то можете уделить толику своего внимания подборкам на GitHub и прочих платформах. Вот некоторые из них: