Что такое машинное обучение

⏱ 25 мин · 🧩 заданий: 3

Программа против модели

В обычном программировании человек пишет правила: «если в письме есть слово "выигрыш" и ссылка — это спам». Компьютер применяет правила к данным и получает ответы.

В машинном обучении всё наоборот: мы даём компьютеру данные с ответами (тысячи писем с пометкой «спам/не спам»), а правила — точнее, числа внутри модели — он подбирает сам.

Программирование: правила + данные ──▶ ответы Машинное обучение: данные + ответы ──▶ правила (параметры модели)

Так решают задачи, для которых правила невозможно выписать руками: узнать лицо на фото, перевести текст, понять речь, предсказать спрос.

Из чего состоит задача обучения

Возьмём пример: предсказать цену квартиры по площади.

Понятие В примере
Объект одна квартира
Признаки (features, x) площадь (а могли бы быть ещё район, этаж, год постройки)
Целевая переменная (target, y) цена
Обучающая выборка таблица квартир, у которых цена известна
Модель формула с параметрами: цена = w · площадь + b
Параметры числа w (наклон) и b (сдвиг), которые нужно подобрать
Функция потерь насколько модель ошибается на выборке, например средний квадрат ошибки
Обучение поиск параметров, при которых потери минимальны

Посмотрим на данные и попробуем подобрать прямую руками. Меняйте w и b (кнопка «Изменить») и смотрите, как меняется ошибка:

import vis

areas  = [32, 38, 45, 50, 56, 63, 70, 78, 85, 95]           # м²
prices = [6.8, 7.9, 9.1, 10.4, 11.0, 12.9, 13.8, 15.6, 16.5, 19.2]   # млн ₽

w, b = 0.15, 2.0          # попробуйте 0.2 и 0.5

predictions = [w * a + b for a in areas]
mse = sum((p - y) ** 2 for p, y in zip(predictions, prices)) / len(prices)
print(f"w = {w}, b = {b}: средний квадрат ошибки = {mse:.3f}")

vis.line(areas, {"данные": prices, f"модель {w}·x + {b}": predictions},
         title="Цена квартиры от площади", xlabel="площадь, м²", ylabel="цена, млн ₽")

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

Виды обучения

  • С учителем (supervised): у каждого объекта есть правильный ответ.
  • Регрессия — ответ число: цена, температура, время доставки.
  • Классификация — ответ класс: спам/не спам, цифра 0–9, порода собаки.
  • Без учителя (unsupervised): ответов нет, ищем структуру — группы похожих объектов (кластеризация), сжатие данных.
  • С подкреплением (reinforcement learning): агент действует в среде и получает награду — так учат играть в игры и управлять роботами.
  • Самообучение (self-supervised): ответы берутся из самих данных — например, «угадай следующее слово». Так обучаются большие языковые модели.

Почему нейросети

Прямая — простая модель: она умеет только линейные зависимости. Нейросеть — это много простых функций, соединённых в цепочку, с огромным числом параметров. Такая модель может приблизить практически любую зависимость: от «картинка → цифра» до «текст → перевод». Обучаются нейросети тем же способом, что и прямая: считаем ошибку и двигаем параметры туда, где она меньше.

Как устроен курс

Математика Как учатся модели Нейросети Архитектуры ────────── ───────────────── ───────── ─────────── векторы, матрицы ──▶ градиентный спуск ──▶ нейрон, слои ──▶ свёрточные сети производные граф вычислений активации, потери внимание градиент автодифференцирование оптимизаторы Transformer (пишем свой движок) нормализация, Dropout

Главное в курсе — мы не пользуемся готовыми фреймворками как чёрным ящиком. Шаг за шагом мы напишем собственную библиотеку nanotorch — маленький аналог PyTorch: тензоры с автоматическим вычислением градиентов, слои, оптимизаторы, свёртки и механизм внимания. Когда очередной кусок написан и понятен, мы берём его из готовой библиотеки и идём дальше. В конце курса на ней же работает трансформер.

Как пользоваться уроками

  • Код в уроках настоящий: нажмите ▶ Запустить — он выполнится прямо в браузере (Python и NumPy работают на странице, ничего ставить не нужно).
  • ✎ Изменить — меняйте числа и код, экспериментируйте. Сломать ничего нельзя.
  • Графики строит модуль vis: vis.line, vis.scatter, vis.heatmap и другие. Наводите курсор на точки и клетки — появятся подсказки.
  • В уроках есть интерактивные виджеты с ползунками, а после урока — задания с автоматической проверкой.

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

Итог

  • Машинное обучение — подбор параметров модели по данным с ответами, а не ручное написание правил.
  • Задача обучения: признаки → модель с параметрами → функция потерь → поиск параметров с минимальной ошибкой.
  • Регрессия предсказывает число, классификация — класс.
  • В курсе мы напишем свою библиотеку нейросетей и дойдём до трансформера.

Практика решено 0 из 3

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Заполнить таблицу

К какому типу относится задача?

регрессияклассификациябез учителя (кластеризация)
Предсказать цену квартиры по площади, району и этажу
Определить, спам письмо или нет
Разбить покупателей на группы со схожим поведением, групп заранее нет
Распознать цифру на картинке 8×8
Предсказать температуру воздуха завтра
Отметьте ячейку — «+», пустая — «−».
Задание 2 Один вариант ответа

Что такое параметры модели?

Задание 3 Программа на Python

Первая модель. Модель предсказывает цену квартиры (в млн ₽) по площади: price = w * area + b. Напишите:

  • predict(area, w, b) — предсказание для одной площади;
  • mse(areas, prices, w, b) — среднеквадратичную ошибку: среднее значение (предсказание − правильная цена)² по всем квартирам.

Используйте обычный Python, без NumPy.

Какие тесты проверяют код (3)
assert predict(50, 0.2, 1) == 11 and predict(0, 0.3, 2) == 2
assert mse([30, 50], [7, 11], 0.2, 1) == 0 and abs(mse([30, 50], [8, 10], 0.2, 1) - 1.0) < 1e-12
assert abs(mse([10, 20, 30], [3, 5, 4], 0.1, 1) - 5 / 3) < 1e-9

Войдите, чтобы отмечать пройденные уроки.