Tại sao Tái cấu trúc trong Bộ tạo tự động sử dụng Chức năng kích hoạt tương tự như Kích hoạt chuyển tiếp mà không phải là nghịch đảo?


9

Giả sử bạn có một lớp đầu vào với n nơ-ron và lớp ẩn đầu tiên có nơ-ron, với điển hình là . Sau đó, bạn tính toán hoạt động của nơron thứ trong lớp ẩn bằng cáchm < n a j jmm<najj

f tanh sigmoidaj=f(i=1..nwi,jxi+bj) , trong đó là một hàm kích hoạt như hoặc .ftanhsigmoid

Để huấn luyện mạng, bạn tính toán việc xây dựng lại đầu vào, ký hiệu là và giảm thiểu lỗi giữa và . Bây giờ, phần tử thứ trong thường được tính là:z x i zzzxiz

zi=f(j=1..mwj,iaj+bi)

Tôi tự hỏi tại sao được xây dựng lại thường được tính toán với cùng một chức năng kích hoạt thay vì sử dụng hàm nghịch đảo, và tại sao tách biệt và lại hữu ích thay vì sử dụng các trọng số và độ lệch gắn? Tôi có vẻ trực quan hơn nhiều khi tính toán được xây dựng lại với hàm kích hoạt nghịch đảo , ví dụ: , như sau:w b f - 1 arctanhzwbf1arctanh

zi=j=1..mf1(aj)bjwj,iT

Lưu ý rằng ở đây các trọng số được gắn được sử dụng, nghĩa là, và các độ lệch của lớp ẩn được sử dụng, thay vì đưa ra một nhóm sai lệch bổ sung cho lớp đầu vào.w=wTbj

Và một câu hỏi rất liên quan: Để trực quan hóa các tính năng, thay vì tính toán việc xây dựng lại, người ta thường sẽ tạo ra một ma trận danh tính với kích thước của lớp ẩn. Sau đó, người ta sẽ sử dụng mỗi cột của ma trận làm đầu vào cho chức năng kích hoạt lại, điều này tạo ra một đầu ra trong các nơ ron đầu vào. Đối với chức năng kích hoạt lại, tốt hơn là sử dụng cùng chức năng kích hoạt (tương ứng với ) hoặc chức năng nghịch đảo (tương ứng với )?zizi

Câu trả lời:


5

Tôi không nghĩ rằng giả định của bạn giữ. Hay đúng hơn là không cần thiết, và nếu nó được thực hiện, nó không phải là bằng cách nào đó tự động đảo ngược tính toán để tạo ra các tính năng lớp ẩn. Nói chung, không thể đảo ngược quá trình nén, đi từ n đến nhỏ hơn, trực tiếp theo cách này. Nếu đó là mục tiêu, thì bạn sẽ muốn một hình thức đảo ngược ma trận, không phải chuyển vị đơn giản.w=wT

Thay vào đó, chúng tôi chỉ muốn cho biểu diễn tính năng cấp cao hơn đã nén và sẽ loại bỏ sau khi bộ mã hóa tự động kết thúc.wijwij

Bạn có thể đặt và buộc các trọng số. Điều này có thể giúp với việc chính quy hóa - giúp trình tự động mã hóa tổng quát. Nhưng nó không cần thiết.w=wT

Để bộ mã hóa tự động hoạt động, thực tế bạn không sử dụng chức năng kích hoạt nào sau lớp bạn đang đào tạo trước, với điều kiện lớp cuối cùng của bộ mã hóa tự động có thể biểu thị phạm vi đầu vào có thể. Tuy nhiên, bạn có thể nhận được chất lượng kết quả khác nhau tùy thuộc vào những gì bạn sử dụng, như bình thường đối với mạng thần kinh.

Nó khá hợp lý để sử dụng cùng chức năng kích hoạt mà bạn đang xây dựng lớp được đào tạo trước, vì đó là lựa chọn đơn giản nhất.

Cũng có thể sử dụng hàm nghịch đảo, nhưng không nên dùng cho sigmoid hoặc tanh, vì vd: arctanh không được xác định <-1 hoặc> 1, do đó có thể sẽ không ổn định về số.


Cảm ơn! Tuy nhiên, dường như là thông lệ phổ biến, vì nó được sử dụng trong hướng dẫn rất cơ bản để khử nhiễu bộ tự động của deeplearning.net: ( deeplearning.net/tutorial/dA.html#daa ) Tôi làm không thấy hợp lý khi sử dụng cùng chức năng kích hoạt để xây dựng lại, bạn có thể giải thích về điều này không? Thật sự của nó rằng nó là sự lựa chọn đơn giản nhất, nhưng có vẻ như tự nhiên hơn nhiều với tôi để sử dụng với , bởi vì trên thực tế lãi suất này nghịch đảo toán học của kích hoạt. w=wTziarctanh
Manfred Eppe

Bạn có thể nếu bạn muốn. Ví dụ: từ deeplearning.net/tutorial/dA.html " Tùy chọn , ma trận trọng số của ánh xạ ngược có thể bị hạn chế là chuyển vị của ánh xạ chuyển tiếp: Điều này được gọi là trọng số gắn. " (Nhấn mạnh mỏ). Quan điểm của câu trả lời của tôi là nếu bạn làm điều này, nó không phải là để cung cấp tự động đảo ngược mã hóa, nó chỉ là một ràng buộc sẽ thường xuyên đào tạo. WW=WT
Neil Slater

Cảm ơn Neil. Nhận xét của bạn về vấn đề đã giúp tôi khái quát hóa câu hỏi của mình và làm cho nó chính xác hơn, vì vậy tôi đã chỉnh sửa câu hỏi cho phù hợp. Trong thực tế, tôi thực sự không hiểu tại sao nó rất hữu ích để có riêng ở tất cả, thay vì lúc nào cũng sử dụng ma trận hoán . Câu trả lời có thể là "bởi vì nó cho kết quả tốt hơn", nhưng sau đó tôi tự hỏi tại sao nó lại cho kết quả tốt hơn. Nó có vẻ không trực quan với tôi. w w Tw=wTwwT
Manfred Eppe

@ManfredEppe: Có lẽ thay vào đó bạn nên suy nghĩ cẩn thận về lý do tại sao bạn nghĩ rằng ma trận trọng số chuyển đổi và hàm nghịch đảo sẽ hữu ích? Không có lý do cụ thể để sử dụng chúng - chính xác thì trực giác của bạn đằng sau nghĩ rằng chúng sẽ hữu ích là gì? Nếu nó là "đối xứng" thì hãy xem xét lại thứ tự chúng được áp dụng - đó không phải là sự đảo ngược đối xứng của lớp đầu vào thành ẩn (nếu là, chức năng kích hoạt nghịch đảo sẽ là đầu tiên)
Neil Slater
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.