10

Tôi đã quan tâm đến các mạng thần kinh một chút và nghĩ về việc sử dụng một trong python cho một dự án ánh sáng so sánh các kỹ thuật giảm thiểu khác nhau trong một miền thời gian (nhanh nhất).Có thể sử dụng mạng nơron để tìm một hàm tối thiểu (a) không?

Sau đó, tôi nhận ra rằng tôi thậm chí không biết liệu NN có tốt cho việc giảm thiểu hay không. Bạn nghĩ sao?

+0

Tôi đã xem xét so sánh quét mảng brute force, mô phỏng ủ, và giảm thiểu Migrad được xây dựng ngoài Minuit trong thư mục gốc. – physicsmichael

Trả lời

0

Mạng thần kinh là bộ phân loại. Chúng tách hai lớp dữ liệu thành phần. Họ tìm hiểu sự tách biệt này (thường) với các phần tử dữ liệu được phân loại trước. Vì vậy, tôi nói: Không, trừ khi bạn làm một sự căng lớn ngoài vỡ.

+7

Mạng nơron là các bộ nội suy mẫu, mà bạn có thể sử dụng để phân loại, trong số những thứ khác. Sử dụng mạng nơ-ron để ước tính một hàm và sau đó tìm ra cực đại của xấp xỉ sẽ là một điều hợp lý để làm trong một số trường hợp. –

1

Quá trình đào tạo mạng nơ-ron truyền lại hoạt động bằng cách giảm thiểu lỗi từ kết quả tối ưu. Nhưng có một mạng lưới thần kinh được đào tạo tìm ra mức tối thiểu của một hàm không rõ sẽ khá khó khăn.

Nếu bạn giới hạn sự cố với một lớp chức năng cụ thể, nó có thể hoạt động và cũng khá nhanh. Mạng nơron rất giỏi trong việc tìm kiếm các mẫu, nếu có.

0

Chúng khá xấu cho mục đích; một trong những vấn đề lớn của mạng thần kinh là chúng bị kẹt trong minima địa phương. Bạn có thể muốn xem xét các máy vector hỗ trợ thay thế.

+0

Tôi có thể tìm thêm thông tin về máy vectơ trạng thái ở đâu? –

+0

Xin lỗi, đó là một lỗi đánh máy não. Hỗ trợ máy vector là những gì tôi đã cố gắng để nói. Tôi không có bất kỳ tài liệu tham khảo tốt hơn wikipedia sẽ chỉ cho bạn. – chaos

5

Nghe có vẻ như tôi là vấn đề phù hợp hơn với genetic algorithms so với mạng thần kinh. Lưới thần kinh có xu hướng cần một vấn đề bị ràng buộc để giải quyết, đòi hỏi đào tạo chống lại dữ liệu đã biết, vv - trong khi các thuật toán di truyền hoạt động bằng cách tìm ra các giải pháp gần đúng và tốt hơn cho một vấn đề mà không yêu cầu đào tạo.

+0

Nếu dữ liệu (đào tạo) có một hình thức đặc trưng thì nó có thể chứng minh một phương pháp tốt, nhưng đó là một số giả định ... – Alex

+2

Không chắc chắn tôi theo bạn. –

+0

PSO (Tối ưu hóa Swarm Particle) và ACO (Ant Colony Optimization) cũng là các tùy chọn cho GA. – Levon

0

Thực ra bạn có thể sử dụng NN để tìm hàm tối thiểu, nhưng nó sẽ hoạt động tốt nhất kết hợp với thuật toán di truyền được đề cập bởi Erik. Về cơ bản NN lều tìm các giải pháp tương ứng với một hàm cục bộ tối thiểu hoặc tối đa nhưng làm như vậy là khá chính xác (để bình luận về câu trả lời của Tetha rằng NN là các trình phân loại mà bạn có thể sử dụng để nói rằng dữ liệu đầu vào là tối thiểu hoặc không)

trong các thuật toán di truyền tương phản có xu hướng tìm giải pháp phổ quát hơn từ toàn bộ phạm vi đầu vào có thể nhưng sau đó cung cấp cho bạn kết quả gần đúng.

Giải pháp là để kết hợp 2 thế giới

  1. Lấy kết quả xấp xỉ từ các thuật toán di truyền
  2. Sử dụng mà kết quả để tìm ra câu trả lời chính xác hơn bằng NN
3

Back-tuyên truyền hoạt động bằng cách giảm thiểu lỗi. Tuy nhiên, bạn thực sự có thể giảm thiểu bất cứ điều gì bạn muốn. Vì vậy, bạn có thể sử dụng các quy tắc cập nhật giống như chống lưng để tìm các đầu vào Mạng nơron Nhân tạo để giảm thiểu đầu ra.

Đây là một câu hỏi lớn, xin lỗi vì câu trả lời ngắn. Tôi cũng nên thêm rằng, cách tiếp cận được đề xuất của tôi có vẻ khá kém hiệu quả so với các phương pháp được thiết lập nhiều hơn và sẽ chỉ tìm thấy một minima địa phương.

0

Bạn có thể dạy một NN để gần đúng một hàm. Nếu một hàm có thể khác biệt hoặc NN của bạn có nhiều hơn một lớp ẩn, bạn có thể dạy nó để cung cấp cho dẫn xuất của một hàm.

Ví dụ:

You can train a 1 input 1 output NN to give output=sin(input) 

You can train it also give output=cos(input) which is derivative of sin() 

You get a minima/maxima of sin when you equate cos to zero. 

Scan for zero output while giving many values from input. 0=cos() -> minima of sin 

Khi bạn đạt zero đầu ra, bạn biết rằng giá trị đầu vào là cực tiểu của hàm.

Đào tạo mất ít hơn, quét cho số không mất nhiều thời gian.

0

Mặc dù điều này hơi muộn cho tác giả của câu hỏi này. Có thể ai đó muốn kiểm tra một số thuật toán tối ưu hóa, khi anh ta đọc ...

Nếu bạn đang làm việc với hồi quy trong học máy (NN, SVM, Hồi quy tuyến tính nhiều, Hàng xóm gần nhất) và bạn muốn giảm thiểu (tối đa hóa)) chức năng hồi quy của bạn, thực tế điều này là có thể nhưng hiệu quả của các thuật toán như vậy phụ thuộc vào độ mịn, (bước-kích thước ... vv) của khu vực bạn đang tìm kiếm.

Để xây dựng "Máy học" Regressions "bạn có thể sử dụng scikit- learn. Bạn phải đào tạo và xác nhận MLR Support Vector Regression của mình. ("phù hợp với" phương pháp)

SVR.fit(Sm_Data_X,Sm_Data_y) 

Sau đó, bạn phải xác định một hàm trả về một dự báo hồi quy của bạn cho một mảng "x".

def fun(x): 
    return SVR.predict(x) 

Bạn có thể sử dụng scipiy.optimize.minimize để tối ưu hóa. Xem các ví dụ sau liên kết tài liệu.

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