14
правок
Изменения
м
Исправлены мелкие ошибки
[[Файл:Siamese neural net architecture types.png|thumb|300px| Рисунок 2 — основные типы архитектур сиамской нейронной сети.]]
Зададимся набором данных <math>\{(x_i, y_i), i = 1, \dots, n\}</math>, состоящим из <math>n</math> векторов признаков <math>x_i \in R^m</math> размера <math>m</math> с метками <math>y_i \in \{1, 2, \dots, C\}</math>. Создадим обучающий набор данных <math>S = \{(x_i, x_j, z_{ij}), i = 1, \dots, n; j = 1, \dots, n\}</math>, состоящих из пар <math>(x_i, x_j)</math> с бинарными метками <math>z_{ij}</math>. Если оба вектора признаков <math>x_i</math> и <math>x_j</math> принадлежат к одному и тому же классу, то <math>z_{ij} = 0</math>, иначе <math>z_{ij} = 1</math>. Разделим обучающий набор данных <math>S</math> на два подмножества: одно — со схожими парами (или с <math>z_{ij} = 0</math>), другое — с различающимися парами (или с <math>z_{ij} = 1</math>). Будем подавать наши пары векторов на вход сиамской подсетисети.
В общем случае сиамская сеть состоит из двух подсетей, выходы которых подаются на вход другого модуля, который генерирует конечный выход. Рассмотрим Рис. 1, на котором <math>x_i</math> и <math>x_j</math> — это входы, <math>W</math> — общие веса/параметры, а <math>h_i \in R^D</math> и <math>h_j \in R^D</math> — выходы обеих подсетей. Сиамская сеть представляет собой отображение <math>h_i = f(x_i)</math>, для которого Евклидово расстояние <math>d(h_i, h_j)</math> максимально мало́ при <math>y_i=y_j</math> и максимально велико при <math>y_i \neq y_j</math>. Сеть возвращает оценку <math>o_W</math> того, насколько различны <math>x_i</math> и <math>x_j</math>.
<math>l(x_i, x_j, z_{ij}) = (1-z_{ij})||h_i-h_j||_2^2+z_{ij}\max(0, \tau-||h_i-h_j||_2^2)</math>,
где <math>\tau</math> — это заранее заданный предел. Вторая функция потерь — triplet loss function — требует использует объект рассматриваемого класса (или якорь, англ. anchor) <math>h_i</math>, с которым будет проводиться сравнение, а также два других объекта: один принадлежащий к тому же классу (англ. neighbor) <math>h_j</math>, и один не принадлежащий к этому классу (англ. distant) <math>h_k</math>:
<math>l(x_i, x_j, x_k) = \max(0, ||h_i-h_j||_2^2 - ||h_i-h_k||_2^2 + \alpha)</math>,
где <math>\alpha</math> — это заранее заданный предел. Обе функции стремятся приблизить похожие объекты, и увеличить расстояние между разными объектами. В некоторых случаях возможно их совместное применение для достижения наилучшего результата<ref name="both">X. Di and V. M. Patel. Deep tattoo recognition. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops, pages 51–58, 2016.</ref>. Тогда [[Функция потерь и эмпирический риск|эмпирический риск]] (англ. error function) равен
<math>L(W) = \sum l + \mu R(W)</math>,
Сиамские нейронные сети нашли широкое применение в области [[Компьютерное зрение|компьютерного зрения]], [[Распознавание речи|распознавания речи]] и [[Обработка естественного языка|обработки естественных языков]]. Были предложены модели для распознавания манеры ходьбы<ref name="gait">C. Zhang, W. Liu, H. Ma and H. Fu, "Siamese neural network based gait recognition for human identification," 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Shanghai, 2016, pp. 2832-2836, doi: 10.1109/ICASSP.2016.7472194.</ref>, поведения пользователя в интернете<ref name="userid">Y. Qiao, Y. Wu, F. Duo, W. Lin and J. Yang, "Siamese Neural Networks for User Identity Linkage Through Web Browsing," in IEEE Transactions on Neural Networks and Learning Systems, vol. 31, no. 8, pp. 2741-2751, Aug. 2020, doi: 10.1109/TNNLS.2019.2929575.</ref>, множественного трекинга пешеходов<ref name="pedestrian">L. Leal-Taixé, C. Canton-Ferrer and K. Schindler, "Learning by Tracking: Siamese CNN for Robust Target Association," 2016 IEEE Conference on Computer Vision and Pattern Recognition Workshops (CVPRW), Las Vegas, NV, 2016, pp. 418-425, doi: 10.1109/CVPRW.2016.59.</ref>, и т.д.<ref name="bamknote">M. E. Hossain, A. Islam and M. S. Islam, "A Proficient Model to Classify Bangladeshi Bank Notes for Automatic Vending Machine Using a Tıny Dataset with One-Shot Learning & Siamese Networks," 2020 11th International Conference on Computing, Communication and Networking Technologies (ICCCNT), Kharagpur, India, 2020, pp. 1-4, doi: 10.1109/ICCCNT49239.2020.9225405.</ref><ref name="parkinson">S. Bhati, L. M. Velazquez, J. Villalba and N. Dehak, "LSTM Siamese Network for Parkinson’s Disease Detection from Speech," 2019 IEEE Global Conference on Signal and Information Processing (GlobalSIP), Ottawa, ON, Canada, 2019, pp. 1-5, doi: 10.1109/GlobalSIP45357.2019.8969430.</ref><ref name="vehicle">I. O. de Oliveira, K. V. O. Fonseca and R. Minetto, "A Two-Stream Siamese Neural Network for Vehicle Re-Identification by Using Non-Overlapping Cameras," 2019 IEEE International Conference on Image Processing (ICIP), Taipei, Taiwan, 2019, pp. 669-673, doi: 10.1109/ICIP.2019.8803810.</ref> Данный вид сетей также может быть использован для снижения размерности.
Однако наиболее популярное применение сиамский сиамских сетей — это распознавание лиц. Первые автоматизированные решения в этой области появились еще в 1960-е годы. Однако свою популярность распознание лиц приобрело после публикации метода eigenface<ref name="eigenface">M. Turk and A. Pentland, “Eigenfaces for recognition,” Journal of cognitive neuroscience, vol. 3, no. 1, pp. 71–86, 1991.</ref>, использующем использующего алгоритмы снижения размерности (например, [[Метод главных компонент (PCA)|PCA]]) для компактного представления признаков. Позже, данное решение было улучшено с помощью применения сверточных нейронных сетей. Сиамские нейронные сети являются усовершенствованием над нейронными сетями и часто используются в задачах, когда фактическое число классов велико или не известно во время обучения, а количество объектов в классах мало.
== См. также ==