Trong mạng LSTM (Understanding LSTMs), Tại sao cổng vào và cổng ra sử dụng tanh? trực giác đằng sau điều này là gì? nó chỉ là một sự chuyển đổi phi tuyến? nếu có, tôi có thể thay đổi cả hai sang một hàm kích hoạt khác (ví dụ: ReLU) không?Trực giác sử dụng tanh trong LSTM
Trả lời
Sigmoid
đặc biệt, được sử dụng như chức năng gating cho 3 cửa (trong, ngoài, quên) trong LSTM
, vì nó sẽ tạo ra giá trị giữa 0 và 1, nó có thể hoặc là cho không dòng chảy hoặc dòng chảy toàn bộ thông tin trong suốt cổng. Mặt khác, để khắc phục vấn đề biến mất gradient, chúng ta cần một hàm có đạo hàm bậc 2 có thể duy trì trong một phạm vi dài trước khi đi tới 0. Tanh
là một chức năng tốt với thuộc tính trên.
Một đơn vị thần kinh tốt nên được bao bọc, dễ dàng phân biệt, đơn điệu (tốt cho tối ưu lồi) và dễ xử lý. Nếu bạn xem xét những phẩm chất này, thì tôi tin rằng bạn có thể sử dụng ReLU
thay cho chức năng tanh
vì chúng là lựa chọn thay thế rất tốt cho nhau. Nhưng trước khi thực hiện một sự lựa chọn cho các chức năng kích hoạt, bạn phải biết những ưu điểm và nhược điểm của sự lựa chọn của bạn so với những gì khác. Tôi mô tả ngắn gọn một số chức năng kích hoạt và lợi thế của chúng.
sigmoid
Toán biểu: sigmoid(z) = 1/(1 + exp(-z))
1 trật tự phái sinh: sigmoid'(z) = -exp(-z)/1 + exp(-z)^2
Ưu điểm:
(1) Sigmoid function has all the fundamental properties of a good activation function.
Tánh
Toán biểu: tanh(z) = [exp(z) - exp(-z)]/[exp(z) + exp(-z)]
1 trật tự phái sinh: tanh'(z) = 1 - ([exp(z) - exp(-z)]/[exp(z) + exp(-z)])^2 = 1 - tanh^2(z)
Ưu điểm:
(1) Often found to converge faster in practice
(2) Gradient computation is less expensive
cứng Tánh
Toán biểu: hardtanh(z) = -1 if z < -1; z if -1 <= z <= 1; 1 if z > 1
1 trật tự phái sinh: hardtanh'(z) = 1 if -1 <= z <= 1; 0 otherwise
Ưu điểm:
(1) Computationally cheaper than Tanh
(2) Saturate for magnitudes of z greater than 1
ReLU
biểu thức toán học: relu(z) = max(z, 0)
1 trật tự phái sinh: relu'(z) = 1 if z > 0; 0 otherwise
Ưu điểm:
(1) Does not saturate even for large values of z
(2) Found much success in computer vision applications
Leaky ReLU
biểu thức toán học: leaky(z) = max(z, k dot z) where 0 < k < 1
1 trật tự phái sinh: relu'(z) = 1 if z > 0; k otherwise
Ưu điểm:
(1) Allows propagation of error for non-positive z which ReLU doesn't
paper này giải thích một số f un chức năng kích hoạt. Bạn có thể xem xét để đọc nó.
vì vậy, nói rằng tôi muốn thay đổi kích hoạt để RelU, tôi phải thay đổi cả hai tanh trong kích hoạt cổng đầu vào và trong phép nhân đầu ra, đó là chính xác @ Wasi Ahmad? – DNK
@DNK có, tôi sẽ nói để duy trì một loại nhất quán này là cần thiết. –
vì vậy, nói cách khác, -apart từ sigmoid được sử dụng cho cổng- tôi có thể chọn chức năng kích hoạt như trong lớp mạng nơron chuẩn @WasiAhmad – DNK
LSTM quản lý một vector trạng thái nội bộ có giá trị sẽ có thể tăng hoặc giảm khi chúng tôi thêm đầu ra của một số chức năng. Sản lượng Sigmoid luôn không âm; giá trị trong tiểu bang sẽ chỉ tăng lên. Đầu ra từ tanh có thể dương hoặc âm, cho phép tăng và giảm trong trạng thái.
Đó là lý do tại sao tanh được sử dụng để xác định giá trị ứng cử viên để được thêm vào trạng thái nội bộ. Người anh em họ GRU của LSTM không có tánh thứ hai, vì vậy trong ý nghĩa thứ hai là không cần thiết. Hãy xem sơ đồ và giải thích trong số Understanding LSTM Networks của Chris Olah để biết thêm.
Câu hỏi liên quan, "Tại sao sigmoids được sử dụng trong LSTMs ở đâu?" cũng được trả lời dựa trên các kết quả đầu ra có thể có của hàm: "gating" được thực hiện bằng cách nhân với số từ 0 đến 1, và đó là đầu ra sigmoids.
Không có sự khác biệt thực sự có ý nghĩa giữa các dẫn xuất của sigmoid và tanh; tanh chỉ là một sigmoid thay đổi kích thước và thay đổi: xem số Neural Tips and Tricks của Richard Socher. Nếu các dẫn xuất thứ hai có liên quan, tôi muốn biết làm thế nào.
Đây là câu trả lời đúng. – ahstat
Câu trả lời hay. bro. – roachsinai
- 1. Chuẩn hóa cho LSTM trong tensorflow
- 2. hành vi phản trực giác của int() trong python
- 3. Đa giác có thể tái sử dụng
- 4. Tensorflow LSTM Dropout Implementation
- 5. LSTM với Keras để đào tạo hàng loạt và kiểm tra trực tuyến
- 6. Làm thế nào để trau dồi trực giác thuật toán?
- 7. Một đến nhiều LSTM trong Keras
- 8. Hiểu Tensorflow LSTM Input hình
- 9. Làm cách nào để sử dụng dữ liệu chuỗi thời gian của Theanets LSTM RNN?
- 10. Sử dụng dữ liệu không gian Sql (C#) để tìm trung tâm "trực quan" của đa giác bất thường
- 11. Dự đoán chuỗi thời gian Pybrain sử dụng lưới LSTM recurrent
- 12. Hiểu mô hình LSTM bằng cách sử dụng lưu lượng cho phân tích tình cảm
- 13. Sử dụng kênh trực tiếp so với sử dụng Proxy?
- 14. Đầu ra của Tensorflow LSTM-Cell
- 15. Keras: sự khác biệt giữa bỏ học LSTM và LSTM tái bỏ học
- 16. Cung cấp dịch vụ phân phối dòng chảy - Stateful LSTM
- 17. Làm thế nào để ngăn xếp nhiều lstm trong keras?
- 18. Sử dụng gói nhị phân trực tiếp
- 19. LSTM đơn giản trong PyTorch với mô-đun tuần tự
- 20. Sử dụng angular2 với studio trực quan
- 21. hướng dẫn sử dụng studio trực quan
- 22. Mô hình LSTM trong Keras với Đầu vào Phụ trợ
- 23. Thực hiện LSTM với lổ nhìn trộm
- 24. Triển khai Mạng LSTM-CRF hai hướng
- 25. Làm thế nào để thực hiện LSTM hai chiều sâu với Keras?
- 26. Phát trực tiếp video trực tiếp giữa Máy chủ và ứng dụng khách - Sử dụng Java
- 27. Lấy hình tam giác trong hình tam giác dưới
- 28. Xem nếu lat thác/dài trong vòng một đa giác sử dụng mysql
- 29. Có thể sử dụng đa giác() hoặc tương đương trong các ô mạng và ggplot2 không?
- 30. Chia đa giác đơn giản, đa giác thành đa giác hoặc đa giác đơn giản thực sự
Không có cổng vào hoặc cổng đầu ra nào sử dụng chức năng tanh để kích hoạt. Tôi đoán rằng có một sự hiểu lầm. Cả hai cổng vào ('i_ {t}') và cổng đầu ra ('o_ {t}') đều sử dụng hàm sigmoid. Trong mạng LSTM, chức năng kích hoạt tanh được sử dụng để xác định các giá trị trạng thái ô (trạng thái nội bộ) của ứng cử viên ('\ tilde {C} _ {t}') và cập nhật trạng thái ẩn ('h_ {t}'). –