Обработка структурированных данных
Раньше мы работали с вектором признаков , предполагая неструктурированность признаков (unstructured data) - если признаки переставить в другом порядке и соответствующим образом поменять веса модели, то результат не изменится.
Однако на практике часто приходится обрабатывать структурированные данные (structured data), в которых позиция, на которой стоит тот или иной признак имеет значение:
-
1D: временной ряд (например, цены на акцию),
-
1D: последовательность (слова в предложении),
-
2D/3D: матрица/тензор (интенсивность пикселей на чёрно-белом/цветном изображении),
-
3D: тензор (воксели на МРТ снимках),
-
4D: видео-данные (последовательность кадров во времени).
Если мы обрабатываем временной ряд, то позиции отвечает время наблюдения, задающее структуру временного ряда и влияющее на результат обработки.
Аналогично изображение задаётся матрицей или тензором пикселей, позиции которого соответствует пространственное расположение этого пикселя. Используя эту струтктуру, для каждого пикселя изображения можно указать, какой пикcель над ним, под ним, какой является соседним, а какой - нет. Причём для двух соседних признаков значения сильно скоррелированы, чего нельзя сказать о более удалённых друг от друга признаков.
Обычно структурированные данные обладают высокой размерностью (например, чёрно-белое изображение 1000x1000 - это уже 1.000.000 признаков!). Применять к ним многослойный перспетрон или другую стандартную параметрическую модель машинного обучения не разумно, т.к. пропорционально числу входных признаков возрастёт и число оцениваемых параметров, что приведёт к переобучению и потребует слишком больших выборок для оценивания модели.
На помощь при обработке таких данных приходят свойства эквивариантности (equivariance) и инвариантности (invariance) к пространственному изменению входных данных.
Эквивариантность: если на картинке изображён какой-то объект, то если все пиксели сдвинуть на одинаковое расстояние, то объект сдвинется на это же расстояние. Следовательно эквивариантная функция, применённая к сдвинутому изображению, должна выдать сдвинутый соответствующим образом результат.
Инвариантность: если на картинке изображён какой-то объект, то при сдвиге пикселей будет изображён всё тот же объект. Следовательно инвариантная функция, применённая к сдвинутому изображению должна выдать тот же самый результат.
Аналогичные свойства справедливы и для других структурированных данных.
Также на помощь при обработке структурированых данных приходит свойство иерархичности локальных представлений (hierarchical representation). Если на картинке изображёна машина, то она локализована на каком-то его участке, состоит из еще более малых участков, отвечающих дверям, стёклам, колёсам, и т.д., которые состоят из ещё более мелких участков, отвечающих текстуре металлического покрытия, стекла, резины и т.д. вплоть до базовых геометрических примитивов, таких как определённое изменение цветов для соседних пикселей. Аналогичные рассуждения справедливы и для обработки временных рядов, последовательностей и т.д.
Моделировать эти свойства позволяют следующие конструкции:
-
свёртка (convolution) локально извлекает признаки инвариантно к расположению на изображении, обеспечивая его эквивариантную обработку.
-
пулинг (pooling) обеспечивает инвариантность к небольшим сдвигам изображения.
-
цепочка последовательно применяемых свёрток и пулингов моделирует иерархичность локальных представлений.
В следующих главах мы детально разберём операции свёртки и пулинга для обработки последовательностей и временных рядов. В отдельном разделе ра зберём, как эти операции применяются для обработки изображений.
Поняв общий принцип, вы легко сможете его обобщить на трехмерные и четырёхмерные данные.