Рубрика «Алгоритмы» - 66

Всем привет!

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

Большая часть обучающего материала для наглядного и интерактивного представления реализована с использованием Jupyter Notebook. Предполагается, что читатель имеет базовые знания из области высшей математики, а также немного владеет языком программирования Python.

Курс лекций «Основы цифровой обработки сигналов» - 1
Читать полностью »

Любой аналитик, в начале своей работы, проходит ненавистный этап определения идентификации параметров распределения. Потом, с наработкой опыта, для него согласование полученных остаточных разбросов означает, что какой-то этап, в анализе Big Data, пройден и можно двигаться дальше. Уже нет необходимости проверять сотни моделей на соответствие различным уравнениям регрессии, искать отрезки с переходными процессами, составлять композицию моделей. Терзать себя сомнениями: «Может есть, еще какая-нибудь модель, которая больше подходит?»
Подумал: «А что, если пойти от противного. Посмотреть, что может сделать белый шум. Может ли белый шум создать, что-то, что наше внимание сопоставит со значимым объектом из нашего опыта?»
Белый шум рисует черный квадрат - 1
Рис. Белый шум (файл взят из сети, размер 448х235).

По этому вопросу рассуждал так:
1. Какова вероятность, что появится горизонтальные и вертикальные линии, заметной длины?
2. Если они могут появиться, то какова вероятность, что они совпадут своим началом по одной из координат и составят прямоугольную фигуру?
Дальше по тексту, объясню, как эти задачи связались с анализом Big Data.
Читать полностью »

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

Как мы обучили нейронную сеть классифицировать шурупы - 1

Проблема интернет-магазина шурупов — в ассортименте. Тысячи или десятки тысяч моделей. У каждого шурупа свое описание и характеристики, поэтому на фильтры нет надежды. Что делать? Искать вручную или искать в гипермаркете на полках? В обоих случаях это потеря времени. В итоге клиент устанет и пойдет забивать гвоздь. Чтобы помочь ему, воспользуемся нейросетью. Если она может находить котиков или диваны, то пусть занимается чем-то полезным — подбирает шурупы и болты. Как научить нейросеть подбирать для пользователя шурупы быстро и точно, расскажем в расшифровке доклада Марии Мацкевичус, которая в компании Grid Dynamics занимается анализом данных и машинным обучением.
Читать полностью »

Пирамидальная сортировка (HeapSort) - 1

Перевод статьи подготовлен специально для студентов курса «Алгоритмы для разработчиков».


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

Несколько дней назад случилась конференция Hydra. Ребята из JUG.ru Group пригласили спикеров мечты (Лесли Лэмпорт! Клифф Клик! Мартин Клеппманн!) и посвятили два дня распределённым системам и вычислениям. Контур был одним из трёх партнёров конференции. Мы общались на стенде, рассказывали про наши распределённые хранилки, играли в бинго, решали задачки.

Это пост с разбором задач на стенде Контура от автора их текста. Кто был на Гидре — это ваш повод вспомнить приятные впечатления, кто не был — шанс размять мозги big O-нотацией.

Были даже участники, которые разобрали флипчарт на слайды, чтобы записать своё решение. Я не шучу — они сдали на проверку вот такую пачку бумаги:

Разбор задач с конференции Hydra — балансировка нагрузки и in-memory хранилища - 1

Всего было три задачи:

  • о выборе реплик по весам для балансировки нагрузки
  • о сортировке результатов запроса к in-memory базе данных
  • о передаче состояния в распределённой системе с кольцевой топологией

Читать полностью »

Всем привет. Уже в этом месяце в ОТУС стартует новый курс — "Математика для Data Science". В преддверии старта данного курса традиционно делимся с вами переводом интересного материала.

Глубокое обучение (Deep Learning): обзор - 1

Аннотация. Глубокое обучение является передовой областью исследований машинного обучения (machine learning — ML). Оно представляет из себя нескольких скрытых слоев искусственных нейронных сетей. Методология глубокого обучения применяет нелинейные преобразования и модельные абстракции высокого уровня на больших базах данных. Последние достижения во внедрении архитектуры глубокого обучения в многочисленных областях уже внесли значительный вклад в развитие искусственного интеллекта. В этой статье представлено современное исследование о вкладе и новых применениях глубокого обучения. Следующий обзор в хронологическом порядке представляет, как и в каких наиболее значимых приложениях использовались алгоритмы глубокого обучения. Кроме того, представлены выгода и преимущества методологии глубокого обучения в ее многослойной иерархии и нелинейных операциях, которые сравниваются с более традиционными алгоритмами в обычных приложениях. Обзор последних достижений в области далее раскрывает общие концепции, постоянно растущие преимущества и популярность глубокого обучения.Читать полностью »

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

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

В последние годы новые методы смогли победить лучших людей в хэдзапе (бот Libratus). А сейчас достигнута ключевая веха: бот Pluribus, разработанный в университете Карнеги — Меллона и Facebook, победил элитных игроков за столом с шестью игроками (научная статья опубликована в Science). Что характерно, самообучение программы проводилось на одном 64-ядерном сервере с 512 ГБ памяти. Это не какие-то корпоративные проекты, где нейросеть обучается на десятках тысяч процессорных ядер. Обучение программы вроде Pluribus может повторить практически любой исследователь.
Читать полностью »

AI-Based Photo Restoration - 1

Hi everybody! I’m a research engineer at the Mail.ru Group computer vision team. In this article, I’m going to tell a story of how we’ve created AI-based restoration project for old military photos. What is «photo restoration»? It consists of three steps:

  • we find all the image defects: fractures, scuffs, holes;
  • we inpaint the discovered defects, based on the pixel values around them;
  • we colorize the image.

Further, I’ll describe every step of photo restoration and tell you how we got our data, what nets we trained, what we accomplished, and what mistakes we made.
Читать полностью »

Представьте, что вам нужно сгенерировать равномерно распределённое случайное число от 1 до 10. То есть целое число от 1 до 10 включительно, с равной вероятностью (10%) появления каждого. Но, скажем, без доступа к монетам, компьютерам, радиоактивному материалу или другим подобным источникам (псевдо) случайных чисел. У вас есть только комната с людьми.

Предположим, что в этой комнате чуть более 8500 студентов.

Самое простое — попросить кого-нибудь: «Эй, выбери случайное число от одного до десяти!». Человек отвечает: «Семь!». Отлично! Теперь у вас есть число. Однако вы начинаете задаваться вопросом, является ли оно равномерно распределённым?
Читать полностью »

Вот цитата из Линуса Торвальдса за 2006 год:

Я огромный сторонник разработки кода вокруг данных, а не наоборот, и я думаю, что это одна из причин, по которой git был довольно успешным… По сути, я утверждаю, что разница между плохим программистом и хорошим заключается в том, считает ли он более важным свой код или свои структуры данных. Плохие программисты беспокоятся о коде. Хорошие программисты беспокоятся о структурах данных и их взаимоотношениях.

Что очень похоже на «правило представления» Эрика Реймонда от 2003 года:

Сверните знания в данные, чтобы логика программы стала глупой и надёжной.

Здесь просто резюме идей, подобных мысли Роба Пайка от 1989 года:

Доминируют данные. Если вы выбрали правильные структуры данных и всё хорошо организовали, то алгоритмы почти всегда будут самоочевидными. Структуры данных, а не алгоритмы, играют центральную роль в программировании.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js