Перейти к основному содержимому

Обработка структурированных данных

Раньше мы работали с вектором признаков x=[x1,x2...xD]\mathbf{x}=[x_1,x_2...x_D], предполагая неструктурированность признаков (unstructured data): если признаки переставить в другом порядке и соответствующим образом поменять веса модели, то результат не изменится.

Однако на практике часто приходится обрабатывать структурированные данные (structured data), в которых позиция, на которой стоит тот или иной признак, имеет значение.

Приведём примеры структурированных данных:

  • 1D: временной ряд (динамика цен на акцию);

  • 1D: последовательность (слова в предложении);

  • 2D/3D: матрица/тензор (интенсивность пикселей на чёрно-белом/цветном изображении);

  • 3D: тензор (воксели [1] на снимках магнитно-резонансной томографии),

  • 4D: видеоданные (последовательность кадров во времени).

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

Аналогично изображение задаётся матрицей или тензором пикселей, позиции которого соответствует пространственное расположение пикселя. Используя эту структуру, для каждого пикселя изображения можно указать, какой пикcель расположен над/под ним, и расположен ли он слева или справа. Причём для двух соседних признаков значения сильно скоррелированы, чего нельзя сказать о более удалённых друг от друга пикселях.

Обычно структурированные данные обладают высокой размерностью (например, чёрно-белое изображение 1000x1000 - это уже 1.000.000 признаков!). Применять к ним многослойный персептрон или другую стандартную параметрическую модель машинного обучения неразумно, так как пропорционально числу входных признаков возрастёт и число оцениваемых параметров, что приведёт к переобучению и потребует слишком больших выборок для оценивания модели.

На помощь при обработке таких данных приходят свойства эквивариантности (equivariance) и инвариантности (invariance) к пространственному изменению входных данных.

Инвариантность

Если на картинке изображён какой-то объект, то при сдвиге пикселей будет изображён всё тот же объект.

Следовательно, инвариантная функция, применённая к сдвинутому изображению, должна выдать тот же самый результат.

Инвариантный к сдвигу SS оператор ff обладает свойством:

f(S(x))=f(x)f(S(\mathbf{x}))=f(\mathbf{x})

Инвариантность важна при классификации изображений.

Эквивариантность

Если сдвинуть все пиксели изображения на одинаковое расстояние, то все объекты изображения также сдвинутся на это расстояние.

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

Эквивариантный к сдвигу SS оператор ff обладает свойством:

f(S(x))=S(f(x))f(S(\mathbf{x}))=S(f(\mathbf{x}))

Эквивариантность важна при сегментации изображений.

Мы определили понятия инвариантности и эквивариантности для изображений, но аналогично эти понятия действуют и для других структурированных данных.

Также на помощь при обработке структурированных данных приходит свойство иерархичности локальных представлений (hierarchical representation), состоящей в том, что сложный объект пространтвенно состоит из более простых объектов.

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

Моделировать эти свойства позволяют следующие конструкции:

  • свёртка (convolution) локально извлекает признаки, обеспечивая его эквивариантную обработку;

  • пулинг (pooling) обеспечивает приближённую инвариантность к небольшим сдвигам изображения;

  • цепочка последовательно применяемых свёрток и пулингов моделирует иерархичность локальных представлений.

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

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

Литература

  1. Wikipedia: Воксел.