Всем привет!

В этой статье я расскажу о новом комфортном способе программировать на Python.

Это больше похоже не на программирование, а на создание статей (отчетов/демонстраций/исследований/примеров): среди блоков кода на Python можно вставлять обычный поясняющий текст. Результатом выполнения кода является не только числа и текст (как в случае с консолью при стандартной работе с Python), но еще и графики, диаграммы, картинки…

Примеры документов, которые вы сможете создавать:

Выглядит классно? Хотите создавать такие же документы? Тогда данная статья для вас!

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

Материал рассчитан на людей, не знакомых с языками программирования.

Для начала Python надо установить. Затем нужно поставить удобную среду для написания программ на Python. Этим двум шагам посвящена на портале.

Если все установлено и настроено, можно начинать.

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

  1. Он очень прост в изучении
  2. Большое количество готовых библиотек
  3. Когда смотришь на программу, сразу видишь алгоритм, который она реализует
  4. Большая часть специалистов в машинном обучении используют Python и большая часть библиотек тоже создается именно под этот язык программирования

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

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

Материал сложный, так что смело задавайте свои вопросы на форуме.

Вы можете перевода.

Приятного чтения!

В 5 части перевода привожу сразу 3 связанных по смыслу раздела.

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

Вы можете перевода.

Приятного чтения!

4 часть перевода готова!

Заканчиваем ходить вокруг да около и переходим непосредственно к теме книги - нейросетям.

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

Вы можете перевода.

Приятного чтения!

Третья часть перевода!

Статья не очень большая. Она охватывает только один раздел книги. Цель - показать, что у каждого метода есть свои ограничения. В статье рассматривается ограничения линейного классификатора. Также вводятся понятия логических функций и проблемы XOR.

Вы можете перевода.

Приятного чтения!

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

Вот, например, что нейросеть разработала для меня.

Рассмотрим импульсные нейронные сети: особенности, перспективы и преимущества, благодаря которым успешно вытесняется 2-е поколение.

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

Импульсные нейронные сети: принцип работы

К природной физиологии ближе импульсные (спайковые) нейронные сети (spiking neural network, SNN). Импульсные нейронные сети преодолевают разрыв между нейронаукой и машинным обучением, используя для обработки информации биологически реалистичные модели нейронов.

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


Пример сигналов на трех нейронах импульсной нейронной сети

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


Потенциал на мембране нейрона в процессе передачи сигнала

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

Импульсные нейронные сети: расстояние и время

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

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

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

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

Учитывая, что SNN в теории являются более мощными нейронными сетями, чем сети второго поколения, остается удивляться, почему мы не видим их широкого применения. Основная проблема практического использовании SNN – обучение. Несмотря на наличие методов биологического неконтролируемого обучения (без учителя), таких как Hebbian и STDP , пока неизвестны эффективные методы обучения SNN, обеспечивающие более высокую производительность, чем сети второго поколения.

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

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

Перспективы развития

Будущее SNN остается неясным. С одной стороны, они являются естественными преемниками современных нейронных сетей. С другой стороны, SNN пока далеки от практических инструментов для большинства задач. Уже существуют реальные приложения SNN для обработки изображений и звука в режиме реального времени, однако литература по практическим применениям остается скудной.

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

«Яндекс» внедрил новый алгоритм поиска на основе нейронных сетей. По мнению экспертов, это должно помочь компании увеличить на российском рынке отрыв от основного конкурента - Google

Российский интернет-холдинг ​«Яндекс» внедрил новый поисковый алгоритм на основе нейронных сетей. Об этом сообщил руководитель службы релевантности сервиса Александр Сафронов​. Новый алгоритм, получивший название «Королев», ищет не только по ключевым словам, но и по смыслу, и на сложные вопросы выдаются более точные ответы, пояснил представитель «Яндекса».

В 2016 году «Яндекс» внедрил алгоритм «Палех», который в режиме реального времени сопоставляет смысл редкого и уникального запроса и заголовка веб-страницы, даже если у них нет общих ключевых слов. Например, при запросе «картина, где небо закручивается» поисковик сможет выдать полотно Ван Гога «Звездная ночь». В отличие от «Палеха» «Королев» способен анализировать страницу целиком, а также смысл запросов, по которым на нее переходят другие пользователи.

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

По словам представителей сервиса, нейросеть способна самообучаться, поэтому чем больше пользователи ищут в поисковике, тем точнее будут результаты. Для обкатки будет использоваться открытая краудсорсинговая платформа «​Яндекс.Толока», запущенная в 2014 году. По сути, это сервис, где любой желающий может участвовать в тестировании продуктов «Яндекса», давать им оценки и оставлять замечания. Компании это позволяет улучшать свои услуги, а пользователи получают за это денежные вознаграждения. Сейчас в «Яндекс.Толоке» зарегистрированы более 1 млн пользователей.

«Проблема нейросетей состояла в том, что они очень медленные и их нельзя было использовать в работе с огромными массивами текста в режиме реального времени, — говорит основатель и управляющий партнер компании «Ашманов и партнеры» Игорь Ашманов. — Если «Яндекс» реально смог привлечь нейросети к индексированию всего объема Рунета — это интересно, это довольно серьезный прорыв с технологической точки зрения». Насколько новый алгоритм улучшит качество поиска и улучшит ли его в принципе, еще предстоит проанализировать, отметил Ашманов.

Основной конкурент «Яндекса» Google, по словам главы «Ашманов и партнеры», пока официально не объявляла о внедрении нейросетей в алгоритмы своего поиска. «Google может себе позволить настраивать факторы ранжирования по-другому и дольше экспериментировать в этой области, не внедряя новые технологии в поиск, просто потому, что у компании больше программистов и ресурсов», — отметил эксперт.​


Догнать и перегнать

По словам аналитика «ВТБ Капитала» Владимира Беспалова, новая версия российского поисковика — шаг по удержанию доли «Яндекса» на рынке. «Обновленное мобильное приложение «Поиска», новый алгоритм поисковика — все это должно помочь «Яндексу» стабилизировать и увеличивать свою долю на рынке поиска, — говорит эксперт. — Эффект будет ощутим не сразу, но снижение поисковых запросов в долгосрочной перспективе может менее благоприятно сказаться на будущих показателях. Поиск — главный продукт «Яндекса», основной доход компании — это реклама, которая привязана к поиску».

Удерживать свои позиции в мобильном поиске «Яндексу» может помочь решение ФАС, напоминает Беспалов. В апреле этого года ведомство заключило мировое соглашение с главным конкурентом российской компании на поисковом рынке — Google. Согласно ему американский интернет-гигант пересмотрит соглашения с производителями смартфонов на Android в России и позволит пользователям выбирать в качестве основных на своих устройствах альтернативные Google поисковые сервисы.

По итогам второго квартала этого года доля «Яндекса» на рынке поиска в России составила 54,3%, как сообщала Yandex N.V. (головная компания «Яндекса») в своем финансовом отчете со ссылкой на собственный сервис аналитики «Яндекс.Радар». На 31 июля, по данным «Яндекс.Радар», Google занимал 40,36% среди поисковых систем в России. По данным LiveInternet, в среднем за последние три месяца среди поисковиков «Яндекс» лидировал с долей 51,1%, у Google было 43,9%. Yandex N.V. не раскрывает выручку от поиска, но направление «поиск и портал» принесло компании 20,135 млрд руб., что на 22% больше, чем за аналогичный период 2016 года.

«Предыдущая революционная версия поиска «Матрикснет» позволила «Яндексу» оторваться от Google и нарастить свою долю почти на 10 п.п. за полгода. Это наглядный пример того, как применение прорывных технологий приводит к очевидным бизнес-результатам даже на таком сложном рынке, как поисковый», — считает управляющий партнер онлайн-школы Skyeng и бывший директор по международному развитию «Яндекса» Александр Ларьяновский.

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

  • Python ,
  • Машинное обучение ,
  • Поисковые технологии
  • Сегодня Яндекс выложил в open source собственную библиотеку CatBoost, разработанную с учетом многолетнего опыта компании в области машинного обучения. С ее помощью можно эффективно обучать модели на разнородных данных, в том числе таких, которые трудно представить в виде чисел (например, виды облаков или категории товаров). Исходный код, документация, бенчмарки и необходимые инструменты уже опубликованы на GitHub под лицензией Apache 2.0.

    CatBoost – это новый метод машинного обучения, основанный на градиентном бустинге. Он внедряется в Яндексе для решения задач ранжирования, предсказания и построения рекомендаций. Более того, он уже применяется в рамках сотрудничества с Европейской организацией по ядерным исследованиям (CERN) и промышленными клиентами Yandex Data Factory. Так чем же CatBoost отличается от других открытых аналогов? Почему бустинг, а не метод нейронных сетей? Как эта технология связана с уже известным Матрикснетом? И причем здесь котики? Сегодня мы ответим на все эти вопросы.

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

    Нейросети или градиентный бустинг

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

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

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

    Матрикснет

    Первые поисковые системы были не такими сложными, как сейчас. Фактически сначала был просто поиск слов – сайтов было так мало, что особой конкуренции между ними не было. Потом страниц стало больше, их стало нужно ранжировать. Начали учитываться разные усложнения - частота слов, tf-idf . Затем страниц стало слишком много на любую тему, произошёл первый важный прорыв - начали учитывать ссылки.

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

    Лет десять назад человеческого разума перестало хватать на то, чтобы придумывать, как ранжировать документы. Вы, наверное, замечали, что количество найденного почти по любому запросу огромно: сотни тысяч, часто - миллионы результатов. Большая часть из них неинтересные, бесполезные, лишь случайно упоминают слова запроса или вообще являются спамом. Для ответа на ваш запрос нужно мгновенно отобрать из всех найденных результатов десятку лучших. Написать программу, которая делает это с приемлемым качеством, стало не под силу программисту-человеку. Произошёл следующий переход - поисковики стали активно использовать машинное обучение.

    Яндекс еще в 2009 году внедрили собственный метод Матрикснет, основанный на градиентном бустинге. Можно сказать, что ранжированию помогает коллективный разум пользователей и «мудрость толпы ». Информация о сайтах и поведении людей преобразуется во множество факторов, каждый из которых используется Матрикснетом для построения формулы ранжирования. Фактически, формулу ранжирования теперь пишет машина. Кстати, в качестве отдельных факторов мы в том числе используем результаты работы нейронных сетей (к примеру, так работает алгоритм Палех, о котором в прошлом году).

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

    Ещё одна важная особенность Матрикснета - в том, что формулу ранжирования можно настраивать отдельно для достаточно узких классов запросов. Например, улучшить качество поиска только по запросам про музыку. При этом ранжирование по остальным классам запросов не ухудшится.

    Именно Матрикснет и его достоинства легли в основу CatBoost. Но зачем нам вообще понадобилось изобретать что-то новое?

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

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

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

    Именно поэтому было важно научить машину работать не только с числами, но и с категориями напрямую, закономерности между которыми она будет выявлять самостоятельно, без нашей ручной «помощи». И CatBoost разработан нами так, чтобы одинаково хорошо работать «из коробки» как с числовыми признаками, так и с категориальными. Благодаря этому он показывает более высокое качество обучения при работе с разнородными данными, чем альтернативные решения. Его можно применять в самых разных областях - от банковской сферы до промышленности.

    Кстати, название технологии происходит как раз от Categorical Boosting (категориальный бустинг). И ни один кот при разработке не пострадал.

    Бенчмарки

    Можно долго говорить о теоретических отличиях библиотеки, но лучше один раз показать на практике. Для наглядности мы сравнили работу библиотеки CatBoost с открытыми аналогами XGBoost, LightGBM и H20 на наборе публичных датасетов. И вот результаты (чем меньше, тем лучше): https://catboost.yandex/#benchmark

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

    CatBoost на практике

    Новый метод уже протестировали на сервисах Яндекса. Он применялся для улучшения результатов поиска, ранжирования ленты рекомендаций Яндекс.Дзен и для расчета прогноза погоды в технологии Метеум - и во всех случаях показал себя лучше Матрикснета. В дальнейшем CatBoost будет работать и на других сервисах. Не будем здесь останавливаться – лучше сразу расскажем про Большой адронный коллайдер (БАК).

    CatBoost успел найти себе применение и в рамках сотрудничества с Европейской организацией по ядерным исследованиям. В БАК работает детектор LHCb, используемый для исследования асимметрии материи и антиматерии во взаимодействиях тяжёлых прелестных кварков. Чтобы точно отслеживать разные частицы, регистрируемые в эксперименте, в детекторе существуют несколько специфических частей, каждая из которых определяет специальные свойства частиц. Наиболее сложной задачей при этом является объединение информации с различных частей детектора в максимально точное, агрегированное знание о частице. Здесь и приходит на помощь машинное обучение. Используя для комбинирования данных CatBoost, учёным удалось добиться улучшения качественных характеристик финального решения. Результаты CatBoost оказались лучше результатов, получаемых с использованием других методов.

    Как начать использовать CatBoost?

    Для работы с CatBoost достаточно установить его на свой компьютер. Библиотека поддерживает операционные системы Linux, Windows и macOS и доступна на языках программирования Python и R. Яндекс разработал также программу визуализации