Этот пост намерен продолжить тот же путь, что и мой предыдущий пост (Image2StyleGAN), и представить мои соответствующие работы. Год назад я работал в компании по искусственному интеллекту (ИИ) под названием DIGEVO в Чили. В основном я отвечал за разработку и развертывание моделей компьютерного зрения с глубоким обучением. Это был плодотворный опыт, потому что я лучше понимал производственную сторону ИИ.

Некоторые вещи, которые работают в концепции, не всегда работают на практике.

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

В результате нам удалось опубликовать нашу работу в статье открытого доступа в IEEE Access. Проект под названием Извлечение признаков сверточной нейронной сети с использованием тензорной декомпозиции ковариации предлагает новый метод извлечения признаков из наборов данных изображений с использованием тензора ковариации и разложения Такера.

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

  1. Прямой вывод с использованием этих ядер (заморозить конвекционные слои и обучить только полностью связанные слои).
  2. Инициализация с использованием ядер (обучение всей сети с использованием этих ядер в качестве инициализаторов).

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

Кто я? Всем привет! 👋

Я Оскар, молодой программист из Эквадора. На бакалавриате я получил нестандартное образование по направлениям Искусственный интеллект и Машинное обучение (AI/ML). С этого момента я самостоятельно изучаю AI/ML (в последнее время по более эффективному плану).

Мой путь до сих пор был очень плодотворным и позволил мне достичь нескольких вех. На данный момент мне удалось опубликовать более 4 научных статей. Я работал в отрасли над проектами по компьютерному зрению. Я проходил стажировку в KAUST, Саудовская Аравия, работая над проектами StyleGAN. Я был членом Scientific Computing Group еще в колледже. И последнее, но не менее важное: я недавно стал соучредителем DeepARC, некоммерческой исследовательской группы, которой я больше всего горжусь. Он был создан в сотрудничестве с выпускниками, профессорами и студентами, чтобы стимулировать исследования AI/ML среди студентов бакалавриата.

1. Тензорные принципы

Далее я объясню некоторые концепции, которые вам нужно будет понять в нашей статье.

Если вы здесь, полагаю, вы уже знаете о векторах, матрицах и тензорах. Но кто не знает, тензор — это представление многомерного массива. Для сравнения: вектор — это одномерный массив, а матрица — двумерный массив. Итак, грубо говоря, мы будем вызывать тензор для массива с тремя и более измерениями.

Тем не менее, термин тензор является обобщением для размерных массивов, так что вектор является тензором одного порядка, а матрица является тензором второго порядка.

Тензорное развертывание

Практический способ работы с тензорными представлениями состоит в том, чтобы развернуть тензор в матричное представление. Развертка тензора (также называемая матризацией) с режимом-n сводит тензор к матрице, сохраняя n-е измерение и изменяя (унифицируя) оставшиеся измерения тензора. .

На изображении ниже показаны режимы развертывания тензора третьего порядка 1, 2 и 3. Как видите, мы сохраняем n-е измерение и унифицируем остальные измерения. Например, в тензоре третьего порядка мода 1 соответствует строкам, мода 2 — столбцам, а мода 3 — глубине.

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

Продукт N-режима

Кроме того, мы можем выполнить операцию n-mode product над этими развернутыми представлениями. Произведение n-моды вычисляется между тензором и матрицей, где n-е измерение тензора должно совпадать с последним измерением матрицы.

Произведение n-моды эквивалентно предварительному умножению каждой мод-n-развертки X на U и повторному складыванию результата. Это факт, который помогает нам понять, как выполнять эту операцию.

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

Примечание. Помните, что последнее измерение матрицы должно соответствовать n-му измерению тензора. Так как мы получаем режим продукта 1, то J2=I1. Однако, если нам нужен режим продукта 2, тогда J2=I2. Точно так же, если мы хотим, чтобы продукт был в режиме 3, их J2=I3.

Примечание. Имейте в виду, что n-е измерение тензора заменяется размером J1 матрицы результирующего тензора.

Тензор ковариации

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

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

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

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

На изображении ниже показан ковариационный тензор тензора третьего порядка с размерностями (I1, I2, I3). Мы разрезаем по 3-моде, вычисляем внешнее произведение и суммируем все полученные тензоры.

Примечание. В некотором смысле в ковариационном тензоре мы используем режим n в качестве среза, чтобы получить взаимосвязь между срезами.

Важно реализовать выходные размерности тензора ковариации. Поскольку мы исключаем третье измерение, разрезая его, наши выходные измерения будут заданы внешним произведением оставшихся измерений, так что наши выходные измерения будут (I1, I2, I2, I1).

Разложение Такера

Разложение Такера — это метод тензорной декомпозиции для разложения тензора на основной тензор G и набор матриц ортогональных факторов U. На изображении ниже показано разложение Такера, где мы используем произведения n-мод, так что основной тензор G умножается на моды развертывания U.

Примечание. Здесь я не пишу размеры явно, но мы увидим, что это за размеры позже в основном методе.

Как мы увидим позже, основной тензор инкапсулирует некоторые важные свойства тензора X. Вот почему мы заинтересованы найти его в нашей статье. Поскольку матрицы факторов U ортогональны, мы можем получить их основной тензор с помощью следующего уравнения.

Следовательно, мы должны получить фактор-матрицы U. Пусть у нас есть тензор X; тогда мы можем получить матрицы факторов U, используя Разложение по сингулярным значениям (SVD). В частности, мы должны развернуть тензор X с модой n и вычислить SVD. Результирующая U-матрица из SVD будет нашей факторной матрицей режима n.

Примечание: Этот факт имеет теоретическое объяснение, но его достаточно, чтобы понять, что мы будем применять SVD к развернутым представлениям тензора X.

2. Ковариационный тензорный метод.

Как только мы поймем предварительные положения, приведенные выше, мы можем начать с нашего метода.

Примечание. С этого момента я буду писать новые тензоры, измерения и иллюстрации специально для нашего метода. Не путайте с предыдущим объяснением.

На следующем изображении показан наш метод, называемый Метод тензора ковариации (CovTen). В следующих разделах я объясню поведение каждого из этих модулей один за другим.

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

Таким образом, мы начинаем с заданного набора данныхX и извлекаем примеры изображений один за другим. Пример изображения определяется как

Следовательно, мы извлекаем фрагменты из изображения с учетом шага и размера фрагмента (одинакового для высоты и ширины).

Затем извлеченные патчи группируются в тензор.

Позже мы нашли тензор ковариации (с модой 4) из этого тензора пятен и сохранили полученный тензор.

Результирующий тензор является суперсимметричным, созданным разрезанием с модой 4 и внешним произведением во внутреннем процессе.

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

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

Следующий шаг включает в себя получение факторных матриц (U) из тензора средней ковариации. Здесь, в отличие от стандартного разложения Такера, мы решаем получить только матрицы факторов U1, U2 и U3. Это связано с тем, что ковариационная матрица суперсимметрична, поэтому мы можем получить хорошее приближение тензорного ядра только с этими тремя матрицами.

Примечание. У нас были некоторые ошибки с размерностями разверток и средним тензором ковариации в исходной статье. Здесь эти опечатки были исправлены.

Во-первых, мы должны получить режимы развертывания 1, 2 и 3.

Затем мы применяем разложение по сингулярным числам (SVD) к каждому развертыванию.

Когда у нас есть факторные матрицы, мы можем получить аппроксимацию основного тензора как

Примечание. Применение этих произведений, режимов 1, 2 и 3, аналогично умножению конкретных граней ковариационного тензора на матрицы U режимов 1, 2, 3, как показано на следующем рисунке.

Результирующие размеры основного тензора задаются первым измерением каждой факторной матрицы U и размерами участков.

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

Примечание. Поскольку количество ядер определяется измерениями J1, J2 и J3, вы можете выбрать количество ядер, выбрав, сколько столбцов из U1, U2 или U3 выбрать для построения аппроксимация основного тензора G. Но напомним, что первые столбцы являются более репрезентативными.

На этом этапе вам просто нужно подключить ядра к сверточному слою.

3. Каскадный стиль

Хотя у нас уже есть метод извлечения признаков из набора данных изображений, мы должны учитывать, что сверточная нейронная сеть (CNN) включает в себя несколько слоев. Поэтому нам нужна техника для эффективного подключения к различным слоям.

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

4. Вывод и инициализаторы

Мы проводим два разных теста, чтобы проверить полезность нашего метода.

  1. Вместимость выводов: в этом тесте мы стремимся проверить, достаточно ли репрезентативны извлеченные признаки для выполнения задач различения для классификации изображений. Таким образом, мы замораживаем сверточные слои, чтобы обучать только полносвязные слои.
  2. Инициализация ядра: в этом тесте мы стремимся проверить возможности инициализации наших функций при тщательном обучении CNN (без замороженных слоев).

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

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

5. Заключительные мысли

Большое спасибо, если вы дошли до этого момента; Я действительно ценю это. Надеюсь получить конструктивный совет. Я всегда стремлюсь улучшить качество своих сообщений, и ваши комментарии будут очень ценны для меня.

Кроме того, если вы хотите узнать больше об этой теме, я оставлю некоторую литературу для дальнейшего обзора.

Хорошего дня! :D