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

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

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

Однако на практике часто приходится работать со структурированными данными.

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

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

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

  • 3D: тензор (воксели на МРТ снимках)

  • 4D: тензор, описывающий видео-данные (последовательность кадров во времени)

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

  • временных рядов (детекция событий на временном ряде, например, анонс о выплате дивидендов)

  • последовательностей (выделение именованных сущностей в тексте, таких как именя людей и называний компаний)

  • детекция опухолей на МРТ снимках

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

  • понять по временному ряду изменения цены акции к какому сектору экономики принадлежит компания

  • оценка полярности для текстов - положительный или отрицательный человек оставил отзыв на фильм.

  • есть или нет заболевания на МРТ снимке.

Это примеры структурированных данных (structured data). Для отдельного пикселя изображения можно указать, какой пикcель над ним, под ним, какой является соседним, а какой - нет. Причём для двух соседних признаков значения сильно скоррелированы, чего нельзя сказать о более удалённых друг от друга признаков. Поскольку если же брать случайные изображения, то, из-за резких изменений соседних пикселей, они не будут выглядеть натурально, как показано на рисунке:

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

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

Эквивариантность: если на картинке изображён какой-то объект, то если все пиксели сдвинуть на одинаковое расстояние, то объект сдвинется на это же расстояние.

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

Аналогичные свойства справедливы и для других структурированных данных.

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

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

  • свёртка (convolution) локально извлекает признаки инвариантно к расположению на изображении (обеспечивая свойство эквивариантнонсти).

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

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