Pull to refresh
28
0
Send message

Генеративные модели от OpenAI

Reading time13 min
Views42K


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

LSTM – сети долгой краткосрочной памяти

Reading time8 min
Views258K

Рекуррентные нейронные сети


Люди не начинают думать с чистого листа каждую секунду. Читая этот пост, вы понимаете каждое слово, основываясь на понимании предыдущего слова. Мы не выбрасываем из головы все и не начинаем думать с нуля. Наши мысли обладают постоянством.

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

Решить эту проблемы помогают рекуррентые нейронные сети (Recurrent Neural Networks, RNN). Это сети, содержащие обратные связи и позволяющие сохранять информацию.
Читать дальше →

Dropout — метод решения проблемы переобучения в нейронных сетях

Reading time7 min
Views94K


Переобучение (overfitting) — одна из проблем глубоких нейронных сетей (Deep Neural Networks, DNN), состоящая в следующем: модель хорошо объясняет только примеры из обучающей выборки, адаптируясь к обучающим примерам, вместо того чтобы учиться классифицировать примеры, не участвовавшие в обучении (теряя способность к обобщению). За последние годы было предложено множество решений проблемы переобучения, но одно из них превзошло все остальные, благодаря своей простоте и прекрасным практическим результатам; это решение — Dropout (в русскоязычных источниках — “метод прореживания”, “метод исключения” или просто “дропаут”).
Читать дальше →

Обзор исследований в области глубокого обучения: обработка естественных языков

Reading time15 min
Views28K


Это третья статья из серии “Обзор исследований в области глубокого обучения” (Deep Learning Research Review) студента Калифорнийского университета в Лос-Анджелесе Адита Дешпанда (Adit Deshpande). Каждые две недели Адит публикует обзор и толкование исследований в определенной области глубинного обучения. В этот раз он сосредоточил свое внимание на применении глубокого обучения для обработки текстов на естественном языке.
Читать дальше →

О том, как в Instagram отключили сборщик мусора Python и начали жить

Reading time8 min
Views47K
Отключив сборщик мусора Python (GC), который освобождает память, отслеживая и удаляя неиспользуемые данные, Instagram стал работать на 10% быстрее. Да-да, вы не ослышались! Отключив сборщик мусора, можно сократить объем потребляемой памяти и повысить эффективность работы кэша процессора. Хотите узнать, почему так происходит? Тогда пристегните ремни!

Читать дальше →

PyMC3 — MCMC и не только

Reading time17 min
Views23K

PyMC3 — МСМС и не только



Привет, Хабрахабр!


В этом посте уже упоминался PyMC3. Там можно почитать про основы MCMC-сэмплирования. Здесь я расскажу про вариационный вывод (ADVI), про то, зачем все это нужно и покажу на довольно простых примерах из галереи PyMC3, чем это может быть полезно. Одним из таких примеров будет байесовская нейронная сеть для задачи классификации, но это в самом конце. Кому интересно — добро пожаловать!


Читать дальше →

Алгоритм Джонкера-Волгенанта + t-SNE = супер-сила

Reading time9 min
Views32K
До:



После:



Заинтригованы? Но обо всем по порядку.

t-SNE


t-SNE — это очень популярный алгоритм, который позволяет снижать размерность ваших данных, чтобы их было проще визуализировать. Этот алгоритм может свернуть сотни измерений к всего двум, сохраняя при этом важные отношения между данными: чем ближе объекты располагаются в исходном пространстве, тем меньше расстояние между этими объектами в пространстве сокращенной размерности. t-SNE неплохо работает на маленьких и средних реальных наборах данных и не требует большого количества настроек гиперпараметров. Другими словами, если взять 100 000 точек и пропустить их через эту волшебный черный ящик, на выходе мы получим красивый график рассеяния.
Читать дальше →

Библиотека Google Benchmark

Reading time5 min
Views22K


Не так давно я писал о C++ библиотеках для микробенчмаркинга. Я рассказал о трех библиотеках: Nonius, Hayai и Celero. Но в действительности я хотел поговорить о четвертой. Мой Windows тогда не поддерживал Google Benchmark library, так что я не мог ее протестировать. К счастью, из комментариев к прошлому посту я узнал, что теперь библиотека доступна в Visual Studio!

Давайте посмотрим, как можно ее использовать.
Читать дальше →

Поиск по регулярным выражениям с помощью суффиксного массива

Reading time7 min
Views11K
image

Еще в январе 2012 Расс Кокс опубликовал замечательный блог-пост, объясняющий работу Google Code Search с помощью триграммного индекса.

К этому времени уже вышли первые версии моей собственной системы поиска по исходному коду под названием livegrep, с другим метод индексации; я писал эту систему независимо от Google, с помощью нескольких друзей. В этой статье я хотел бы представить немного запоздалое объяснение механизма ее работы.
Читать дальше →

Что такое Resizable Concurrent Map

Reading time6 min
Views11K
В одном из прежних постов я рассказывал, как реализовать «простейшую в мире lock-free хеш-таблицу» на C++. Она была настолько проста, что было невозможно удалять из нее записи или менять ее размерность. С тех пор прошло несколько лет, и не так давно я написал несколько многопоточных ассоциативных массивов без таких ограничений. Их можно найти в моем проекте Junction на GitHub.

Junction содержит несколько многопоточных реализаций интерфейса map – даже «самая простая в мире» среди них, под названием ConcurrentMap_Crude. Для краткости будем называть ее Crude map. В этом посте я объясню разницу между Crude map и Linear map из библиотеки Junction. Linear — самый простой map в Junction, поддерживающий и изменение размера, и удаление.

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


Читать дальше →

Самая простая в мире lock-free хеш-таблица

Reading time6 min
Views20K
image

Безблокировочная хеш-таблица — это медаль о двух сторонах. В некоторых случаях они позволяют достигать такой производительности, которой не получить другими способами. С другой стороны, они довольно сложны.
Читать дальше →

Введение в lock-free программирование

Reading time8 min
Views61K
image

В этом посте мы хотели бы еще раз поднять тему программирования без блокировок, сперва дав ему определение, а затем выделить из всего многообразия информации несколько ключевых положений. Мы покажем, как эти положения соотносятся между собой, с помощью блок-схем, а потом мы немного коснемся деталей. Минимальное требование к разработчику, постигающему lock-free, — умение писать правильный многопоточный код, используя мьютексы или другие высокоуровневые объекты синхронизации, например, семафоры или события.
Читать дальше →

Как отлаживать модели машинного обучения

Reading time5 min
Views12K
image

Я размышлял, в основном с точки зрения преподавателя, о том, как научить отлаживать модели машинного обучения. Лично мне кажется полезным рассмотреть модель с точки зрения ошибок разного рода: байесовская ошибка (насколько ошибочен лучший из возможных классификаторов), ошибка аппроксимации (что мы потеряем из-за ограничения класса гипотезы), ошибка оценки (связанная с ограниченной длиной выборки), ошибка оптимизации (что случится, если не найти глобальный оптимум для задачи оптимизации). Я понял, что полезно попытаться отнести ошибку к определенной области, а потом устранять недостатки в этой конкретной области.
Читать дальше →

Нейросетка играет в Доту

Reading time8 min
Views38K


Всем привет! На самом деле нейросетка играет не в привычную Dota 2, а в RussianAICup 2016 CodeWizards. RussianAICup — это ежегодное открытое соревнование по программированию искусственного интеллекта. Участвовать в этом соревновании довольно интересно. В этом году темой была игра похожая на Доту. Так как я уже какое-то время занимаюсь обучением с подкреплением, то мне хотелось попробовать применить это в RussianAICup. Главной целью было научить нейронную сеть играть в эту игру, хотя занятие призового места — это, конечно, было бы приятно. В итоге нейросеть держится в районе 700 места. Что, я считаю, неплохо, ввиду ограничений соревнования. В этой статье речь пойдет скорее об обучении с подкреплением и алгоритмах DDPG и DQN, а не о самом соревновании.
Но обо всем по-порядку

Статьи, лежащие в основе подхода Facebook к компьютерному зрению

Reading time8 min
Views14K
Знаете такую компанию — Facebook? Да-да, ту самую, у сайта которой 1,6 миллиардов пользователей. И если взять все посты-поздравления с днем рождения, ваши позорные детские фотографии (у меня они такие), того дальнего родственника, лайкающего каждый ваш статус, — и вот вам множество данных для анализа.

С точки зрения анализа изображений Facebook весьма далеко продвинулся со сверточными нейронными сетями (Convolutional Neural Network, CNN). В августе подразделение Facebook по исследованиям в области искусственного интеллекта (Facebook AI Research, сокращенно FAIR) опубликовала блог-пост об алгоритмах компьютерного зрения, которые лежат в основе некоторых их алгоритмов сегментации изображений. В этом посте мы кратко изложим и разъясним три статьи, на которые ссылается этот блог.


Читать дальше →

Порождение и выбор моделей машинного обучения. Лекция в Яндексе

Reading time11 min
Views23K
Применение машинного обучения может включать работу с данными, тонкую настройку уже обученного алгоритма и т. д. Но масштабная математическая подготовка нужна и на более раннем этапе: когда вы только выбираете модель для дальнейшего использования. Можно выбирать «вручную», применяя разные модели, а можно и этот процесс попробовать автоматизировать.


Под катом — лекция ведущего научного сотрудника РАН, доктора наук и главного редактора журнала «Машинное обучение и анализ данных» Вадима Стрижова, а также большинство слайдов.

Глубокое обучение для новичков: распознаем рукописные цифры

Reading time11 min
Views108K

Представляем первую статью в серии, задуманной, чтобы помочь быстро разобраться в технологии глубокого обучения; мы будем двигаться от базовых принципов к нетривиальным особенностям с целью получить достойную производительность на двух наборах данных: MNIST (классификация рукописных цифр) и CIFAR-10 (классификация небольших изображений по десяти классам: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль и грузовик).



Читать дальше →

Что рассказать о компании, чтобы получить отклики от разработчиков (чек-лист)

Reading time4 min
Views30K
Специально для блога «Моего круга» ИТ-рекрутеры из агентства DigitalHR проанализировали самые частые вопросы, которые задают соискатели о будущих работодателях, и составили список наиболее важных тем, которые компания должна раскрыть, привлекая к себе сотрудников. Этот чек-лист больше подойдет для компаний, заинтересованных в долгосрочном построении HR-бренда, а не в разовом поиске специалистов. Тем не менее, советы будут полезны всем, и даже при краткосрочных целях помогут увеличить поток желающих пройти собеседование.

Составленный чек-лист также должен помочь компаниям, размещающим свои вакансии на «Моём круге» правильно заполнять свой профиль и использовать его максимально эффективно. Из профиля компании на «Моем круге» можно узнать о ее деятельности, размере, увидеть фото офиса, а также просмотреть все открытые или архивные вакансии. Это полезный и эффективный инструмент для HR-позиционирования компании, но не все используют его правильно.

Например, если вы известная оффлайновая компания, которая начала активно развивать отдел разработки, лучше сделайте акцент в описании на IT-отделе, его успехе и команде: даже если у компании богатая история, но она сосредоточена в оффлайне, это не несет большой ценности для разработчика. Также в ИТ-сфере много и молодых проектов, о которых рынок ещё не знает. Ваш шанс заявить о себе — правильно заполнить профиль организации на «Моем круге».


Читать дальше →

[ В закладки ] Зоопарк архитектур нейронных сетей. Часть 2

Reading time8 min
Views41K


Публикуем вторую часть статьи о типах архитектуры нейронных сетей. Вот первая.

За всеми архитектурами нейронных сетей, которые то и дело возникают последнее время, уследить непросто. Даже понимание всех аббревиатур, которыми бросаются профессионалы, поначалу может показаться невыполнимой задачей.

Поэтому я решил составить шпаргалку по таким архитектурам. Большинство из них — нейронные сети, но некоторые — звери иной породы. Хотя все эти архитектуры подаются как новейшие и уникальные, когда я изобразил их структуру, внутренние связи стали намного понятнее.

Читать дальше →

[ В закладки ] Зоопарк архитектур нейронных сетей. Часть 1

Reading time10 min
Views97K


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

Поэтому я решил составить шпаргалку по таким архитектурам. Большинство из них — нейронные сети, но некоторые — звери иной породы. Хотя все эти архитектуры подаются как новейшие и уникальные, когда я изобразил их структуру, внутренние связи стали намного понятнее.
Читать дальше →

Information

Rating
Does not participate
Works in
Registered
Activity