Backpropagation vs Thuật toán di truyền cho đào tạo Mạng thần kinh


34

Tôi đã đọc một vài bài báo thảo luận về ưu và nhược điểm của từng phương pháp, một số ý kiến ​​cho rằng GA không đưa ra bất kỳ cải tiến nào trong việc tìm giải pháp tối ưu trong khi những người khác cho thấy rằng nó hiệu quả hơn. Có vẻ như GA thường được ưa thích trong văn học (mặc dù hầu hết mọi người sửa đổi nó theo một cách nào đó để đạt được kết quả họ cần), vậy thì tại sao phần lớn các giải pháp phần mềm dường như chỉ sử dụng backpropagation?

Có một số quy tắc chung khi sử dụng cái này hay cái khác? Có lẽ nó phụ thuộc vào loại NN hoặc tồn tại một số giải pháp hiện đại thường vượt trội so với các giải pháp khác?

Nếu có thể tôi đang tìm kiếm câu trả lời chung: nghĩa là "nếu NN lớn, GA tốt hơn" hoặc "GA luôn tốt hơn nhưng có vấn đề về hiệu suất tính toán", v.v ...

Câu trả lời:


23

Nếu bạn nhìn kỹ vào các tài liệu khoa học, bạn sẽ tìm thấy kết quả tương phản. Rõ ràng, trong một số trường hợp GA (và nói chung hơn, Thuật toán tiến hóa) có thể giúp bạn tìm thấy một thiết kế NN tối ưu nhưng thông thường chúng có rất nhiều nhược điểm (điều chỉnh tham số thuật toán, độ phức tạp tính toán, v.v.) và việc sử dụng chúng không khả thi đối với thực tế ứng dụng thế giới. Tất nhiên bạn có thể tìm thấy một tập hợp các vấn đề trong đó GA / EA luôn luôntốt hơn so với backpropagation. Cho rằng việc tìm kiếm một thiết kế NN tối ưu là một vấn đề tối ưu hóa đa phương thức phức tạp, GA / EA có thể giúp (như siêu dữ liệu) cải thiện kết quả thu được bằng thuật toán "truyền thống", ví dụ: sử dụng GA / EA để chỉ tìm cấu hình trọng số ban đầu hoặc giúp thuật toán truyền thống thoát khỏi cực tiểu địa phương (nếu bạn quan tâm tôi đã viết một bài báo về chủ đề này).

Tôi đã làm việc rất nhiều trong lĩnh vực này và tôi có thể nói với bạn rằng có nhiều công trình khoa học về GA / EA được áp dụng cho NN vì chúng (hoặc tốt hơn, chúng từng là) một lĩnh vực nghiên cứu mới nổi.


2
Đây là điều mà tôi cũng đã đưa ra gần đây - trước tiên hãy tìm giải pháp 'tốt' và sau đó cải thiện nó hơn nữa với GA. Không chỉ áp dụng cho NN, mà còn tối ưu hóa nói chung ...
sashkello

1
Tôi bối rối tại sao chúng loại trừ lẫn nhau. Tôi nghĩ GA có nghĩa vụ phải học cấu trúc; Backpropagation chỉ có thể học các trọng số
pete

8

Một trong những vấn đề chính của mạng nơ-ron là quá khớp, điều đó có nghĩa là các thuật toán rất khó tìm ra mạng giảm thiểu một số tiêu chí dựa trên mẫu dữ liệu hữu hạn sẽ kết thúc với một mạng hoạt động rất tốt cho mẫu cụ thể đó dữ liệu, nhưng sẽ có khái quát kém. Tôi khá cảnh giác khi sử dụng GA để thiết kế mạng thần kinh vì lý do này, đặc biệt nếu chúng thực hiện tối ưu hóa kiến ​​trúc cùng lúc với việc tối ưu hóa các trọng số. Tôi thường thấy rằng các mạng đào tạo (có tính chính quy) từ một số (ví dụ 20) các vectơ trọng lượng ban đầu ngẫu nhiên và sau đó tạo thành một tập hợp của tất cả các mạng kết quả nói chung là một cách tiếp cận tốt như bất kỳ.

Tối ưu hóa về cơ bản là gốc rễ của mọi tội lỗi trong học máy, bạn càng làm nhiều việc, bạn càng có nhiều khả năng kết thúc việc quá phù hợp với dữ liệu.


Dikran, mặc dù GA thực hiện lựa chọn tự nhiên nhưng không bỏ qua thông tin như bạn đã đề cập, nó chỉ đảm bảo nếu giải pháp được chọn giải quyết vấn đề của nó nếu không, nó tìm hiểu lý do tại sao và nâng cấp agorithm tạo thành cơ sở cho tính năng động của nó cho đến mạng hội tụ tại một hoặc hai giải pháp tốt nhất. hy vọng bạn có được sự cứng nhắc đó?

hội tụ đến giải pháp tốt nhất được đánh giá qua một mẫu dữ liệu hữu hạn chính xác là nguyên nhân gây ra sự phù hợp quá mức. Để tránh tình trạng thừa, bạn muốn hội tụ một giải pháp không phải là tốt nhất (ví dụ: dừng sớm trong việc đào tạo mạng lưới thần kinh). GA không tốt hơn bất kỳ hình thức tối ưu hóa nào khác trong việc phù hợp với các mạng thần kinh, bạn cần tránh tối ưu hóa quá mức tiêu chí đào tạo.
Dikran Marsupial

5

Bất cứ khi nào bạn đối phó với lượng dữ liệu khổng lồ và bạn muốn giải quyết một nhiệm vụ học tập có giám sát với mạng thần kinh chuyển tiếp nguồn cấp dữ liệu, các giải pháp dựa trên truyền bá ngược là khả thi hơn nhiều. Lý do cho điều này là, đối với một mạng nơ ron phức tạp, số lượng tham số miễn phí rất cao. Một dự án công nghiệp mà tôi hiện đang thực hiện liên quan đến một mạng lưới thần kinh chuyển tiếp với khoảng 1000 đầu vào, hai lớp ẩn @ 384 nơ-ron mỗi và 60 đầu ra. Điều này dẫn đến 1000 * 384 + 384 * 384 + 384 * 60 = 554496 tham số trọng lượng được tối ưu hóa. Sử dụng phương pháp GA ở đây sẽ rất chậm.


Tôi hiểu rằng GA được thiết kế để giải quyết các vấn đề khó giải quyết hơn bằng các phương pháp tiêu chuẩn. Không nên thực hiện chính xác hơn trong một tình huống bạn mô tả?
sashkello

2
Tôi nghĩ GA được cho là được sử dụng để tìm ra cấu trúc của nó, ví dụ như có bao nhiêu lớp ẩn và cách chúng được kết nối. Backpropagation chỉ có thể tìm ra các trọng số
pete

2

Câu trả lời thứ hai là sai. Quá mức không phải do tối ưu hóa. Quá mức xảy ra khi mô hình của bạn quá phức tạp và có thể phù hợp với tất cả các biểu dữ liệu mà không học quy tắc thực tế đã tạo ra chúng (nghĩa là chỉ ghi nhớ chúng, trong trường hợp cực đoan.) Có nhiều cách để ngăn chặn quá mức như chọn mô hình đơn giản hơn, bỏ học, dropconnect, giảm trọng lượng và chỉ sử dụng nhiều dữ liệu hơn. Mục tiêu nên là tối ưu hóa mạng của bạn và làm cho nó chính xác nhất có thể, tính đến những ràng buộc đó.

Để trả lời câu hỏi, backprop được cho là nhanh hơn nhiều so với tối ưu hóa ngẫu nhiên (thuật toán di truyền và những thứ tương tự.) Tôi đoán là điều này là vì nó tận dụng những gì mà sản lượng thực tế được cho là được, điều chỉnh trọng lượng đi đúng hướng trên cơ sở đó , trong đó tối ưu hóa ngẫu nhiên cố gắng thay đổi hoàn toàn ngẫu nhiên và bỏ qua thông tin đó.

Tuy nhiên, bằng cách khám phá một khu vực rộng lớn hơn, GA có thể sẽ làm tốt hơn trong thời gian dài bằng cách tránh các tối ưu cục bộ, sẽ chỉ mất nhiều thời gian hơn để đào tạo.

Tôi tò mò về việc GA chậm hơn bao nhiêu so với backprop và nếu có ai biết về thuật toán lai (tìm kiếm phân tán có vẻ như nó sẽ lý tưởng cho việc này.)


1
Không đồng ý với đoạn đầu tiên của bạn. Quá mức được ngăn chặn chủ yếu thông qua các phương pháp chính quy trong vấn đề đào tạo . Nếu bạn bắt đầu thực hiện tối ưu hóa meta --- đang giải quyết nhiều vấn đề đào tạo (ví dụ: điều chỉnh các tham số kernel, kiến ​​trúc mạng, ...) - việc chăm sóc quá mức trở nên khó khăn hơn nhiều và chắc chắn không còn được đảm bảo nữa.
Marc Claesen

Nếu quá mức không được gây ra bởi tối ưu hóa, dừng sớm sẽ không phải là biện pháp hiệu quả cho việc quá mức.
Dikran Marsupial

1

Sự khác biệt giữa GA và backpropagation là GA dựa trên các số ngẫu nhiên và backpropagation dựa trên một thuật toán tĩnh như độ dốc dốc ngẫu nhiên. GA dựa trên các số ngẫu nhiên và thêm vào đột biến đó có nghĩa là nó có thể sẽ tránh bị bắt trong một cực tiểu địa phương. Nhưng sau đó GA dựa trên các số ngẫu nhiên có nghĩa là hoàn toàn có khả năng cho 2 lần khác nhau bạn thực hiện việc học trên cùng một mạng, nó có thể đi đến một kết luận khác, tức là một tập các trọng số khác nhau


Chỉ cần bình luận, chúng tôi cũng sử dụng init ngẫu nhiên. cho các trọng lượng trong back-prop. Nếu chúng ta sử dụng cùng một hạt giống trong khi khởi tạo, nó sẽ dẫn đến cùng một giải pháp, nhưng nếu bạn không, có lẽ nó sẽ không. Vì vậy, back-prop cũng vậy, phụ thuộc vào một đầu vào ngẫu nhiên. Khi bạn sửa hạt giống, bạn cũng sẽ có kết quả tương tự trong thuật toán di truyền vì nó sẽ sử dụng cùng một seq. số một lần nữa.
gunes
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.