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

Алгоритмы *

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

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

3750 дней разработки AI или почему боты всё ещё не захватили покер

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

Идёт именно этот день в разработке. В этот раз хочу затронуть феномен покера, для которого создается AI и поделиться наблюдениями, которые помогут ответить на вопрос из названия. Покер (Техасский безлимитный холдем) – это очень глубокая игра, которая представляет собой модель бизнес-отношений разных субъектов по определённым метрикам, единым для всех участников процесса. Эти метрики позволяют человеку, принимающему решение, понимать, когда инвестиции в “свое внутреннее состояние” могут быть более или менее успешными. Стратегии строятся каждым игроком, исходя из меняющегося контекста, по заранее определенным правилам. Особенность именно безлимитной версии покера в том, что вследствие большого рычага оценки стоимости текущего контекста, число возможных вариаций действий в дереве принятия решений становится огромным в разрезе одной-единственной покерной раздачи.

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

Новости

Prompt Me One More Time. Учим LLM строить графы знаний из текстов

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

Привет, Хабр! Меня зовут Алла, я работаю младшим исследователем в команде Memory‑Augmented models в AIRI и занимаюсь ресерчем на пересечений графов знаний и языковых моделей. Потребность в таких изысканиях понятна любому, кто пытался добиться от ChatGPT точного ответа на конкретный вопрос: подобрать литературу для курсовой, вспомнить название фильма по описанию и тому подобное. Очень часто модель начинает галлюцинировать и выдумывать факты, которых не существует.

Один из способов решения этой проблемы — связать LLM с графом знаний, но сами графы тоже должен кто‑то наполнять. Мы с коллегами доказали, что эту задачу можно автоматизировать с помощью LLM и предложили своё решение, названное Prompt Me One More Time (фанаты Бритни тут?), о котором мне бы и хотелось сегодня здесь рассказать. За подробностями же можно обратиться к статье, представлена нами на воркшопе TextGraphs-17 конференции ACL-2024, недавно прошедшей в Тайланде.

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

Реализация режимов шифрования на языке RUST

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

После долгого перерыва мы возвращаемся в мир криптографических алгоритмов. В этот раз мы рассмотрим некоторые широко известные режимы шифрования блочных шифров, такие как ECB, CBC, CFB, OFB, CTR и подготовим небольшую архитектурную задумку, о которой я расскажу под катом.

Если вы еще не видели мои предыдущие статьи по алгоритмам хэширования "Streebog" и "SHA", советую ознакомиться — в этот раз будет сложнее.

Читать далее
Всего голосов 8: ↑4 и ↓40
Комментарии5

Анализ задачи с собеседования в Google: конь и телефонные кнопки

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

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

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

  • Её легко сформулировать и понять.
  • У неё есть множество решений, каждое из которых требует разной степени знаний алгоритмов и структур данных. Кроме того, здесь важны логические рассуждения.
  • Каждое решение можно реализовать в относительно малом объёме кода, поэтому она идеальна для ограниченных по времени собеседований.

Если вы студент или ищете работу в технологической сфере, то, надеюсь, после прочтения статьи вы будете лучше понимать, чего ожидать от задач на собеседованиях. Если же вы проводите собеседования, то мне бы хотелось поделиться своим мыслительным процессом и стилистическим подходом к собеседованиям.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+52
Комментарии39

Истории

«Куда, куда вы удалились», или поиск пропущенных остановок в маршрутах общественного транспорта в OpenStreetMap

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

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

С 2016 года в open source существует препроцессор метро, который валидирует маршруты скоростного городского транспорта в OSM на предмет полноты и логических/топологических ошибок и преобразует их в форматы, пригодные для сервисов роутинга и рендеринга, в том числе в GTFS. Кроме данных OSM он принимает на вход список сетей общественного транспорта (ОТ), содержащий контрольную информацию о числе линий, станций и прочего в некоторой транспортной сети. Препроцессор успешно себя зарекомендовал в подготовке данных об ОТ для таких приложений, как Maps.me и Organic Maps.

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

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

Как мы переманили пользователей удобным сервисом платежей

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

Всем привет! Меня зовут Александра Пилюгина, я продакт-менеджер команды «QR и Фотоплатеж» в управлении «Платежи», банк ВТБ. К нам каждый месяц приходит около 500 тысяч новых клиентов. Специально для них наша команда разработала сервис переноса платежей в ВТБ Онлайн, попутно решив множество проблем с распознаванием платежных документов и извлечения из них полезной информации.

Заходите под кат — расскажу, как мы всё это делали.

Подробнее
Всего голосов 16: ↑13 и ↓3+14
Комментарии3

Как мы выиграли соревнование CLEF 2024 по генерации медицинских снимков

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

Всем привет! Меня зовут Михаил Чайчук, я учусь в магистратуре Вышки на ФКН, где также являюсь исследователем в НУЛ моделей и методов вычислительной прагматики. А недавно я пришел работать в AIRI на должность инженера-исследователя в команду Прикладное NLP, которой руководит Елена Тутубалина. Вместе с ней мы приняли участие в соревновании ImageCLEFmed MEDVQA-GI 2024 по генерации медицинских картинок, которое проводилось в рамках конференции CLEF 2024. 

Наш результат оказался лучшим среди 27 зарегистрированных команд! Мы уже опубликовали статью в сборнике соревнования, здесь же я расскажу, как нам удалось добиться победы.

ДИСКЛЕЙМЕР

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

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

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

Литкод изи — это просто

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

Задумывались ли вы, где можно применить навык решения задачек а-ля литкод изи? Я встречаюсь с ними частенько, главное просто присмотреться.

Например, на Linked.in недавно ввели "игры". Я как-то глянул на них на послеобеденном кофе.

Пусть оно само
Всего голосов 15: ↑15 и ↓0+16
Комментарии20

5 результатов обучения в IT и не только

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

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

Из тех, кому вёл уроки более 2-х лет, многие сейчас учатся в технических вузах, кто-то подрабатывает уже. Отсеялись те, кто пошёл учиться изначально “для расширения кругозора”. За всё время более 2-х лет занималось около 50 подростков. В среднем за год через мои занятия проходило 96 человек (8 групп по 12 человек) в школах и на частном обучении около 20 человек в год.

10 лет в сумме проработал в ИТ-образовании. Была и компьютерная грамотность, и робототехника, и программирование, и тренинги, и выездные лагеря по личностному росту, в том числе.

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

Создаем алгоритм определения скорости объектов по видео

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

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

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

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

Решение задачи с собеседования Linked List Cycle [+ ВИДЕО]

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

Всем салют! Давайте решим задачу "Linked List Cycle"

Дан head, являющийся головой связного списка, необходимо определить, есть ли в списке цикл.

Читать далее
Всего голосов 4: ↑2 и ↓20
Комментарии27

Обучение модели как ребёнка

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

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

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

Настройка ПИД-регулятора для беспилотных автомобилей

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

Настройка ПИД-регулятора для беспилотных автомобилей

Этот проект иллюстрирует концепцию ПИД-регулятора, применяемого в беспилотных автомобилях в рамках программы Udacity «Беспилотный автомобиль»

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

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

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

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

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Государственные перевороты: бармалеи выпрыгивают как черти из табакерки. Не хотите, дети, в Африку сыграть?

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

На исторических данных за 1991-2019 год покажем, как можно "увидеть" и "выцепить" признаки переворота.  С помощью машинного обучения и ансамблевых модели. Ансамбли (конечно, не музыкальные), как показывает практика, – более эффективны в таких делах, и самое главное -  хорошо "тюнятся" и "чипуются".

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

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

Как получить на 30% больше подписчиков, раздавая промокоды в Telegram

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

Каждый день на меня сыпятся предложения "Подпишись на канал!" И знаете, в чём их главная ошибка? Они все пытаются продать мне подписку, хотя я их вижу впервые. Холодный контакт, ноль доверия — нет, спасибо.

Вместо того, чтобы втюхивать подписку холодной аудитории, узнай:
- Как согреть холодных пользователей и превратить их в лояльных;
- Как использовать промокод грамотно и мотивировать подписку на Telegram-канал;
- Как автоматизировать выдачу промокодов и защитить их от злоупотреблений;

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

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

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

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

Недавно мне довелось работать над новым алгоритмом приближённого поиска ближайших соседей, который называется RaBitQ. Автор этого алгоритма уже предоставил достаточно скоростную реализацию на C++. Я попытался переписать этот алгоритм на Rust (ещё один случай «а почему бы не переписать на Rust»). Однако, я обнаружил, что моя реализация гораздо медленнее оригинальной. Далее я расскажу, как шаг за шагом доработал её производительность.

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

ИИ в диагностике рака кожи

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


Одним из самых коварных и гадких заболеваний у человека является рак. Независимо от его локализации, он может нанести колоссальный ущерб здоровью или привести к летальному исходу. Одним из самых распространенных считается рак кожи, а именно меланома. Проблема этого типа рака заключается в том, что он может быть на видном месте и не вызывать каких-либо ощутимых симптомов до момента, когда уже будет поздно что-либо делать. Именно потому людям, которые входят в группу риска, необходимо регулярно проверяться у дерматоонколога. Однако даже самый опытный специалист все равно остается человеком, который может упустить малозаметные признаки, тем самым подарив раку шанс на развитие. По этой причине человечество начало изобретать множество разнообразных инструментов диагностики, помогающие врачам найти рак вовремя. Одним из потенциально полезных инструментов в данном начинании может быть искусственный интеллект. Ученые из Университета им. Раскина (Великобритания) провели исследование, в котором обучили систему ИИ определять ранние признаки меланомы. Как именно проходило это обучение, и насколько эффективен ИИ в качестве диагноста? Ответы на эти вопросы мы найдем в докладе ученых.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+12
Комментарии2

Насколько быстры B-деревья по сравнению с хэш-таблицами?

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

Во многих «скриптовых» языках для стандартных ассоциативных структур данных используется хэш-таблица (hashmap) (объекты Javascript, словари Python и так далее). Хэш-таблицы обладают множеством раздражающих свойств:

  • Уязвимость к hash flooding.
  • В случае защиты от hash flooding случайными seed порядок итераций становится недетерминированным, что мешает при тестировании снэпшотов, создании воспроизводимых сборок и так далее.
  • При вставке может требоваться рехэширование, что в наихудших случаях создаёт для больших хэш-таблиц ужасные задержки.
  • Многократное увеличение больших распределений памяти без фрагментации сложно реализовать в целевых платформах wasm, потому что трюки с виртуальной памятью недоступны, а для страниц невозможно выполнить unmapping.
  • Векторные команды в wasm ограничены, а команды AES отсутствуют. Это делает многие хэш-функции ещё более медленными.

Упорядоченные структуры данных наподобие B-деревьев не имеют этих недостатков. Обычно они медленнее хэш-таблиц, но меня удивило, насколько разнятся ожидания людей относительно их скорости.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+21
Комментарии3

Как мы в Яндексе делаем роборуку с искусственным интеллектом

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

Ещё 10–20 лет назад многие думали, что роботы под управлением искусственного интеллекта возьмут на себя всю тяжёлую и опасную работу на предприятиях. Однако нейросети нашли применение в офисах, колл‑центрах, службе поддержки и даже стали полезны людям из творческих профессий — копирайтерам, дизайнерам, программистам. Тем не менее создание роботов, которые могут самостоятельно выполнять сложные физические манипуляции с материальными объектами, остаётся трудной и нерешённой задачей.

В этой статье я расскажу, как команда ML R&D в отделе робототехники Маркета создаёт роборуку и обучает нейросети, благодаря которым робот взаимодействует с физическим миром.

Читать далее
Всего голосов 35: ↑31 и ↓4+34
Комментарии22

ПО шагам: Защищаем сайт от парсеров и поведенческих ботов с помощью DNS-прокси

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

- контент не будет спаршен
- с ВПН работает
- выявит высокоуровневых JS ботов
- реальных не заблокирует
- фиксирование только настоящих просмотров
- рекомендательная система будет работать изумительно

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

Читать далее
Всего голосов 16: ↑10 и ↓6+11
Комментарии9
1
23 ...

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