Рассмотрение аномальных событий как проблемы бинарной классификации не идеально по двум причинам:

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

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

Приведенная выше блок-схема объясняет работу обученного автоэнкодера ConvLSTM.

  • Восстановленный клип выводится автоэнкодером
  • Основываясь на ошибке (стоимости реконструкции) между исходным и реконструированным клипом, мы можем определить, является ли конкретный кадр ненормальным.

Транспортное средство на пешеходной дорожке — ненормально

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

Почему автоэнкодеры?

Какая польза от AE, если он просто собирается восстановить ввод? — Ответ заключается в том, что при реконструкции АЭ фактически изучает представление вектора меньшей размерности «h» многомерного ввода «x».

Так это похоже на PCA? — Да, в некотором роде. Если нет никаких функций активации, таких как сигмоид, тангенс и т. д., и в качестве функции потерь используется среднеквадратическая ошибка, скрытый вектор является не чем иным, как основным компонентом PCA. Но здесь мы используем нелинейную функцию активации в конце каждого слоя, так что это можно рассматривать как нелинейную форму PCA, скрытый вектор которой «h» является значимым представлением входного изображения. Интуиция такова, что при восстановлении «x» из этого скрытого вектора «h» некоторые детали будут отброшены в нашем случае аномалий. Сравнение этого изображения с исходным изображением дает ошибку реконструкции RC.

Скрытое представление также является тем, с чем мы столкнулись при распознавании лиц, уменьшая лица до 128D и векторного представления 1024D.

Существуют разные варианты AE, служащие разным целям, больше о которых можно узнать по ссылке ниже.

https://towardsdatascience.com/deep-inside-autoencoders-7e41f319999f

Теперь мы можем найти пространственно закодированный вектор «h» (уровень узкого места) для изображения, используя этот подход, но нам также нужно знать представление предыдущих кадров, чтобы уменьшить его до осмысленного представления, другими словами, нам нужен временной компонент, а также кодировать . Вот где LSTM приходит на помощь

Как видите, после обычного слоя Conv есть временной кодировщик, здесь он уменьшен до 32-мерного вектора из 256-мерного вектора.

Именно из этого слоя узкого места мы создаем декодер с симметричной структурой для вывода того же 256D вывода. Слои deconv представляют собой не что иное, как операцию обратной свертки, что-то вроде повышающей дискретизации изображения с использованием техники интерполяции, за исключением того, что здесь повышающая дискретизация изучается, а не проектируется как бикубическая или билинейная. Более подробное объяснение есть

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

Подробнее о LSTM объясняется ниже:

Прежде чем мы перейдем к специфике, давайте немного прочувствуем основы.

LSTM — это особый тип рекуррентной нейронной сети. Точно так же, как NN захватывает такие функции, как края, форма и функции высокого уровня, RNN захватывает последовательную информацию, например: если на изображении присутствует луна, модель должна помнить это как ночное время, если есть люди, закрывающие глаза на пляже , следует знать , что они загорают , а не спят .

Но эта последовательная информация недолговечна, а это означает, что если он увидит кадр в каком-то месте в США и через 2,3 кадра увидит человека, поедающего суши, он может сделать вывод, что он находится в Японии. Математически градиенты, передающие эту информацию во время обратного распространения, могут исчезнуть или взорваться. Это проблема, которую решают LSTM, запоминая долговременную информацию.

Ниже приведено интуитивное понимание различий между NN, RNN и LSTM.

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

Теперь перейдем к конкретике:

LSTM включает в себя множество механизмов стробирования, которые работают в унисон для вывода значений и состояния ячейки. Состояние ячейки — это состояние, которое содержит всю информацию о том, что она узнала до сих пор, которая при передаче на последующие уровни обновляется.

Входные ворота:

Давайте использовать другую номенклатуру для лучшего понимания

At — кандидат на добавление в долговременную память

ft — запомнить ворота [определяет, сколько нужно сохранить ltm-кандидата]

Это — save gate [определяет, сколько старого ltm оставить]

Ot — [определяет, на каких частях обновленного ltm сосредоточиться]

Out(t-1) изначально равен 0 (время = 0)

Состояние — новое состояние ltm = запомнить ворота * старый ltm + сохранить ворота * новый кандидат ltm

Каждая ячейка выводит указанное выше состояние и выводит значения на следующие слои.

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

Подробнее о работе LSTM вместе с обратным распространением, объясненным математически, как показано ниже, можно найти здесь

ConvLSTM против LSTM:

Существует два подхода при работе с последовательными изображениями:

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

Подробнее об их реализации можно прочитать здесь

Полезные ссылки:

https://hackernoon.com/understanding-architecture-of-lstm-cell-from-scratch-with-code-8da40f0b71f4

http://karpathy.github.io/2015/05/21/rnn-эффективность/

http://colah.github.io/posts/2015-08-Понимание-LSTMs/

https://towardsdatascience.com/step-by-step-understanding-lstm-autoencoder-layers-ffab055b6352

https://drive.google.com/file/d/1RTLuTLWzyGUNvXstOdYlhdN-HbnGBntg/view

https://medium.com/activating-robotic-minds/up-sampling-with-transposed-convolution-9ae4f2df52d0

Первоначально опубликовано на http://docs.google.com.