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

推荐订阅源

The Cloudflare Blog
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LangChain Blog
W
WeLiveSecurity
P
Proofpoint News Feed
月光博客
月光博客
NISL@THU
NISL@THU
L
LINUX DO - 最新话题
Webroot Blog
Webroot Blog
T
Threatpost
Y
Y Combinator Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
Vercel News
Vercel News
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
S
Schneier on Security
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
小众软件
小众软件
MyScale Blog
MyScale Blog
N
News and Events Feed by Topic
Stack Overflow Blog
Stack Overflow Blog
有赞技术团队
有赞技术团队
The Hacker News
The Hacker News
Schneier on Security
Schneier on Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Help Net Security
Help Net Security
Recent Announcements
Recent Announcements
S
Security @ Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Securelist
T
The Exploit Database - CXSecurity.com
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
雷峰网
雷峰网
量子位
Google DeepMind News
Google DeepMind News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy
L
Lohrmann on Cybersecurity
I
Intezer
T
The Blog of Author Tim Ferriss
G
GRAHAM CLULEY
D
DataBreaches.Net
V
Vulnerabilities – Threatpost
P
Privacy & Cybersecurity Law Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
罗磊的独立博客

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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. Часть 1
ysrgsyn · 2026-05-19 · via Все публикации подряд на Хабре

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

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

Охват и читатели1.1K

Туториал

Сколько статей на хабре про машинное обучение? Обозначим их количество за N и напишем N+1-ю.

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

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

Как говорится, буду разбирать так, как сам это вижу и понимаю — без лишней теории, но и без магии.

Возможно, важно

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

Итак, поехали!

0. Введение

Итак, что такое машинное обучение?

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

На практике данные обычно устроены так: есть признаки (features) — то, что описывает объект, и целевая переменная (target) — то, что мы хотим предсказать.

Классический пример — задача, в которой мы предсказываем цены квартир. В таком случае features — это площадь, этаж, количество комнат, а target — цена. Цель — построить на имеющихся данных модель.

Забегая вперёд, стоит отметить, что целевая переменная не обязательно одна — бывают задачи с несколькими target‑ами. Но пока будем рассматривать случай с одной целевой переменной.

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

Обозначим пространство признаков через X, а каждый объект из этого пространства — вектором признаков вида \overline{x} = (x_1, x_2, \dots, x_k), где x_i — это i‑й признак (например, площадь, этаж и так далее). Также обозначим пространство таргетов за Y, а его элементы — y.

Тогда задача машинного обучения сводится к поиску отображения f : X \to Y, которое по признакам объекта предсказывает соответствующий таргет.

То, насколько «ошибается»f при переводе \overline{x} в y, называется потерей (loss). Ясное дело, что степень «ошибки» можно измерять по‑разному (модуль разности, квадрат разности и так далее). Функция, которая считает loss, называется функцией потерь (Loss Function) и обозначается (как ни странно) буквой L. Выбор функции потерь — это критически важный этап, который напрямую зависит от типа решаемой задачи и особенностей данных.

Итак, задача машинного обучения формулируется как поиск функции f из некоторого класса функций \mathcal{F}, минимизирующей ошибку на данных:

\min_{f \in \mathcal{F}} \frac{1}{n} \sum_{i=1}^{n} L(y_i, f(x_i))

Чуть подробнее о классе функций

Это набор всех возможных моделей конкретного типа. Например:

  • Если мы решили, что зависимость линейная y = \langle \omega, x \rangle + b, то \mathcal{F} — это класс линейных функций

  • Если мы строим дерево решений, то \mathcal{F} — это множество всех деревьев заданной глубины

  • и так далее

Зачем вообще ограничивать?

Казалось бы, почему не взять «вообще все мыслимые функции»?

  1. Вычислимость: Нам нужно уметь математически искать лучшую функцию. Если класс функций слишком сложный, мы просто не сможем найти минимум ошибки.

  2. Обобщающая способность: Если \mathcal{F} слишком богат (например, функция может изгибаться как угодно), модель просто «зазубрит» тренировочные данные.

Всё через компромисс:

  • Слишком простой \mathcal{F}: (например, прямая там, где нужна кривая) — модель будет ошибаться. Это называется недообучением (Underfitting).

  • Слишком сложный \mathcal{F}: (нейросеть с миллиардом параметров на 10 примеров) — модель идеально подстроится под шум. Это переобучение (Overfitting).

Получается, если отбросить модные слова и маркетинг, то работа ML-инженера зачастую сводится к сборке «конструктора» из четырех ключевых деталей:

  1. Данные (Data): Получение, обработка и очистка данных. Качественные данные — половина успеха.

  2. Определение класса (\mathcal{F}): Выбор пространства, в котором ищем решение. Будет это простая линейная модель, дерево решений, или огромная нейросеть?

  3. Выбор функции потерь (L): Определение «санкций». Что хуже: ошибиться на чуть-чуть на многих объектах, или сильно промахнуться на одном?

  4. Выбор метода оптимизации: Сам поиск. Как именно мы будем перебирать функции из \mathcal{F}, чтобы найти среди них ту самую, которая минимизирует L?

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

Эта формула — база, на которой строится всё: от предсказания цены квартиры до современных языковых моделей.

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

1. Линейная регрессия


Сначала поймем, что она из себя представляет.

Представим обычный серый двумерный мир. У нас есть x (например рост человека) и y (размер обуви). Мы хотим понять как по росту человека подбирать ему обувь. В этом контексте линейная регрессия — это просто построение прямой, которая проходит максимально близко ко всем точкам.

пример двумерной линейной регрессии

пример двумерной линейной регрессии

Однако, одним ростом сыт не будешь. В реальном мире признаков обычно много (рост, вес, пол, возраст и так далее), так что признаков обычно у нас много, но идея не сильно сложнее школьной y=kx+b
Теперь, чуть ближе к делу.

Определим линейную регрессию таким образом։ линейная регрессия — это модель, в которой мы предполагаем, что таргет аппроксимируется через линейную комбинацию фич и свободного коэффициента. К слову, свободный коэффициент имеет своё название — смещение (bias)

y_i = \omega_1x_1 + \omega_2x_2 + \dots + \omega_k x_k + \omega_0,

где \omega_i \in \mathbb{R}, i = \overline{0 \dots k} называются весами (weight). И нашей задачей является нахождение таких \omega, при которых ошибка у нас будет минимальна.

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

Сейчас мы имеем формулу вида \sum_{i=1}^{k}\omega_i x_i + \omega_0. Сделаем один необязательный шаг и немножко улучшим качество нашей жизни.

Дабы избавиться от «бесячего хвостика» \omega_0, скажем что у нас имеется фиктивная фича под названием x_0, которая всегда равна 1и не влияет ни на что. Перепишем формулу таким образом

 \sum_{i=0}^{k}\omega_i x_i \stackrel{\text{def}}{=}  \langle \overline{x}, \overline{\omega} \rangle

для самых маленьких (скалярное произведение)

Выражение \langle \overline{x}, \overline{\omega} \rangle является так называемым скалярным произведением (В n-мерном вещественном евклидовом пространстве)

«Согрешил, батюшка» (о типах данных)

Опытные читатели, возможно, не обратили внимание, но я упустил весьма (не побоюсь этого слова) ключевой момент. В примере выше у нас был рост, вес и пол. Ладно уж рост, это число типа float (так называемый количественный признак), мы его умножим на какое‑то \omega_i и получим число.

Что делать с полом? Достаточно очевидно, что эту фичу можно закодировать бинарно условно (0 — женщина, 1 — мужчина)

А что, если у нас не количественный и даже не бинарный признак, а к примеру номер автомобиля, класс билета в самолете, или кличка кота?

Такие признаки называются категориальными. Они в свою очередь бывают двух типов։ Номинальные и Порядковые.

Порядковые признаки — это те, для которых определены операции сравнения (к примеру одежда размера S меньше одежды размера XL).

А номинальные признаки несравнимы (например, любимые музыкальные группы)

С порядковыми признаками работать относительно легко. В самом простом случае их можно просто нумеровать. А номинальные признаки, зачастую, требуют более хитрых методов (от one hot encoding, до embeddings). Когда как и что обычно делают — Разберемся позже.

Таким образом мы определили класс функций \mathcal{F}(модель), в котором мы ищем подходящую нам функцию.

Настала очередь второго шага — выбора loss функции L. На самом деле, это та часть, по которой будут подобраны наши параметры.

Для задач линейной регрессии, обычно, в качестве функции потерь выбирают так называемую среднеквадратическую ошибку (Mean Square Error / MSE). Выглядит она таким образом

L(X,Y) = \frac{1}{n}\sum_{i=1}^{n}(y_i - \langle \overline{x_i},\overline{\omega} \rangle)^2

И целью становится минимизация функции потерь, то есть нахождение такого \overline{\omega} вида

\overline{\omega} = \arg \min_{\omega} \frac{1}{n} \sum_{i=1}^{n} (y_i - \langle x_i, \omega \rangle)^2

Почему именно MSE
  1. Дифференцируемость (Гладкость)։ имеем возможность посчитать градиенты

  2. Выпуклость: У MSE в линейной регрессии только один минимум (дно чаши). Мы никогда не застрянем в «ложной» яме.

  3. Гауссовое распределение: Если шум в данных распределен нормально (по Гауссу), то минимизация MSE — это то же самое, что метод максимального правдоподобия.

Здесь y_i - \langle \overline{x_i},\overline{\omega} \rangle показывает насколько отличается реальный ответ y_i от «пророчества» нашей модели.

Возведение в квадрат имеет двойной смысл. Во‑первых, мы не попадаем в неприятные ситуации когда из‑за того, что y_i - \langle \overline{x_i},\overline{\omega} \rangle < 0, Loss уменьшается.

Во‑вторых, малые ошибки штрафуются слабо (ответ был 5, модель выдала 4 — квадрат разности всего 1), а большие ошибки штрафуются сильно (ответ был 5, модель выдала 10 — квадрат разности уже 25).

Из‑за этого модель думает։ «бро, я лучше совершу 10 мелких ошибок, чем одну крупную».

Есть и, конечно, альтернативные подходы. К примеру, нашему MSE не уступает по популярности так называемый Mean Absolute Error / (MAE)։

L(X,Y) = \frac{1}{n}\sum_{i=1}^{n}|y_i - \langle \overline{x_i},\overline{\omega} \rangle)|

Почти то же самое, но штраф теперь линейный. В случае MAE модель может подумать «а давай лучше разочек накосячу, зато, в остальных случаях всё будет правильно».

Тут мы введем еще одно модное слово — Robustness (или по‑простому — устойчивость к выбросам). Это «пофигизм» модели к сильным отклонениям в данных (выбросам). Робастная модель не будет пытаться угодить одному странному объекту, если это портит общую картину.

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

На самом деле ответ зависит от множества факторов, в том числе от задачи, которую мы решаем. Подробнее расскажу об этом в будущем, в статье про метрики.

„Я не боюсь того, кто изучает штрафует 10 000 раз за маленькие ошибки. Я боюсь того, кто штрафует за большую ошибку 10 000 раз.“ — Брюс ИИ.

Я не боюсь того, кто изучает штрафует 10 000 раз за маленькие ошибки. Я боюсь того, кто штрафует за большую ошибку 10 000 раз.“ — Брюс ИИ.

Заключение

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

Подведем краткий итог. В этой статье мы

  • Поняли, что из себя представляет машинное обучение

  • Сформулировали «скелет» задачи в виде четырех шагов

  • Узнали, что такое линейная регрессия

  • Поняли, что такое параметры, веса и смещение

  • Рассмотрели пару функций потерь, и поняли, что её выбор неоднозначен

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