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

Алгоритмы *

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

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

Состязательные атаки на промышленный ИИ и способы защиты от них

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

Привет, Хабр! Меня зовут Александр Коваленко, я младший научный сотрудник группы «ИИ в промышленности» в AIRI. В область наших интересов входит применение систем искусственного интеллекта в процессах различных предприятий. И, как и многие аспекты промышленной деятельности, промышленный ИИ может быть атакован злоумышленниками.  

Эта статья будет посвящена влиянию состязательных атак на системы диагностики неисправностей. Искусственный интеллект в нашем случае представлен классификаторами на основе нейронных сетей, а в качестве данных выступают сигналы с датчиков, образующих многомерные временные ряды. Я постараюсь объяснить, зачем вообще все это нужно, приведу обзор известных на сегодня методов состязательных атак и способов защиты от них, а также кратко расскажу про наши успехи, представленные в недавно опубликованной с коллегами из ИСП РАН статье Adversarial Attacks and Defenses in Fault Detection and Diagnosis: A Comprehensive Benchmark on the Tennessee Eastman Process.  

Приятного чтения!

Читать далее

Апдейтить или нет: нужно ли брать новую ML-модель?

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

Бывала у вас такая ситуация. Выходит новая нейронная сеть и все руководство начинает требовать внедрить её? Половина коллег восторженно рассказывает о новом слое который позволил повысить точность сети? YoloV(N+1)? LLAMA100?

Читать далее

Как американская коррупция превратила физика-ядерщика в быдло-кодера

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

Это история из цикла «как войти в IT», написанная старпером, ветераном броуновского движения, который помнит динозавров. Поэтому его опыт вхождения в ИТ никому не пригодится, но представляет интерес с точки зрения истории.  

Также поделюсь своим мыслями об интерфейсе инженерного ПО. Участвуя в разработках различного ПО, предназначенного для ускорения разработки сложных систем, периодически приходится выслушивать жалобы от новых пользователей на «кривой и устаревший» интерфейс ПО. Однако инженеры, погруженные в проблемы проектирования реальных железок, вообще не задают нам таких вопросов, либо потому, что уже искривили свои руки о кривой интерфейс, либо им это вообще неважно. Более того, есть два примера, когда реальные высокопрофессиональные инженеры в своей области предъявляли претензии обратного свойства, и первая версия кривая версия GUI была удобнее, а вот улучшения делали какие-то полупокеры. 

К написанию данного текста меня подтолкнула беседа с одним из крутых разрабов из «жирной» конторы, с которым мы пересеклись на яхте в Средиземном море. Узнав, что я тоже из Бауманки, и у меня свой бизнес, он заинтересовался и выспрашивал. Как я смог начать бизнес на софте, почему не пошел в большую контору, типа Yandex, Сбер и прочие. У него тоже знакомство с софтом началось как создание собственной разработки по анализу результатов металлургических испытаний в лаборатории, но закончилось работой прогером по найму. Попивая вино на яхте где-то между Турцией и Грецией в 2023 году, он предположил, что, возможно, если бы он продолжал писать софт для металлургических исследований, то, наверное, сейчас мог плавать на своей яхте, а не арендованной, и не около Турции, а на Карибах (но это не точно). А поскольку фарш невозможно провернуть назад, я решил описать свою историю успеха, так как она забавна и поучительна.

Читать далее

Об ускорении некоторых тестов на нормальность из библиотеки SciPy

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

Приветствую уважаемых читателей, случайно или нет наткнувшихся на эту статью. Адресована она всем тем, кто исследует распределение разнообразных эмпирических данных.
В моей публикации вас ждут: небольшой ликбез по теории вероятностей, развивающий её интуитивное и практическое понимание; детективная история о том, как решение дифференциального уравнения привело нас к двум важнейшим статистическим характеристикам выборочных последовательностей; ревизионизм в области проверки распределений на соответствие гауссовскому и объяснение пресловутого p-value с нуля за 5 минуты.

Читать далее

Как анализируют криптографические стандарты и зачем постквантовые алгоритмы без квантового компьютера?

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

Об этом и о других перспективных направлениях криптографии эксперты компании «Криптонит» рассказали на прошедшей в июне конференции CTCrypt 2024.

Читать далее

Он победил LLM RAG: реализуем BM25+ с самых азов

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

Привет, меня зовут Борис. Я автор телеграм канала Борис опять. Периодически мне на глаза попадается что-то интересное и я глубоко в этом закапываюсь. В данном случае это алгоритм поиска BM25+, который победил продвинутые методы векторного поиска на LLM.

Разберемся, что это за зверь и почему он так хорошо работает. В этой статье мы реализуем его на Python с нуля. Начнем с самого простого поиска, перейдем к TF-IDF, а затем выведем из него BM25+.

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

Код доступен в Google Collab.

Читать далее

Черепаха в лабиринте: Медлительное путешествие к свободе

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

Задача

Дан связный прямоугольный лабиринт n\times m клеток, одна из которых обозначена как выход. В произвольной клетке появляется черепаха, и она может перемещаться в четырех направлениях (вверх, вправо, вниз, влево).

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

Как только черепаха оказывается в клетке "выход", она тут же выходит из лабиринта и больше не исполняет никакие команды.

Расположение стенок лабиринта и клетки "выход" известны заранее, а вот начальное расположение черепахи неизвестно.

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

Читать далее

SARIMAX vs Экспоненциальное сглаживание: Когда простота побеждает

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

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

Читать далее

Как я решила задачу нахождения t-критерия Стьюдента как функции от доверительного интервала и числа степеней свободы

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

статья представляет подробное описание реализации функции Стьюдента (Student's t-distribution) в языке программирования Scala с использованием алгоритма ACM395 и ACM209. Функция Стьюдента является важным инструментом в статистике для вычисления критических значений t-статистики и вероятностей в t-распределении.

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

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

Читать далее

Учимся летать: симуляция эволюции на Rust. 3/5

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



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






В предыдущей статье мы реализовали простую FFNN (feedforward neural network — нейронная сеть прямого распространения), которая может передавать числа через рандомизированные слои — это первый шаг на пути создания мозга.


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


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

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

Гибкая обработка арифметических вырожений с AST на Scala

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

Обработка арифметических выражений с AST в Scala

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

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

Читать далее

Глубокое обучение для деформируемой регистрации медицинских изображений

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

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

Читать далее

Кот Шредингера Х ни жив, ни мертв

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

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

Читать далее

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

Специалисты по информатике изобрели новый эффективный способ подсчёта уникальных элементов

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

Представьте, что вас отправили в девственный тропический лес, чтобы провести перепись диких животных. Каждый раз, когда вы видите животное, вы делаете снимок. Ваша цифровая камера будет фиксировать общее количество снимков, но вас интересует только количество уникальных животных — всех тех, которых вы ещё не посчитали. Как лучше всего получить это число? «Очевидное решение — запомнить всех животных, которых вы уже видели, и сравнивать каждое новое животное с этим списком», — говорит Лэнс Фортноу, специалист по информатике из Иллинойского технологического института. Но есть и более умные способы, добавил он, потому что если у вас тысячи записей, то очевидный подход далеко не так прост.

Всё становится ещё хуже. Что, если вы — Facebook, и вам нужно подсчитать количество отдельных пользователей, которые заходят на сайт каждый день, даже если некоторые из них заходят с нескольких устройств и в разное время? Теперь мы сравниваем каждый новый вход со списком, который может исчисляться миллиардами.

Читать далее

Алгоритм формирования дробных индексов

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

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

Читать далее

LR-парсеры

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

LR-парсеры – это инструмент для анализа и синтаксического разбора языков программирования. LR в данном контексте означает Left-to-right, слева направо и Rightmost derivation, правое разложения. LR парсеры используют метод снизу вверх, который отличается от более известных LL-парсеров, работающих сверху вниз.

Одна из основных фич LR-парсеров - способность обрабатывать большую часть контекстно-свободных грамматик.

Читать далее

Яндекс разработал и выложил в опенсорс YaFSDP — инструмент для ускорения обучения LLM и сокращения расходов на GPU

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

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

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

Читать далее

Эвристики морских просторов: математическая оптимизация океанских контейнеровозов

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров4.6K
Такие контейнеровозы называют «post-Panamax», потому что они слишком велики, чтобы поместиться в Панамском канале

Посмотрите вокруг. Есть высокая вероятность того, что какие-то из окружающих вас предметов прибыли к вам по морю. 90% товаров в мире перемещается по океану, зачастую на ужасно огромных грузовых судах: длина четыреста метров, масса 250 тысяч тонн, вмещают в себя 12 тысяч контейнеров суммарной стоимостью в миллиард долларов. В отличие от самолётов, поездов и грузовых автомобилей, грузовые суда работают практически непрерывно, двигаясь по цикличным маршрутам в океанах.

Но какими же будут наилучшие, наиболее оптимальные маршруты таких судов? Для специалиста по computer science это задача из теории графов; для бизнес-аналитика — это задача цепочки поставок. Если её решить плохо, то контейнеры будут простаивать в портах, суда впустую тратить время в открытом море, неспособные причалить, а в конечном итоге подорожают товары из-за того, что поток физических ценностей замедлится и станет менее предсказуемым. Каждой занимающейся контейнерными перевозками компании приходится справляться с этими задачами, но обычно они решаются по отдельности. При их комбинировании сложность умножается; насколько нам известно, эту задачу так пока и не удалось решить для самых крупных контейнерных операций (500 судов и 1500 портов).

Команда Operations Research с гордостью представляет Shipping Network Design API, реализующий новое решение этой задачи. Наша методика лучше масштабируется, позволяя находить решения задач цепочек поставок общемирового уровня, будучи при этом быстрее, чем все остальные известные решения. Она способна удвоить прибыль компании-перевозчика, доставлять на 13% больше контейнеров, задействуя при этом на 15% меньше судов. В этой статье мы расскажем, как нам это удалось.
Читать дальше →

Простые способы ускорения обучения PyTorch-моделей

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

Не знаю — нужно ли вступление к статье, посвящённой ускорению машинного обучения (Machine Learning, ML)?

Ускорение обучения моделей — это именно то, в чём нуждаются все ML‑инженеры. Более быстрое обучение модели означает ускорение экспериментов, что, в свою очередь, ведёт к ускорению выпуска новых версий программных продуктов. Кроме того — чем выше скорость обучения — тем меньше ресурсов нужно на каждую итерацию обучения модели. Поэтому предлагаю перейти сразу к делу.

Читать далее

Быстрое вычисление степени

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

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

Читать далее

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