Все потоки
Поиск
Написать публикацию
Обновить
161.37

Алгоритмы *

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

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

Используем Hugging Face для обучения GPT-2 генерации музыки

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

Hugging Face имеет полнофункциональный набор инструментов, от функций создания датасетов до развёртывания демо моделей. В этом туториале мы воспользуемся такими инструментами, поэтому полезно будет знать экосистему Hugging Face. К концу туториала вы сможете обучить модель GPT-2 генерации музыки.

Демо проекта можно попробовать здесь.

Источником вдохновения и фундаментом этого туториала стала выдающаяся работа доктора Тристана Беренса.

Читать далее

ГЕОМЕТРИЯ ЗВУКА

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

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

[Читать на английском]

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

Определение произвольной точки на полигоне. Jetpack Compose. Canvas. Algorithm

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

Каждый день мы работаем над улучшением наших проектов. Будь то инициатива заказчика, продукт корпорации либо Ваш собственный. Изучая отзывы пользователей своего проекта, я столкнулся с запросом ускорить действия пользователя на одном из ключевых экранов. Это можно делать разными способами - разбиение экрана на несколько, улучшение UI… Но рано или поздно придется прорабатывать UX.

Читать далее

Как вырастить ИТшника или принстонский Computer Science для школьников

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

Сегодня школьникам разных возрастов предлагается большое количество вариантов реализовать свои навыки программирования: от участия в олимпиадах по информатике и разработки приложений и игр до освоения модных технологий, таких как машинное обучение, или даже ранние стажировки в ИТ‑компаниях.

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

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

Читать далее

Когда Zig круче Rust — массивы перечислений, позволяющие сэкономить память

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

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

Читать далее

Самый быстрый поиск пути на Go без аллокаций и СМС

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

Алгоритмы важны. Но реализовать их можно очень по-разному.


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


Любите оптимизации, специализированные структуры данных и трюки с битами? Тогда скорее под кат!


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

Книга «Грокаем функциональное программирование»

Время на прочтение2 мин
Количество просмотров22K
image Привет, Хаброжители!

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

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

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

Моделирование нелинейных функций и ограничений в задачах линейного программирования

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

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

Читать далее

Вглубь std::unordered_map: магические числа

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

Все любители кодокопания заканчивают либо хорошо, либо плохо. Мне повезло. Поэтому я решила написать свою первую статью на хабре.

Эта статья о том, каким странным бывает легаси - и куда же всё-таки копать, чтобы понять, что происходит. stdlibc++ опровергает даже стандартные математические понятия. Как хорошо, что это хотя бы опенсорс....

Узнать всю правду

Калибровка магнитометра: через вращения к компасу

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

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

И сегодня мы поговорим об ИНС, а точнее об одном из необходимых элементов подобных систем — магнитометре, а еще точнее о том, как его калибровать.

Читать далее

Нейронные сети для планирования движения беспилотных автомобилей

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

Планировщик движения беспилотного автомобиля — это алгоритм-помощник, который общается с другими участниками движения посредством манёвров. То есть он действует так, чтобы другим было понятно, куда поедет беспилотник, и сам по действиям других пытается определить, кто куда будет двигаться и почему.

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

Под катом — детальный разбор логики движения беспилотника, примеры свёрточных и трансформерных архитектур моделей для предсказания движения и много формул для расчёта вероятных траекторий других машин и пешеходов. А ещё я расскажу, в чём преимущества машинного обучения перед эвристиками и чем может помочь Reinforcement Learning.

Читать далее

Логистика. Часть 5. Управление доходами, или первый шаг к нестингу

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

Управление доходами (англ. Revenue management, сокращённо RM) звучит, как что-то очень скучное. Максимизация прибыли, усиление конкурентоспособности, эффективное планирование и бюджетирование, улучшение принятия решений, устойчивое развитие. Разве не скука? Также всё это управление доходами может показаться циничным, ведь в таких сферах, как медицина и образование, это зачастую становится причиной несправедливых решений.

Однако! Благодаря RM компании развиваются. Развитие компаний — это развитие всего рынка. Развитие рынка — это рост экономики. Рост экономики — это увеличение: налоговых поступлений, количества рабочих мест, качества жизни и благополучия общества.

RM — это действительно целая философия. Тут легко можно что-то не так понять и натворить дел. Например, можно решить, что оптимизация здравоохранения — это отдельная задача, а не подзадача другой более сложной многокатегориальной и многокритериальной задачи.

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

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

Извлечение текста из файлов PDF при помощи Python

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

▍ Введение


В эпоху больших языковых моделей (Large Language Model, LLM) и постоянно расширяющейся сферы их применений непрерывно растёт и важность текстовых данных.

Существует множество типов документов, содержащих подобные виды неструктурированной информации, от веб-статей и постов в блогах до рукописных писем и стихов. Однако существенная часть этих данных хранится и передаётся в формате PDF. В частности, выяснилось, что за каждый год в Outlook открывают более двух миллиардов PDF, а в Google Drive и электронной почте ежедневно сохраняют 73 миллионов новых файлов PDF (2).

Поэтому разработка более систематического способа обработки этих документов и извлечения из них информации позволит нам автоматизировать процесс и лучше понять этот обширный объём текстовых данных. И в выполнении этой задачи, разумеется, нашим лучшим другом будет Python.
Читать дальше →

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

В борьбе со сложностью, или Как обуздать лог-линейный алгоритм (со ссылкой на код)

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

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

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

«Золотая запись» выступает в дальнейшей цепочке обработки данных в качестве уникального ключа. Это позволяет решить на масштабах компании задачу сопоставления ранее несвязанных событий, что даёт профит бизнесу как напрямую (через лучшее понимание клиентского пути), так и опосредованно через лучшую организацию аналитики и выстраивание предиктивных моделей.

Читать далее

Детекция дефектов дорожного покрытия без размеченных данных: Хакатон, LiDAR, RANSAC, ICP и 44 бесcонных часов

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

Здравствуйте, читатели Хабра! Решил активнее вкатываться в DS (хотя уже больше года в "теме" и даже нет ни одной публикации, ужас) и написать первую статью на Хабре.

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

Читать далее

Реализация отражений и преломлений света в трассировщике (Введение в трассировку лучей — часть 5)

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

Можно ли напечатать трассировщик на визитной карточке?
Как реализовать преломление и отражение света?

Узнаем в этой статье ?

Отрендерить статью

Трансформером по A*, или как уменьшить число итераций самого известного алгоритма поиска пути

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

Привет! Меня зовут Константин Яковлев, я научный работник и вот уже более 15 лет я занимаюсь методами планирования траектории. Часто эта задача сводится к поиску пути на графе, для чего обычно используется алгоритм эвристического поиска A*. Этот алгоритм был предложен в 60-х годах XX века и с тех пор используется повсеместно. Скорее всего, юнит вашей любимой RTS бежит по карте с помощью той или иной вариации A*. Точно так же, под капотом беспилотного авто вы, наверняка, найдёте A*, хотя там, конечно, не только он.

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

Этот текст посвящен как самому алгоритму A*, так и попыткам повысить его эффективность с помощью методов искусственного интеллекта. Заодно я расскажу о том, какие новшества в этом направлении придумали мы с коллегами: научная статья на эту тему опубликована в сборнике конференции AAAI 2023.

Читать далее

Виртуальное облучение рентгеном

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

Привет, Хабр! Как ты уже знаешь, в Smart Engines мы разрабатываем томографическое программное обеспечение. Компьютерная томография (КТ) – это неинвазивный метод исследования внутренних особенностей предмета. На сегодняшний день КТ является одним из основных томографических методов исследования внутренних органов человека, также КТ это перспективный инструмент для контроля качества в промышленности.

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

Читать далее

Использование битовой арифметики для получения наилучших решений задач с LeetCode по скорости и памяти

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

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

Читать далее

Всё идет по плану: как задавать роботу список действий с помощью языковых моделей и голосовых команд

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

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

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

Читать далее

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