Перевод книги Эндрю Ына «Страсть к машинному обучению» Главы 30 — 32
30. Интерпретация кривой обучения: Большое смещение
Предположим, ваша кривая ошибок на валидационной выборке выглядит следующим образом:
Мы уже говорили, что если ошибка алгоритма на валидационной выборке вышла на плато, вы вряд ли сможете достигнуть желаемого уровня качества просто добавляя данные.
Но трудно предположить, как будет выглядеть экстраполяция кривой зависимости качества алгоритма на валидационной выборке (Dev error) при добавлении данных. А если валидационная выборка маленькая, то ответить на этот вопрос еще сложнее из-за того, что кривая может быть зашумлена (иметь большой разброс точек).
Предположим, мы добавили на наш график кривую зависимости величины ошибки от количества данных тестовой выборки и получили следующую картину:
Посмотрев на эти две кривые можно быть абсолютно уверенными, что добавление новых данных само по себе не даст желаемого эффекта (не позволит увеличить качество работы алгоритма). Откуда можно сделать такой вывод?
Давайте вспомним следующие два замечания:
- Если мы добавляем больше данных в тренировочную выборку, ошибка алгоритма на тренировочной выборке может только увеличиться. Таким образом, синия линия нашего графика либо не изменится, либо поползет вверх и будет удаляться от желаемого уровня качества нашего алгоритма (зеленая линия).
- Красная линия ошибки на валидационной выборке обычно выше, чем синия линия ошибки алгоритма на тренировочной выборке. Таким образом, здесь ни при каких мыслимых обстоятельствах, добавлении данных не приведет к дальнейшему понижению красной линии, не сблизит ее с желаемым уровнем ошибки. Это практически невозможно, если учесть, что даже ошибка на тренировочной выборке выше желаемой.
Рассмотрение обеих кривых зависимостей ошибки алгоритма от количества данных в валидационной и в тренировочной выборках на одном графике, позволяет более уверенно экстраполировать кривую ошибки обучающегося алгоритма от количества данных в валидационной выборке.
Допустим, что у нас есть оценка желаемого качества работы алгоритма в виде оптимального уровня ошибок работы нашей системы. В этом случае приведенные выше графики являются иллюстрацией стандартного «хрестоматийного» случая как выглядит кривая обучения с высоким уровнем устранимого смещения. На наибольшем размере тренировочной выборки, предположительно, соответствующему всем данным, которые есть в нашем распоряжении, наблюдается большой разрыв между ошибкой алгоритма на тренировочной выборке и желаемым качеством работы алгоритма, что указывает на высокий уровень избегаемого смещения. Кроме того, разрыв между ошибкой на тренировочной выборке и ошибкой на валидационной выборке маленький, что свидетельствует о небольшом разбросе.
Ранее мы обсуждали ошибки алгоритмов, обученных на тренировочной и валидационной выборках только в самой правой точке выше приведенного графика, которая соответствует использованию всех имеющихся у нас тренировочных данных. Кривая зависимостей ошибки от количества данных тренировочной выборки, построенная для разных размеров выборки, используемой для обучения, дает нам более полное представление о качестве работы алгоритма, обученного на различных размерах тренировочной выборки.
31. Интерпретация кривой обучения: остальные случаи
Рассмотрим кривую обучения:
На этом графике зафиксировано высокое смещение, высокий разборос или оба сразу?
Синяя кривая ошибки на тренировочных данных относительно низкая, красная кривая ошибки на валидационных данных значительно выше синей ошибки на тренировочных данных. Таким образом, в данном случае смещение маленькое, но разброс большой. Добавление большего количества тренировочных данных, возможно, поможет закрыть разрыв между ошибкой на валидационной выборке и ошибкой на тренировочной выборке.
А теперь рассмотрим вот этот график:
В этом случае ошибка на тренировочной выборке большая, она существенно выше соответствующей желаемому уровню качества работы алгоритма. Ошибка на валидационной выборке так же существенно выше ошибки на тренировочной выборке. Таким образом имеем дело с одновременно большими смещением и разбросом. Вы должны искать пути уменьшения и смещения и разброса в работе вашего алгоритма.
32. Построение кривых обучения
Предположим у вас очень маленькая тренировочная выборка, состоящая всего из 100 примеров. Вы тренируете ваш алгоритм, используя случайно выбранную подвыборку из 10 примеров, затем из 20 примеров, затем из 30 и так до 100, увеличивая количество примеров с интервалом, состоящим из десяти примеров. Затем используя эти 10 точек вы строите вашу кривую обучения. Вы можете обнаружить, что кривая выглядит зашумленной (значения выше или ниже ожидаемых) на меньших размерах тренировочных выборкок.
Когда вы тренируете алгоритм всего лишь на 10 случайно выбранных примерах, вам может не повезти и это окажется особенно «плохая» тренировочная подвыборка с большей долей неоднозначных / неверно размеченных примеров. Или, наоборот, вам может попасться особенно «хорошая» тренировочная подвыборка. Наличии маленькой тренировочной выборки подразумевает, что значение ошибок на валидационной и тренировочных выборках могут подвергаться случайным флуктуациям.
Если данные, используемые для вашего приложения с использованием машинного обучения сильно смещены в сторону одного класса (как при задаче классификации котов, в которой доля негативных примеров намного больше, чем доля положительных), или если мы имеем дело с большим количеством классов (такой, как распознавание 100 различных видов животных), тогда шанс получить особенно «нерепрезентативную» или плохую тренировочную выборку также возрастает. Например, если 80% ваших примеров являются негативными примерами (y=0), и только 20% — это позитивные примеры (y=1), тогда велик шанс, что тренировочная подвыборка из 10 примеров будет содержать только негативные примеры, в этом случае очень сложно получить от обучаемого алгоритма что-то разумное.
В случае, если из-за зашумленности кривой обучения на тренировочной выборке трудно сделать оценку трендов, можно предложить два следующих решения:
-
Вместо обучения только одной модели на 10 тренировочных примеров, выбором с заменой несколько (скажем от 3 до 10) различных случайных тренировочных подвыборок из первоначальной выборки, состоящей из 100 примеров. Обучите модель на каждой из них и посчитайте для каждой из этих моделей ошибку на валидационной и тренировочной выборке. Посчитайте и нанесите на график среднюю ошибку на тренировочной и на валидационной выборке.
Замечание автора: Выборка с заменой означает следующее: случайно выбираем первые 10 различных примеров из 100, чтобы сформировать первую тренировочную подвыборку. Затем, чтобы сформировать вторую тренировочную подвыборку, снова снова возьмем 10 примеров, но без учета тех, которые выбраны в первой подвыборке (снова из всей сотни примеров). Таким образом, один конкретный пример может оказаться в обоих подвыборках. Это отличает выборку с заменой от выборки без замены, в случае выборки без замены, вторая тренировочная подвыборка выбиралась бы только из 90 примеров, которые не попали в первую подвыборку. На практике способ отбора примеров с заменой или без не должен играть большого значения, но отбор примеров с заменой является обычной практикой.
-
Если ваша тренировочная выборка смещена в сторону одного из классов, или если в нее входит много классов, выберете «сбалансированную» подвыборку, состоящую из 10 тренировочных примеров, выбранных случайным образом из 100 примеров выборки. Например, вы можете быть уверенными, что 2/10 примеров — положительные и 8/10 отрицательные. Если обобщить, то вы можете быть уверены, что доля примеров каждого класса в наблюдаемом наборе данных максимально приближена к их доле в первоначальной тренировочной выборке.
Я бы не стал заморачиваться ни с одним из этих методов до тех пор, пока построение графиков кривых ошибок не приведет к заключению, что эти кривые чрезмерно зашумлены, что не позволяет увидеть понятные тренды. Если у вас большая тренировочная выборка — скажем порядка 10 000 примеров и распределение ваших классов не очень сильно смещенно, возможно вам и не понадобятся эти методы.
Наконец, построение кривой обучения может быть дорогостоящим с вычислительной точки зрения: Например, нужно обучить десять моделей, в первой 1000 примеров, во второй 2000, и так вплоть до последней, содержащей 10 000 примеров. Обучение модели на небольших количествах данных проходит намного быстрее, чем обучение модели на больших выборках. Таким образом, вместо того чтобы равномерно распределять размеры тренировочных подвыборок по линейной шкале, как описано выше (1000, 2000, 3000, …, 10000), вы можете тренировать модели с нелинейным увеличением количества примеров, например, 1000, 2000, 4000, 6000 и 10000 примеров. Это все равно должно дать вам четкое понимание тренда засивисимости качества модели от количества обучающих примеров в кривых обучения. Конечно, этот прием актуален только в том случае, если вычислительные затраты на обучение дополнительных моделей велики.