Как стать автором
Поиск
Написать публикацию
Обновить
134.72

Алгоритмы *

Все об алгоритмах

Сначала показывать
Порог рейтинга
Уровень сложности

Машинное обучение: Кластеризация методом K-means. Теория и реализация. С нуля

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров8.9K

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

Содержание: идея метода, как присваивать метки неразмеченным объектам, реализация на чистом Python и разбор кода.

Читать далее

Миф о RAM

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров19K

Миф о RAM — это верование о том, что память современного компьютера напоминает идеальную память с произвольным доступом. Кэш люди считают оптимизацией для малых данных: если они умещаются в L2, то будут обрабатываться быстрее; если нет, то тут уж ничего не поделаешь.

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

groups = [[] for _ in range(n_groups)]

for element in elements:

groups[element.group].append(element)

Он и в самом деле линеен (то есть асимптотически оптимален), и мы всё равно должны выполнять доступ к произвольным индексам, так что кэш здесь нам ни в чём бы не помог.

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

Читать далее

Стратегия Келли точно не подведёт

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

Возможно, вы слышали о финансовой стратегии ставок по методу Келли. Это система, позволяющая оборачивать себе на пользу известную информацию в азартной игре или связанные с ней предубеждения. Эта стратегия также называется максимально агрессивной или стратегией высокой дисперсии. Дело в том, что если сделать ставку выше, чем позволяет предел Келли, то последствия могут быть катастрофическими.
Недавно мне попалась странная карточная игра, в которой стратегия Келли абсолютно не подразумевала риска, поскольку в игре действует Нулевая дисперсия. В своей знаменитой книге «Математические головоломки» Питер Уинклер называет её «Next Card Bet» («Следующая карточная ставка»). Саму задачу и её решение, по-видимому, сформулировал Томас Кавер. Мне понравилась как сама эта игра в ставки, так и её анализ, поэтому я поделюсь ими с вами здесь.

Читать далее

Знакомства на основе данных: как мы запустили корпоративный дейтинг-сервис в Сбере

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров8.2K

Привет, меня зовут Андрей Кузьминых. Я технологический предприниматель, запускаю ИИ-стартапы и внедряю искусственный интеллект в компаниях. Некоторое время назад я работал в Сбере в роли директора по данным и ИИ, где мы с командой анализировали огромные массивы данных, строили ML-модели, создавали управленческие дашборды и рекомендательные сервисы. Но одним из самых интересных и нестандартных проектов стало создание первого в России корпоративного приложения для знакомств среди сотрудников – SberDating. Идея родилась из стремления помочь людям найти тех, с кем можно установить нечто большее, чем просто деловые отношения, – друзей, собеседников, а возможно, и любимого человека. Но чтобы понять, как мы к этому пришли, нужно вернуться на пять лет назад.

Если вам интересна тема ИИ, мои кейсы и опыт, подписывайтесь на мой телеграм-канал, где я делюсь инсайтами, практическими советами и последними новостями из мира искусственного интеллекта.

Читать далее

ANS-технология в гарнитурах VT и Yealink

Время на прочтение5 мин
Количество просмотров645

Если вы хотя бы раз пользовались гарнитурой с технологией ANS (Active Noise Suppression, активное шумоподавление), то уже знаете, насколько применение ANS меняет качество передачи речи. Голос собеседника четко слышен в любой обстановке: на улице, в шумном офисе или на производстве.

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

Давайте проанализируем подходы VT и Yealink к реализации ANS в гарнитурах и сравним эффективность их решений.

Читать далее

Как сделать видео на стриминге легче и не погрязнуть в шакалах: опыт Кинопоиска

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

Привет! Меня зовут Михаил Мазанов, я отвечаю за технологический стек работы с медиаданными в Кинопоиске: от съёмок оригинальных проектов до доставки и просмотра видео на всех экранах. Для нашей пятой ежегодной конференции про стриминг PlayButton 2024 я готовил большой доклад про оптимизацию качества видео Кинопоиска, а для Хабра решил пересобрать его в виде статьи — для тех, кому текстовый формат предпочтительнее видео.

Кроме технических графиков, вас ждёт ещё и наглядная разница в работе алгоритмов сжатия на примере «Рика и Морти» и «Джона Уика».

Читать далее

Как мы проектировали свой отечественный драйвер IGBT

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров4.3K

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

В этом году я со своими студентами провел такое проектно-научное исследование в рамках гранта НИУ «МЭИ» на реализацию программы научных исследований «Приоритет 2030: Технологии будущего». Тематикой работы была «Разработка интеллектуального драйвера IGBT на напряжение 3,3 кВ для 3-уровневых инверторов тяговых электроприводов поездов высокоскоростной железнодорожной магистрали Москва - Санкт-Петербург». Проект выполнялся с апреля по октябрь, и в нём были задействованы кроме меня, как руководителя, студенты 4 курса бакалавриата и 1 курса магистратуры.

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

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

Читать далее

Петь в такт машине: история караоке и устройство его аппаратов

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров1.6K

Японское изобретение давно стало привычной частью нашей реальности. Многие отводят душу в караоке по вечерам, одни или в веселой компании. Задумывались ли вы когда-нибудь, как караоке-аппараты считают баллы, которые по итогам исполнения присуждаются отважным певцам? Совершим небольшое путешествие в историю этого изобретения и заглянем внутрь механизма его работы.

Читать далее

Много алгоритмов сортировки на языке C++: от простого к сложному с примерами и пояснениями

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров14K

Всем привет! Подтолкнуло написать меня эту статью мой непосредственный интерес к алгоритмам и решению задач на leetcode, каждый раз, используя стандартную сортировку из STL std::sort, я знал, что ее сложность O(n*log(n)), но как она реализована внутри не доходили руки разобраться, в добавок мне стало интересно, какие есть другие виды сортировок, кроме самых простых, с которыми каждый знакомится в начале своего пути.

Я решил это исправить! И описать все виды сортировок, с которыми мне так или иначе приходилось встречать во время выполнения своих тасков или решению задач на leet.

Начнем с того, что разберемся, какие виды сортировок вообще есть и разобьем их на условные простые/продвинутые/для специальных случаев, а также разберемся, что использует std::sort у себя под капотом.

Читать далее

Какие образы распознаёт двухлучевой инфракрасный счётчик

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

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

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

Читать далее

BABILong — бенчмарк для оценки LLM на больших контекстах

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.9K

Привет, Хабр! Мы — команда Memory‑Augmented models в составе лаборатории Cognitive AI Systems AIRI. В ходе своих исследований мы стараемся разобраться, насколько хорошо LLM могут обрабатывать большой объем данных и решать задачи на основе них.

Разработчики современных языковых моделей соревнуются в длине контекста и счёт уже идёт на миллионы токенов. Но насколько эффективно LLM пользуются информацией из этого контекста?

Чтобы выяснить это, мы вместе с коллегами из МФТИ и Лондонского института Математических Наук создали новый бенчмарк под названием BABILong, который мы привезли на NeurIPS в этом году. Он оценивает то, насколько успешно современные модели умеют искать информацию в собственных гигантских контекстах. Оказалось, что зачастую главное — это не размер, а умение пользоваться.

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

Читать далее

Небольшая доработка двухлинейного сумматора и счётчика испытательного стенда для сумматоров

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.3K

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

Читать далее

Машинное обучение: Классификация методом KNN. Теория и реализация. С нуля. На чистом Python

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров2.7K

В этой статье я привел основные сведения о методе классификации k-ближайших соседей. Рассказываю все в своем стиле. Теоретические моменты и простая реализация.

Содержание: что это за метод, идея этого метода, как классифицировать (регрессировать) новые объекты, масштабирование признаков, как его можно применять, реализация.

Читать далее

Ближайшие события

Опасность наивности

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров12K

Вопрос на засыпку. Как вы реализуете перемешивание колоды карт?

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

Читать далее

Реализация шифра «Магма» на языке RUST

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4.7K

Привет! Сегодня мы продолжаем реализовывать шифрование. В этой статье мы рассмотрим алгоритм шифра "Магма", который был разработан и использовался в СССР.

Читать далее

Простые эвристики для TSP

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров1.4K

В прошлой заметке я поднял тему ванильно-радужных перспектив использования искусственного интеллекта для решения оптимизационных задач, в частности, для решения хорошо изученной задачи коммивояжера, она же TSP (Travelling Salesman Problem). Там же был дан старт разбору некоторых классических алгоритмов для решения этой задачи в рамках чего я представил подход, основанный на MIP (Mixed Integer Programming). Считаю важным завершить такой разбор для лучшего понимания отличий в работе нейронных сетей.

Читать далее

SLAM на Java с OpenCV: сравнение алгоритмов автономной навигации

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3.3K

Интересуешься визуальной одометрией? В этой статье я сравнил алгоритмы ORB, R2D2, SIFT и их комбинации, реализовав их на Java с OpenCV. Подробно разобрал, как они работают, замерил точность, производительность и наглядно показал, какой алгоритм лучше для беспилотников. Если хочешь узнать больше и посмотреть примеры кода на Java, заглядывай!

Как я сравнил SLAM-алгоритмы на Java?

Homo clickus. Как моделирование кликающих людей пригодится для сегментации изображений

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров1.1K

Приветствую всех читающих!

Меня зовут Антон Антонов, я инженер по искусственному интеллекту, работаю в Институте искусственного интеллекта AIRI в команде, которая занимается Embodied AI — областью, связывающей робототехнику, компьютерное зрение и большие языковые модели.

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

Ниже я хотел бы подробнее рассказать о нашей разработке.

Кликнуть

Магия простоты: как мы улучшили отображение общественного транспорта на карте

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров7.8K

Привет! Я Иван Косолапов, тимлид команды ETA/RTA. Мы часть сервиса Data Science и занимаемся анализом данных и машинным обучением для задач навигации в 2ГИС.

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

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

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

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

Расскажу, как решая эти задачи, мы добились более точного отображения автобусов на карте в 2ГИС, упростив существующую на тот момент сложную систему.

Читать

SQL HowTo: агрегация внутри рекурсии (Advent of Code 2024, Day 11: Plutonian Pebbles)

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2.5K

Сегодня посмотрим на примере задачки из Advent of Code зачем и как можно обойти ошибку aggregate functions are not allowed in a recursive query's recursive term, возникающую при попытке агрегировать какие-то данные внутри шага рекурсии на PostgreSQL — «если нельзя, но очень хочется, то можно».

Читать далее

Вклад авторов