Перевод книги Эндрю Ына «Страсть к машинному обучению» Главы 36 и 37

предыдущие главы

Обучение и тестирование на выборках, имеющих разное распределение

36. Когда приходится обучать и тестировать алгоритмы на отличающихся распределениях

Пользователи вашего кошачьего приложения загрузили 10 000 картинок, которые были размечены вами, как изображения с кошками и изображение без кошек. У вас так же есть большая выборка из 200 000 изображений, собранных в Интернете. Как в этом случае выбрать тренировочную, валидационную и тестовую выборки?

Так как 10000 загруженных пользователями изображений точно отражают реальное вероятностное распределение данных, на котором ваш алгоритм должен хорошо работать, вы можете использовать эти картинки для валидационной и тестовой выборок. Если вы обучаете алгоритм глубокого обучения, требующий большого количества данных, вы можете использовать для его обучения 200 000 дополнительных примеров, полученных из Интернета. В этом случае ваша тренировочная и тестовая с валидационной выборки будут иметь разное вероятностное распределение. Как это повлияет на вашу работу?

Вместо того, чтобы возиться с выбором данных для тренировочной, валидационной и тестовой выборок, мы могли бы взять все 210000 имеющихся у нас изображений, перемешаить их и случайным образом выбрать данные для каждой выборки. В этом случае все три выборки будут содержать данные из одного и того же распределения.

Но я против такого подхода. Из-за того, что около 97.6% данных (205,000/210,000 ≈ 97.6%) валидационной и тестовой выборок будут взяты из данных, найденных в Интернете (не полученные от пользователей) и они не будут отражать реального распределения на котором необходимо достигнуть высокого качества. Помните нашу рекомендацию по выбору валидационной и тестовой выборок:

Выбирайте валидационную и тествую выборки, отражающие данные, которые ваш алгоритм будет получать после запуска приложения и на которых он должен хорошо работать

Большая часть академической литературы по машинному обучению предполагает, что тренировочная, валидационная и тестовая выборки берутся из одного и того же распределения.

Замечание автора: Существует несколько научных исследований по обучению и тестированию на различных распределениях. Примеры включают в себя «адаптацию предметной области», «трансферное обучение» и «многозадачное обучение». Но между теорией и практикой все еще существует огромный разрыв. Если вы тренируетесь на наборе данных A и тестируете данные совсем другого типа B, удача может оказать огромное влияние на эффективность вашего алгоритма. (Здесь «удача» включает в себя разработанные вручную функции исследователя для конкретной задачи, а также другие факторы, которые мы просто еще не понимаем.) Это затрудняет систематическое академического изучение обучения и тестирования на различных распределениях.

В начале развития машинного обучения данных было мало. Обычно имелась выборка, полученная из некоторого распределения. Ее случайным образом разбивали на обучающую, валидационную и тестовую. Предположение о том, что все данные поступали из одного и того же источника, автоматически удовлетворялось.

Но в эпоху больших данных появился доступ к огромным обучающим выборкам, таким как изображения кошек в Интернете. Даже если обучающая выборка взята из другого распределения, нежели валидационная и тестовая, мы все равно хотим использовать ее для обучения, поскольку она может оказаться очень информативной.

В примере с детектором кошек вместо того, чтобы разделить все 10000 загруженных пользователем изображений между валидационной и тестовой выборками, мы могли бы использовать 5000 для валидационной и тестовой выборок. А оставшиеся 5000 загруженных пользователями примеров добавить в обучающую выборку. Таким образом, обучающая выборка будет содержать 205 000, 5000 из которых будут из того же распределения, что и обучающая и тестовая выборки и 200 000 изображений, полученных из Интернета. В следующей главе мы обсудим преимущества такого подхода.

Или для второго примера. Предположим, вы создаете систему распознавания речи для транскрибирования уличных адресов, которая будет использоваться для голосового интерфейса картографических и навигационных мобильных приложений. У вас есть 20 000 примеров того, как пользователи произносят названия улиц. Кроме того имеется 500 000 примеров других аудиоклипов, в которых люди говорят на разные темы. Вы можете взять 10 000 примеров произношения адресов для наборов валидационной и тестовой выборок и использовать оставшиеся 10 000 плюс 500 000 примеров для обучающей выборки.

Продолжая действовать так, как будто данные обучающей, валидационной и тестовой выборки имеют одинаковое распределение, мы должны иметь ввиду, что различие в распределениях между обучающей и валидационной с тестовой выборками привносит новые проблемы.

37. В каких случаях нужно использовать все данные, которые у вас есть

Предположим, что в обучающую выборку вашего детектора кошек входит 10 000 загруженных пользователем изображений. Их распределение совпадает с валидационной и тестовой выборками и именно на этом распределении алгоритм должен показывать лучшие результаты. Так же имеются 20 000 изображений, загруженных из Интернета. Нужно ли включить в обучающую выборку все 20 000 + 10 000 = 30 000 изображений для обучения алгоритма или лучше отбросить 20 000 изображений добытых из Интернета, чтобы избежать смещения в работе алгоритма?

При использовании более ранних поколений алгоритмов (таких как разработанные вручную системы компьютерного зрения, в основе которых использовался простой линейный классификатор), существовал реальный риск того, что объединение обоих типов данных приведет к ухудшению качества работы системы. Некоторые инженеры, знающие об этом, могут возражать против включения в обучающую выборку 20000 изображений, полученных из Интернета.

Но в современную эпоху мощных и гибких обучаемых алгоритмов, таких как большие нейронные сети, этот риск значительно уменьшился. Если вы можете позволить себе построить нейронную сеть с достаточно большим количеством скрытых нейронов / слоев, вы можете смело добавлять 20000 изображений в свою обучающую выборку. Добавление изображений, скорее всего, повысит качество работы алгоритма.

Эта уверенность опирается на тот факт, что при использовании сложной системы, найдется некоторое отображение x -> y, которое будет хорошо работать для обоих типов данных. Другими словами, найдется какая-то система, которая, при вводе как изображения из Интернета, так и изображения, полученного из мобильного приложения, надежно и правильно его классифицирует независимо от источника из которого оно получено.

Добавление дополнительных 20000 изображений даст следующие эффекты:

  1. Даст нейронной сети больше примеров того, на что похожи кошки и что кошкой не является. Это полезно для алгоритма, поскольку изображения из Интернета и изображения, загруженные пользователями мобильного приложения, имеют некоторые общие черты. Ваша нейронная сеть сможет применить некоторые знания, полученные при обучении на изображениях из Интернета к изображениям мобильного приложения.
  2. Вынудит нейронную сеть тратить часть своих ресурсов на изучение свойств, характерных для изображений из Интернета (имеющих, например, более высокое разрешение, или другое распределение рамок и т. д.). Если эти свойства сильно отличаются от изображений, загруженных в мобильное приложение, это «израсходует» часть распознающих возможностей нейронной сети. Таким образом, у вас останется меньше возможностей для распознавания данных, полученных из распределения мобильного приложения, и это то, о чем действительно стоит беспокоиться. Теоретически, это может ухудшить качество работы алгоритма.

Второй эффект можно проиллюстрировать, обратившись к вымышленному персонажу. Шерлок Холмс, говорил, что мозг похож на чердак, место на котором ограничено и «при каждом добавлении знаний вы забываете что-то из того, что знали раньше. Поэтому крайне важно не тащить туда все подряд, чтобы бесполезные факты не вытесняли полезные»

К счастью, если имеются достаточные вычислительные мощности, необходимые для построения большой нейронной сети, то в наличие есть большой чердак и это не является серьезной проблемой. Тогда вы имеете достаточно мощностей для обучения как на данных из Интернета, так и на изображениях, загруженных в мобильное приложение, при этом емкости сети достаточно для всех данных. «Мозг» вашего алгоритма достаточно велик, чтобы вам не приходилось беспокоиться о том, что вам не хватает чердачного пространства.

Но если у вас нет достаточно большой нейронной сети (или другого столь же мощного алгоритма обучения), то вам следует уделять больше внимания тому, чтобы распределение вашей обучающей выборки соответствовало распределению валидационной и тестовой выборкам.

Если вы считаете, что у вас есть данные, которые не приносят никакой пользы, следует отказаться от них для экономии вычислительных мощностей. Например, предположим, что валидационная и тестовая выборки содержат в основном случайные изображения людей, мест, ориентиров, животных. Допустим, также имеется большая коллекция отсканированных исторических документов:

image

Эти документы не содержат ничего напоминающего котов. Они также совершенно непохожи на распределения валидационной и тестовой выборок. Нет никакого смысла включать эти данные в качестве отрицательных примеров. Выгода от первого эффекта, описанного выше будет ничтожной — нейронная сеть вряд ли сможет извлечь из этих данных что-то, что поможет ей лучше работать на валидационной и тестовой выборках вашего приложения. Включение этих данных приведет к потере вычислительных ресурсов и возможно уменьшит способность нейронной сети к аппроксимации функций (в конечном счете уменьшит ее распознающие возможности).

ссылка на оригинал статьи https://habr.com/ru/post/499978/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *