Có cách nào để đối phó với độ dốc biến mất để bão hòa các phi tuyến tính không liên quan đến các đơn vị Batch bình thường hóa hoặc ReLu không?


8

Tôi muốn đào tạo một mạng lưới với các phi tuyến tính bị sự biến mất (hoặc bùng nổ vấn đề độ dốc mặc dù chủ yếu là biến mất). Tôi biết rằng cách tiêu chuẩn (hiện tại) là sử dụng chuẩn hóa hàng loạt 1 [BN] 1 hoặc đơn giản là từ bỏ tính phi tuyến tính và sử dụng các đơn vị ReLu Rectifier / ReLu .

Tôi muốn hai điều:

  1. Gắn bó với tính phi tuyến tính của tôi, vì vậy tôi không muốn từ bỏ nó và sử dụng ReLu (tức là không cho phép ReLu!). Tái tham số hóa phi tuyến tính là ok, giả sử đặt một số nhân trước nó như trong chẳng hạn.θ(s)
  2. Lý tưởng nhất là tôi không muốn phụ thuộc quá nhiều vào quá trình chuẩn hóa hàng loạt (hoặc ít nhất là nếu nó được sử dụng, nó phải được sử dụng theo một cách mới lạ hơn là cách nó được sử dụng trong bài báo gốc hoặc khái quát hóa cho nhiều phi tuyến tính). Một trong những lý do tôi muốn tránh Batch Normalize là vì nó dường như chỉ hoạt động cho các phi tuyến tính cụ thể. Ví dụ, đối với sigmoids, tanh nhưng không rõ chúng hoạt động như thế nào đối với các phi tuyến tính khác, hãy nói gaussian.

Lý do tôi có những hạn chế này là vì tôi muốn giải quyết vấn đề biến mất độ dốc hoặc nổ độ dốc bằng cách xử lý vấn đề trực tiếp thay vì hack một giải pháp chỉ hoạt động cho các phi tuyến tính cụ thể hoặc chỉ tránh sự cố bằng cách đẩy vào ReLu.

Tôi đã tự hỏi, với hai ràng buộc đó, các cách khác để đối phó với vấn đề độ dốc biến mất là gì? (một phi tuyến tính khác đang được xem xét sẽ là hạt nhân gaussian RBF với tiền kích hoạt định mức euclide, sigmoid, tanh, v.v.)

Những ý tưởng có thể (mơ hồ) mà tôi có trong đầu sẽ là:

  1. Có khả năng khởi tạo tốt để các phi tuyến tính bão hòa không bắt đầu bão hòa (các phi tuyến bão hòa dẫn đến độ dốc gần bằng 0).
  2. Đối với RBF, tương tự, init tốt có thể rất quan trọng vì gaussian hầu hết có giá trị lớn gần bằng 0 (nghĩa là khi các bộ lọc tương tự như kích hoạt hoặc dữ liệu của nó). Do đó, có chúng quá lớn hoặc quá nhỏ đều có vấn đề về độ dốc biến mất tương tự.
  3. Tôi thực sự không biết nếu điều này quá hạn chế nhưng sẽ rất tuyệt nếu có một cách khác để sử dụng chuẩn hóa hàng loạt khác với đề xuất truyền thống của nó trong bài báo gốc (hoặc có thể một số ý tưởng BN khái quát cho một tập hợp không lớn hơn tuyến tính, hiện tại có vẻ như hầu hết các nghiên cứu cho thấy nó hoạt động cho sigmoids theo như tôi biết).
  4. θ(z)aθ(z)aRa>1
  5. Một trình tối ưu hóa thực chất liên quan đến gradient biến mất (hoặc ít nhất là cập nhật từng tham số khác nhau). Ví dụ, nếu một lớp gần với đầu vào hơn, thì bước học tập sẽ lớn hơn. Sẽ rất tốt nếu thuật toán học tập tự tính đến điều này để đối phó với độ dốc biến mất.

Nếu có bất kỳ đề xuất nào về cách xử lý độ dốc biến mất ngoài quy tắc hàng loạt hoặc ReLu, tôi rất muốn nghe về chúng!


|a|<1|θ(s)|<1


1 : Ioffe S. và Szegedy C. (2015),
"Bình thường hóa hàng loạt: Tăng tốc đào tạo mạng lưới sâu bằng cách giảm sự thay đổi đồng biến nội bộ",
Kỷ yếu của Hội nghị quốc tế về học máy lần thứ 32 , Lille, Pháp, 2015.
Tạp chí Nghiên cứu về máy học: Khối lượng W & CP 37


+1 Đây là một câu hỏi thú vị. Vì tò mò - tại sao bạn không muốn sử dụng ReLUs?
Sycorax nói Phục hồi lại

Lý do của tôi là: 1) Dường như với tôi rằng việc sử dụng loại ReLu sẽ tránh được câu hỏi về sự biến mất và nổ tung gradient hơn là giải quyết trực tiếp. 2) nếu một người có một kích hoạt mà người ta tin là rất giỏi trong một số nhiệm vụ hơn là những nhiệm vụ khác, thì bằng cách nào đó chúng ta buộc phải chuyển sang ReLu mặc dù họ có thể không phải là người đúng. 3) ... (bình luận tiếp theo)
Pinocchio

3) khi làm việc với gaussian chẳng hạn, việc khái quát hóa chuẩn hóa lô không phải là chuyện nhỏ (tôi có nên bình thường hóa việc kích hoạt định mức euclide không? Nếu tôi làm vậy thì đầu vào của guassian RBF có thể âm tính dẫn đến nổ độ dốc, nhưng nếu tôi thay thế Bình thường hóa đầu ra của phi tuyến tính trực tiếp, sau đó, chúng tôi đang bình thường hóa một cái gì đó đã có các khoảnh khắc bị hạn chế, vì đầu ra của RBF và trên thực tế là sigmoid (tanh), bị giới hạn trong một khoảng nhỏ [0,1] hoặc [- 1,1]) Về cơ bản, có vẻ như hai ý tưởng này có thể được đưa ra xa hơn, tôi chỉ không biết làm thế nào.
Pinocchio

Mặc dù lý do của tôi chủ yếu dựa trên linh cảm, rõ ràng, chúng ta cần nhiều nghiên cứu hơn hoặc một cái gì đó để đối phó với tất cả những điểm đó.
Pinocchio

1
Chỉ tò mò nếu bạn biết bất cứ điều gì về cách các LSTM hoặc mạng dư thực hiện với các phi tuyến bão hòa. Tôi tự hỏi nếu họ chỉ có xu hướng làm việc với ReLus. Trong các bài báo, cả hai đều xác định rằng việc sử dụng ReLus nhưng tôi tự hỏi liệu điều đó có cần thiết cho các phương thức hay chỉ là thứ gì đó giúp họ tăng sức mạnh.
testuser

Câu trả lời:


2

Bạn đã nhìn vào RMSProp chưa? Hãy xem bộ slide này từ Geoff Hinton:

Tổng quan về độ dốc giảm dần hàng loạt nhỏ

Cụ thể trang 29, có tên 'rmsprop: Một phiên bản mini-rprop', mặc dù có lẽ đáng đọc qua toàn bộ để có ý tưởng đầy đủ hơn về một số ý tưởng liên quan.

Cũng liên quan là Tỷ lệ học tập không đáng ngại của Yan Le Cun

SMORMS3 của Brandyn Webb .

Ý tưởng chính là xem xét dấu hiệu của độ dốc và liệu nó có bị lật hay không; Nếu nó phù hợp thì bạn muốn di chuyển theo hướng đó và nếu dấu hiệu không bị lật thì bất cứ bước nào bạn vừa thực hiện đều ổn, miễn là nó không nhỏ một cách dễ dàng, vì vậy có nhiều cách để kiểm soát kích thước bước để giữ nó hợp lý và có phần độc lập với độ dốc thực tế.

Vì vậy, câu trả lời ngắn gọn về cách xử lý độ dốc biến mất hoặc nổ tung chỉ đơn giản là - không sử dụng độ lớn của độ dốc!


làm thế nào để bạn làm "vì vậy có nhiều cách để kiểm soát kích thước bước để giữ cho nó hợp lý và có phần độc lập với độ dốc thực tế." Có ai phải làm điều này bằng tay hoặc có một thuật toán hoạt động được không?
Pinocchio

Có nhiều phương pháp khác nhau (và các biến thể) được thảo luận trong các liên kết, nhưng tất cả chúng đều cung cấp một phương pháp để tính toán một bản cập nhật trọng lượng không phải là sản phẩm của độ dốc và tốc độ học tập.
redcalx

1

Một số hiểu biết của tôi, có thể không chính xác.

Nguyên nhân của vấn đề độ dốc biến mất là do sigmoid tanh(và RBF) bão hòa ở cả hai phía ( -infinf), do đó rất có khả năng đầu vào của phi tuyến tính như vậy rơi vào các vùng bão hòa.

N(0,1)

log(1+ex)

nhập mô tả hình ảnh ở đây

Ngoài ra, các mạng còn lại hoặc mạng đường cao tốc cung cấp một cách khác để giải quyết các độ dốc biến mất (thông qua các phím tắt). Theo kinh nghiệm của tôi, kiến ​​trúc như vậy được đào tạo một cách nhanh hơn là chỉ kết nối sự mất mát với lớp cuối cùng.

Ngoài ra, khó khăn trong việc đào tạo các mạng sâu không chỉ do độ dốc biến mất , mà còn các yếu tố khác (ví dụ: sự thay đổi đồng biến nội bộ). Có một sự chuẩn hóa lớp giấy gần đây về một cách khác để thực hiện chuẩn hóa, nó không nói về việc biến mất các gradient, nhưng có lẽ bạn sẽ quan tâm.

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.