Посты
Создаём нейронную сеть на Python с нуля

ML_Deep_23.5_site-5020-5727b5.png

Для начинающего Data Scientist-а очень важно понять внутреннюю структуру нейронной сети. Это руководство поможет вам создать собственную сеть с нуля, не используя для этого сложных учебных библиотек, к коим относится, например, TensorFlow.

Изучаем нейронные сети: как создать нейросеть за 4 шага?

ML_Deep_14.5_site-5020-d1cae2.png

В этой статье вы получите ряд разъяснений и рекомендаций, которые пригодятся вам при создании нейронной сети. Также будут предоставлены полезные ссылки для самостоятельного изучения.

Глубокое обучение на множествах. Часть 2

ML_Deep_20.11_site-5020-ad4ddb.png

В некоторых задачах машинного обучения объектами исследования могут быть множества — наборы объектов произвольного размера. В предыдущей заметке я рассказывал о том, как работать со множествами когда их нужно предсказывать, а в этой заметке мы поговорим о задаче поиска изображения на основе множества тегов.

Глубокое обучение на множествах. Часть 1

ML_Deep_16.11_site-5020-26ee71.png

В некоторых задачах машинного обучения объектами исследования могут быть множества — наборы объектов произвольного размера. Давайте рассмотрим возможные подходы к работе с множествами с помощью нейронных сетей.

Проектная работа курса «Нейронные сети на Python»

ML_Deep_25.10._site-5020-671400.png

Для систематизации знаний и закрепления полученной информации большинство обучающих курсов в OTUS заканчивается выполнением проекта. Это серьёзная работа, которая важна не только с точки зрения практической реализации полученных навыков, но и приносит реальную материальную пользу, так как становится своеобразным кейсом в портфолио.

Adversarial Autoencoders: порождение дискретных объектов

ML_Deep_20.06_3_SIte.png

У базовой архитектуры GANs есть одно существенное фундаментальное ограничение – подход не работает, если данные дискретные. 3.pngЧтобы эффективно обновлять «веса», мы должны уметь пропускать градиент от Дискриминатора через примеры, порождённые Генератором. Понятно, что если данные представляют из себя бинарные вектора (например, bag of words или целые предложения), то ни о каком градиенте не может идти речи.

Расстояние Вассерштейна: WGAN и 2 кучи земли

ML_Deep_20.06_2_Site.png

В январе 2017 года команда из Курантовского института математических наук и Facebook AI Research выложила в открытый доступ препринт статьи под названием «Wasserstein GAN».

Основное отличие этой статьи от большинства публикаций предлагающих очередное улучшение для Генеративных Состязательных Сетей заключается в фундаментальной теоретической базе. Авторы не просто демонстрируют очередной набор удачных изображений, порождённых GAN’ами, но и объясняют эффективность данного подхода с точки зрения теории. И в центре этой теории как раз и лежит расстояние Вассерштейна.

Передача сообщений по нейросети

ML_Deep_20.06_1_Site.png

В предыдущем посте я рассказал о том, как делать свёртки на графах. Одним из ключевых моментов было понятие сообщения, которое задавалось как: Снимок экрана 2018-06-20 в 13.11.38.pngИз-за того, что внутри вектора сообщения происходит независимое суммирование состояний соседних вершин и состояний рёбер, итоговая модель не может учитывать корреляции между вершинами и её рёбрами. Фактически нам бы хотелось, чтобы каждая соседняя вершина независимо от других передавала своё сообщение на очередном шаге.

Свёрточные сети на графах

ML_Deep_19.06_SITE.png

Давайте рассмотрим свёрточные сети, но не обычные свёртки, а скорее их аналог для работы с графовыми данными. Граф — это сложный и непонятный для привычных нам нейронных сетей объект. Самый простой способ представить граф для работы с ним — записать его в виде матрицы смежности, в которой каждой вершине соответствует своя строка и свой столбец. В простейшем виде, такая матрица будет содержать только рёбра — единицы в клетках пересечения строк и столбцов, соответствующих связанным вершинам.

Функции потерь Дискриминатора: стабилизация обучения

ML_Deep_14.06_SITE.png

В первом посте я в общих чертах рассказал о том, что такое генеративные состязательные сети. Идея заставить соревноваться две нейронные сети выглядит очень просто и красиво, однако при реализации для конкретных задач обязательно возникают трудности. В этот раз я расскажу о том, как немножко изменить функции потерь так, чтобы стабилизировать процесс обучения.