7

Việc thực hiện Keras thực hiện các tài liệu tham khảo bỏ học this paper.Việc triển khai Keras có bỏ học chính xác không?

Đoạn trích sau đây là từ giấy rằng:

Ý tưởng là sử dụng một mạng lưới thần kinh duy nhất tại thời gian thử nghiệm mà không bỏ học. Trọng số của mạng này là các phiên bản thu nhỏ của trọng số được đào tạo . Nếu một đơn vị được giữ lại với xác suất p trong đào tạo, trọng đi của đơn vị đó được nhân với p lúc kiểm tra như thể hiện trong hình 2.

Các tài liệu Keras đề cập rằng bỏ học chỉ được sử dụng vào thời điểm tàu và dòng sau từ việc thực hiện Dropout

x = K.in_train_phase(K.dropout(x, level=self.p), x)

dường như chỉ ra rằng thực sự kết quả đầu ra từ các lớp chỉ đơn giản là thông qua cùng trong thời gian thử nghiệm.

Hơn nữa, tôi không thể tìm thấy mã giảm cân sau khi đào tạo hoàn tất như bài báo đề xuất. Sự hiểu biết của tôi là bước mở rộng này về cơ bản là cần thiết để thực hiện công việc bỏ học, vì nó tương đương với việc lấy sản lượng dự kiến ​​của các lớp trung gian trong một tập hợp các "mạng phụ". Không có nó, việc tính toán không còn có thể được coi là lấy mẫu từ bộ quần thể "mạng phụ" này nữa.

Câu hỏi của tôi là hiệu ứng mở rộng quy mô này được thực hiện ở Keras ở đâu?

Cập nhật 1: Ok, vì vậy Keras sử dụng bỏ qua ngược, mặc dù nó được gọi là bỏ học trong tài liệu và mã Keras. Liên kết http://cs231n.github.io/neural-networks-2/#reg dường như không chỉ ra rằng cả hai đều tương đương nhau. Câu trả lời cũng không ở số https://stats.stackexchange.com/questions/205932/dropout-scaling-the-activation-versus-inverting-the-dropout. Tôi có thể thấy rằng họ làm những việc tương tự, nhưng tôi chưa thấy ai nói rằng họ giống hệt nhau. Tôi nghĩ là không.

Vì vậy, câu hỏi mới: Có phải bỏ học và bỏ học tương đương không? Để rõ ràng, tôi đang tìm biện minh toán học để nói rằng họ đang có hay không.

Trả lời

6

Có. Nó được thực hiện đúng cách. Từ thời điểm Dropout được phát minh - mọi người cũng cải thiện nó từ quan điểm thực hiện. Keras đang sử dụng một trong những kỹ thuật này. Nó được gọi là bỏ qua ngược và bạn có thể đọc về nó here.

UPDATE:

Thành thật mà nói - theo nghĩa toán học chặt chẽ hai phương pháp này là không tương đương. Trong trường hợp ngược bạn nhân mỗi lần kích hoạt ẩn bởi một nghịch đảo của tham số bỏ học. Nhưng do đạo hàm đó là tuyến tính, nó tương đương với việc nhân tất cả các gradient với cùng một hệ số. Để khắc phục sự khác biệt này, bạn phải đặt trọng lượng học tập khác nhau sau đó. Từ quan điểm này, cách tiếp cận này khác nhau. Nhưng từ quan điểm thực tế - cách tiếp cận này tương đương vì:

  1. Nếu bạn sử dụng phương pháp tự động đặt tốc độ học (như RMSProp hoặc Adagrad) - nó sẽ hầu như không thay đổi thuật toán.
  2. Nếu bạn sử dụng phương pháp tự động đặt tốc độ học tập của mình - bạn phải tính đến tính chất ngẫu nhiên của việc bỏ học và do thực tế là một số nơron sẽ bị tắt trong giai đoạn huấn luyện (điều sẽ không xảy ra trong khi kiểm tra/giai đoạn đánh giá) - bạn phải rescale tỷ lệ học tập của bạn để vượt qua sự khác biệt này. Lý thuyết xác suất mang lại cho chúng ta hệ số giải mã tốt nhất - và nó là một nghịch đảo của tham số bỏ học làm cho giá trị kỳ vọng của độ dài gradient của hàm mất mát giống nhau trong cả giai đoạn đào tạo và thử nghiệm/eval.

Tất nhiên - cả hai điểm trên là khoảng kỹ thuật bỏ qua đảo ngược.

+0

Cảm ơn vì điều này. Bất kỳ cơ hội nào bạn có thể cung cấp thông tin chi tiết về câu hỏi thứ hai tôi đã hỏi? – user3390629

+0

Tôi đã cập nhật câu trả lời của mình. –

+0

Ok, bạn có thể giải thích tại sao chúng tương đương (trong câu trả lời)? Dường như các gradient được tính cho mạng 1 bằng cách bỏ học và mạng 2 bằng cách sử dụng bỏ qua ngược sẽ khác nhau, và do đó chúng sẽ hội tụ với các trạng thái cuối cùng khác nhau. – user3390629

0

Trích từ the original Dropout paper (Phần 10):

Trong bài báo này, chúng tôi mô tả bỏ học như một phương pháp mà chúng ta giữ lại đơn vị với xác suất p vào thời gian đào tạo và mở rộng xuống các trọng bằng cách nhân chúng bằng một yếu tố của p tại thời điểm thử nghiệm. Một cách khác để đạt được hiệu quả tương tự là tăng quy mô kích hoạt được giữ lại bằng cách nhân với 1/p tại thời gian đào tạo và không sửa đổi trọng số tại thời điểm thử nghiệm. Những phương pháp này tương đương với tỷ lệ thích hợp của tỷ lệ học tập và khởi tạo trọng lượng ở mỗi lớp.

Các vấn đề liên quan