Зубков Андрей – ИИ на пальцах: как работает нейросеть и как ее использовать (страница 6)
— думайте об обучении как о многократном цикле «вход → ответ → ошибка → небольшая подстройка», который повторяется на огромном числе примеров;
— помните разницу режимов: обучать долго и дорого, потому что веса постоянно меняют; использовать быстро, потому что веса уже зафиксированы.
Глава 8. Как нейросеть «понимает», что ошиблась
Вы пробуете ИИ-сервис: он распознаёт спам, прогнозирует продажи или пишет текст. Иногда результат «не тот». Возникает естественный вопрос: как модель вообще понимает, что ошиблась, если у неё нет человеческого здравого смысла? И ещё один: почему разработчики не делают так, чтобы ошибок не было совсем — разве это не цель?
Ключевой принцип простой: ошибка модели — это разница между тем, что модель выдала, и тем, какой ответ считается правильным по заранее заданному правилу. У модели нет внутреннего чувства «я неправ». Есть только сравнение с эталоном (правильной меткой, известным числом или ожидаемыми свойствами результата) и численная оценка, насколько она промахнулась.
Как это работает на практике, зависит от типа задачи.
В классификации модель выбирает класс из набора вариантов: «спам/не спам», «кошка/собака», «одобрить/отклонить». Ошибка здесь обычно бинарная: угадала или нет. Но важна не только финальная метка, а уверенность.
Модель может сказать: «спам с вероятностью 0,51» или «спам с вероятностью 0,99». В обоих случаях класс один и тот же, но качество ощущается разным: во втором модель гораздо увереннее. Поэтому разработчики смотрят и на долю правильных ответов, и на то, насколько уверенно модель ошибается.
Как понять, что вы усвоили: в классификации «ошибка» — это несоответствие выбранного класса эталонной метке, а не «плохое объяснение» модели.
В прогнозе (регрессии) модель выдаёт число: цену квартиры, спрос на товар, время доставки. Ошибка здесь — расстояние между предсказанным числом и реальным. Если прогноз продаж был 120, а факт 100, ошибка — 20 (или 20%).
В таких задачах почти никогда не бывает «угадал идеально», и это нормально: данные шумные, мир меняется, измерения неточны. Поэтому качество оценивают средним размером промаха на многих примерах, а не одним удачным попаданием.
Как понять, что вы усвоили: в прогнозе ошибка измеряется величиной отклонения, и «небольшая ошибка» может быть приемлемой, если она стабильна.
В генерации (тексты, ответы, изображения) всё сложнее, потому что «правильного единственного ответа» нет. Если вы попросили написать письмо клиенту, вариантов хорошего письма — десятки. Поэтому ошибку задают через правила, которые можно проверить: соответствует ли ответ фактам из исходных данных, соблюдён ли формат, нет ли запрещённых утверждений, не пропущены ли обязательные пункты.
Иногда используют сравнение с эталонными примерами (референсами), но чаще качество оценивают набором критериев и проверками. Важно понимать: генеративная модель может написать гладко, но ошибиться по сути — и это будет ошибкой, даже если текст «красивый».
Как понять, что вы усвоили: в генерации ошибка — это нарушение заданных требований (факты, формат, ограничения), а не просто «мне не понравилось».
Теперь — как разработчики измеряют качество на примерах, которых модель не видела. Если проверять модель на тех же данных, на которых её учили, она может «выучить наизусть» и показать отличные результаты, не умея работать в реальной жизни.
Поэтому данные обычно делят на части. Одна часть идёт на обучение: модель подбирает внутренние настройки так, чтобы на этих примерах ошибаться меньше. Другая часть откладывается для проверки: модель эти примеры не использует при обучении, но на них её тестируют. Смысл простой: проверка должна имитировать будущее использование, когда модель сталкивается с новыми входными данными.
На проверочном наборе считают те же показатели ошибки, что и в реальной задаче: долю правильных классификаций, среднюю величину промаха в прогнозе, выполнение требований в генерации. Если качество на обучении высокое, а на проверке заметно хуже, это признак переобучения: модель слишком подстроилась под конкретные примеры, но плохо обобщает, то есть плохо переносит знание на новые случаи.
Как понять, что вы усвоили: честная оценка качества — это оценка на данных, которые модель не видела при обучении.
Отсюда вытекает третий важный момент: нулевая ошибка — тревожный знак, а не идеальный результат. Для новичка это звучит странно, но у этого есть понятные причины.
Первая причина: утечка данных. Это ситуация, когда в обучение случайно попало то, что должно было остаться только для проверки, или когда в признаках есть подсказка, которая «выдаёт ответ». Например, вы хотите предсказать, вернёт ли клиент кредит, и среди входных данных случайно оказалась колонка «статус возврата» (пусть даже в завуалированном виде). Модель покажет идеальную точность — но это обман, потому что в реальной жизни такой подсказки не будет.
Вторая причина: запоминание вместо понимания. Если модель слишком сложная для маленького набора данных, она может выучить частные случаи. На обучающих примерах ошибка станет нулевой, но на новых данных появятся промахи. Это похоже на ученика, который заучил ответы к конкретному тесту, но не понял тему: на другом варианте задания он теряется.
Третья причина: слишком простая задача или слишком «чистые» данные в тесте. Если проверочный набор составлен так, что в нём нет сложных случаев, модель легко покажет идеальный результат, но в реальном потоке данных начнёт ошибаться. Поэтому важно, чтобы проверка была похожа на реальность, а не на «удобные» примеры.
Один сценарий, который помогает связать всё вместе. Представьте, что вы делаете простую систему для отдела продаж: классификация «лид горячий/не горячий» и прогноз «сколько сделок будет на следующей неделе». Вы собрали таблицу прошлых лидов: источник, регион, сумма, дата обращения, результат (купил/не купил).
Шаг 1: вы решаете, что считать ошибкой. Для классификации — неверная метка «горячий/не горячий». Для прогноза — средний промах в количестве сделок.
Шаг 2: вы делите данные: старые записи — на обучение, часть — на проверку, и следите, чтобы одинаковые клиенты не оказались и там и там (иначе модель узнает их и «схалтурит»).
Шаг 3: вы смотрите результаты. На обучении точность 100%, на проверке тоже 100%. Это выглядит как победа.
Шаг 4: вы проверяете, нет ли утечки: находите колонку «дата выставления счёта» — она появляется только когда лид уже почти точно купил. Модель фактически использовала будущее, которое в момент оценки лида неизвестно. Вы убираете колонку, повторяете оценку — и получаете, например, 78% на проверке. Это не провал, а честная картина.
Теперь можно улучшать: собирать больше данных, уточнять признаки, менять порог уверенности, а главное — понимать, где модель ошибается и какой ценой.
После этой главы стоит унести три вещи. Ошибка — это не «мнение», а заранее определённая мера расхождения с эталоном или требованиями, и она разная для классификации, прогноза и генерации. Качество проверяют на данных, которых модель не видела, иначе оценка будет слишком оптимистичной. И если вы видите нулевую ошибку, это повод искать утечку данных или запоминание, а не повод расслабляться.
Глава 9. Переобучение: когда модель «зазубрила»
Вы пробуете ИИ‑сервис: на одних примерах он отвечает идеально, будто «считывает мысли», а на чуть изменённом запросе внезапно начинает путаться. Или вы видите демонстрацию модели, где она безошибочно повторяет ответы из обучающих примеров, но стоит дать новую задачу — и качество резко падает. У начинающих это вызывает простой вопрос: модель «умная» или просто выучила набор заготовок?
Ключевой принцип здесь такой: переобучение — это когда модель слишком хорошо подстроилась под свои учебные примеры и из‑за этого хуже работает на новых. «Учебные примеры» — это данные, на которых модель училась. Переобучённая модель не столько понимает общий смысл задачи, сколько запоминает частные случаи и мелкие детали, которые случайно встретились в обучении.
Как это работает на уровне логики. Во время обучения модель ищет закономерности: что в данных повторяется и помогает делать правильный ответ. Но в данных есть два слоя.
Первый — устойчивые сигналы (например, что в письме‑жалобе обычно есть проблема, просьба и тон). Второй — случайные детали (например, конкретные фразы, редкие имена, совпадения формата, «любимые» слова в нескольких примерах). Если модель начинает опираться на случайные детали, она выглядит сильной на знакомых примерах, но «ломается» на новых.
Признаки переобучения проще всего понять на бытовой аналогии «знает учебник, но не решает новые задачи». Представьте ученика, который выучил ответы к контрольной из сборника. Если попадаются те же задачи — всё отлично. Если числа поменяли местами или задачу переформулировали — ступор. У модели это проявляется так же: она уверенно отвечает, пока запрос похож на то, что она уже видела, и резко теряет качество, когда меняются условия.
Как понять, что вы усвоили:
— Вы можете объяснить разницу между «запомнила примеры» и «выучила правило» на любом простом примере (школьные задачи, шаблоны писем).
— Вы ожидаете, что качество нужно проверять на новых входных данных, а не только на «похожих как в примере».