Статистическое (в частности, его контролируемое подполе) обучение является одной из самых классических структур для искусственного интеллекта и областью машинного обучения. Это не основа в смысле строгого программирования — то, что вы загружаете и пишете код, — это набор математических инструментов для изучения функций из данных.
Простейший пример: спам-фильтры
Если вы попросите меня классифицировать сообщение электронной почты как спам или как легитимное, я могу сделать это без ошибок (особенно, если я получатель). Машинное обучение пытается эмулировать эффективность работы человека в этой задаче, создавая автоматические фильтры спама, которые, взглянув на отправителя и текст письма, могут классифицировать его как спам или законный.
Существует много методов и моделей, которые можно применять для создания такого фильтра, но они имеют некоторые общие черты.
Все они пытаются выучить математическую функцию : чистую функцию без побочных эффектов или внутреннего состояния. И в этой отрасли области, называемой контролируемым обучением, они начинают с существующих данных для построения модели и ее параметров.
Давайте продолжим наш пример: если вы попросите меня автоматизировать задачу классификации почты, я не смог бы записать несколько строк кода, которые выполняют эту работу за меня, как я сделал бы с запросом к базе данных или для расчета налогов ( где документированный алгоритм уже существует.)
формализация
Так что я могу сделать? Я могу применять контролируемые методы обучения к множеству почтовых сообщений, которые классифицировал человек, и попытаться выучить общее правило. Это правило является нашей функцией:
boolean isSpam($sender, $subject, $text)
и теоретически может быть расширен любым аргументом, который мы знаем о почтовых сообщениях нашего обучающего набора (набора, содержащего уже классифицированные экземпляры). Мы надеемся проанализировать как можно больше таких примеров:
[email protected] A Nigerian prince needs your help ... SPAM [email protected] Database courses offer ... SPAM [email protected] [xp-it] Agile and respect ... NOT SPAM
Это (двоичная) проблема классификации, потому что вывод, который мы пытаемся выучить, представляет собой дискретный набор (2) меток. Задачи регрессии пытаются выучить функцию, значение которой является действительным числом.
Повышение квалификации
Кто дает нам все уже засекреченные данные для изучения? В конце концов, вы попросили меня создать спам-фильтр, потому что мы не знали, как автоматически классифицировать большое количество писем.
Обычно это работа пользователя, с небольшой помощью инфраструктуры:
Наша задача — выбрать метод (например, классификатор Байеса) со связанной с ним моделью (например, представить все письма в виде набора слов, которые они содержат). Затем мы используем алгоритм обучения (может быть более одного для каждого модель) обучить модель и выяснить ее параметры. В случае наивного байесовского классификатора модель является мультипликативной:
SPAM = Prior(SPAM) * P(Word1|SPAM) * P(Word2|SPAM) ... * P(WordN|SPAM) NOT_SPAM = Prior(NOT_SPAM) * P(Word1|NOT_SPAM) * P(Word2|NOT_SPAM) ... * P(WordN|NOT_SPAM)
где выигрывает самое высокое вычисленное значение. Мы включаем в расчет все слова новой почты для классификации, но в нашем корпусе мы должны охватить как можно больше слов: наши параметры варьируются от P (Nigerian | SPAM) до P (iPad | SPAM) до P (Agile). | NOT_SPAM). Стеблирование и регуляризация могут помочь сократить количество необходимых слов, но больше данных не повредит.
Проверка
Возможно, что наша модель слишком детализирована, чтобы ее можно было обобщать: мы должны помнить, что наша цель — классифицировать новые письма, а не только письма из учебного набора (по замыслу мы уже знаем класс, к которому они принадлежат). Например, у нас может быть только несколько экземпляров, содержащих слово «хоббит», и все они, к сожалению, классифицируются как спам. Поэтому в нашей модели это слово будет весить очень сильно, чтобы перенаправлять письма к ярлыку спама.
То, что мы можем сделать, чтобы избежать построения модели, которая не соответствует данным, разделяет доступные классифицированные экземпляры в:
- учебный набор , используемый для изучения параметров модели.
- набор проверки , используемый для оценки характеристик модели.
С отдельным набором проверки вы можете многократно обучать более сложные модели и проверять их ошибки в этом наборе; например, выбрав из писем только 10 наиболее часто встречающихся слов, затем наиболее часто встречающиеся 20 и т. д. Ошибка в обучающем наборе всегда будет уменьшаться со сложностью, но она достигнет минимума в проверочном наборе. Этот минимум является признаком того, что вы должны рано остановиться.
Выводы
Статистическое обучение под наблюдением всегда состоит из выбора модели, состава учебного набора, обучения и проверки. Выбор модели также означает определение того, как она работает (обычно уже существует кодифицированная математическая модель), и выбрать, какие параметры мы хотим изучить и какую метрику использовать для измерения погрешности копии модели.
Обучающие наборы — это самая важная вещь, на которую стоит обратить внимание, если вы спросите Питера Норвига . Обучение снова является кодифицированным алгоритмом, а валидация — последний шаг, необходимый для того, чтобы убедиться, что вы не производите ненужные результаты.