Как стать автором
Обновить
82
0

Пользователь

Отправить сообщение

Автоэнкодеры в Keras, Часть 4: Conditional VAE

Время на прочтение11 мин
Количество просмотров22K

Содержание



В прошлой части мы познакомились с вариационными автоэнкодерами (VAE), реализовали такой на keras, а также поняли, как с его помощью генерировать изображения. Получившаяся модель, однако, обладала некоторыми недостатками:

  1. Не все цифры получилось хорошо закодировать в скрытом пространстве: некоторые цифры либо вообще отсутствовали, либо были очень смазанными. В промежутках между областями, в которых были сконцентрированы варианты одной и той же цифры, находились вообще какие-то бессмысленные иероглифы.

    Что тут писать, вот так выглядели сгенерированные цифры:

    Картинка


  2. Сложно было генерировать картинку какой-то заданной цифры. Для этого надо было смотреть, в какую область латентного пространства попадали изображения конкретной цифры, и сэмплить уже откуда-то оттуда, а тем более было сложно генерировать цифру в каком-то заданном стиле.

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


Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии12

Автоэнкодеры в Keras, Часть 3: Вариационные автоэнкодеры (VAE)

Время на прочтение10 мин
Количество просмотров48K

Содержание



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

Вариационные автоэнкодеры (Variational Autoencoders) — это автоэнкодеры, которые учатся отображать объекты в заданное скрытое пространство и, соответственно, сэмплить из него. Поэтому вариационные автоэнкодеры относят также к семейству генеративных моделей.


Читать дальше →
Всего голосов 48: ↑47 и ↓1+46
Комментарии15

Автоэнкодеры в Keras, Часть 2: Manifold learning и скрытые (latent) переменные

Время на прочтение11 мин
Количество просмотров27K

Содержание






Для того, чтобы лучше понимать, как работают автоэнкодеры, а также чтобы в последствии генерировать из кодов что-то новое, стоит разобраться в том, что такое коды и как их можно интерпретировать.
Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии5

Типичные распределения вероятности: шпаргалка data scientist-а

Время на прочтение11 мин
Количество просмотров128K

У data scientist-ов сотни распределений вероятности на любой вкус. С чего начать?


Data science, чем бы она там не была – та ещё штука. От какого-нибудь гуру на ваших сходках или хакатонах можно услышать:«Data scientist разбирается в статистике лучше, чем любой программист». Прикладные математики так мстят за то, что статистика уже не так на слуху, как в золотые 20е. У них даже по этому поводу есть своя несмешная диаграмма Венна. И вот, значит, внезапно вы, программист, оказываетесь совершенно не у дел в беседе о доверительных интервалах, вместо того, чтобы привычно ворчать на аналитиков, которые никогда не слышали о проекте Apache Bikeshed, чтобы распределённо форматировать комментарии. Для такой ситуации, чтобы быть в струе и снова стать душой компании – вам нужен экспресс-курс по статистике. Может, не достаточно глубокий, чтобы вы всё понимали, но вполне достаточный, чтобы так могло показаться на первый взгляд.
Читать дальше →
Всего голосов 86: ↑85 и ↓1+84
Комментарии28

Переобученные нейросети в дикой природе и у человека

Время на прочтение6 мин
Количество просмотров81K
Представьте, что вы проектируете птенца чайки. ТЗ такое — у него довольно плохое зрение, маленький мозг, но ему нужно как можно больше есть, а то сдохнет. Еду ему приносит мама-чайка. Основная задача — распознать маму-чайку и получить у неё еды. Во входной поток зрения поступает, скажем, 320х200 px, и дальше 10 сантиметров от глаза он не умеет фокусироваться. Природа решила так — надо разметить клюв чайки ярким оранжевым округлым пятном. Вот таким:



В ходе реверс-инжиниринга чайки в 1950-х Нико Тинберген провёл 2431 опыт с 503 птенцами (часть его коллега Рита Вейдманн высидела сама). Выяснилось, что птенец реагирует и не только на клюв, но и на картонный прямоугольник с круглым оранжевым пятном. И пытается получить у него еду как у обычной чайки. Звучит логично, особенно в условиях нехватки вычислительных ресурсов птенца, правда? «Появляется сверху», «длинный» — это важно. Но самая высокая ценность сигнала «оранжевый на белом» — и она по мере эволюции завышается.

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

Если вы думаете, что мы с вами не забагованы, то ошибаетесь. У нас, людей, есть примерно такой же пример переобучения, хорошо известный анимешникам.
Читать дальше →
Всего голосов 124: ↑123 и ↓1+122
Комментарии174

Сравнение Эльбрус-4С и Эльбрус-8С в нескольких задачах машинного зрения

Время на прочтение9 мин
Количество просмотров45K

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



Эльбрус-8С — новый 8-ядерный процессор МЦСТ с VLIW-архитектурой. Мы тестировали инженерный образец с частотой 1.3 ГГц. Возможно, в серийном выпуске она еще возрастет.

Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии138

Автопилот своими силами: sensor fusion с телефона и открытые обучающие данные

Время на прочтение9 мин
Количество просмотров14K

Всем привет. Продолжаем собирать автомобильный автопилот на компьютерном зрении из гитхаба и палок (начало здесь). Сегодня подключаем к делу датчики движения смартфона (акселерометр, гироскоп и GPS приемник) на Android, осваиваем несложный sensor fusion и окончательно закрываем с кодом для сбора обучающей выборки. Бонусы — Android приложение для записи всех сенсоров синхронзированных с видео и больше часа размеченных данных в рамках импортозамещения иностранных конкурсов. Весь код по-прежнему на github.



Это трехосные MEMS акселерометр и гироскоп, они будут нам крайне полезны.

Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии26

Нейронные сети в детектировании номеров

Время на прочтение7 мин
Количество просмотров52K


Распознавание автомобильных номеров до сих пор является самым продаваемым решением на основе компьютерного зрения. Сотни, если не тысячи продуктов конкурируют на этом рынке уже на протяжении 20-25 лет. Отчасти поэтому сверточные нейронные сети (CNN) не бьют прежние алгоритмические подходы на рынке.

Но опыт последних лет говорит, что алгоритмы CNN позволяют делать надежные и гибкие для применения решения. Есть и еще одно удобство: при таком подходе всегда можно улучшить надежность решения на порядок после реального внедрения за счет переобучения. Кроме того, такие алгоритмы отлично реализуются на GPU (графических модулях), которые значительно эффективней с точки зрения потребления электроэнергии, чем обычные процессоры. А платформа Jetson TX от NVidia так просто потребляет очень мало по меркам современных вычислителей. Наглядное «энергетическое превосходство»:
Читать дальше →
Всего голосов 67: ↑67 и ↓0+67
Комментарии30

Статья, на которую можно ссылаться: что такое блокчейн

Время на прочтение9 мин
Количество просмотров79K
В 2017 году блокчейн стал предметом научного интереса, когда в Торонто открылся первый институт исследований блокчейна. Около 30 ведущих экспертов приступили к разработке различных проектов, связанных с этой технологией.



Блокчейн — это надёжный способ хранения данных о сделках, контрактах, транзакциях, обо всём, что необходимо записать и проверить. Сегодня блокчейн проник практически во все сферы жизнедеятельности, готов в корне изменить финансовую систему государства и в разы упростить работу среднего и крупного бизнеса. Блокчейн не секретная технология: в сети огромное количество статей о том, как он устроен и по какому принципу работает. Мы собрали самые интересные и нужные факты в одну статью, на которую можно давать ссылку, когда вас спросят: «Что же такое блокчейн?»
Читать дальше →
Всего голосов 68: ↑53 и ↓15+38
Комментарии23

Ликбез по Крионике: простым языком на сложную тему

Время на прочтение16 мин
Количество просмотров31K
Коль скоро это ликбез, давайте начнем с азов. Что же такое крионика? Если говорить с точки зрения потребителя, то лучшее определение крионики — это страхование жизни. Только не тот эвфемизм, который используется сегодня для обозначения выплаты вашим близким после вашей смерти, а реальное, настоящее страхование вашей собственной жизи. Способ хеджирования рисков катастрофической потери вашего самого ценного актива — вашей жизни.

Если же говорить с точки зрения технологии, то крионика это некое введение организма в состояние длительной паузы (анабиоз) для того, чтобы в будущем этот организм восстановить, вернуть к жизни. А чтобы достичь этой паузы, крионика использует технологию охлаждения тела до очень низких температур.

Для чего вообще она нужна, эта крионика? Ответ простой. Потому что у наших организмов есть одна неприятная особенность. Они умирают. И никому это не нравится, но большинство людей предпочитает придумывать себе оправдания почему им необходимо с этим смириться. Единицы же смиряться отказываются и решают попытаться научными методами увеличить наши шансы на выживание. Один из плодов труда таких единиц — крионика. Другие плоды вы тоже наверняка встречали — дефибрилляторы, аппараты исскуственной вентиляции легких, кардиостимуляторы, технология пересадки органов, вакцины и антибиотики.
Всего голосов 66: ↑63 и ↓3+60
Комментарии148

Набор юного биохакера

Время на прочтение24 мин
Количество просмотров28K
Обзор медицинских гаджетов для самостоятельного использования.


Авторы: Анастасия Егорова, Андрей Никифоров, Надежда Батина и Денис Варванец

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

Описали четыре десятка (не беря в расчёт многообразие фитнес-браслетов и часов), но вот те на! Получите-распишитесь ссылку на базу данных из 421 носимых устройств. И только пять из наших сорока есть в этой базе. Да что ж такое-то!

А ведь их будет всё больше. Кэп просил передать, что рынок растёт.
Всего голосов 28: ↑25 и ↓3+22
Комментарии49

Миллер и Валасек опубликовали всю информацию для взлома автомобилей

Время на прочтение3 мин
Количество просмотров25K

Чарли Миллер (отдел безопасности компании Twitter, бывший хакер АНБ, слева) и Крис Валасек (консалтинговая компания IOActive)

Специалисты по безопасности Чарли Миллер (Charlie Miller) и Крис Валасек (Chris Valasek) хорошо известны в хакерском сообществе. Они неоднократно выступали на конференциях с докладами об уязвимостях в автомобильных компьютерах. Пожалуй, самой известной их презентацией был взлом 2014 Jeep Cherokee два года назад с дистанционным управлением некоторыми функциями автомобиля. После той презентации автопроизводителю пришлось отозвать почти 1,5 млн машин по всему миру для замены прошивки.

Что характерно, первая замена прошивки оказалась не слишком удачной. С новой прошивкой возможности взлома автомобилем только увеличились. Потом пришлось ещё раз её менять.

Через два года после той истории хакеры выложили практически пошаговое руководство по взлому Jeep Cherokee, а также инструменты и документацию по взлому других автомобилей с шиной CAN.
Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии62

Физики впервые установили контрфактическое квантовое соединение

Время на прочтение3 мин
Количество просмотров22K


Квантовые коммуникации сами по себе странное явление. Но в разнообразии квантов есть один самый странный вид — контрфактическая коммуникация (counterfactual communication). Это вид связи, который вообще не предполагает передачу частиц между отправителем и получателем. Этот вид отличается от обычной квантовой телепортации, потому что в телепортации используются спутанные частицы. Обычно частицы нужно физически совместить и спутать заранее, прежде чем телепортировать информацию между ними на любое расстояние, то есть передача частиц происходит так или иначе. Как вариант, частицы можно спутать на расстоянии, но при посредничестве третьей частицы, которая всё-таки должна физически проделать этот путь. В контрфактических соединениях такого условия нет (только нужно помнить, что фотон здесь можно описать волновой функцией и не считать частицей).

Теоретическую основу для контрфактической квантовой связи физики сформулировали в 2013 году. Согласно описанию протокола, передача информации между Алисой и Бобом осуществляется в пустом пространстве без движения физических частиц за счёт измерений без взаимодействия и цепочки квантовых эффектов Зенона.

Описание протокола было теоретической работой, но сейчас учёные впервые на практике установили прямое контрфактическое соединение и действительно передали информацию — чёрно-белое изображение из пункта А в пункт Б. Носителем информации является фаза света, а фотон описывается волновой функцией.
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии132

MCMC-сэмплинг для тех, кто учился, но ничего не понял

Время на прочтение15 мин
Количество просмотров33K
Рассказывая о вероятностном программировании и Байесовской статистике, я обычно не уделяю особого внимания тому, как, на самом деле, выполняется вероятностный вывод, рассматривая его как некий «чёрный ящик». Вся прелесть вероятностного программирования заключается в том, что, на самом деле, для того, чтобы строить модели, не обязательно понимать, как именно делается вывод. Но это знание, безусловно, весьма полезно.


Как-то раз я рассказывал о новой Байесовской модели человеку, который не особенно разбирался в предмете, но очень хотел всё понять. Он-то и спросил меня о том, чего я обычно не касаюсь. «Томас, — сказал он, — а как, на самом деле, выполняется вероятностный вывод? Как получаются эти таинственные сэмплы из апостериорной вероятности?».
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии22

Корректирующие коды «на пальцах»

Время на прочтение11 мин
Количество просмотров72K

Корректирующие (или помехоустойчивые) коды — это коды, которые могут обнаружить и, если повезёт, исправить ошибки, возникшие при передаче данных. Даже если вы ничего не слышали о них, то наверняка встречали аббревиатуру CRC в списке файлов в ZIP-архиве или даже надпись ECC на планке памяти. А кто-то, может быть, задумывался, как так получается, что если поцарапать DVD-диск, то данные всё равно считываются без ошибок. Конечно, если царапина не в сантиметр толщиной и не разрезала диск пополам.


Как нетрудно догадаться, ко всему этому причастны корректирующие коды. Собственно, ECC так и расшифровывается — «error-correcting code», то есть «код, исправляющий ошибки». А CRC — это один из алгоритмов, обнаруживающих ошибки в данных. Исправить он их не может, но часто это и не требуется.


Давайте же разберёмся, что это такое.


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


Внимание! Много текста и мало картинок. Я постарался всё объяснить, но без карандаша и бумаги текст может показаться немного запутанным.

Читать дальше →
Всего голосов 56: ↑55 и ↓1+54
Комментарии21

Объяснение нейронных машин Тьюринга

Время на прочтение9 мин
Количество просмотров28K
Я обнаружил, что подавляющее большинство онлайновой информации об исследованиях в области искусственного интеллекта делится на две категории: первая рассказывает о достижениях непрофессиональной аудитории, а вторая — другим исследователям. Я не нашёл хорошего ресурса для людей с техническим образованием, которые не знакомы с более продвинутыми концепциями и ищут информацию для восполнения пробелов. Это моя попытка заполнить данную пустоту, предоставив доступные, но в то же время (относительно) подробные объяснения. Здесь я объясню научную статью Грейвса, Уэйна и Данихейки (2014) о нейронных машинах Тьюринга (NTM).

Изначально я не собирался рассказывать об этой статье, но я никак не мог понять другую интересную статью, о которой собирался рассказать. В ней как раз шла речь о модификации NTM, так что я решил убедиться, что полностью понимаю NTM, прежде чем двигаться дальше. Убедившись в этом, у меня появилось ощущение, что та вторая статья не слишком подходит для объяснения, а вот оригинальная работа по NTM очень хорошо написана, и я настоятельно рекомендую её прочитать.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии6

Постановка задачи компьютерного зрения

Время на прочтение13 мин
Количество просмотров72K

Последние лет восемь я активно занимаюсь задачами, связанными с распознаванием образов, компьютерным зрением, машинным обучением. Получилось накопить достаточно большой багаж опыта и проектов (что-то своё, что-то в ранге штатного программиста, что-то под заказ). К тому же, с тех пор, как я написал пару статей на Хабре, со мной часто связываются читатели, просят помочь с их задачей, посоветовать что-то. Так что достаточно часто натыкаюсь на совершенно непредсказуемые применения CV алгоритмов.
Но, чёрт подери, в 90% случаев я вижу одну и ту же системную ошибку. Раз за разом. За последние лет 5 я её объяснял уже десяткам людей. Да что там, периодически и сам её совершаю…

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

Тривиальная мысль. Но все ошибаются. Абсолютно все. В статье я приведу несколько примеров таких ситуаций. Когда задача поставлена плохо, когда хорошо. И какие подводные камни вас ждут в формировании ТЗ для систем компьютерного зрения.
Читать дальше →
Всего голосов 72: ↑72 и ↓0+72
Комментарии54

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

Время на прочтение17 мин
Количество просмотров21K

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



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


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


Читать дальше →
Всего голосов 48: ↑42 и ↓6+36
Комментарии3

Как я сделал самый быстрый ресайз изображений. Часть 2, SIMD

Время на прочтение15 мин
Количество просмотров27K

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


Часть 0
Часть 1, общие оптимизации


В прошлый раз мы получили ускорение в среднем в 2,5 раза без изменения подхода. В этот раз я покажу, как применять SIMD-подход и получить ускорение еще в 3,5 раза. Конечно, применение SIMD для обработки графики не является ноу-хау, можно даже сказать, что SIMD был придуман для этого. Но на практике очень мало разработчиков используют его даже в задачах обработки изображений. Например, довольно известные и распространенные библиотеки ImageMagick и LibGD написаны без использования SIMD. Отчасти так происходит потому, что SIMD-подход объективно сложнее и не кроссплатформенный, а отчасти потому, что по нему мало информации. Довольно просто найти азы, но мало детальных материалов и разбора реальных задач. От этого на Stack Overflow очень много вопросов буквально о каждой мелочи: как загрузить данные, как распаковать, запаковать. Видно, что всем приходится набивать шишки самостоятельно.

Читать дальше →
Всего голосов 70: ↑67 и ↓3+64
Комментарии26

Открытый курс машинного обучения. Тема 8. Обучение на гигабайтах с Vowpal Wabbit

Время на прочтение26 мин
Количество просмотров127K

Всем привет!



Вот мы постепенно и дошли до продвинутых методов машинного обучения. Сегодня обсудим, как вообще подступиться к обучению модели, если данных гигабайты или десятки гигабайт. Обсудим приемы, позволяющие это делать: стохастический градиентный спуск (SGD) и хэширование признаков, посмотрим на примеры применения библиотеки Vowpal Wabbit.


UPD 01.2022: С февраля 2022 г. ML-курс ODS на русском возрождается под руководством Петра Ермакова couatl. Для русскоязычной аудитории это предпочтительный вариант (c этими статьями на Хабре – в подкрепление), англоговорящим рекомендуется mlcourse.ai в режиме самостоятельного прохождения.


Видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017).

Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии21

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность