Это задание было выполнено в рамках проверки концепции Look and Learn, онлайн-библиотеки исторических изображений высокой четкости.

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

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

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

Эффективность уменьшения размерности

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

Например, рассмотрим трехмерный вектор V = [X, Y, Z]. Если Z можно выразить как точную функцию от Y, X, его можно удалить из вектора без удаления какой-либо информации из системы. Мы всегда можем восстановить Z позже, зная X и Y. Даже если Z является неточной функцией X, Y, например Z = X + Y + e, где e - ненаблюдаемая переменная, мы все равно можем удалить Z за счет удаления информация предоставлена ​​e. Потерянная информация увеличивается по мере увеличения дисперсии е. В целом, информацию, потерянную из-за уменьшения размерности, можно найти, уменьшив размерность V, затем восстановив удаленные измерения и сравнив дисперсию исходного и преобразованного векторов. Потерянная дисперсия - это показатель информации, потерянной из-за уменьшения размерности.

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

  1. Матрица (сглаженная) ковариации между текстурами: эта матрица обеспечивает ковариацию между каждой комбинацией двух текстур. Рассмотрим три текстуры i, j, k. Если текстуры i и j коррелированы, а j и k коррелированы, мы ожидаем, что i и k будут коррелированы. Это означает, что измерение ковариации между i и k содержит некоторую избыточную информацию. Матрица удобства содержит тысячи измерений, многие из которых будут избыточными и могут быть удалены без ущерба для большого количества информации.
  2. Вектор того, какая часть изображения состоит из каждого цвета, причем каждое измерение представляет цвет. Некоторые цвета могут никогда не использоваться, поэтому их можно удалить, в то время как другие цвета могут иметь достаточно высокие корреляции, чтобы быть избыточными.

PCA

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

Этот метод оказался очень эффективным, уменьшив размеры на 94%, сохранив при этом 99,3% дисперсии исходных данных.

Автоэнкодеры нейронных сетей

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

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

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