1 - Да, порядок изображений влияет на результат [1], и, что более важно, он влияет на скорость, с которой ваш алгоритм будет учиться.По сути, ваш алгоритм пытается выучить конфигурацию весов, которые минимизируют вашу функцию потерь для всех примеров, которые вы ей показываете.Это достигается путем размещения этих весов в конфигурации, которая обнаруживает те особенности в данных, которые различают кошек и собак.Но он делает это только с учетом одного пакета входов за раз.Каждое изображение в пакете рассматривается индивидуально, и подпорка решает, как следует изменить вес, чтобы алгоритм лучше обнаруживал кошку / собаку на этом изображении.Затем он усредняет все эти изменения для каждого изображения в партии и выполняет эту настройку.
Если ваша партия содержит все ваши изображения, то порядок не имеет значения;он внесет корректировку, которая, как он ожидает, обеспечит наибольшее чистое снижение вашей функции потерь для всех данных.Но если партия содержит меньше, чем все данные (что она неизменно делает), тогда она вносит корректировку, которая помогает обнаруживать собак / кошек только на изображениях в этой партии.Это означает, что если вы покажете ему больше кошек, чем собак, он решит, что особенность, принадлежащая в равной степени как кошкам, так и собакам, фактически создает повышенную вероятность того, что рассматриваемое животное является кошкой, что является ложным.Потому что в тех случаях, когда эта особенность была обнаружена, с большей вероятностью были кошки.Это исправит себя со временем, так как соотношение кошек и собак выровняется, но примет окончательную конфигурацию гораздо медленнее, потому что ему придется выучить и отучить ненужные функции в данных.
КакНапример, в вашей настройке к тому времени, когда ваш алгоритм обнаружил половину данных, все, что он узнал, это то, что «все, что похоже на кошку или собаку - это собаки».Те особенности, которые различают кошек и собак на изображениях, не помогли снизить вашу функцию потери.На самом деле он будет иметь плохо изученные функции, общие как для кошек, так и для собак как специфичные для собак, и ему придется позже их отучить, поскольку он увидит больше данных.
С точки зрения общего результата: в процессе обучения вы, по существу, проходите пространство многомерной оптимизации, следуя его градиенту, пока конфигурация весов не достигнет локального минимума в этом пространстве, из которогоВеличина барьера для преодоления превышает уровень, который разрешен вашей скоростью обучения.Отображение одного класса, а затем другого приведет к более извилистому пути к глобальному минимуму и, таким образом, увеличит вероятность застрять в неоптимальном локальном минимуме.[2]
2 - Если все изображения в вашем наборе данных содержат собаку, вы действительно хотите пометить эту собаку на каждом изображении.Это делает три вещи:
- Удваивает размер вашего набора данных (больше данных = лучшие результаты).
- Предотвращает ложное наказание модели за точное обнаружение собаки на изображениях, где выне помечены собаки.
- Запрещает алгоритму обнаруживать несвязанные функции на изображениях.
Удвоение размера набора данных хорошо по очевидным причинам.Но, показывая входные данные, которые содержат собаку, без обозначения этой собаки, вы по сути говорите своему алгоритму, что это изображение содержит no dog [3].Что является ложным.Вы, по сути, меняете шаблоны, которые вы просите, чтобы алгоритм обнаружил, из тех, которые могут отделить кошка / собака от «без кошки / собаки» и кошка против собаки от чьих, которые могут отделить помеченные собаки против непомеченных собак , которые не являются полезными функциями для вашей задачи.
И наконец, если вы не обозначите половину собак, ваш алгоритм научится различать тех собак, которые помечены, и тех, которые не помечены.Это означает, что вместо изучения общих для собак особенностей он будет изучать особенности, которые отделяют этих собак на помеченных изображениях от изображений на немаркированных изображениях.Это могут быть фоновые элементы на изображениях или небольшие обобщения, которые более отчетливо проявляются у помеченных собак, которые немаркированы случайно.
3 - Этот вопрос немного сложнее,и здесь нет простого решения вашей проблемы.Ваша модель может изучать только те особенности, которым она подвергается во время обучения, и это означает, что если вы покажете ей только одно изображение кошки (или несколько изображений, на которых изображение кошки идентично), ваша модель изучит особенности, характерные для этого одного изображения.,Это быстро приведет к общей проблеме переоснащения , когда ваша модель изучает особенности, характерные для ваших тренировочных примеров и плохо обобщающие для других примеров кошек.
Это будетНедостаточно обрезать кошку во время тренировки, а затем просто включить кошку в набор данных eval, потому что вы будете просить модель определить особенности, которым она не подвергалась во время тренировки и, следовательно, не научилась.
Вы хотите включить вашу помеченную кошку в каждый экземпляр, в котором она появляется в ваших данных, и упорядочить вашу сеть, чтобы ограничить избыточную подгонку.В дополнение к этому при наличии недостатка данных часто бывает полезно использовать предварительное обучение для изучения особенностей кошек по немеченым данным до обучения и / или использовать увеличение данных искусственно увеличивать разнообразие ваших данных.
Эти предложения могут улучшить ваши результаты, но реальность такова, что выбор больших, разнообразных наборов данных, которые всесторонне включают в себя те функции, которые являются ключевыми для идентификации вашего объекта, является основнойчасть построения успешной модели глубокого обучения.Это зависит от того, насколько однородны экземпляры кошки в ваших данных, но если ваша модель только когда-либо видела кошку спереди, она не будет узнавать кошку сзади.
TLDR:
- 1 ДА, перемешайте их.
- 2 ДА, пометьте их всех.
- 3 Получите более качественные данные.Или: предварительная подготовка, упорядочение и расширение данных.
[1] Это зависит от размера пакетов, в которые вы вводите свои данные в модель.
[2] Это основано на моей собственной интуиции, и я рад, что меня здесь поправили.
[3] Это в некоторой степени зависит от того, как ваша функция потерь обрабатывает изображения, в которых нет собаки.