Этот проект отличается от типичных классификационных приложений двумя заметными способами:
- Вместо вывода класса, которому, как считается, принадлежит новый объект (или, возможно, вывода массива этих классов, каждый с уровнем вероятности / доверительной вероятности), «классификатор» предоставляет список «соседей», которые «близки» достаточно "для нового объекта.
- При каждой новой классификации целевая функция, независимая от классификатора, предоставляет список правильных «соседей»; в свою очередь исправленный список ( подмножество списка, предоставленного классификатором?) затем используется для обучения классификатора
Идея, стоящая за вторым пунктом, заключается в том, что, вероятно, будущие объекты, представленные в классификатор и имеющие сходство с текущим объектом, должны лучше "классифицироваться" (быть связанными с более правильным набором ранее замеченных объектов) с момента продолжающегося обучения восстанавливает связь с положительными (правильными) совпадениями, в то же время ослабляя связь с объектами, которые классификатор изначально ошибся.
Эти две характеристики создают различные проблемы.
- Тот факт, что выходные данные являются списком объектов, а не «прототипом» (или своего рода идентификатором категории), затрудняет масштабирование, так как количество видимых объектов до сих пор увеличивается к миллионам экземпляров, как предлагается в вопросе.
- Тот факт, что обучение проводится на основе подмножества совпадений, найденных классификатором, может привести к переопределению, в результате чего классификатор может стать "слепым" к признакам (измерениям), которые он, случайно, не весил как важный / релевантный, в ранних частях обучения. (Возможно, я слишком много думаю о целевой функции, отвечающей за создание списка «правильных» объектов)
Возможно, проблема масштабирования может быть решена с помощью двухэтапного процесса, с первым классификатором, основанным на алгоритме K-средних или чем-то подобным, что приведет к подмножеству всей совокупности объектов (объектов, которые ранее видели) как правдоподобные совпадения для текущего объекта (эффективно отфильтровывая, скажем, 70% или более от сбора). Эти возможные совпадения будут затем оцениваться на основе модели векторного пространства (особенно важно, если размеры элементов основаны на факторах, а не на значениях) или на некоторых других моделях. Основное предположение для этого двухэтапного процесса состоит в том, что коллекция объектов будет эффективно выставлять кластеры (она может быть просто относительно равномерно распределена по различным измерениям).
Еще один способ еще более ограничить число кандидатов для оценки по мере увеличения размера ранее замеченных объектов - это удалить почти дубликаты и сравнить только с одним из них (но в результате предоставить полный дубликат списка в результате, при условии, что если новый объект близок к «представителю» этого почти дублированного класса, все члены класса также будут совпадать)
С проблемой перетяжки сложнее справиться. Возможный подход заключается в том, чтобы [иногда] случайным образом добавлять объекты в список соответствия, который классификатор обычно не включает. Дополнительные объекты могут быть добавлены на основе их расстояния относительно расстояния до нового объекта (то есть, становится более вероятным, что будет добавлен относительно близкий объект)