Сиамские нейронные сети (Siamese neural networks) в MLOps

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Сиамская нейронная сеть (иногда называемая двойной нейронной сетью) — это разновидность искусственной нейронной сети (artificial neural network), которая состоит из двух идентичных нейронных подсетей с одинаковыми наборами весов. Данный вид сетей позволяет сравнить вектора признаков двух объектов с целью выделить их семантическое сходство или различие. Сиамская нейронная сеть представляет собой нелинейное отображение данных с целью приблизить друг к другу схожие объекты и разнести различные объекты на максимально возможное расстояние. Сиамские сети получили свое название от сиамских близнецов, физически приросших друг к другу, из-за использования сразу двух подсетей, разделяющих один набор весов. Эти подсети могут быть представлены многослойными перцептронами (multilayer perceptron), сверточными нейронными сетями (convolutional neural network) и другими.

Рассмотрим следующую ситуацию: некоторая компания хочет создать систему, которая, основываясь на фотографии лица человека, могла бы установить, является ли он ее сотрудником. В этом случае она, например, разрешает ему доступ на территорию предприятия. Пусть в компании работает n человек. Тогда может быть выделено n+1 классов (n классов сотрудников и один класс не сотрудника). Каждый из этих классов может быть записан в форме вектора длины n+1 с помощью one-hot кодирования. Для решения задачи классификации фотографии в один из выделенных n+1 классов может быть использована сверточная нейронная сеть, возвращающая класс сотрудника в векторной форме. Однако число сотрудников компании может меняться, старые работники могут увольняться, а на их место приходить новые. Каждое такое изменение потребовало бы переобучения всей сети, что может быть накладно для крупных компаний. Более того, не все сотрудники имеют большое количество своих фотографий (необходимое для обучения сверточной нейронной сети), или не желают делиться большей их частью.

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

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

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

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

Сиамские сети использовались для отслеживания объектов из-за их уникальных двух тандемных входных данных и измерения сходства. При отслеживании объектов одним входом сети twin является предварительно выбранное пользователем образцовое изображение, другим входом является увеличенное поисковое изображение, задача сети twin network - найти образец внутри поискового изображения. Измеряя сходство между образцом и каждой частью поискового изображения, сеть-близнец может выдать карту показателей сходства. Кроме того, используя полностью сверточную сеть, процесс вычисления показателя сходства каждого сектора может быть заменен только одним уровнем взаимной корреляции.


Источник: vk.com

Комментарии: