Обновить
289.46

Алгоритмы *

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

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

Нормированные пространства и рендеринг трёхмерных фрактальных множеств: ray marching, поле расстояний, базовые примеры

Время на прочтение10 мин
Охват и читатели6.1K

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

Меня зовут Андрей Гринблат, я ИТ-инженер в СберТехе, занимаюсь разработкой фронтенд-интерфейсов приложений.
В этой статье расскажу о том, как с помощью математики и ray marching построить фотореалистичные изображения 3D-фракталов. Всех, кому интересно, прошу под кат.

Читать далее

ESP32: Базовые алгоритмы машинного обучения

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

ESP32 давно зарекомендовал себя как универсальный микроконтроллер для IoT: он умеет работать с Wi-Fi и Bluetooth, управлять сенсорами и исполнительными устройствами. Но за последние годы стало ясно, что даже на таких простых устройствах можно запускать алгоритмы машинного обучения.

В этой статье рассмотрим, как на ESP32 можно реализовать три базовых алгоритма классификациидерево решений, метод К-ближайших соседей (KNN) и полносвязную нейросеть на TensorFlow Lite.

Для эксперимента использовался датчик цвета GY-31 (TCS230). Он преобразует отражённый от поверхности на которую направлен свет в три значения — красный, зелёный и синий (R, G, B). Задача: по этим трём числам определить, какой цвет «видит» сенсор: красный, оранжевый, жёлтый, зелёный, синий, фиолетовый, белый или чёрный.

Ознакомиться

Обучение скрытых слоёв S–A–R перцептрона без вычисления градиентов

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

C. Яковлев mg.sc.comp e-mail: tac1402@gmail.com

Disclaimer.  Это анонс, я еще работаю над научной статьей, но пока не могу найти ментора для возможности публикации в arxiv.org. Но пока хочу поделится с вами некоторыми сырыми результатами.

Аннотация. Классический перцептрон Розенблатта с архитектурой S–A–R исторически не имел устойчивого алгоритма обучения многослойных структур. В результате в современном машинном обучении доминирует метод обратного распространения ошибки (backpropagation), основанный на градиентном спуске. Несмотря на успехи, этот подход имеет фундаментальные ограничения: необходимость вычисления производных нелинейных функций и высокая вычислительная сложность. В данной работе показано, что при интерпретации работы нейросети через алгоритм ID3 (Rule Extraction) скрытый слой автоматически формирует чистые окрестности в смысле кластерного анализа — признаки группируются по классам ещё до завершения обучения. На основе этого наблюдения автором предложен новый стохастический алгоритм обучения, восходящий к идеям Розенблатта, но принципиально расширяющий их: он позволяет обучать скрытые слои перцептрона без вычисления градиентов. Таким образом, впервые решается классическая проблема обучения архитектуры S–A–R без градиентных методов. Это открывает путь к созданию принципиально новых алгоритмов обучения нейросетей с более простой и интерпретируемой динамикой.

Читать далее

Бэктестер для торговых стратегий на GPU со скоростью просчёта 150 тыс стратегий за 1 секунду

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

Хочется, чтобы фреймворк для тестирования торговых стратегий был пакетным, гибким, подбирал сразу 10 параметров и просчитывал очень быстро. И вот он ...

Читать далее

Хватит писать «чистый» код. Пора писать понятный код

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

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

Читать далее

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

Время на прочтение6 мин
Охват и читатели9.2K

Алгоритмы, базы данных и качество данных — три темы, без которых сегодня не обходится ни один проект. От того, как разработчик обращается с ними, зависит не только скорость работы приложений, но и то, насколько вообще можно доверять системе. Если алгоритм выбран неправильно — система будет тормозить; если база построена на «костылях» — она станет источником ошибок; если данные не проверять на качество — отчеты превратятся в хаос.

Чтобы помочь разобраться в этом, команда Read IT Club собрала подборку из трех книг, которые проверили рецензенты клуба — эксперты из ведущих технологических компаний. В них нет академической скуки, зато есть практические советы: как выбрать правильный алгоритм, не угробить архитектуру базы и научиться бороться с «грязными» данными. Каждая из них решает свою часть головоломки, но вместе они дают цельную картину того, как работать с данными и кодом надежно, эффективно и без лишних драм.

Читать далее

Как JPEG стал стандартом изображений в интернете

Время на прочтение11 мин
Охват и читатели7.4K

JPEG — формат-динозавр. Ему уже за тридцать, но он по-прежнему живее всех живых: даже в 2025 году изображения в JPEG встречаются повсюду.

В конце 80-х инженерам нужно было как-то справляться с растущими размерами файлов. Интернет был медленным, а фотографии — всё тяжелее. Тогда и придумали решение: сжатие с потерями, основанное на дискретном косинусном преобразовании (DCT). Если по-простому, DCT — это способ выкинуть из картинки то, чего наш глаз почти не заметит, и оставить главное. В итоге получаем файл в разы меньше, а картинка всё ещё выглядит прилично.

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

Читать далее

ИИ-поиск в 2ГИС: как учим нейросети понимать настроение, фото и смыслы

Время на прочтение8 мин
Охват и читатели7.4K

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

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

1. как понять атмосферу заведения и добавили новый атрибут «вайб-фильтры»;

2. как находить похожие места по изображениям и сделали поиск по фото.

3. как дать пользователю возможность искать «по смыслу» и реализовали ИИ-поиск. 

Читать далее

Как киберэкономика и ИИ меняют философию науки? Поппер, Кун, Фейерабенд и Лакатош в условиях цифровых технологий

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

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

Читать далее

Краткая история комплексных чисел

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели14K

Вам это может показаться странным, но были времена, когда отрицательные числа казались людям чем-то неестественным, причём даже тем людям, которые зарабатывали себе на жизнь числами — математикам. Как можно считать числом то, что не имеет физического воплощения? С отрицательными числами в итоге смирились, но уж что точно невозможно было терпеть, так это совсем непонятную величинуi, квадрат которой-1, это уже противоречит всякому здравому смыслу. Тем не менее время показало, что законы физики и математики, сформулированные с использованиемi имеют больший смысл, чем законы, сформулированные без неё. Еще в 19 веке Карл Фридрих Гаусс отметил, что "Если бы вместо того, чтобы называть +1, −1,\sqrt{−1}​ положительной, отрицательной или мнимой (или даже невозможной) единицей, их назвали бы, скажем, прямой, обратной или боковой единицей, то едва ли можно было бы говорить о какой-либо темноте".

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

Читать далее

Как работать с нейросетями эффективно: теория и практика

Уровень сложностиПростой
Время на прочтение24 мин
Охват и читатели14K

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

Читать далее

Планы CS Space на осенний семестр

Время на прочтение3 мин
Охват и читатели6.2K

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

Читать далее

Анализ гипотез и очень, ооооооочень странные дела

Время на прочтение28 мин
Охват и читатели8K

Лет 5 назад я усиленно пытался вникнуть в тервер и статы: книги, статьи, вебсёрфинг. Даже написал несколько статей: раз, два, три. Вообще, в планах было написать довольно большой цикл статей, что бы подсветить какие-то самые сложные вещи, да и самому в них разобраться - совместить полезное с полезным, так сказать. Однако, в какой-то момент я решил, что полученных знаний достаточно для новых проектов и ушел в работу. Работал. Работал. Работал.

Читать далее

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

Алгоритм поиска аномалий Isolation Forest

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

Привет, Хабр!

Меня зовут Михаил Васильев, я старший специалист по машинному обучению в компании Makves (входит в группу компаний «Гарда»). Эта статья — вторая в цикле, посвященном поиску аномалий. В первой статье мы поговорили о том, что такое аномалии и почему их сложно искать, а также по шагам разобрали алгоритмы HBOS и ECOD.

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

Читать далее

Квантование в картинках: раскрываем тайны сжатия LLM

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели11K

Большие языковые модели (LLM, Large Language Model), как подсказывает их название, часто отличаются значительными размерами и слишком велики для того, чтобы нормально работать на обычных компьютерах. Масштабы этих моделей могут измеряться миллиардами параметров. Обычно для обеспечений достойной скорости их работы необходимы GPU с серьёзными объёмами видеопамяти (VRAM).

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

Читать далее

Обрабатываем строки в 109 раз быстрее, чем NVIDIA на H100

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

Недавно я выпустил StringZilla v4 — первый релиз с поддержкой CUDA моей библиотеки для обработки строк. нацеленной в первую очередь на SIMD. Это означает, что теперь она стала быстрой не только на CPU, но и на GPU!

• Я хотел добавить ускорение ROCm для GPU AMD
• Я хотел добавить параллельный мультипаттерновый алгоритм поиска
• Я хотел опубликовать всё это ещё в декабре 2024 года

Итак, не всё пошло по плану, но StringZilla 4 CUDA наконец-то здесь, и она добавляет 500 с лишним GigaCUPS вычислений редакторского расстояния; при этом пакет можно установить через pip install. Также в ней есть некоторые другие трюки, предназначенные для крупномасштабных систем извлечения данных, баз данных и озёр данных, а также биоинформационных задач. И всё это под разрешительной опенсорсной лицензией Apache 2.0, позволяющей свободно использовать библиотеку в коммерческих целях. В этом посте я рассмотрю самые интересные части релиза, и в том числе:

• Быструю оценку алгоритмов динамического программирования на GPU,
• Хэширование CRC32MurMurHashxxHash, aHash и не только, а также
• Фингерпринтинг биологических последовательностей 52-битными целыми числами

Читать далее

Перцептрон SAAR (само-рекурсивный ассоциативно адаптивный резервуар)

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

Аннотация. В работе предлагается новая архитектура искусственного перцептрона — SAAR-Perceptron (Self-Recursive Associative Adaptive Reservoir Perceptron), развивающая классическую модель Розенблатта (S–A–R). Ключевая особенность архитектуры заключается во введении ассоциативного слоя с саморекурсивным отображением (A→A), формирующего динамический граф признаков. В отличие от традиционных рекуррентных моделей, эти связи не обучаются, что обеспечивает устойчивую динамику и выполняет роль адаптивного резервуара, расширяющего пространство признаков.

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

Процесс обучения в перцептроне SAAR реализован без использования градиентных методов. Для связей S→A применяется стохастическое правило коррекции, расширяющее принцип Розенблатта: активные элементы подавляются, если их активация увеличивает ошибку, и возбуждаются, если их возбуждение потенциально уменьшило бы ошибку. Важную роль играет энтропийный критерий обновления весов: вероятность коррекции пропорциональна бинарной кросс-энтропии активаций, что позволяет выделять наиболее информативные признаки. Такой подход напоминает механизм отбора в генетических алгоритмах, где «побеждает» наиболее информативный элемент. Для связей A→R используется простое локальное корректирующее правило, а вклад ассоциативных элементов оценивается через информационный выигрыш; нерелевантные элементы исключаются из работы.

Читать далее

Прокачиваем RAG: тестируем техники и считаем их эффективность. Часть 2

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели8.7K

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

В этой статье мы посмотрим на результаты экспериментов: какие техники оказались наиболее эффективными на датасете Natural Questions, где они приятно удивили, а где — наоборот, не оправдали ожиданий. Для оценки будем использовать фреймворк RAGAS, а также метрики BertScore и ROUGE-2 для анализа релевантности извлечённых чанков и финальных ответов.

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

Читать далее

Проблема, о которой вы наверняка не задумывались: print(.1+.2)

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

Как следует отображать на экране результат деления 3.0 на 10.0 ? Сколько цифр следует вывести, если пользователь не указал точность?

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

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

Это вторая статья из цикла «Санпросвет о плавающей точке»:

1. Компьютеры и числа

2. Вывод чисел с плавающей точкой на экран <- вы тут

Читать далее

29 февраля и другие причуды календаря

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

Считается, что в легендарную эпоху, до того как они образовали свою республику, римляне использовали десятимесячный календарь. Первый месяц назывался месяцем Марса, Mensis Martius, на английском языке известный как март; последний был месяцем № 10, Mensis December. Однако после декабря год ещё не заканчивался: прошло всего 304 дня. Остальные 61 или 62 дня солнечного года проходили в период без месяцев, в промежутке неизмеренного времени, возможно, менее значимом, поскольку это была зима и сельское хозяйство находилось в состоянии покоя.

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

Читать далее

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