
Здравствуйте, дорогие читатели. В этой статье я приведу разбор того, как работает метод кластеризации К-средних на низком уровне.
Содержание: идея метода, как присваивать метки неразмеченным объектам, реализация на чистом Python и разбор кода.
Все об алгоритмах
Здравствуйте, дорогие читатели. В этой статье я приведу разбор того, как работает метод кластеризации К-средних на низком уровне.
Содержание: идея метода, как присваивать метки неразмеченным объектам, реализация на чистом Python и разбор кода.
Миф о RAM — это верование о том, что память современного компьютера напоминает идеальную память с произвольным доступом. Кэш люди считают оптимизацией для малых данных: если они умещаются в L2, то будут обрабатываться быстрее; если нет, то тут уж ничего не поделаешь.
Вероятнее всего, что самым быстрым разбиения данных будет такой код (я использую в качестве псевдокода Python; можете представить, что я пишу это на вашем любимом низкоуровневом языке):
groups = [[] for _ in range(n_groups)]
for element in elements:
groups[element.group].append(element)
Он и в самом деле линеен (то есть асимптотически оптимален), и мы всё равно должны выполнять доступ к произвольным индексам, так что кэш здесь нам ни в чём бы не помог.
В реальности, когда количество групп высоко, такой код не задействует большую часть производительности, а некоторые асимптотически более медленные алгоритмы могут выполнять сегментирование гораздо быстрее. В основном они применяются в базах данных на диске, но, как ни странно, полезны даже в случае данных в RAM.
Возможно, вы слышали о финансовой стратегии ставок по методу Келли. Это система, позволяющая оборачивать себе на пользу известную информацию в азартной игре или связанные с ней предубеждения. Эта стратегия также называется максимально агрессивной или стратегией высокой дисперсии. Дело в том, что если сделать ставку выше, чем позволяет предел Келли, то последствия могут быть катастрофическими.
Недавно мне попалась странная карточная игра, в которой стратегия Келли абсолютно не подразумевала риска, поскольку в игре действует Нулевая дисперсия. В своей знаменитой книге «Математические головоломки» Питер Уинклер называет её «Next Card Bet» («Следующая карточная ставка»). Саму задачу и её решение, по-видимому, сформулировал Томас Кавер. Мне понравилась как сама эта игра в ставки, так и её анализ, поэтому я поделюсь ими с вами здесь.
Привет, меня зовут Андрей Кузьминых. Я технологический предприниматель, запускаю ИИ-стартапы и внедряю искусственный интеллект в компаниях. Некоторое время назад я работал в Сбере в роли директора по данным и ИИ, где мы с командой анализировали огромные массивы данных, строили ML-модели, создавали управленческие дашборды и рекомендательные сервисы. Но одним из самых интересных и нестандартных проектов стало создание первого в России корпоративного приложения для знакомств среди сотрудников – SberDating. Идея родилась из стремления помочь людям найти тех, с кем можно установить нечто большее, чем просто деловые отношения, – друзей, собеседников, а возможно, и любимого человека. Но чтобы понять, как мы к этому пришли, нужно вернуться на пять лет назад.
Если вам интересна тема ИИ, мои кейсы и опыт, подписывайтесь на мой телеграм-канал, где я делюсь инсайтами, практическими советами и последними новостями из мира искусственного интеллекта.
Если вы хотя бы раз пользовались гарнитурой с технологией ANS (Active Noise Suppression, активное шумоподавление), то уже знаете, насколько применение ANS меняет качество передачи речи. Голос собеседника четко слышен в любой обстановке: на улице, в шумном офисе или на производстве.
Технология ANS анализирует аудиосигнал, выделяя голос (полезный сигнал) и отделяя его от окружающего шума, а затем либо подавляет шум, либо удаляет его полностью.
Давайте проанализируем подходы VT и Yealink к реализации ANS в гарнитурах и сравним эффективность их решений.
Привет! Меня зовут Михаил Мазанов, я отвечаю за технологический стек работы с медиаданными в Кинопоиске: от съёмок оригинальных проектов до доставки и просмотра видео на всех экранах. Для нашей пятой ежегодной конференции про стриминг PlayButton 2024 я готовил большой доклад про оптимизацию качества видео Кинопоиска, а для Хабра решил пересобрать его в виде статьи — для тех, кому текстовый формат предпочтительнее видео.
Кроме технических графиков, вас ждёт ещё и наглядная разница в работе алгоритмов сжатия на примере «Рика и Морти» и «Джона Уика».
Всем привет! В НИУ МЭИ регулярно проходят проектно-исследовательские работы с привлечением к ним студентов старших курсов бакалавриата и магистратуры. Такие работы спонсируются различными грантами и направлены на то, чтобы давать возможность студентам поучаствовать в реальной научной и инженерной деятельности уже в рамках обучения, получить опыт, и влиться в интересную работу и проекты. Тематики таких проектов бывают сильно разными и в основном связаны с теми направлениями, которыми занимается выпускающая кафедра, где обучаются студенты.
В этом году я со своими студентами провел такое проектно-научное исследование в рамках гранта НИУ «МЭИ» на реализацию программы научных исследований «Приоритет 2030: Технологии будущего». Тематикой работы была «Разработка интеллектуального драйвера IGBT на напряжение 3,3 кВ для 3-уровневых инверторов тяговых электроприводов поездов высокоскоростной железнодорожной магистрали Москва - Санкт-Петербург». Проект выполнялся с апреля по октябрь, и в нём были задействованы кроме меня, как руководителя, студенты 4 курса бакалавриата и 1 курса магистратуры.
Данный проект выполнялся в довольно небольшие сроки (полгода действительно срок довольно маленький для полноценного проекта), но, во-первых, у нас уже были определённые наработки по этой теме, а во-вторых, для данного исследования подразумевается продолжение в рамках следующего этапа ПНИ.
Как вы поняли из заявленной тематики, мы выполняли разработку отечественного драйвера IGBT, в рамках которой реализовали как аппаратное решение, так и программное обеспечение с необходимыми алгоритмами управления драйвера. Интересным моментом здесь было то, что мы пошли по рискованному пути и отказались в разработке от ПЛИС для реализации логики работы драйвера, и выбрали motorcontrol микроконтроллер с довольно развитой периферией, но при этом уступающий по быстродействию современным ПЛИС.
Японское изобретение давно стало привычной частью нашей реальности. Многие отводят душу в караоке по вечерам, одни или в веселой компании. Задумывались ли вы когда-нибудь, как караоке-аппараты считают баллы, которые по итогам исполнения присуждаются отважным певцам? Совершим небольшое путешествие в историю этого изобретения и заглянем внутрь механизма его работы.
Всем привет! Подтолкнуло написать меня эту статью мой непосредственный интерес к алгоритмам и решению задач на leetcode, каждый раз, используя стандартную сортировку из STL std::sort, я знал, что ее сложность O(n*log(n)), но как она реализована внутри не доходили руки разобраться, в добавок мне стало интересно, какие есть другие виды сортировок, кроме самых простых, с которыми каждый знакомится в начале своего пути.
Я решил это исправить! И описать все виды сортировок, с которыми мне так или иначе приходилось встречать во время выполнения своих тасков или решению задач на leet.
Начнем с того, что разберемся, какие виды сортировок вообще есть и разобьем их на условные простые/продвинутые/для специальных случаев, а также разберемся, что использует std::sort у себя под капотом.
Оригинальный самодельный двухлучевой инфракрасный счётчик для счёта входящих в помещение и выходящих из него людей. Полтора десятка таких счётчиков, образующих сеть, проходят "обкатку" в составе действующего прототипа системы управления эвакуацией. Работу сети счётчиков в реальном времени можно посмотреть по ссылке.
В статье подробно описаны принципы, положенные в основу алгоритма распознавания направления движения человека, реализованные в программе для микроконтроллера счётчика.
Привет, Хабр! Мы — команда Memory‑Augmented models в составе лаборатории Cognitive AI Systems AIRI. В ходе своих исследований мы стараемся разобраться, насколько хорошо LLM могут обрабатывать большой объем данных и решать задачи на основе них.
Разработчики современных языковых моделей соревнуются в длине контекста и счёт уже идёт на миллионы токенов. Но насколько эффективно LLM пользуются информацией из этого контекста?
Чтобы выяснить это, мы вместе с коллегами из МФТИ и Лондонского института Математических Наук создали новый бенчмарк под названием BABILong, который мы привезли на NeurIPS в этом году. Он оценивает то, насколько успешно современные модели умеют искать информацию в собственных гигантских контекстах. Оказалось, что зачастую главное — это не размер, а умение пользоваться.
В этой статье расскажем подробнее о наших экспериментах, а также о том, как эффективно использовать длинный контекст.
Вообще складывается впечатление, что данная плата живёт немного своей жизнью. В том плане, что некоторые, не мои решения, просто дают сбои на определённых параметрах испытательного стенда, хотя всё компилируется и проект собирается, (и я его под свои испытуемые решения не писал, как видно из кода - испытательный "стенд" будет работать с любыми аналогами) - мои работают и сбоев не давали пока (просто не вижу смысла увеличивать нагрузку на плату, если из испытуемых решений остаётся в работе только моё). Ну то ладно, запись не о том, а всё о том-же сумматоре двулинейном, но уже немного доработанном в том плане, что один XOR не нужен. Он там был с того времени, когда я разделил задачу на две - создать линию, работающую на перенос бита и, собственно, суммирующую. Мой сумматор "врос" в плату в переносном смысле слова - остальные перестали работать. Кому-то может показаться бредом, что остальные перестали работать в тестовой схеме, но это так, причём я не изменял их код вообще (только комментировал и раскомментировал их код, код проекта тут. Не уверен, что правильно понимаю работу осциллятора и что там за частота на выходе, поэтому приведу просто цифры, и собственно небольшое отступление почему мной так долго рассматривался полученный сумматор.
В этой статье я привел основные сведения о методе классификации k-ближайших соседей. Рассказываю все в своем стиле. Теоретические моменты и простая реализация.
Содержание: что это за метод, идея этого метода, как классифицировать (регрессировать) новые объекты, масштабирование признаков, как его можно применять, реализация.
Вопрос на засыпку. Как вы реализуете перемешивание колоды карт?
В статье мы рассмотрим пару реализаций этой несложной задачи, а также узнаем, почему применение наивного алгоритма в карточных играх может быть опасным.
Привет! Сегодня мы продолжаем реализовывать шифрование. В этой статье мы рассмотрим алгоритм шифра "Магма", который был разработан и использовался в СССР.
В прошлой заметке я поднял тему ванильно-радужных перспектив использования искусственного интеллекта для решения оптимизационных задач, в частности, для решения хорошо изученной задачи коммивояжера, она же TSP (Travelling Salesman Problem). Там же был дан старт разбору некоторых классических алгоритмов для решения этой задачи в рамках чего я представил подход, основанный на MIP (Mixed Integer Programming). Считаю важным завершить такой разбор для лучшего понимания отличий в работе нейронных сетей.
Интересуешься визуальной одометрией? В этой статье я сравнил алгоритмы ORB, R2D2, SIFT и их комбинации, реализовав их на Java с OpenCV. Подробно разобрал, как они работают, замерил точность, производительность и наглядно показал, какой алгоритм лучше для беспилотников. Если хочешь узнать больше и посмотреть примеры кода на Java, заглядывай!
Приветствую всех читающих!
Меня зовут Антон Антонов, я инженер по искусственному интеллекту, работаю в Институте искусственного интеллекта AIRI в команде, которая занимается Embodied AI — областью, связывающей робототехнику, компьютерное зрение и большие языковые модели.
Недавно наша группа получила приятное известие: нашу статью с описанием модели того, как люди кликают и тапают на картинки, приняли на грядущий NeurIPS! Она будет полезна, чтобы тестировать модели интерактивной сегментации, которые помогают автоматизировать и ускорить процесс разметки изображений человеком.
Ниже я хотел бы подробнее рассказать о нашей разработке.
Привет! Я Иван Косолапов, тимлид команды ETA/RTA. Мы часть сервиса Data Science и занимаемся анализом данных и машинным обучением для задач навигации в 2ГИС.
Наша команда появилась несколько лет назад, чтобы сделать точным прогноз времени в пути на автомобиле. Это важно не только для пользователей нашего навигатора, но и для бизнеса: например, для такси и служб доставки. Несколько специалистов по машинному обучению объединились с инженерами из команды навигации и создали решение, которое отвечает строгим требованиям по качеству, снизив ошибку на 20 процентов. Недавно мы также помогли сделать так, чтобы автобусы на карте отображались точно, и начали предсказывать время их прибытия на остановки. И это лишь часть задач, над которыми мы работаем.
Сейчас тема AI, машинного обучения у всех на слуху, и со стороны может показаться, что те, кто этим занимается — маги, которые берут нейросети, прикладывают их к правильным местам, и все проблемы решаются.
На самом деле применение сложных алгоритмов требует большой подготовительной работы по наведение порядка в процессе разработки, что занимает 90 процентов всего времени, если не больше. Более того, как только процесс налажен, может оказаться так, что никакой дополнительной магии машинного обучения уже и не нужно добавлять.
Под наведением порядка в процессе разработки я подразумеваю решение четырёх задач: выбор правильной метрики, подготовка данных, построение воспроизводимой системы экспериментов, перенос алгоритмов туда, где их проще всего развивать.
Расскажу, как решая эти задачи, мы добились более точного отображения автобусов на карте в 2ГИС, упростив существующую на тот момент сложную систему.
Сегодня посмотрим на примере задачки из Advent of Code зачем и как можно обойти ошибку aggregate functions are not allowed in a recursive query's recursive term
, возникающую при попытке агрегировать какие-то данные внутри шага рекурсии на PostgreSQL — «если нельзя, но очень хочется, то можно».