Как стать автором
Обновить
178.33

Алгоритмы *

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

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

Решает ли задачу оптимизации биологическая нейросеть?

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

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

Искусственные нейронные сети возникли в качестве попытки моделировать организацию и функционирование биологических нейронных сетей – сетей нервных клеток живого организма. В существующих алгоритмах искусственного интеллекта ключевым звеном является решение задачи оптимизации и при этом остаётся вопрос - решает ли биологическая нейронная сеть задачу оптимизации? Задача оптимизация - это нахождение экстремумов целевой функции в процессе проектирования параметров системы. Под задачу оптимизации сформировался функциональный подход, который предполагает рассмотрение объекта как комплекса выполняемых им функций, а не как набора элементов и их взаимосвязей.

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

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

Читать далее
Всего голосов 4: ↑0 и ↓4-4
Комментарии1

Задача о сумме подмножеств

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

Задача о сумме подмножеств в общей формулировке звучит так:

Существует множество S чисел, вопрос состоит в том, будет ли сумма некоторого подмножества от S равна заданному числу Т.

Известно, что данная задача NP-полная.

Мы будем решать эквивалентную задачу, где все числа являются натуральными.

Частным случаем задачи о сумме подмножеств является задача разбиения множества чисел:

Множество чисел S необходимо разбить на два подмножества S1 и S2, где сумма S1 равна сумме S2.

(От задачи о сумме подмножеств текущая отличается только тем, что T = SUM(S1) / 2 = SUM(S2) / 2)

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

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии65

Индуктивная статистика: доверительные интервалы, предельные ошибки, размер выборки и проверка гипотез

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

Одной из самых распространённых задач аналитики является формирование суждений о большой совокупности (например, о миллионах пользователей приложения), опираясь на данные лишь небольшой части этой совокупности - выборке. Можно ли сделать вывод о миллионной аудитории крупного мобильного приложения, собрав данные 100 пользователей? Или стоит собрать данные о 1000 пользователях? Какую вероятность ошибиться при анализе мы можем допустить: 5% или 1%? Относятся ли две выборки к одной совокупности, или между ними есть ощутимая значимая разница и они относятся к разным совокупностям? Точность прогноза и вероятность ошибки при ответе на эти и другие вопросы поддаются вполне конкретным расчётам и могут корректироваться в зависимости от потребностей продукта и бизнеса на этапе планирования и подготовки эксперимента. Рассмотрим подробнее, как параметры эксперимента и статистические критерии оказывают влияние на результаты анализа и выводы обо всей совокупности, а для этого смоделируем тысячу A/A, A/B и A/B/C/D тестов.

Читать далее
Всего голосов 22: ↑23.5 и ↓-1.5+25
Комментарии13

Теоретическая и реальная производительность Intel AMX

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

AMX (Advanced Matrix Extension) - это модуль аппаратного ускорения умножения матриц, который появился в серверных процессорах Intel Xeon Scalable, начиная с 4 поколения (архитектура Sapphire Rapids). 

В начале этого года ко мне в руки наконец попал сервер, с данным типом процессора.

Конкретно модель Xeon(R) Gold 5412U - это 24 ядерный процессор с тактовой частотой в 2.1 GHz. При этом 8 приоритетных ядер могут разгонятся до 2.3 GHz, а 1 ядро до 3.9 GHz в Turbo Boost). Кроме того данный процессор поддерживает 8 канальную DDR-5 4400 MT/s. 

Мне как человеку, достаточно долгое время посвятившему оптимизации алгоритмов компьютерного зрения и запуска нейронный сетей на CPU (библиотеки Simd и Synet), было интересно: на сколько AMX позволяет реально ускорить вычисления и как извлечь из него максимальную производительность.

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

Далее много кода на С++...
Всего голосов 28: ↑29 и ↓-1+30
Комментарии10

Метрика в машинном обучении сложных систем, алгоритм и программный код

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

Для решения задач машинного обучения предлагается метрика, основанная на формуле отношения сигнала к шуму, SNR:

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии7

C# Тренажер

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

Хочу представить вашему вниманию бесплатный курс C# Тренажер, который недавно опубликовал на платформе Stepik.

Курс включает в себя множество практических задач по программированию на языке C#, которые способствуют повышению вашего уровня навыков в этой области. В ходе обучения вы столкнетесь с разнообразными заданиями, включая как классические, так и те, которые часто встречаются на собеседованиях в ведущих компаниях, таких как Microsoft, EA, Intel, Amazon, Uber и Unity. Это обеспечит разностороннее развитие ваших навыков работы с переменными, типами данных, операторами, циклами, функциями и алгоритмами. 

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии10

OmniFusion 1.1: мультимодальность теперь и на русском

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

В прошлом году на конференции AIJ 2023 мы представили первую версию OmniFusion — мультимодальной языковой модели (LLM), способной поддерживать визуальный диалог и отвечать на вопросы по картинкам. Спустя несколько месяцев мы готовы представить обновление — OmniFusion 1.1 — SoTA на ряде бенчмарков (среди моделей схожего размера) и, более того, модель хорошо справляется со сложными задачами и понимает русский язык! Самое главное — всё выкладываем в открытый доступ: веса и даже код обучения.

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

Читать далее
Всего голосов 19: ↑19.5 и ↓-0.5+20
Комментарии33

Фильтр Блума

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



У каждого разработчика есть набор инструментов для решения различных задач. Однако со временем возникает необходимость расширять этот набор, чтобы эффективно справляться с более сложными задачами. В этой статье я хочу познакомить вас с инструментом, которым вы, скорее всего, раньше не пользовались. И хотя он подходит для решения узкого спектра задач, его использование может оказаться весьма полезным. Знакомьтесь — "фильтр Блума" (Bloom filter).

Читать дальше →
Всего голосов 48: ↑50.5 и ↓-2.5+53
Комментарии16

Как работают алгоритмы музыкальных стримингов. Разбираем на примере

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

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

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

Так как они это делают?

Читать далее
Всего голосов 34: ↑34.5 и ↓-0.5+35
Комментарии19

Поиск с подкреплением на ориентированных взвешенных графах

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

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

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

PostgreSQL. Устройство карты свободного пространства

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

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

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

Читать далее
Всего голосов 12: ↑12.5 и ↓-0.5+13
Комментарии2

Разбор задач «Квеста на миллион»

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

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

Читать далее
Всего голосов 8: ↑8.5 и ↓-0.5+9
Комментарии1

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

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

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

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

Объективно, где мы используем в работе алгоритмы?

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

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

Читать далее
Всего голосов 35: ↑24 и ↓11+13
Комментарии124

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

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область

Алгоритм расчёта расстояния между строками

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

По работе стояла задача оптимизации поиска по адресам (улицы, дома и объекты). Главный критерий - нахождение адреса, если написано с ошибками или не дописан он в полной мере. Bert’ы, косинусные расстояния эмбеддингов и т.д. не подходили, так как они заточены под смысловой поиск, а в адресах смысла нет. TF-IDF c лемматизацией тоже не очень подходил для этой задачи, результаты были плохие.

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

Цель данного поста описание только алгоритма.

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии17

Про решаемость пятнашек

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

Привет, я создатель известного в узких кругах приложения 15 Puzzle для Android.

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

Читать далее
Всего голосов 73: ↑73.5 и ↓-0.5+74
Комментарии46

Использование библиотеки DCMTK для создания DICOM-файлов на C++

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

Эта статья фокусируется на примере использование библиотеки DCMTK при создании DICOM-файлов. Как говорит Википедия, DICOM - Digital Imaging and Communications in Medicine, это стандарт создания, хранения, передачи и визуализации медицинских изображений. Стандарт включает в себя часть, которая описывает структуру DICOM-файла, и другую, описывающую передачу DICOM-данных по сети.

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

Современные МРТ и КТ устройства по умолчанию создают медицинские изображения и передают их на PACS-сервер для хранения, используя стандарт DICOM. Но цифровые медицинские изображения не обязательно должны быть топографическими, а могут быть обычными цветными или черно-белыми фотографиями, например, снимок сетчатки глаза. Такие снимки зачастую хранятся в виде: описание пациента + jpg снимок. Чтобы хранить такие изображения на PACS-серверах, их нужно преобразовать в DICOM.

В данной статье мы углубимся в практическую сторону вопроса, рассмотрев конкретный пример создания файла DICOM из изображения формата *.dcm на языке C++ для последующей его отправки на PACS-сервер.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии2

Алгоритм ESG (Evolution of Social Groups). C#

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

Представляю вашему вниманию статью, посвященную авторскому алгоритму «Evolution of Social Groups» (ESG) C#. Этот уникальный метод оптимизации, основанный на взаимодействии социальных групп, открывает новые горизонты в области метаэвристики. В статье подробно рассматриваются основные принципы работы алгоритма, его преимущества и области применения. Присоединяйтесь, чтобы узнать больше о мире оптимизации и возможностях, которые он открывает. Поехали…

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии6

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

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

Целочисленное линейное программирование может помочь найти ответ на множество реальных проблем. Теперь исследователи нашли гораздо более быстрый способ это сделать.  

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

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии1

Книга «Генеративное глубокое обучение. Как не мы рисуем картины, пишем романы и музыку. 2-е межд изд.»

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

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

Дэвид Фостер делает понятными и доступными архитектуру и методы генеративного моделирования, его советы и подсказки сделают ваши модели более творческими и эффективными в обучении. Вы начнете с основ глубокого обучения на базе Keras, а затем перейдете к самым передовым алгоритмам.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

Ускорение инференса LLM

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

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

Меня зовут Роман Горб, я старший ML-разработчик в команде YandexGPT. Тема инференса LLM заинтересовала меня, потому что я занимался R&D в квантовании сеток для CV-задач. Сегодня я расскажу, как безболезненно увеличить скорость инференса. Сперва разберёмся, зачем это нужно, а потом рассмотрим разные методы ускорения и фреймворки, которые могут в этом помочь.

Ускоряемся
Всего голосов 30: ↑30 и ↓0+30
Комментарии9

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