Mạng lưới thần kinh của tôi thậm chí không thể học được khoảng cách Euclide


9

Vì vậy, tôi đang cố gắng dạy cho mình các mạng lưới thần kinh (đối với các ứng dụng hồi quy, không phân loại hình ảnh của mèo).

Các thử nghiệm đầu tiên của tôi là đào tạo một mạng để thực hiện bộ lọc FIR và Biến đổi Fourier rời rạc (đào tạo các tín hiệu "trước" và "sau"), vì cả hai đều là các hoạt động tuyến tính có thể được thực hiện bởi một lớp duy nhất không có chức năng kích hoạt. Cả hai đều hoạt động tốt.

Vì vậy, sau đó tôi muốn xem liệu tôi có thể thêm một abs()và làm cho nó học một phổ biên độ hay không. Đầu tiên tôi nghĩ về việc cần bao nhiêu nút trong lớp ẩn và nhận ra rằng 3 ReLU là đủ cho một xấp xỉ thô abs(x+jy) = sqrt(x² + y²), vì vậy tôi đã thử nghiệm hoạt động đó bằng chính các số phức (2 đầu vào → 3 nút ReLU ẩn lớp → 1 đầu ra). Thỉnh thoảng nó hoạt động:

3 ReLUs thực hiện khoảng cách Euclide dưới dạng kim tự tháp lục giác ngược

Nhưng hầu hết những lần tôi thử nó, nó bị kẹt ở mức tối thiểu cục bộ và không tìm được hình dạng phù hợp:

3 ReLUs tạo thành mạng hình thung lũng

mất so với kỷ nguyên

Tôi đã thử tất cả các tối ưu hóa và các biến thể ReLU trong Keras, nhưng chúng không tạo ra nhiều khác biệt. Có điều gì khác tôi có thể làm để làm cho các mạng đơn giản như thế này hội tụ một cách đáng tin cậy không? Hoặc tôi chỉ đang tiếp cận điều này với thái độ sai lầm, và bạn có nghĩa vụ phải ném nhiều nút hơn mức cần thiết vào vấn đề và nếu một nửa trong số họ chết thì đó không phải là vấn đề lớn?


1
Cốt truyện của bạn cho thấy những gì dường như là một vài thử nghiệm khác nhau, một số trong đó hoạt động và một số thì không. Điều gì cho sự khác biệt?
Sycorax nói phục hồi Monica

@Sycorax Đó chỉ là những thử nghiệm lặp đi lặp lại của cùng một điều. Đôi khi nó tìm thấy một giải pháp hình chóp lục giác, nhưng thường thì không.
endolith

Bạn đã thử với hai lớp ẩn và một tanh là chức năng kích hoạt chưa?
Ketan

@KetanKhông, tại sao? Tôi đã đăng một biến thể đơn giản hơn ở đây: stats.stackexchange.com/q/379884/11633
endolith

bạn có thể muốn nhìn vào cái này thống kê.stackexchange.com / q / 375655/27556 . Nhưng bạn có thể giải thích lý do tại sao bạn nghĩ rằng bạn chỉ cần 3 Relus? phân rã 'tự nhiên' sẽ là một lớp ẩn để thực hiện xấp xỉ bình phương với relus và một lớp khác để thực hiện căn bậc hai - về cơ bản các relus đang thực hiện xấp xỉ tuyến tính piecewise.
seanv507

Câu trả lời:


6

Đầu ra dường như gợi ý mạnh mẽ rằng một hoặc nhiều nơ-ron thần kinh của bạn đã chết (hoặc có lẽ là siêu phẳng trọng lượng cho hai trong số các nơ-ron của bạn đã hợp nhất). Bạn có thể thấy rằng với 3 Relu's, bạn nhận được 3 phần chia nhỏ ở trung tâm khi bạn hội tụ đến giải pháp hợp lý hơn. Bạn có thể dễ dàng xác minh xem điều này có đúng hay không bằng cách kiểm tra các giá trị đầu ra của mỗi nơ ron để xem liệu nó có bị chết trong phần lớn các mẫu của bạn không. Ngoài ra, bạn có thể vẽ tất cả các trọng lượng 2x3 = 6 nơ-ron, được nhóm theo nơ-ron tương ứng của chúng, để xem liệu hai nơ-ron có sụp xuống cùng một cặp trọng lượng hay không.

Tôi nghi ngờ rằng một nguyên nhân có thể của việc này là khi bị lệch về một tọa độ, ví dụ: , trong trường hợp đó bạn đang cố gắng tạo lại danh tính, khi đó . Thực sự không có nhiều thứ bạn có thể làm ở đây để khắc phục điều này. Một lựa chọn là thêm nhiều nơ-ron như bạn đã thử. Tùy chọn thứ hai là thử kích hoạt liên tục, như sigmoid, hoặc có lẽ là thứ gì đó không bị ràng buộc như số mũ. Bạn cũng có thể thử bỏ học (với xác suất 10%). Bạn có thể sử dụng triển khai bỏ học thường xuyên trong máy ảnh, hy vọng đủ thông minh để bỏ qua các tình huống khi cả 3 tế bào thần kinh của bạn rơi ra.x » y một b s ( x + i y ) xx+iyxyabs(x+iy)x


1
+1, gần như chắc chắn điều này. Khi bạn sử dụng ReLU với một số lượng nhỏ các nơ-ron chết như vậy hầu như luôn luôn xuất hiện.
kbrose

1
Đây là một phỏng đoán hợp lý trong trường hợp của ReLU. Nhưng OP viết rằng họ đã thử một vài biến thể ReLU khác nhau - các nơ-ron chết cũng xảy ra trong các biến thể như ELU hay Leaky Relu hay PReLU?
Sycorax nói Phục hồi lại

3 shadowy splits in the center when you converge to the more reasonable solution.Vâng, đó là sự gần đúng thô mà tôi muốn nói; một kim tự tháp lục giác ngược. or perhaps something unbounded like an exponential Tôi đã thử elu và selu, nó không hoạt động tốt hơn nhiều. two neurons collapse to the same pair of weightsAh, tôi đã không nghĩ về điều đó; Tôi chỉ cho rằng họ đã chết.
endolith

Tôi đã truy cập đầu ra của lớp ẩn trong khi sử dụng ReLU và xác nhận rằng thường thì một trong các nơ-ron đã chết. Ít thường xuyên hơn, hai là chồng chéo và làm điều tương tự. Tôi tự hỏi liệu có cách nào để làm cho các nơ-ron "đẩy lùi" nhau để chúng không giải quyết thành các vai trò dư thừa.
endolith

1
@endolith Dropout được thiết kế rõ ràng xung quanh việc xây dựng các nơ-ron độc lập. ELU không bao giờ "chết", nhưng chúng có độ dốc biến mất ở bên trái.
Sycorax nói Phục hồi lại
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.