Что такое машинное обучение
Программа против модели
В обычном программировании человек пишет правила: «если в письме есть слово "выигрыш" и ссылка — это спам». Компьютер применяет правила к данным и получает ответы.
В машинном обучении всё наоборот: мы даём компьютеру данные с ответами (тысячи писем с пометкой «спам/не спам»), а правила — точнее, числа внутри модели — он подбирает сам.
Так решают задачи, для которых правила невозможно выписать руками: узнать лицо на фото, перевести текст, понять речь, предсказать спрос.
Из чего состоит задача обучения
Возьмём пример: предсказать цену квартиры по площади.
| Понятие | В примере |
|---|---|
| Объект | одна квартира |
| Признаки (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): ответы берутся из самих данных — например, «угадай следующее слово». Так обучаются большие языковые модели.
Почему нейросети
Прямая — простая модель: она умеет только линейные зависимости. Нейросеть — это много простых функций, соединённых в цепочку, с огромным числом параметров. Такая модель может приблизить практически любую зависимость: от «картинка → цифра» до «текст → перевод». Обучаются нейросети тем же способом, что и прямая: считаем ошибку и двигаем параметры туда, где она меньше.
Как устроен курс
Главное в курсе — мы не пользуемся готовыми фреймворками как чёрным ящиком. Шаг за шагом мы напишем собственную библиотеку nanotorch — маленький аналог PyTorch: тензоры с автоматическим вычислением градиентов, слои, оптимизаторы, свёртки и механизм внимания. Когда очередной кусок написан и понятен, мы берём его из готовой библиотеки и идём дальше. В конце курса на ней же работает трансформер.
Как пользоваться уроками
- Код в уроках настоящий: нажмите ▶ Запустить — он выполнится прямо в браузере (Python и NumPy работают на странице, ничего ставить не нужно).
- ✎ Изменить — меняйте числа и код, экспериментируйте. Сломать ничего нельзя.
- Графики строит модуль
vis:vis.line,vis.scatter,vis.heatmapи другие. Наводите курсор на точки и клетки — появятся подсказки. - В уроках есть интерактивные виджеты с ползунками, а после урока — задания с автоматической проверкой.
Математики не бойтесь: всё, что нужно, мы разберём с нуля, на картинках и в коде. Если вы помните школьные дроби и умеете писать на Python функции и циклы — этого достаточно.
Итог
- Машинное обучение — подбор параметров модели по данным с ответами, а не ручное написание правил.
- Задача обучения: признаки → модель с параметрами → функция потерь → поиск параметров с минимальной ошибкой.
- Регрессия предсказывает число, классификация — класс.
- В курсе мы напишем свою библиотеку нейросетей и дойдём до трансформера.
Практика решено 0 из 3
К какому типу относится задача?
| регрессия | классификация | без учителя (кластеризация) | |
|---|---|---|---|
| Предсказать цену квартиры по площади, району и этажу | |||
| Определить, спам письмо или нет | |||
| Разбить покупателей на группы со схожим поведением, групп заранее нет | |||
| Распознать цифру на картинке 8×8 | |||
| Предсказать температуру воздуха завтра |
Что такое параметры модели?
Первая модель. Модель предсказывает цену квартиры (в млн ₽) по площади: 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
def predict(area, w, b):
return w * area + b
def mse(areas, prices, w, b):
errors = [(predict(a, w, b) - p) ** 2 for a, p in zip(areas, prices)]
return sum(errors) / len(errors)
Войдите, чтобы отмечать пройденные уроки.