샴 신경망에서 역전 파는 어떻게 작동합니까?


13

나는 서명 인식을 위해 1994 년 Yann LeCun과 그의 동료들에 의해 소개 된 샴 신경망의 아키텍처를 연구하고 있습니다 ( “샴페인 시간 지연 신경망을 사용한 서명 검증”.pdf , NIPS 1994)

이 아키텍처의 일반적인 개념을 이해했지만이 경우 역 전파가 어떻게 작동하는지 이해할 수 없습니다. 신경망의 목표 값이 무엇인지 이해할 수 없으므로 백 전파로 각 뉴런의 가중치를 올바르게 설정할 수 있습니다.

Chen Liu (University of Toronto 2013)의“학습 표현을위한 확률 적 샴 네트워크”의 이미지.

이 아키텍처에서 알고리즘은 두 개의 신경망의 최종 표현 사이의 코사인 유사성을 계산합니다. 논문은 다음과 같이 말합니다. "및 서명 중 하나가 위조 인 경우 큰 각도"

역 전파를 실행하기 위해 이진 함수 (두 벡터 간의 코사인 유사성)를 대상으로 사용하는 방법을 실제로 이해할 수 없습니다.

샴 신경망에서 역전 파는 어떻게 계산됩니까?


종이를 다운로드 할 수 없습니다 .... 다른 또는 Dropbox 소스가 있습니까?
Brethlosze

1
NIPS 아카이브 : papers.nips.cc/paper/…
Yannis Assael

답변:


11

두 네트워크 모두 유사한 아키텍처를 공유하지만 섹션 4 [1]에서 설명한 출판물과 동일한 가중치를 갖도록 제한됩니다.

그들의 목표는 서명이 진짜 일 때 출력 벡터 사이의 코사인 유사성을 최소화하고 위조 될 때 최대화하는 기능을 배우는 것입니다 (이것은 백프로 프 목표이지만 실제 손실 함수는 제시되지 않습니다).

cos(A,B)=ABABA,B

출력 레이어를 변경해서는 안되며, 선형 값과 입력의 상위 수준 추상화가있는 훈련 된 뉴런으로 구성됩니다. 전체 네트워크는 함께 훈련되어야합니다. 두 출력 과 는 코사인 유사성을 출력 하는 함수를 통해 전달됩니다 유사한 경우 , 그렇지 않은 경우 ). 인 두 개의 입력 튜플 세트 가 있다고 가정하면 훈련해야 할 가장 간단한 손실 함수의 예는 다음과 같습니다.O1O2cos(O1,O2)10XForged,XGenuine

L=(xA,xB)XForgedcos(xA,xB)(xC,xD)XGenuinecos(xC,xD)

네트워크를 한 후에는 두 출력이 함수로 전달되는 두 개의 서명을 입력 하고 유사성을 확인하면됩니다.cos(O1,O2)

마지막으로, 네트워크 가중치를 동일하게 유지하기 위해 여러 가지 방법이 있습니다 (그리고 반복 신경 네트워크에서도 사용됨). 일반적인 접근 방식은 그라디언트 하강 업데이트 단계를 수행하기 전에 두 네트워크의 그라디언트를 평균화하는 것입니다.

[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf


목표는 코사인 유사성을 최소화하는 것이지만 신경망의 출력 레이어에 무엇을 삽입해야하는지 이해할 수 없습니다. 신경망을 만들 때 대상을 마지막 출력 레이어에 넣습니다. 그들이 가치라면 괜찮습니다. 그러나 목표가 함수이면 채울 값을 어디에서 찾을 수 있습니까? 감사합니다
DavideChicco.it 2016 년

내 답변을 업데이트했습니다. 출력 레이어는 코사인 유사성 함수로 출력되는 다른 일반 레이어 일뿐입니다. 코사인 유사성 기능에 연결된 두 네트워크는 손실 기준에 대해 함께 훈련되어야합니다. 마지막으로,이 경우에 가장 간단한 손실을 제안했습니다.
Yannis Assael

1
감사. 내 문제를 깨달았다 고 생각합니다. Torch7에서이 신경망 아키텍처를 구현 한 것입니다. 여기서 훈련과 테스트 전에 신경망 구성 중에 입력 데이터 세트 값과 출력 대상 레이어 값을 포함하여 많은 것을 지정해야 합니다 . 과거에는 항상 고정 된 출력 대상 레이어 값 (예 : 참 / 거짓 레이블 또는 [0, 1] 간격의 값)이있는 감독 문제를 처리했습니다. 그러나 이번에는 다릅니다. 출력 레이어는 훈련 중에 계산되는 두 값에 따라 달라집니다. 이 올바른지?
DavideChicco.it 2018 년

정확히 이번에는 출력 레이어에 이진이 아닌 선형 값이 있습니다 (따라서 뉴런의 출력). 또한이 경우 직접 출력 대상 값이 없지만 최적화 할 손실 기능이 있습니다. 마지막으로, 출력 레이어는 뉴런 의 출력입니다 (단위 은 모델 아키텍처에 의해 정의되며 논문에서 참조 됨). 선택한 활성화 기능 (tanh, sigmoid 등)에 따라 뉴런은 각각 선형 이진 활성화 [-1,1] 또는 [0,1]을 갖습니다. noutputnoutput
Yannis Assael 2016 년

감사합니다 @iassael. Torch7에서 이것을 구현하는 방법에 대한 아이디어가 있습니까?
DavideChicco.it 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.