惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
B
Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
Netflix TechBlog - Medium
腾讯CDC
IT之家
IT之家
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
罗磊的独立博客
P
Privacy International News Feed
D
DataBreaches.Net
T
Threatpost
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
S
Securelist
P
Palo Alto Networks Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Secure Thoughts
Security Archives - TechRepublic
Security Archives - TechRepublic
L
LangChain Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
The Last Watchdog
The Last Watchdog
T
Tor Project blog
V
Vulnerabilities – Threatpost
T
Threat Research - Cisco Blogs
H
Heimdal Security Blog
Hugging Face - Blog
Hugging Face - Blog
Hacker News: Ask HN
Hacker News: Ask HN
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
S
SegmentFault 最新的问题
Know Your Adversary
Know Your Adversary
博客园_首页
N
News and Events Feed by Topic
G
GRAHAM CLULEY
L
LINUX DO - 热门话题
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Help Net Security
Help Net Security
Simon Willison's Weblog
Simon Willison's Weblog
H
Hacker News: Front Page
大猫的无限游戏
大猫的无限游戏
AWS News Blog
AWS News Blog
The Cloudflare Blog
AI
AI

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Разбираемся в ML без воды: от базы до Attention. Часть 2
ysrgsyn · 2026-05-20 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение6 мин

Охват и читатели37

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

Что дальше?

После постановки задачи линейной регрессии можно подумать о следующем: Ежели так сошлись звезды что мы пытаемся найти вектор y методом умножения матрицыX на некий вектор весов \omega, то раз в XIX-XX веках умные люди придумали всё нужное, почему бы и не решить задачу аналитически? На самом деле, в теории это возможно. Подход называется по-разному — и МНК и нормальное уравнение, но идея крайне проста. Итак, как говорится։

Осторожно, злая собака математика.

Рассмотрим уравнение X\omega = y, где искомое, естественно, \omega.

Казалось бы, задача для третьего класса школы [(с) В. И. Арнольд]: чтобы найти \omega, нужно просто умножать обе части на матрицу X^{-1}. И, просто умножив обе части уравнения на нее получим: X^{-1}X\omega = X^{-1}y, откуда получаем \omega = X^{-1}y.

В идеальном мире это так, но у нас есть огромная(!) проблема.
Дело в том, что обратную матрицу X^{-1} можно найти только для квадратных матриц (и то, далеко не для всех, но для наглядности, пока опустим это). А у нас матрица X — это таблица данных. Строк в ней — это количество объектов (например, 100 000 квартир), а столбцов — количество признаков (например, 5 штук: площадь, этаж и т.д.). Матрица прямоугольная, и взять от неё обратную напрямую физически невозможно.
И да, на практике, бывает и наоборот։ фичи могут быть больше чем данные. К примеру, это происходит в областях ближе к генетике/биоинформатике (я не спец, так что подробно, увы, не расскажу)

И как быть? А давайте сделаем её квадратной искусственно! Как утвердит любой, уважающий себе третьеклассник [(с) В. И. Арнольд] — самый простой способ превратить прямоугольную матрицу в квадратную — умножить её слева на саму себя в транспонированном виде (X^T)

Дело за малым. Умножим обе части нашего исходного уравнения X\omega = y на X^T слева: X^T X \omega = X^T y.

Смотрим на левую часть: матрица X^T X теперь имеет размер k \times k, (k — условно говоря, количество признаков) она квадратная. А значит, от неё уже можно взять обратную матрицу — (X^T X)^{-1}.

Теперь со спокойной душой избавляемся от этого сомножителя слева, умножив на эту самую обратную матрицу: (X^T X)^{-1} (X^T X) \omega = (X^T X)^{-1} X^T y.

Слева всё сокращается в единичную матрицу, и ПРОИСХОДИТ ЧУДО — мы получаем ту самую легендарную формулу нормального уравнения: \omega = (X^T X)^{-1} X^T y.

Почему этот идеальный мир катится к чертям?

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

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

Проблема №1: Вычислительный тупик, или Кубический ад

Самая дорогая математическая операция в нашей формуле — это взятие обратной матрицы (X^T X)^{-1}. Любой, кто худо-бедно знаком с алгоритмами, знает про сложность обращения матриц: она кубическая.

Если у нас в таблице 10 или 100 фичей — компьютер посчитает всё за мгновение. А теперь давай вернемся в реальность. Мы работаем с текстами, картинками или графами. Там фичи — это, мягко говоря, огромные(!) векторы или, что еще страшнее, разреженные матрицы (sparse matrix) на сотни тысяч колонок.

Возведя 100 000 в куб, мы получаем 10^{15} операций. Даже если использовать хитрые оптимизированные алгоритмы вроде Штрассена или Копперсмита-Виноградова (которые дают условные O(k^{2.37})), это все еще вычислительное сеппуку. Оперативка забьется промежуточными матрицами и захлебнется быстрее, чем ты успеешь нажать Ctrl+C.

Проблема №2: Мультиколлинеарность и веса, в сравнении с которыми твой жирный кореш — дрищ

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

Если у нас есть фичи "погода в городе N в Цельсиях" и "погода в городе N в Фаренгейтах" — они, как правило, жестко связаны. Матрица X^T X становится сингулярной. Попытка скормить ее формуле — это аналог деления на ноль в обычной арифметике.

Ну и ладно, просто удалим полные дубликаты! А вот тут поджидает настоящая засада — мультиколлинеарность.

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

При попытке обращения такой матрицы арифметика float64 сходит с ума от погрешностей округления. В итоге ты получаешь не просто ошибку, а катастрофу в результатах: веса \omega улетают в космос. Один коэффициент становится равен +100500000, второй — -9\,999\,999\,999, а третий вообще 0.0001.

Модель превращается в пороховую бочку. Чуть-чуть изменился шум на входе — итоговое предсказание y улетает в бесконечность. Жить с такой моделью невозможно: она разваливается от любого чиха.

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

Идея простая: если наши веса \omega улетают в космос из-за плохой матрицы, давайте их за это штрафовать! Прямо в функцию потерь (к примеру, в MSE) допишем слагаемое, которое растет вместе с ростом модулей весов. Модели станет тупо невыгодно выкручивать коэффициенты до миллиардов, чтобы подогнаться под шум.

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

-регуляризация (Ridge)

Мы прибавляем к функции потерь сумму квадратов всех весов, помноженную на коэффициент штрафа \lambda.

L(\omega) = \frac{1}{n} \|X\omega - Y\|_2^2 + \lambda \|\omega\|_2^2

Что в этот момент происходит с нашей формулой нормального уравнения? Линейная алгебра превращает её вот в это:

\omega = (X^T X + \lambda I)^{-1} X^T y

Где I — единичная матрица. По сути, мы принудительно прибавляем числа на главную диагональ матрицы X^T X.

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

Кстати, в западной литературе этот трюк пафосно называют Ridge, но у нас он исторически известен как регуляризация Тихонова — советский математик Андрей Тихонов придумал этот метод для решения некорректно поставленных задач еще в 1963 году.

-регуляризация (Lasso)

L(\omega) = \frac{1}{n} \|X\omega - Y\|_2^2 + \lambda \|\omega\|_1

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

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

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

Финальный тупик, или Куда бежать дальше? (Заключение)

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


Аналитическое решение спасено? Для маленьких датасетов — да.


Но давайте вернемся к нашей Проблеме №1, про которую мы так удобно забыли․
Добавление штрафа, мало того, что не лечит кубическую сложность, так она, гадина, ещё и подкидывает нам вычислительных проблем...
Если у нас в таблице сотни тысяч или миллионы признаков, компьютер всё так же благополучно совершит вычислительное сеппуку, пытаясь перемножить и развернуть эти гигантские массивы данных. Какая разница, устойчивы ли наши веса, если мы физически не можем их посчитать из-за нехватки железа? Здесь аналитический подход окончательно заходит в тупик.


Нам нужен принципиально другой метод — итеративный. Тот, который не пытается решить всё уравнение за один безумный прыжок, а мелкими, но уверенными шагами двигается к идеальному результату.

В следующей статье мы уже перейдем к градиентному спуску, завоюем крепость линейной регрессии дабы в дальнейшем, рассмотреть другие варианты выбора \mathcal{F}.

Статья, к сожалению, вышла короче ожидаемой, но, с другой стороны лучше сделать так, чем добавить сюда ещё и понятие градиентного спуска. Буду рад вашим комментариям, и, если вы найдете ошибки в статье, пожалуйста, напишите об этом!