Siamese network нейронная сеть близнецов — простая и волшебная структура
- происхождение имени
Сиамцы и китайцы немного похожи. Сиам — это название Таиланда в древние времена, а в китайском переводе — Сиам. Сиамцы также означают «сиамцев» или «тайцев». Сиамский означает «близнец» и «сросшийся» на английском языке Почему?
Пара сиамских близнецов родилась в Таиланде в 19 веке. Медицинские технологии того времени не могли разделить их двоих, поэтому двое упорно жили всю жизнь. Они были обнаружены британскими бизнесменами в 1829 году, поступили в цирк и выступили по всему миру.В 1839 году они посетили Северную Каролину в США и позже стали "Цирк ЛинлинТайчжу и, наконец, стал американским гражданином. 13 апреля 1843 года он женился на двух британских сестрах. Энь родила 10 детей, а Чан родила 12. Когда сестры ссорились, братья по очереди жили в дома каждой жены в течение трех дней Эн умер от болезни легких в 1874 году, а вскоре после этого умер еще один, оба в возрасте 63 лет. Их печень до сих пор хранится в Филадельфии.Музей МэттаВнутри. С того времени"сиамские близнецы«(Сиамские близнецы) стали синонимом сиамских близнецов, и из-за этих близнецов мир обратил внимание на это особое заболевание.
image
Что касается того, как сиамские близнецы и британские сестры родили 22 ребенка соответственно, каждый должен решить сам.
Проще говоря, сиамская сеть — это «сиамская нейронная сеть», а «сиамская» нейронная сеть достигается за счет разделения весов, как показано на следующем рисунке.
image
У вас могут возникнуть вопросы: что значит делиться весами? Веса левой и правой нейронных сетей абсолютно одинаковы?
Ответ: Да, когда код будет реализован, это может быть даже одна и та же сеть, и нет необходимости реализовывать еще одну, потому что веса одинаковы. Для сиамской сети обе стороны могут быть как lstm, так и cnn.
У вас могут возникнуть вопросы: если левая и правая части не имеют общих весов, а являются двумя разными нейронными сетями, как они называются?
Ответ: псевдосиамская сеть, псевдодвойная нейронная сеть, как показано на следующем рисунке. Для псевдосиамской сети две стороны могут быть разными нейронными сетями (например, одна — lstm, другая — cnn) или это может быть нейронная сеть одного типа.
image
2. Какова цель сиамской нейронной сети?
Проще говоря, измерьте, насколько похожи два входа. Двойная нейронная сеть имеет два входа (Input1 и Input2) и подает два входа в две нейронные сети (Network1 и Network2), которые соответственно отображают вход в новое пространство, формируя вход в новом представлении пространства. Посредством расчета Loss оценивается сходство двух входов.
Согласно информации, которую я нашел, товарищ Якулт опубликовал статью «Проверка подписи с использованием «сиамской» нейронной сети с временной задержкой» на NIPS 1993 для проверки подписи на чеках США, то есть для проверки подписи на чеке и зарезервированном банке. Является ли подпись последовательной. В 1993 году товарищ Якульт использовал две сверточные нейронные сети для проверки подписи, а я как раз родился, как новая нейронная сеть, родившаяся несколько лет назад, обучаемая моими родителями.
image
С появлением таких алгоритмов, как SVM, нейронные сети были забыты людьми, но, к счастью, есть настойчивые люди, которые придерживаются позиции исследования нейронных сетей. В 2010 году Хинтон опубликовал статью «Выпрямленные линейные единицы улучшают ограниченные машины Больцмана» на ICML, которая использовалась для проверки лица, и эффект был очень хорошим. Принцип очень прост, загрузите два лица в свёрточную нейронную сеть и выведите одинаковые или разные.
image
Какие? Сиамская сеть может делать только две классификации?
Нет, нет, есть еще много вещей, которые он может делать, о чем будет рассказано позже.
3. К каким сценариям применимы сиамские нейронные сети и псевдосиамские нейронные сети?
Вывод первый: сиамские нейронные сети используются для решения ситуации, когда два входа «сравнительно похожи». Псевдосиамские нейронные сети подходят для работы с двумя «несколько разными» входными данными. Например, если мы хотим вычислить семантическое сходство двух предложений или слов, то лучше использовать сиамскую сеть; если мы проверяем, соответствует ли описание заголовка описанию текста (длина заголовка и текст сильно отличается) или если текст описывает изображение (а — это изображение, один — это текст), вам следует использовать псевдосиамскую сеть. То есть необходимо решить, какую структуру и какие потери следует использовать в соответствии с конкретным приложением.
4. Какая сиамская функция потерь в сети обычно используется?
Softmax, безусловно, хороший выбор, но не обязательно оптимальный, даже в задачах классификации. Традиционная сиамская сеть использует Contrastive Loss. Есть больше вариантов для функций потерь.Первоначальная цель сиамской сети состоит в том, чтобы вычислить сходство двух входов. Левая и правая нейронные сети соответственно преобразуют входные данные в «вектор», и в новом пространстве сходство можно получить, оценив косинусное расстояние. Косинус - это выбор, функция ехр тоже выбор,Евклидово расстояние что угодно, цель обучения состоит в том, чтобы сделать расстояние между двумя одинаковыми входными данными как можно меньшим, а расстояние между двумя разными классами входных данных — как можно большим. У меня нет большого опыта работы с другими метриками расстояния.Вот краткое введение в разницу между косинусом и exp в НЛП.
Согласно экспериментальному анализу, косинус больше подходит для измерения семантического сходства на уровне слов, а exp больше подходит для измерения сходства текста на уровне предложений и абзацев. Причина может заключаться в том, что косинус вычисляет только угол между двумя векторами, exp также может сохранять информацию о длине двух векторов, а предложение содержит больше информации (конечно, никаких экспериментов для проверки этого не проводилось).
Мы использовали расстояние exp для мультиклассификации в статье, чтобы решитьFakenewschallengeВопрос о том, соответствует ли заголовок выше положению основного текста.
5. Сиамская сеть - это сиамские близнецы, могут ли быть сиамские целые тройни?
Извините, кто-то уже настроил его, он называется Triplet network, статья «Глубокое метрическое обучение с использованием Triplet network», входных данных три, один положительный пример + два отрицательных примера или один отрицательный пример + два положительных примера, обученный цель состоит в том, чтобы сделать расстояние между одними и теми же классами как можно меньше, а расстояние между разными классами как можно больше. Результаты Triplet очень хороши на наборах данных cifar и mnist, превосходя сиамскую сеть. Будут ли четверняшки и пятерняшки лучше? . . . . . Еще не видел. . . .
image
6. Каковы виды использования сиамской сети?
Это можно сказать слишком много, есть много приложений в области nlp & cv.
- Анализ семантического сходства вышеупомянутой лексики, сопоставление вопроса и ответа в QA, проверка подписи/лица.
- Сиамскую сеть также можно использовать для распознавания рукописного ввода, а код github доступен в Интернете.
- Существует также парное соревнование Quora на kaggle, то есть чтобы определить, являются ли два вопроса одним и тем же вопросом, команда-чемпион использует n мультифункций + сиамскую сеть, и команда Zhihu также может играть с этой моделью.
- На изображении алгоритм визуального отслеживания, основанный на сиамской сети, также стал горячей точкой.Fully-convolutional siamese networks for object tracking".