Чем ML отличается от обычного программирования
Главная идея ML одним предложением: не пишем правила вручную, а даём программе примеры — и она выводит правила сама.
Машинное обучение (Machine Learning, ML) — подход, при котором программа находит закономерности в данных и строит правила автоматически, вместо того чтобы получать их готовыми от программиста.
Обычный код: правила пишет человек
В классическом программировании вы сами описываете логику. Хотите отличить спам от обычного письма — садитесь и придумываете правила: «если в теме есть слово ВЫИГРЫШ — это спам», «если больше пяти ссылок — подозрительно», и так далее. Программа просто исполняет ваши инструкции.
# Классический подход: правила придумал человек
def is_spam(text):
text = text.lower()
if "выигрыш" in text or "бесплатно" in text:
return True
if text.count("http") > 5:
return True
return False
print(is_spam("Поздравляем, ваш ВЫИГРЫШ ждёт вас!"))
print(is_spam("Привет, во сколько встречаемся?"))
Вывод:
True False
Подход работает, пока правил немного. Но спамеры пишут «вы-играш», «б е с п л а т н о», придумывают новые уловки — и список правил разрастается до бесконечности. Вы не успеваете его поддерживать.
Машинное обучение: правила выводятся из данных
ML переворачивает задачу. Вы не пишете правила — вы даёте программе тысячи примеров: вот письма, помеченные «спам», вот помеченные «не спам». Алгоритм сам находит, какие слова, длина, частота ссылок и сочетания признаков чаще встречаются у спама, и строит из этого правило. Когда придёт новое письмо, модель оценит его по найденным закономерностям.
Ключевая разница:
| Обычный код | Машинное обучение |
| Человек пишет правила | Алгоритм выводит правила из данных |
| Вход: данные + правила → выход: ответ | Вход: данные + ответы → выход: правила (модель) |
| Меняются требования — переписываем код | Появились новые данные — дообучаем модель |
Когда ML уместен, а когда нет
Машинное обучение — не «умнее» обычного кода, это другой инструмент. Он окупается, когда правила слишком сложны, чтобы выписать их руками, но в данных есть закономерность.
- ML уместен: распознавание лиц, рекомендации фильмов, прогноз спроса, перевод текста — здесь явных правил почти не сформулировать.
- ML избыточен: посчитать сумму заказа, проверить корректность пароля по регламенту, отсортировать список — обычный код проще, надёжнее и не ошибается.
Хорошее эмпирическое правило: если задачу легко описать инструкцией «если…, то…», пишите обычный код. Если описать правила трудно, но у вас есть много примеров с ответами — это территория машинного обучения.
ML не отменяет обычный код
Важно не впадать в крайность «теперь всё делаем через ML». В реальных системах машинное обучение — лишь один компонент рядом с обычным кодом, а не замена ему. Антиспам-фильтр на ML встроен в почтовый сервис, написанный классически: интерфейс, база данных, отправка писем — всё это обычный код. ML отвечает только за ту часть, где правила не выписать руками.
Более того, у модели всегда есть вероятность ошибки — она не даёт стопроцентных гарантий, в отличие от детерминированного кода. Поэтому критичные проверки (например, что сумма перевода не отрицательна) оставляют обычному коду, а ML применяют там, где небольшая доля ошибок допустима и окупается пользой.
Итог
- Обычный код исполняет правила, которые написал человек.
- ML выводит правила сам, обучаясь на примерах с известными ответами.
- Формула обычного кода: данные + правила → ответ. Формула ML: данные + ответы → правила.
- ML нужен там, где правила сложно выписать руками, но в данных есть закономерность.