Làm thế nào để lan truyền ngược hoạt động trong một mạng lưới thần kinh siamese?


13

Tôi đã nghiên cứu kiến ​​trúc của mạng lưới thần kinh siamese được giới thiệu bởi Yann LeCun và các đồng nghiệp của ông vào năm 1994 để nhận biết chữ ký ( xác minh chữ ký sử dụng mạng thần kinh trì hoãn thời gian siamese .pdf , NIPS 1994)

Tôi đã hiểu ý tưởng chung của kiến ​​trúc này, nhưng tôi thực sự không thể hiểu làm thế nào backpropagation hoạt động trong trường hợp này. Tôi không thể hiểu các giá trị đích của mạng nơ-ron là gì, điều đó sẽ cho phép truyền ngược để đặt đúng trọng lượng của mỗi nơ-ron.

Hình ảnh từ Mạng lưới Xiêm xác thực của Thái Lan cho các đại diện học tập của Chen Liu (Đại học Toronto 2013).

Trong kiến ​​trúc này, thuật toán tính toán độ tương tự cosin giữa các biểu diễn cuối cùng của hai mạng thần kinh Giấy viết: "Đầu ra mong muốn là một góc nhỏ giữa các đầu ra của hai mạng con (F1 và f2) khi xuất hiện chữ ký chính hãng và một góc lớn nếu một trong những chữ ký là giả mạo ".

Tôi thực sự không thể hiểu làm thế nào họ có thể sử dụng hàm nhị phân (độ tương tự cosine giữa hai vectơ) làm mục tiêu để chạy backpropagation.

Làm thế nào là backpropagation được tính toán trong các mạng lưới thần kinh siamese?


Tôi không thể tải xuống giấy .... bạn có nguồn khác hoặc dropbox không?
Brethlosze

1
Kho lưu trữ của NIPS: tờ giấy.nips.cc / apers / từ
Yannis Assael

Câu trả lời:


11

Cả hai mạng chia sẻ các kiến ​​trúc tương tự nhau, nhưng chúng bị hạn chế để có cùng trọng số như ấn phẩm mô tả trong phần 4 [1].

Mục tiêu của họ là tìm hiểu các tính năng giảm thiểu độ tương tự cosin giữa, vectơ đầu ra của chúng khi chữ ký là chính hãng và tối đa hóa nó khi chúng bị giả mạo (đây cũng là mục tiêu backprop, nhưng chức năng mất thực tế không được trình bày).

Độ tương tự cosin của hai vectơ , là thước đo độ tương tự cung cấp cho bạn cosin của góc giữa chúng (do đó, đầu ra của nó không phải là nhị phân). Nếu mối quan tâm của bạn là làm thế nào bạn có thể sao lưu vào một hàm xuất ra đúng hay sai, hãy nghĩ đến trường hợp phân loại nhị phân.cos(A,B)=ABABA,B

Bạn không nên thay đổi lớp đầu ra, nó bao gồm các nơ-ron được đào tạo với các giá trị tuyến tính và mức độ trừu tượng cao hơn của đầu vào của bạn. Toàn bộ mạng lưới cần được đào tạo cùng nhau. Cả hai đầu ra và đều được truyền qua hàm tạo ra độ tương tự cosin của chúng ( nếu chúng giống nhau và nếu không). Cho rằng, và chúng ta có hai bộ dữ liệu đầu vào , một ví dụ về chức năng mất đơn giản nhất có thể bạn có thể phải luyện tập có thể là:O1O2cos(O1,O2)10XForged,XGenuine

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

Sau khi bạn đã đào tạo mạng của mình, bạn chỉ cần nhập hai chữ ký là bạn nhận được hai đầu ra chuyển chúng sang hàm và kiểm tra độ tương tự của chúng.cos(O1,O2)

Cuối cùng, để giữ cho trọng lượng mạng giống hệt nhau, có một số cách để làm điều đó (và chúng cũng được sử dụng trong Mạng thần kinh tái phát); một cách tiếp cận phổ biến là lấy trung bình độ dốc của hai mạng trước khi thực hiện bước cập nhật Gradient Descent.

[1] http://epage.nips.cc/apers/769-signature-verification-USE-a-siamese-time-delay-neural-network.pdf


Tôi biết rằng mục tiêu là để giảm thiểu độ tương tự cosine, nhưng tôi không thể hiểu những gì tôi nên chèn vào lớp đầu ra của mạng lưới thần kinh. Khi tôi tạo mạng lưới thần kinh, tôi đặt các mục tiêu trong lớp đầu ra cuối cùng. Nếu chúng là giá trị, không sao cả. Nhưng nếu mục tiêu là một hàm, tôi sẽ tìm các giá trị ở đâu? Cảm ơn
DavideChicco.it

Tôi đã cập nhật câu trả lời của tôi. Lớp đầu ra của bạn sẽ chỉ là một lớp bình thường khác mà nó xuất ra cho hàm tương tự cosine. Hai mạng kết nối chức năng tương tự cosine nên được đào tạo cùng nhau chống lại tiêu chí mất mát. Cuối cùng, tôi đã gợi ý cho bạn sự mất mát đơn giản nhất bạn có thể có trong trường hợp này.
Yannis Assael

1
Cảm ơn. Tôi nghĩ rằng tôi đã nhận ra vấn đề của mình: đó là việc thực hiện kiến ​​trúc mạng thần kinh này trong Torch7. Ở đây, trước khi đào tạo và thử nghiệm, trong quá trình xây dựng mạng lưới thần kinh, tôi phải chỉ định rất nhiều thứ, bao gồm các giá trị của tập dữ liệu đầu vào và các giá trị của lớp mục tiêu đầu ra . Trước đây, tôi đã xử lý các vấn đề được giám sát luôn có các giá trị lớp mục tiêu đầu ra cố định (ví dụ: nhãn đúng / sai hoặc các giá trị trong khoảng [0, 1]). Nhưng lần này thì khác: lớp đầu ra là một hàm phụ thuộc vào hai giá trị sẽ được tính trong quá trình đào tạo. Điều này có đúng không?
DavideChicco.it

Chính xác lần này bạn có các giá trị tuyến tính trong lớp đầu ra không phải là nhị phân (vì vậy nó chỉ là đầu ra của nơron). Hơn nữa, bạn không có giá trị mục tiêu đầu ra trực tiếp trong trường hợp này, nhưng bạn có chức năng mất để tối ưu hóa. Cuối cùng, lớp đầu ra là đầu ra của các nơ ron noutput (số đơn vị noutput được xác định bởi kiến ​​trúc mô hình và được tham chiếu trong bài báo). Các nơ-ron tùy thuộc vào chức năng kích hoạt được chọn (tanh, sigmoid, v.v.) có kích hoạt tuyến tính không nhị phân [-1,1] hoặc [0,1].
Yannis Assael

Cảm ơn @iassael. Bạn có ý tưởng nào về cách thực hiện điều này trong Torch7 không?
DavideChicco.it
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.