1. Введение в машинное обучение: определения, история и отличие от традиционного программирования
Введение в машинное обучение: определения, история и отличие от традиционного программирования
Добро пожаловать в курс «Основы машинного обучения: принципы и алгоритмы». Мы начинаем наше путешествие с фундаментальных понятий. Возможно, вы уже слышали термин «машинное обучение» (Machine Learning или ML) в контексте беспилотных автомобилей, рекомендательных систем Netflix или голосовых помощников вроде Siri и Алисы. Но что именно скрывается за этими словами?
В этой статье мы разберем, что такое машинное обучение, чем оно принципиально отличается от обычного написания кода и почему эта технология стала доминирующей именно сейчас.
Что такое машинное обучение?
Машинное обучение — это подраздел искусственного интеллекта (ИИ), который изучает методы построения алгоритмов, способных обучаться. Говоря простым языком, это наука о том, как заставить компьютеры действовать без явного программирования под каждую конкретную ситуацию.
> Машинное обучение — это область исследований, которая дает компьютерам способность учиться без того, чтобы быть явно запрограммированными. — Артур Самуэль, 1959 год
Ключевая идея заключается в том, что мы не пишем жесткие инструкции для решения задачи. Вместо этого мы «скармливаем» алгоритму данные, и он сам находит в них закономерности, формируя собственную логику решения.
Традиционное программирование vs Машинное обучение
Чтобы лучше понять суть ML, давайте сравним его с классическим подходом к разработке программного обеспечения.
Традиционный подход
В традиционном программировании разработчик (человек) анализирует задачу и пишет набор правил (код). Компьютер просто выполняет эти инструкции над входными данными, чтобы получить ответ.
Представьте, что вы пишете программу для конвертации валют. Вы знаете правило: «умножить сумму в долларах на текущий курс». Вы явно кодируете это правило.
Формально это выглядит так:
Где — это написанный программистом код, — входная информация, а — результат работы программы.
Подход машинного обучения
В машинном обучении парадигма переворачивается. Мы даем компьютеру входные данные и правильные ответы к ним (исторические данные). Задача компьютера — найти правила (модель), которые связывают данные с ответами.
Где — это примеры задач, — это правильные решения для этих примеров, а — это выведенная алгоритмом закономерность (модель).
!Схема различия потоков данных в традиционном программировании и машинном обучении
Пример: Спам-фильтр
Рассмотрим классическую задачу фильтрации спама, чтобы увидеть разницу на практике.
Традиционный подход:
Программист пишет множество условий if-else:
* Если в теме письма есть слово «лотерея» — это спам.
* Если письмо от неизвестного отправителя и содержит ссылку — это спам.
* Если текст написан только заглавными буквами — это спам.
Проблема: Спамеры постоянно меняют тактику (пишут «л0терея» вместо «лотерея»). Программисту приходится бесконечно обновлять правила вручную. Список правил становится огромным и нечитаемым.
Подход ML: Мы берем 100 000 писем, которые пользователи уже отметили как «Спам» или «Не спам». Алгоритм анализирует частоту слов, метаданные, структуру предложений и сам вычисляет вероятность того, что письмо является мусором. Если спамеры начнут использовать новые слова, алгоритм адаптируется, как только получит новые размеченные данные, без переписывания кода человеком.
Как это работает: Математическая интуиция
В основе большинства алгоритмов машинного обучения лежит концепция функции. В школе мы изучали функции вида:
Где — это зависимая переменная (результат), — это функция (закон преобразования), а — независимая переменная (аргумент).
В машинном обучении: * (Признаки/Features): Это входные данные. Например, площадь квартиры, район, этаж. * (Целевая переменная/Target): Это то, что мы хотим предсказать. Например, цена квартиры. * (Модель): Это то, что мы ищем. Мы не знаем точную формулу, связывающую площадь с ценой, но мы пытаемся подобрать такую функцию , которая будет выдавать результат, максимально близкий к реальности.
Процесс обучения заключается в минимизации ошибки. Мы можем записать это упрощенно как:
Где — это разница между реальностью и предсказанием, — реальное значение из нашего набора данных, а — предсказание модели.
Алгоритм перебирает тысячи вариантов функции , пока не станет минимально возможной.
Краткая история машинного обучения
Машинное обучение не появилось вчера. Это результат десятилетий исследований.
Основные термины, которые нужно знать
Прежде чем мы углубимся в алгоритмы в следующих статьях, давайте зафиксируем словарь:
* Датасет (Dataset): Набор данных, на котором учится модель. Обычно это таблица, где строки — это объекты (примеры), а столбцы — характеристики. * Признаки (Features): Характеристики объекта, которые подаются на вход модели (наши ). Для прогноза погоды это могут быть: температура, влажность, давление. * Метка (Label): Правильный ответ для каждого примера в обучающем наборе (наш ). Для погоды это: «будет дождь» или «будет солнечно». * Обучение (Training): Процесс, при котором алгоритм ищет закономерности в данных. * Тестирование (Testing): Проверка работы модели на новых данных, которые она не видела во время обучения.
Почему это важно?
Машинное обучение позволяет решать задачи, которые невозможно алгоритмизировать вручную. Невозможно написать if-else правила для распознавания лица человека на фотографии — слишком много вариаций освещения, ракурсов и мимики. Но можно показать машине миллион фотографий лиц, и она сама найдет общие паттерны.
В следующей статье мы разберем основные типы машинного обучения: обучение с учителем, без учителя и обучение с подкреплением, чтобы понять, какие задачи может решать каждый из этих подходов.