Чем машинное обучение отличается от обычной программы
Обычную программу человек пишет по шагам: если так — делай это. А машинное обучение пишет правила само, разглядывая тысячи примеров. Разбираемся, в чём разница и почему это меняет всё.
Представь, что тебе нужно научить компьютер отличать кошку от собаки. Сколько правил ты бы написал? Размер ушей, форма носа, длина хвоста... и всё равно нашёлся бы пёс с кошачьей мордой, который сломал бы твой код. А машинное обучение решает эту задачу совсем иначе — и в этом вся соль.
Обычная программа: ты диктуешь правила
Когда программист пишет обычную программу, он работает как очень дотошный начальник. Он заранее продумывает все ситуации и для каждой задаёт чёткую инструкцию: если пользователь нажал кнопку — открой меню, если число делится на 2 — оно чётное, если на счёте меньше нуля — покажи ошибку.
Компьютер тут — исполнитель без фантазии. Он не догадывается и не импровизирует, а тупо и быстро выполняет то, что ему сказали. Если ситуация не описана в коде — программа либо сломается, либо сделает что-то нелепое. Вся ответственность за правила лежит на человеке.
Это работает идеально, когда правила можно сформулировать словами. Калькулятор, будильник, поиск по тексту, проверка пароля — везде, где ты можешь честно расписать пошаговый алгоритм, обычная программа — лучший выбор. Чёткая задача, чёткое решение.
А вот где обычный код буксует
Проблемы начинаются там, где правила есть, но их невозможно записать. Вернёмся к нашей кошке. Ты узнаёшь кошку за долю секунды, но попробуй объяснить словами, как именно ты это делаешь. Что такое "кошачьесть"? Усы? У моржа тоже усы. Шерсть? У собаки тоже. Мяуканье? А на фото звука нет.
Таких задач — целое море:
- распознать лицо друга на фотографии;
- понять, что письмо — это спам;
- отличить рукописную цифру 7 от 1;
- угадать, какой фильм тебе понравится.
Во всех этих случаях ты знаешь ответ, но не можешь разложить его на чёткие "если — то". Правил слишком много, они расплывчатые и постоянно меняются. Тысячи программистов годами пытались написать код, распознающий кошек вручную, — и почти ничего не вышло.
Машинное обучение: примеры вместо правил
И тут происходит переворот. Машинное обучение переворачивает задачу с ног на голову. Вместо того чтобы диктовать правила, человек показывает машине примеры с ответами — и она сама выводит правила.
Обычная программа: человек пишет правила, компьютер по ним даёт ответы. Машинное обучение: человек даёт примеры с ответами, компьютер сам выводит правила.
Как это выглядит на практике? Берут десятки тысяч картинок. На каждой подписано: "это кошка", "это собака", "снова кошка". Эту гору примеров скармливают специальной программе — модели. Сначала модель угадывает случайно и ошибается. Но после каждой ошибки она чуть-чуть подкручивает свои внутренние настройки, чтобы в следующий раз ответить точнее. Тысячи, миллионы повторений — и она начинает узнавать кошек, в том числе на тех картинках, которых раньше никогда не видела.
Аналогия: как ты учил родной язык
Звучит как магия, но ты сам прошёл через это в детстве. Вспомни, как ты учился говорить. Тебе ведь не выдавали учебник грамматики в год от роду. Никто не объяснял правила склонения и спряжения. Ты просто слушал тысячи фраз вокруг — миллионы примеров живой речи — и постепенно начинал чувствовать, как "правильно".
Ты не можешь объяснить, почему говоришь "красивая кошка", а не "красивый кошка", — ты просто слышишь, что так верно. Грамматика въелась в тебя из примеров, а не из правил. Вот ровно так же учится модель машинного обучения: впитывает закономерности из огромного потока данных.
И отсюда же главная слабость подхода. Если ребёнок рос среди людей, которые говорили с ошибками, он переймёт эти ошибки. Точно так же модель, обученная на кривых или однобоких данных, начнёт ошибаться или быть несправедливой. Машинное обучение настолько умно — и настолько глупо, — насколько хороши примеры, которые ему показали.
Так что же выбрать?
Не думай, что машинное обучение "круче" и теперь всё надо делать через него. Это просто другой инструмент для других задач. Сравним честно:
- Обычная программа — когда правила понятны и их можно записать. Точно, предсказуемо, легко проверить. Считать налоги нейросетью — плохая идея.
- Машинное обучение — когда правила есть, но их не выразить словами, зато примеров полно. Распознавание, перевод, рекомендации, голосовые помощники.
Тот самый ChatGPT, переводчик в телефоне, лента, которая угадывает твои интересы, и фотоаппарат, рисующий рамку вокруг лица, — всё это машинное обучение. А калькулятор, движок игры и код твоего банковского приложения — обычные программы. Чаще всего они работают бок о бок: где можно — чёткие правила, где нельзя — обучение на примерах. Понять разницу между ними — и есть первый настоящий шаг в мир искусственного интеллекта.