Khi nào tôi nên sử dụng thuật toán di truyền trái ngược với mạng lưới thần kinh? [đóng cửa]


139

Có một quy tắc ngón tay cái (hoặc tập hợp các ví dụ) để xác định khi nào nên sử dụng thuật toán di truyền trái ngược với mạng lưới thần kinh (và ngược lại) để giải quyết vấn đề?

Tôi biết có những trường hợp bạn có thể có cả hai phương thức lẫn nhau, nhưng tôi đang tìm kiếm một so sánh cấp cao giữa hai phương pháp.


3
Thật đáng để chỉ ra rằng có hai loại mạng lưới thần kinh - được giám sát và không được giám sát. Giám sát nhận dữ liệu đào tạo từ một con người, phản hồi không giám sát vào bản thân và giống như GA hơn về mặt đó.
Chris S

3
Tôi không nghĩ đó là "list-y". Các câu trả lời so sánh hai phương pháp và làm rõ khi nào nên sử dụng phương pháp này với phương pháp khác.
Neil N

Câu trả lời ngắn: sử dụng GA khi hàm để mô hình hóa không liên tục / rời rạc hoặc khi tập dữ liệu có chiều cao về mặt thiên văn. Sử dụng mạng thần kinh hoặc GA (hoặc mô hình khác) cho phần còn lại tùy thuộc vào những gì mang lại cho bạn kết quả tốt nhất. Để biết thêm thông tin, hãy xem câu trả lời của tôi tại đây: stackoverflow.com/a/49684833/1121352
gabious

Câu trả lời:


130

Từ wikipedia:

Một thuật toán di truyền (GA) là một kỹ thuật tìm kiếm được sử dụng trong máy tính để tìm chính xác hoặc gần đúng các giải pháp để tối ưu hóa và các vấn đề tìm kiếm.

và:

Mạng nơ-ron là các công cụ mô hình dữ liệu thống kê phi tuyến tính. Chúng có thể được sử dụng để mô hình các mối quan hệ phức tạp giữa đầu vào và đầu ra hoặc để tìm các mẫu trong dữ liệu.

Nếu bạn gặp vấn đề trong đó bạn có thể định lượng giá trị của giải pháp, thuật toán di truyền có thể thực hiện tìm kiếm theo hướng không gian giải pháp. (Ví dụ: tìm tuyến đường ngắn nhất giữa hai điểm)

Khi bạn có một số mục trong các lớp khác nhau, mạng thần kinh có thể "học" để phân loại các mục mà nó chưa "thấy" trước đó. (Ví dụ: nhận dạng khuôn mặt, nhận dạng giọng nói)

Thời gian thực hiện cũng phải được xem xét. Một thuật toán di truyền mất một thời gian dài để tìm ra một giải pháp chấp nhận được. Một mạng lưới thần kinh cần một thời gian dài để "học", nhưng sau đó nó gần như có thể phân loại ngay các đầu vào mới.


13
Tôi chỉ muốn thêm một chút vào định nghĩa GA. Đôi khi mọi người nghĩ về không gian giải pháp của vấn đề GA là một tập hợp các trạng thái hoặc giá trị. Chẳng hạn như "Tìm tất cả các cách mà một bộ bốn quân cờ có thể được sắp xếp trên bàn cờ để tạo ra một quân cờ." Tuy nhiên, không gian giải pháp cũng có thể là một tập hợp các thuật toán. Đây là nơi sức mạnh thực sự của các thuật toán di truyền phát huy tác dụng. Chúng giúp bạn trả lời một câu hỏi như "Tìm một chuỗi các bước di chuyển với một bộ quân cờ nhất định sẽ dẫn đến một người chơi cờ."
lfalin

44

Một thuật toán di truyền (mặc dù tên gợi cảm của nó), đối với hầu hết các mục đích, là một kỹ thuật tối ưu hóa . Nó chủ yếu giúp bạn có một số biến và muốn tìm ra sự kết hợp tốt nhất của các giá trị cho các biến này. Nó chỉ mượn các kỹ thuật từ tiến hóa tự nhiên để đạt được điều đó.

Mạng lưới thần kinh rất hữu ích để nhận dạng các mẫu . Họ theo một mô hình đơn giản của bộ não và bằng cách thay đổi một số trọng lượng giữa chúng, cố gắng dự đoán đầu ra dựa trên đầu vào.

Chúng là hai thực thể khác nhau cơ bản, nhưng đôi khi các vấn đề chúng có khả năng giải quyết chồng chéo.


22
Mạng lưới thần kinh chỉ là một kỹ thuật nội suy. :)
Don Reba

3
+1 cho các thuật toán di truyền (tối ưu hóa) và mạng lưới thần kinh (học có giám sát) gần như không có gì chung.
alfa

2
Yếu tố phổ biến duy nhất là họ tự động sắp xếp lại khi họ tiếp cận một mục tiêu.
lfalin

1
Tôi không chắc chắn có bất kỳ sự chồng chéo, thực sự. Mạng thần kinh là một mô hình có chức năng chi phí, GA là một kỹ thuật tối ưu hóa có thể được sử dụng để giảm thiểu chức năng chi phí này, như @zenna nói.
Matthieu Brucher

37

GA tạo các mẫu mới trong cấu trúc mà bạn xác định.

NN phân loại (hoặc nhận ra) các mẫu hiện có dựa trên dữ liệu đào tạo mà bạn cung cấp.

GA hoạt động tốt trong việc tìm kiếm hiệu quả một không gian giải pháp lớn và hội tụ một hoặc nhiều giải pháp tốt, nhưng không nhất thiết là giải pháp 'tốt nhất'.

Các NN có thể học cách nhận ra các mẫu (thông qua đào tạo), nhưng rất khó để tìm ra những gì họ đã học, tức là rút ra kiến ​​thức từ họ sau khi được đào tạo và sử dụng lại kiến ​​thức trong một số khác (không phải NN).


26

Bạn đang so sánh hai điều hoàn toàn khác nhau ở đây.

Mạng nơ-ron được sử dụng để hồi quy / phân loại - được cung cấp một tập hợp các ví dụ (x, y), bạn muốn hồi quy y chưa biết đối với một số x đã cho.

Các thuật toán di truyền là một kỹ thuật tối ưu hóa. Cho một hàm f (x), bạn muốn xác định x làm giảm thiểu / tối đa hóa f (x).


10
Thật. Chúng thực sự là những kỹ thuật 'trực giao'. Bạn có thể sử dụng GA để tìm trọng lượng và / hoặc kiến ​​trúc mạng thần kinh.
redcalx

23

Có nhiều điểm tương đồng giữa chúng, vì vậy tôi sẽ chỉ cố gắng phác thảo sự khác biệt của chúng .

Mạng lưới thần kinh

Có thể phân tích các mẫu trực tuyến (những mẫu thay đổi theo thời gian). Nói chung, đây là một mẫu thay đổi theo thời gian cần được khớp và dự đoán.

Ví dụ :

  • Phép ngoại suy đồ thị
  • Nhận dạng khuôn mặt

Thuật toán di truyền

Được sử dụng khi bạn có thể mã các thuộc tính mà bạn nghĩ có thể góp phần vào một vấn đề cụ thể, không thay đổi. Trọng tâm là khả năng mã hóa các thuộc tính này (đôi khi bạn biết chúng là gì) và vấn đề là ở mức độ không thay đổi lớn (nếu không các diễn biến không hội tụ).

Ví dụ :

  • Lập kế hoạch máy bay / vận chuyển
  • Thời khóa biểu.
  • Tìm các đặc điểm tốt nhất cho một tác nhân đơn giản trong môi trường nhân tạo
  • Hiển thị xấp xỉ hình ảnh với đa giác ngẫu nhiên

14

Bạn có thể sử dụng các thuật toán di truyền thay thế cho thuật toán backpropagation để cập nhật trọng số trong các mạng thần kinh. Để biết ví dụ về điều này, hãy tham khảo: http://www.ai-junkie.com/ann/evolve/nnt1.html .


1
Và cũng CẦN ( cs.ucf.edu/~kstanley/neat.html ). Với triển khai C # tại ( sharpneat.sourceforge.net )
redcalx

Đối với javascript, hãy xem github.com/wlahomaartje/neataptic . Nó thực hiện NEAT là tốt.
Thomas W

8

Các thuật toán di truyền (thường) hoạt động trên dữ liệu rời rạc (enums, phạm vi số nguyên, v.v.). Một ứng dụng điển hình cho GA là tìm kiếm một không gian riêng cho giải pháp "đủ tốt" khi lựa chọn duy nhất có sẵn là tìm kiếm vũ phu (đánh giá tất cả các kết hợp).

Mặt khác, mạng nơ-ron (thường) hoạt động trên dữ liệu liên tục (phao, v.v.). Một ứng dụng điển hình cho NN là xấp xỉ hàm, trong đó bạn đã có một bộ X đầu vào và một bộ Y của các đầu ra liên quan, nhưng hàm phân tích f: X → Y.

Tất nhiên, có hàng ngàn biến thể của cả hai, vì vậy ranh giới giữa chúng có phần mờ nhạt.


5

Không có quy tắc của ngón tay cái. Trong nhiều trường hợp, bạn có thể hình thành vấn đề của mình để sử dụng một trong số chúng. Học máy vẫn là một lĩnh vực nghiên cứu tích cực và mô hình học tập nào sẽ sử dụng có thể gây tranh cãi.

GA lấy ngôn ngữ gợi cảm từ quá trình tiến hóa nhưng bạn đang chờ máy tính của mình tình cờ tìm ra giải pháp thông qua một quy trình ngẫu nhiên. Nghiên cứu dữ liệu của bạn, đưa ra các giả định tốt, cố gắng để biết những gì bạn muốn và chọn một phương pháp có thể sử dụng tốt những điều này. Nếu lựa chọn đầu tiên của bạn cho kết quả kém, hãy biết tại sao nó lại như vậy và tự cải thiện thuật toán hoặc chọn một thuật toán tốt hơn.

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.