2009-12-01 33 views
19

Làm cách nào để tôi có thể đặt Mạng Neural để chúng chấp nhận và xuất ra một phạm vi giá trị liên tục thay vì các giá trị rời rạc? Từ những gì tôi nhớ khi thực hiện lớp Neural Network vài năm trước, hàm kích hoạt sẽ là một hình sigmoid, có giá trị từ 0 đến 1. Nếu tôi muốn mạng nơron của tôi mang lại một vô hướng có giá trị thực, tôi nên làm gì làm gì? Tôi nghĩ có lẽ nếu tôi muốn có một giá trị giữa 0 và 10 tôi chỉ có thể nhân giá trị bằng 10? Nếu tôi có giá trị âm thì sao? Đây có phải là những gì mọi người thường làm hoặc có cách nào khác không? Điều gì về đầu vào?Sản lượng liên tục trong Mạng nơron

Cảm ơn

Trả lời

26

Phần lớn công việc trong lĩnh vực neuroevolution liên quan đến việc sử dụng mạng nơron với đầu vào và đầu ra liên tục.

Có một số phương pháp chung:

  • Một nút cho mỗi giá trị
    • chức năng kích hoạt tuyến tính - như những người khác đã lưu ý, bạn có thể sử dụng chức năng kích hoạt không sigmoid trên các nút đầu ra nếu bạn quan tâm đến phạm vi giới hạn các hàm sigmoid. Tuy nhiên, điều này có thể làm cho đầu ra của bạn trở nên tùy ý lớn, có thể gây ra vấn đề trong quá trình đào tạo.
    • Chức năng kích hoạt Sigmoid - chỉ cần mở rộng đầu ra sigmoid (hoặc dịch chuyển và mở rộng quy mô, nếu bạn muốn các giá trị âm) là một cách tiếp cận phổ biến trong neuroevolution. Tuy nhiên, cần đảm bảo rằng hàm sigmoid của bạn không quá dốc: một hàm kích hoạt dốc có nghĩa là phạm vi giá trị "hữu ích" là nhỏ, điều này buộc trọng lượng mạng nhỏ. (Đây chủ yếu là một vấn đề với thuật toán di truyền, sử dụng một chiến lược sửa đổi trọng lượng cố định không hoạt động tốt khi trọng lượng nhỏ được mong muốn.)

regular sigmoid http://natekohl.net/media/sigmoid-reg.gif steep sigmoid http://natekohl.net/media/sigmoid-steep.gif

  • Nhiều nút cho mỗi giá trị - lây lan một giá trị duy nhất liên tục trên nhiều nút là một chiến lược chung cho đại diện đầu vào liên tục. Nó có lợi ích của việc cung cấp thêm "tính năng" cho một mạng để chơi với, với chi phí tăng kích thước mạng.
    • binning - lây lan một đầu vào duy nhất trên nhiều nút (ví dụ RBF networks, trong đó mỗi nút là một chức năng cơ sở với một trung tâm khác nhau mà sẽ được kích hoạt một phần bởi các đầu vào). Bạn nhận được một số lợi ích của đầu vào rời rạc mà không làm mất một biểu diễn trơn tru.
    • Biểu thị nhị phân - chia giá trị liên tục thành 2 N khối, sau đó cấp giá trị đó vào mạng dưới dạng mẫu nhị phân cho N nút. Cách tiếp cận này là nhỏ gọn, nhưng loại giòn và kết quả đầu vào thay đổi một cách không liên tục.
6

Không có quy tắc mà yêu cầu đầu ra (*) để được bất kỳ chức năng cụ thể. Trong thực tế, chúng ta thường cần phải thêm một số phép tính số học vào cuối hàm được thực hiện trong một nút nhất định, để mở rộng quy mô và nếu không ép buộc đầu ra thành một biểu mẫu cụ thể.

Ưu điểm của việc làm việc với đầu ra tất cả hoặc không và/hoặc 0.0 đến 1.0 đầu ra được chuẩn hóa là nó làm cho mọi thứ dễ dàng hơn, và cũng tránh các vấn đề tràn và như vậy.

(*) "Đầu ra" có thể được hiểu ở đây hoặc là ouptut một nút đã cho (nơron) trong mạng hoặc toàn bộ mạng.
Như được chỉ ra bởi Mark Bessey đầu vào [cho toàn bộ mạng] và đầu ra [của mạng] thường nhận được một số lọc/chuyển đổi. Như được gợi ý trong phản hồi này và trong nhận xét của Mark, có thể thích hợp hơn để có các nút chuẩn/chuẩn trong các lớp "ẩn" của mạng và áp dụng một số chuẩn hóa/chuyển đổi/discretization theo yêu cầu cho đầu vào và/hoặc cho đầu ra của mạng; Tuy nhiên, thực hành như vậy chỉ là vấn đề thực tiễn hơn là yêu cầu bắt buộc của mạng thần kinh nói chung.

3

Thông thường, bạn cần thực hiện một số tính năng lọc (chuyển đổi cấp độ, v.v.) trên cả đầu vào và đầu ra. Rõ ràng, lọc đầu vào sẽ thay đổi trạng thái bên trong, do đó cần cân nhắc một số xem xét để không làm mất tín hiệu bạn đang cố gắng đào tạo.

+0

Và vì tôi chắc chắn ai đó sẽ đề cập đến - bạn có thể xác định mạng mà bạn không * phải thực hiện bất kỳ chuyển đổi nào vào đầu vào hoặc đầu ra. Nó thường dễ dàng hơn để có các nút chung, và làm một số lọc rõ ràng, tuy nhiên. –

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