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

Пользователь

Отправить сообщение

Asymmetric Join в PostgreSQL как эволюция Partitionwise Join

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

Оптимизация Asymmetric Join (AJ) — это новый подход к объединению партицированных связей (partitioned relation, PR) и непартицированных связей (non-partitioned relation, NR). Она заключается в том, что каждая партиция присоединяется с помощью NR, а результаты объединяются путём APPEND. Всё это выглядит как эволюция техники partitionwise join (PWJ).

О партицировании в PostgreSQL

SQL HowTo: агрегация внутри рекурсии (Advent of Code 2024, Day 11: Plutonian Pebbles)

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

Сегодня посмотрим на примере задачки из Advent of Code зачем и как можно обойти ошибку aggregate functions are not allowed in a recursive query's recursive term, возникающую при попытке агрегировать какие-то данные внутри шага рекурсии на PostgreSQL — «если нельзя, но очень хочется, то можно».

Читать далее

Support Vector Machine: +1 алгоритм машинного обучения для начинающих

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

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

Читать далее

О векторных базах данных простым языком

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

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

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

Например, когда пользователь вводит «лето», вы можете показывать предметы вроде шортов, платьев, панам и пляжных зонтов.

Как бы вы реализовали такую систему?
Читать дальше →

«У нас закончились столбцы» — лучшая худшая кодовая база

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров20K
О, таблица merchants2? Да, у нас закончились столбцы в merchants, поэтому мы сделали merchants2.
Когда я начинал программировать в детстве, я не знал, что людям платят за программирование. Даже когда я закончил среднюю школу, я полагал, что мир «профессиональной разработки» выглядит совсем иначе, чем код, который я писал в свободное время. Когда мне посчастливилось устроиться на свою первую работу в сфере программного обеспечения, я быстро понял, насколько я ошибался и насколько был прав. Моя первая работа была испытанием огнем, и по сей день та кодовая база остается худшей и лучшей кодовой базой, в которой мне довелось работать. Хотя кодовая база навсегда останется запертой в проприетарных стенах той конкретной компании, я надеюсь, что смогу поделиться с вами некоторыми самыми забавными и страшными историями из нее.

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

Машинное обучение для начинающих: Введение в нейронные сети

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

Простое объяснение того, как они работают и как реализовать их с нуля на Python.

Удивительно, но нейронные сети — не такая уж сложная вещь! Термин «нейронная сеть» часто используется как модное словечко, но на самом деле они зачастую гораздо проще, чем люди себе представляют.

Этот пост предназначен для абсолютных новичков и предполагает НУЛЕВЫЕ предварительные знания машинного обучения. Мы разберемся, как работают нейронные сети, и реализуем одну из них с нуля на Python.

Приступим!

Читать далее

Neural OCR при распознавании текста

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

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

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

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

Читать далее

История развития современных нейросетей: хронология, ключевые модели и прорывы

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

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

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

В сегодняшнем информационном шуме сложно сфокусироваться на истории второстепенных для тебя вещах, поэтому даже самый активный пользователь искусственного интеллекта может не знать откуда «растут корни» - а было бы полезно!

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

В этой статье я расскажу о развитии B2C (для частных лиц) ИИ решений, более того, затрону два рынка: Российский и Западный. Поговорим о развитии технологических гигантов в рассматриваемой мной сфере, с чего они начинали, что выпускали и для каких целей. Но начнём с фундамента.

Читать далее

Как понять нейронные сети? Часть 1

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

Предуведомления

Я обещал в предыдущей публикации в этом блоге, что напишу про еще одну книжку, которую перевел в конце прошлого года для того же издательства «Бомбора». Книжка довольно увесистая, 526 страниц, называется «Understanding Deep Learning». Автор Simon J.D. Prince. — ученый, исследователь, почетный профессор Университета Бата (University of Bath). Он был руководителем проектов в двух компаниях, известных на рынке ИИ‑продуктов: Anthropics Technology Ltd и RBC Borealis. В 2012 году вышла его первая книга «Computer Vision. Models, Learning, and Inference», которая выдержала четыре издания, была переведена на китайский и продалась в количестве более десяти тысяч экземпляров (для научного издания это много).

Как и в обзоре предыдущей книги, хочу сделать оговорку, что делаю его не как специалист по ИИ, а как читатель с базовой подготовкой в ИТ и прикладной математике в объеме технического университета по специальности «Автоматизированные системы управления» и аспирантуры по методам стохастической фильтрации (фильтр Калмана) для гироскопических и навигационных систем. То есть я хочу поделиться своим читательским опытом с теми, кто, как и я, хочет понять что происходит в отрасли ИИ и получить начальные, но не совсем уж популярные сведения по архитектуре и математическим моделям нейронных сетей.

Свой перевод я сдал в издательство с рабочим заглавием «Понимание глубокого обучения», которое, скорее всего, поменяется. Во‑первых, названия всегда придумывает отдел маркетинга, а во‑вторых, в предисловии автор пишет, что в названии книги содержится некоторая шутка или горькая ирония, потому что на момент написания книги (оригинал вышел в 2023 году) никто не понимал глубокого обучения. На Хабре очень много публикаций по этой теме, и, мне кажется, что читатели этого сайта в большинстве своем знакомы как минимум с основами, но все же рискну уточнить термины. «Глубокое обучение» — это сокращение от «обучение глубоких нейронных сетей». Во‑первых, удобнее при изложении, а во‑вторых есть преемственность с названием охватывающей области исследований — машинного обучения, которое много лет развивалось без использования нейронных сетей, а теперь успешность их применения и бурный рост исследований и продуктов на их базе настолько превзошли все другие подходы, что многими термины «машинное обучение» и «глубокое обучение» воспринимаются как синонимы, хотя это пока еще не так.

Читать далее

Мне 34, я был в 65 странах, и у меня есть для вас лайфхак

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

Вы же попались на этот кликбейт?

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

За первый же месяц с ботом я купил перелёт в США и обратно в два раза дешевле стандартной цены. А сколько времени сберёг на мониторинг — не сосчитать. Поделюсь ссылками на мой проект в GitHub и названием бота. Вы сможете собрать похожее решение под свой запрос и летать в отпуск, испытывая меньше фрустрации от ценника на билеты и туры.

Читать далее

Модели BERT для машинного обучения: гайд для начинающих

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

BERT (Bidirectional Encoder Representations from Transformers) — это одна из ключевых моделей обработки естественного языка (NLP), построенная на архитектуре трансформера.

Читать далее

Транзакции в базах данных на примере PostgreSQL

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

Транзакция — это набор операций с базой данных. В этот набор может входить как одна операция, так и несколько. Операции внутри транзакции либо выполняются все и полностью, либо ни одна операция не выполняется. Это свойство еще называют атомарностью. Транзакция переводит базу данных из одного согласованного состояния в другое. Согласованность означает что данные в базе данных подчиняются определенным правилам, которые были заложены при ее создании. К примеру, у нас есть две таблицы — Покупатели (Customer) и Покупки (Purchase).

Читать далее

Кэширование с FeignClient: как ускорить микросервисы и стать героем проекта

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

Кэширование с FeignClient: ускоряем микросервисы и радуем пользователей

Статья о том, как добавить кэширование в FeignClient с помощью Caffeine Cache и сделать микросервисы молниеносными. Простая настройка, минимум кода, максимум пользы — пошагово на примере Java и Spring Boot, чтобы ваши запросы летали, а API не тормозил.

Читать далее

ByeDPI + Redsocks на OpenWRT: дарим свободу локальной сети на дровах (на примере ASUS RT-N12 ROM/ОЗУ: 8/32 Мб)

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

Решение проблемы зачастую упирается в использование роутеров с ограниченными ресурсами, таких как ASUS RT-N12 VP B1 с ROM/ОЗУ 8/32 Мб. В этой статье я расскажу, как настроить связку ByeDPI и Redsocks на роутере с OpenWRT, даже если ваш роутер далеко не топ по характеристикам.

## Зачем нужны ByeDPI и Redsocks?

ByeDPI — это утилита для обхода DPI (Deep Packet Inspection), которая изменяет сетевые пакеты таким образом, чтобы они не распознавались системами фильтрации трафика.

Redsocks — это прокси-инструмент, который перенаправляет трафик через SOCKS или HTTP прокси, даже если приложение не поддерживает прокси напрямую.

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

Ставим ByeDPI и Redsocks на OpenWRT

Что ищет он в краю далёком? Как найти смысл жизни с PostgreSQL

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

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

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

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

Откроем скрытые смыслы

PSQLBuddy — резервное копирование и восстановление PostgreSQL

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

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

Опять-двадцать пять, или резервное копирование баз данных PostgreSQL по новому. Снова.

Читать далее. Опять

Zettelkasten и Obsidian: ваш помощник в структурировании знаний

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

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

Наращивать нейроны

Как я адаптировал v2rayN для России или российские источники geo файлов для v2ray/sing-box/etc

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

Сегодня был выпущен мажорный релиз v2rayN v7.0, а вместе с ним и моя серия коммитов, которые добавляют поддержку пресета "Россия".

Для его работы так же был создан российский источник geo файлов для v2ray/sing-box/etc.

Читать далее

Поиск «токсичных» SQL-запросов

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

Мы, студенты из МИФИ, Даниил и Александр, пришли на стажировку в Сбербанк в департамент SberData, который занимается развитием внутренней корпоративной аналитической платформы (КАП).Это современная платформа с удобными инструментами созданная для закрытия полного спектра потребностей Сбера в работе с данными, таких как хранение, интеграция, разнообразная аналитика, отчетность, моделирование и контроль качества данных. Все эти направления было бы трудно развивать без отдельного R&D подразделения, в составе которого мы и работаем. Сегодня мы хотим поделиться нашим исследованием в области проектирования алгоритмов в выявлении «токсичных» SQL‑запросов с помощью машинного обучения. Почему же запросы называются именно «токсичные»? Они затрачивают на своё выполнение слишком большое количество ресурсов, а именно времени. На самом деле не только время, но для упрощения мы будем считать только время, так как это ключевой параметр.

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

Читать далее

Регулярные выражения в SQL

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

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

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

Читать далее

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность