• Word2vec в картинках

    • Перевод


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

    Мы пытаемся скопировать этот узор в нашей жизни и нашем обществе и потому любим ритм, песню, танец, различные радующие и утешающие нас формы. Однако можно разглядеть и опасность, таящуюся в поиске абсолютного совершенства, ибо очевидно, что совершенный узор — неизменен. И, приближаясь к совершенству, всё сущее идёт к смерти» — Дюна (1965)

    Я считаю, что концепция вложений (embeddings) — одна из самых замечательных идей в машинном обучении. Если вы когда-нибудь использовали Siri, Google Assistant, Alexa, Google Translate или даже клавиатуру смартфона с предсказанием следующего слова, то уже работали с моделью обработки естественного языка на основе вложений. За последние десятилетия произошло значительное развитие этой концепции для нейронных моделей (последние разработки включают контекстуализированные вложения слов в передовых моделях, таких как BERT и GPT2).
    Читать дальше →
  • Марковские случайные поля

    • Tutorial
    Статья посвящена описанию метода CRF (Conditional Random Fields), являющимся разновидностью метода Марковских случайных полей (Markov random field). Данный метод нашел широкое применение в различных областях ИИ, в частности, его успешно используют в задачах распознавания речи и образов, обработки текстовой информации, а также и в других предметных областях: биоинформатики, компьютерной графики и пр.
    Читать дальше →
  • Фильтр Калмана

    • Tutorial


    В интернете, в том числе и на хабре, можно найти много информации про фильтр Калмана. Но тяжело найти легкоперевариваемый вывод самих формул. Без вывода вся эта наука воспринимается как некое шаманство, формулы выглядят как безликий набор символов, а главное, многие простые утверждения, лежащие на поверхности теории, оказываются за пределами понимания. Целью этой статьи будет рассказать об этом фильтре на как можно более доступном языке.
    Фильтр Калмана — это мощнейший инструмент фильтрации данных. Основной его принцип состоит в том, что при фильтрации используется информация о физике самого явления. Скажем, если вы фильтруете данные со спидометра машины, то инерционность машины дает вам право воспринимать слишком быстрые скачки скорости как ошибку измерения. Фильтр Калмана интересен тем, что в каком-то смысле, это самый лучший фильтр. Подробнее обсудим ниже, что конкретно означают слова «самый лучший». В конце статьи я покажу, что во многих случаях формулы можно до такой степени упростить, что от них почти ничего и не останется.
    Читать дальше →
  • Автоэнкодеры в Keras, часть 6: VAE + GAN

    • Tutorial

    Содержание



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

    В прошлой части мы изучили, как работают GAN’ы, получив довольно четкие изображения цифр, однако пропала возможность кодирования и переноса стиля.

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

    Подход, который будет описан далее, основан на статье [Autoencoding beyond pixels using a learned similarity metric, Larsen et al, 2016].



    Иллюстрация из [1]
    Читать дальше →
    • +37
    • 13,4k
    • 7
  • Автоэнкодеры в Keras, Часть 5: GAN(Generative Adversarial Networks) и tensorflow

    • Tutorial

    Содержание



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

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

    Этот недостаток в куда меньшей степени проявляется у другого подхода, а именно у генеративных состязающихся сетейGAN’ов.

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

    Коротко о GAN


    GAN’ы впервые были предложены в статье [1, Generative Adversarial Nets, Goodfellow et al, 2014] и сейчас очень активно исследуются. Наиболее state-of-the-art генеративные модели так или иначе используют adversarial.

    Схема GAN:



    Читать дальше →
    • +25
    • 18,7k
    • 9
  • Прогнозирование продаж недвижимости. Лекция в Яндексе

      Успех в проектах по машинному обучению обычно связан не только с умением применять разные библиотеки, но и с пониманием той области, откуда взяты данные. Отличной иллюстрацией этого тезиса стало решение, предложенное командой Алексея Каюченко, Сергея Белова, Александра Дроботова и Алексея Смирнова в конкурсе PIK Digital Day. Они заняли второе место, а спустя пару недель рассказали о своём участии и построенных моделях на очередной ML-тренировке Яндекса.


      Алексей Каюченко:
      — Добрый день! Мы расскажем о соревновании PIK Digital Day, в котором мы участвовали. Немного о команде. Нас было четыре человека. Все с абсолютно разным бэкграундом, из разных областей. На самом деле, мы на финале познакомились. Команда сформировалась буквально за день до финала. Я расскажу про ход конкурса, организацию работы. Потом выйдет Сережа, он расскажет про данные, а Саша расскажет уже про сабмишен, про финальный ход работы и про то, как мы двигались по лидерборду.

      Читать дальше →
    • Насколько данные для обучения модели (не)похожи на тестовую выборку?

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

      Есть такая поговорка: «Не сравнивайте яблоки с апельсинами». Но что делать, если нужно сравнить один набор яблок с апельсинами с другим, но распределения фруктов в двух наборах разное? Сможете работать с данными? И как будете это делать?

      Читать дальше →
      • +22
      • 10,1k
      • 5
    • Как работают рекомендательные системы. Лекция в Яндексе

        Привет, меня зовут Михаил Ройзнер. Недавно я выступил перед студентами Малого Шада Яндекса с лекцией о том, что такое рекомендательные системы и какие методы там бывают. На основе лекции я подготовил этот пост.





        План лекции:


        1. Виды и области применения рекомендательных систем.
        2. Простейшие алгоритмы.
        3. Введение в линейную алгебру.
        4. Алгоритм SVD.
        5. Измерение качества рекомендаций.
        6. Направление развития.

        Под катом вы найдете конспект лекции и презентацию
      • «Способность» машинного обучения предсказывать будущее хаотических систем

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


        По результатам серии экспериментов, опубликованным в журналах Physical Review Letters и Chaos, ученые использовали машинное обучение (тот же метод, который стоит за последними успехами искусственного интеллекта) для предсказывания будущего — прогнозирования эволюции хаотических систем до отдаленных горизонтов, потрясающих воображение. *Данный подход признается сторонними экспертами в качестве новаторского и, вероятно, скоро станет доступным для широкого применения.

        Читать дальше →
      • Ищем закономерности на бирже

        Если вы решили научиться торговать на бирже, то вам нужно научиться находить на ней закономерности. Закономерность — это определённое условие (например характерное движение цены или какое-то событие), после выполнения которого вы будете знать, куда дальше пойдёт цена.


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

        Читать дальше →
      • Четыре способа обмануть нейросеть глубокого обучения

        • Перевод
        • Tutorial

        Нейросети используются уже довольно широко. Чат-боты, распознавание изображений, преобразование речи в текст и автоматические переводы с одного языка на другой — вот лишь некоторые сферы применения глубокого обучения, которое активно вытесняет другие подходы. И причина в основном в более широких возможностях обобщения при обработке больших объёмов данных.

        Читать дальше →
      • Как научиться мыслить образами, используя визуальные аналогии

        • Перевод
        Визуалы – это люди, которые, воспринимают большую часть информации с помощью зрения. Визуалы составляют примерно 60% населения нашей планеты (автор статьи, Анна Виталь, также входит в их число). Вы можете спросить: как же нам удается общаться с вами с помощью изображений? Все достаточно просто – для этой цели мы используем хорошо известные визуальные символы и аналогии. Ниже представлены некоторые из таких зрительных аналогий, начиная с наиболее простых и заканчивая самыми сложными.

        Читать дальше →
      • Открытый курс машинного обучения. Тема 9. Анализ временных рядов с помощью Python

          Доброго дня! Мы продолжаем наш цикл статей открытого курса по машинному обучению и сегодня поговорим о временных рядах.


          Посмотрим на то, как с ними работать в Python, какие возможные методы и модели можно использовать для прогнозирования; что такое двойное и тройное экспоненциальное взвешивание; что делать, если стационарность — это не про вас; как построить SARIMA и не умереть; и как прогнозировать xgboost-ом. И всё это будем применять к примеру из суровой реальности.


          UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.


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

          Читать дальше →
        • Краткий курс машинного обучения или как создать нейронную сеть для решения скоринг задачи

          • Tutorial
          image

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

          Вопросы, которые разобраны в статье:

          • Как собрать и подготовить данные для построения модели?
          • Что такое нейронная сеть и как она устроена?
          • Как написать свою нейронную сеть с нуля?
          • Как правильно обучить нейронную сеть на имеющихся данных?
          • Как интерпретировать модель и ее результаты?
          • Как корректно оценить качество модели?
          Поехали!
        • Народная Политика конфиденциальности

          • Tutorial
          image

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

          Решились на такой шаг, потому что данная форма Политики не предусматривает обработку персональных данных, и в результате не предполагает большой вариативности решения. Важно помнить, что она не подходит для сайтов, на которых обрабатываются ПДн. Например, интернет-магазины и прочие сервисы, на которых помимо номера телефона или email пользователем дополнительно предоставляются иные сведения о себе, требуют большего внимания к вопросам обработки персональных данных.

          Поэтому мы подумали над вариантами составления «народной» Политики конфиденциальности с обработкой ПДн. Простым шаблоном здесь не обойдешься. Взяли за основу вышедшие в 2017 году Рекомендации Роскомнадзора (далее – «Рекомендации») по составлению документа, определяющего политику оператора в отношении обработки персональных данных (далее – «Политика). Дополнили ее живыми примерами.

          Смотрим, что получилось.
          Читать дальше →
          • +16
          • 10,3k
          • 8
        • Оптимизация использования памяти в Xamarin приложениях

          Это перевод статьи автора Samuel Debruyn. Статья понравилась настолько, что появилось спонтанное желание поделится с хабра сообществом :)

          Xamarin удивителен тем, что позволяет .NET разработчикам писать приложения для Android, iOS, macOS на… С#. Но эта удивительная возможность имеет свою цену и даже простейшее приложение может запросто потреблять неприлично много памяти. Давайте посмотрим как это происходит и что мы можем сделать с этим. Большинство моих примеров основываются на Xamarin.Android, но вы быстро заметите, что это также применимо и к Xamarin.iOS.


          Как работает сборщик мусора в Xamarin приложениях


          На самом деле в Xamarin приложениях используется несколько типов объектов. Каждое Xamarin приложение имеет объекты, которые живут в двух отдельных мирах:


          • Управляемый, мир Mono с объектами, наследуемыми из System.Object
          • Неуправляемый, нативный мир с объектами, наследуемыми от NSObject (iOS) или Java.Lang.Object (Android)

          Из этого также следует что существуют и работают 2 сборщика мусора:


          • Сборщик мусора от Mono, называемый SGEN
          • Сборщики мусора из нативных миров Android или iOS

          Читать дальше →
          • +11
          • 4,9k
          • 6
        • Типичные распределения вероятности: шпаргалка data scientist-а

          • Перевод

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


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

            Что самое важное в организации команды? Может построить планы?

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

            Что делают успешные команды и чего не делают разваливающиеся за неделю? Что важнее — назначить на каждую задачу исполнителя или проставлять дедлайны, а может самое важное ставить приоритеты? Есть ли действие, которое значительно увеличивает срок жизни проекта?



            И оказалось, что есть простой ответ. Обнаружив его, мы резко приостановили работы над функциями и всей командой сфокусировались на мобильном приложении…
            Читать дальше →
          • Сколько должен стоить ваш SaaS? Я проанализировал 1530 сервисов и получил такие графики

              image

              Прайсинг SaaS-сервисов — штука хитрая. Малейшая ошибка может запросто стоить вам целого состояния в долгосрочной перспективе. Поэтому сложно переоценить необходимость анализа конкурентов в вашей нише и уровня цен в среднем по больнице.

              Но есть хорошие новости — я уже сделал этот анализ за вас (по крайней мере, в некоторых нишах) и предлагаю вашему вниманию россыпь цветных картинок, которые нарисованы на основе анализа 1530 цен самых разных сервисов.
              Читать дальше →
            • Открытый курс машинного обучения. Тема 3. Классификация, деревья решений и метод ближайших соседей


                Привет всем, кто проходит курс машинного обучения на Хабре!


                В первых двух частях (1, 2) мы попрактиковались в первичном анализе данных с Pandas и в построении картинок, позволяющих делать выводы по данным. Сегодня наконец перейдем к машинному обучению. Поговорим о задачах машинного обучения и рассмотрим 2 простых подхода – деревья решений и метод ближайших соседей. Также обсудим, как с помощью кросс-валидации выбирать модель для конкретных данных.


                UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.


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

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