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

Алгоритмы *

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

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

SONAR-LLM — учим нейросети думать предложениями вместо слов

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

Привет, Хабр. Меня зовут Никита Драгунов, я из команды «Интерпретируемый ИИ» лаборатории FusionBrain AIRI. У себя в группе мы активно пытаемся понять, почему большие языковые модели и другие архитектуры ведут себя так или иначе, и разрабатываем инструменты, которые помогают нам в этом разобраться.

Среди прочего нас очень заинтересовал сравнительно свежий подход, в котором предлагается перейти от генерации токенов к генерации целых предложений — Large Concept Models, LCMs. Мы углубились в эту тему и смогли предложить новый способ, как использовать идею LCM эффективнее.

О том, что мы сделали — в статье ниже.

Читать далее

Универсальный сервис по сбору телеметрии с CAN-шин на технике

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

Всем привет! Меня зовут Артём Сидоров. Я ведущий разработчик из ИТ-команды «Северстали». Сегодня хочу рассказать, как мы реализовали «Универсальный сервис по сбору телеметрии с CAN-шин на технике».

Читать далее

Комбинаторная теория переобучения повысила информативность трассерных исследований в нефтегазовых месторождениях

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

Коллектив российских ученых исследовал применение методов машинного обучения для проектирования трассерных исследований. Целью было повышение достоверности результатов по выявлению гидродинамической связи в пласте между нагнетательными и добывающими скважинами в низкопроницаемых коллекторах с самопроизвольным развитием трещин гидроразрыва пласта (автоГРП) в нагнетательных скважинах. Работа была опубликована в российском журнале «Искусственный интеллект и принятие решений» и была выполнена совместно учеными и исследователями из МФТИ (г. Москва), ООО «РН-БашНИПИнефть» (г. Уфа) и ООО «РН-Юганскнефтегаз» (г. Нефтеюганск).

Читать далее

На дворе LLM, а книгу о перцептроне так никто и не открыл!?

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

Сложно следить за околонаучными темами, и понимать, что ветка эволюции научного направления пошла не туда. Сейчас случился некий бум псевдонаучного взлета LLM, и я приведу в качестве современной статьи на хабре лишь одну, но это по прежнему массовое явление. Например, в статье компании Friflex за 2024 год История LLM-агентов: 10 ярких моментов по прежнему утверждается "На смену однослойному перцептрону Розэнблатта пришел многослойный. В статье Learning representations by back-propagating errors («Обучение представлений с помощью обратного распространения ошибки») Румельхарт и Хинтон показали, что многослойный перцептрон справляется с задачами, которые были не под силу его однослойному предшественнику. Например, с XOR. ". Совершенно излишне говорить, что это полное вранье, а авторы статьи даже не потрудились открыть эту статью, чтобы её прочитать. Это стало массовым явлением, и я его наблюдаю как минимум 20 лет, я когда то написал тут на хабре цикл статей объясняющих детали, лучше всего посмотреть эту Какова роль первого «случайного» слоя в перцептроне Розенблатта. Поэтому к этому возвращаться не будем. Я не знаю почему, может это массовая культура так влияет на людей, а порог вхождения в тематику ИИ слишком сложный? Не знаю, но не важно. Чтобы продемонстрировать скорость обучения перцептрона я написал несколько реализаций перцептрона Розенблатта и выложил их на гитхабе. А затем мы коснемся LLM.

Читать далее

Книга: «Алгоритмы и структуры данных для тех, кто ненавидит читать лонгриды»

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

Привет, Хаброжители! Алгоритмы — это сердце программирования. От их правильного выбора зависит, будет ли программа работать мгновенно или заставит вас ждать вечность. Но как разобраться во всем этом, если вы только в начале пути?

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

Читать далее

Программирование автомобилей в играх

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

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

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

Здесь важно сказать следующее: игры — это не физические движки, а впечатления. И гоночные игры больше других намеренно манипулируют реальностью, чтобы дать нам эти впечатления. Например, мы ожидаем от шутеров определённого поведения; пуль, летающих по прямой, отдачу при выстрелах, перезарядку. Если эти ожидания не оправдываются, игра начинает казаться «не такой». Но в случае транспорта степень допущений может быть огромной.

Возьмём для примера Mario Kart. Это гонки, максимально далёкие от реалистичности; машинки дрифтят по песку, вы бросаете в друзей черепашьи панцири и гоняете в картах с мультяшными пропорциями и физикой. Тем не менее, эту игру обожают, ведь она «продаёт» реализацию фантазии о гонках.

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

Читать далее

Разбор задачи из реальной практики

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

Фича для мобилки, которая должна работать на более ранних версиях.
Как подойти к реализации и преодолеть ограничения?

Читать далее

Гибридный квантовый эмулятор с топологическим сжатием: вдохновленный фотонными вычислениями

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

Архитектура эмулятора

Наш эмулятор строится по принципу фотонного вычислителя, описанного vsradkevich: "лазер → модулятор → решетка интерферометров → фотодетекторы → АЦП → CMOS-блок".

Читать далее

Топологическая безопасность ECDSA: Динамические методы анализа и теоретические основы

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

Топологическая безопасность ECDSA: Раскрываем скрытые уязвимости через законы диагональной периодичности

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

Вы узнаете:

Как закон диагональной периодичности T = n / \text{НОД}(d-1, n) помогает обнаруживать subtle уязвимости

Почему числа Бетти (\beta_0 = 1, \beta_1 = 2, \beta_2 = 1) являются ключевыми индикаторами безопасности

Как метод динамических улиток снижает сложность анализа с O(m⁴) до O(m log m)

Как TVI Score заменяет субъективные оценки количественной метрикой риска.

Читать далее

Flat-контейнеры в C++

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

Привет, Хабр! Еще в C++23 появились «плоские» ассоциативные контейнеры: std::flat_setstd::flat_map и их многоключевые аналоги. Проще говоря, это полные аналоги обычных std::set и std::map, но реализованные иначе – через упорядоченный последовательный контейнер (по умолчанию std::vector). Зачем вообще понадобились эти штуки? Официальная причина – экономия памяти и выигрыш в производительности при чтении данных.

Читать далее

Генерация синтетических данных для LLM. Часть 3: случайные матрицы

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

Добрый день, уважаемые Хабровчане :) Продолжаем наши научные изыскания в области определения «синтетических» данных. В этой статье я рассмотрю тему анализа графов с позиции анализа спектров матрицы смежности для случайных матриц. То есть мы зайдём со стороны оптимизации знаний из прошлых двух статей (раз и два) и посмотрим, как применить теорию случайных матриц к нашей исходной задаче. Основная цель — расширение диапазона исследуемых значений. 

Итак, погнали, значицо ;)

Читать далее

Часть 5: Алгоритмы – реализация и модель ошибок

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

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

Также хочу еще раз сказать, что создание данного устройства - это исключительно моя инициатива, как начинающего пилота. Я не создаю такие устройства на постоянной основе, я не обладаю профильным образованием в авионике, а иду по пути проб и ошибок создавая полезное для себя устройство. Если я захожу на вашу территорию ваших профессиональных или академических интересов, то прошу отнестись с пониманием к некоторым неточностям или ошибкам термионологии. Буду рад вашим комментариям!

Итак, в этой части опишу следующие аспекты:

Читать далее

Искусство создания эффективных математических моделей

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

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

Выпущено множество книг-рекомендаций про то, как писать "хороший" программный код: "Чистый код", "Совершенный код", "Программист-прагматик", "Чистая архитектура" и др. Такого рода литература задает некоторый стандарт качества и очертания "идеала".

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

Читать далее

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

Новый алгоритм может снизить разобщенность пользователей соцсетей

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

Социальные сети создавались для глобального общения, но на практике часто усиливают разобщённость. Вместо объединения людей они формируют «информационные пузыри» — изолированные сообщества, где пользователи взаимодействуют преимущественно с единомышленниками. Контент с альтернативными взглядами либо скрывается алгоритмами, либо воспринимается как враждебный. Эта онлайн-сегрегация ведёт к социальному разделению, уверенности в абсолютной правоте своей позиции и росту агрессии к «чужим».

Учёные из МФТИ, ИПУ РАН и ТГУ предложили математическое решение проблемы, изменив алгоритмы формирования социальных связей. Новый подход снижает сегрегацию пользователей с помощью анализа структуры сетей.

Читать далее

Интерактивные истории на стероидах: как добавить случайность и судьбу в DSL

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

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

Читать далее

Ранг-селект словари

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

Это первая статья из планируемой серии про succinct data structures - класс наиболее компактных структур данных. Канонический пример такой структуры - это представление дерева в виде правильной скобочной последовательности, дерево изnвершин таким образом представляется с помощью2nбит в то время как типичная динамическая реализация требовала бы как два указателя по 64-бит на каждый узел (разумеется можно немного сократить простыми оптимизациями, но даже близко 2 бита не получить). Фундамент подобных структур - это rank-select словарь, представляющий собой битовый вектор и дополнительную структуру для выполнению двух операций ранг и селект. В указанном примере с деревом с помощью ранга и селекта можно сделать базовую навигацию: найти номера потомков/родителей, узнать размер поддерева. В статье расскажу как делать эти операции быстро используя при этом всего 3,6% дополнительной памяти.

Читать далее

Топологический аудит ECDSA: когда геометрия защищает ваши ключи

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

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

Читать далее

Программист embedded лезет в FPGA (часть 1, hello blink)

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

Любой программист микроконтроллеров, Imho, рано или поздно (сейчас, скорее, рано) от одного из коллег или из статьи в интернете слышит загадочное ПЛИС или FPGA, CPLD, ПВМ — что-то такое. Если честно, то я услышал вот это загадочное, занырнул чуть-чуть, и теперь думаю, что мой опыт пригодится кому-то ещё. Если совсем честно, то статья ещё планируется как небольшая (всего в трёх частях) заметка для себя. Я когда погружался, делал пометки в текстовом файле, здесь получится их хорошо отредактированная версия.

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

Лезем в FPGA

Как создатель ZIP, Фил Катц победил в войне форматов, но проиграл в собственной

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

История Фила Катца — это классическая IT-драма: блестящий взлёт, жёсткая конкуренция, суды, огромный успех и, в конечном итоге, личная трагедия.

Читать далее

Понять хаос: сложный мир муравьев и мух

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

С самых первых дней изучения биологии или естествознания нам рассказывают о взаимодействии видов, пищевых цепочках и иерархий. Классический пример: трава, кролики и волки. Если волков исключить из уравнения, то кролики будут размножаться и съедят всю траву и будут потом голодные; если исключить траву, то кролики вымрут и волки будут голодные; если исключить кроликов, то трава разрастется, а волки будут голодными. Этот крайне утрированный пример показывает тесную взаимосвязь всего живого, связь, которую порой крайне сложно описать четким математическим языком. Несмотря на устоявшуюся структурированность, которую мы приписываем межвидовому взаимодействию, оно куда ближе к хаосу, чем к порядку. Группа ученых из Мичиганского университета (Анн-Арбор, Мичиган, США) провели любопытное исследование трех враждующих видов муравьев и хищных мух, которое показало всю сложность попыток какого-либо предсказания динамики их взаимодействия. Что именно удалось установить ученым, какие методы были использованы, и как данное исследование связано с сельским хозяйством? Ответы на эти вопросы мы найдем в докладе ученых.

Читать далее

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