Học hỏi với Mạng thần kinh là gần đúng chức năng


11

Tôi đang cố gắng sử dụng Mạng thần kinh để ước tính giá trị Q trong học tập Q như trong Câu hỏi về Q-Learning sử dụng Mạng thần kinh . Như được đề xuất trong câu trả lời đầu tiên, tôi đang sử dụng chức năng kích hoạt tuyến tính cho lớp đầu ra, trong khi tôi vẫn đang sử dụng chức năng kích hoạt sigmoid trong các lớp ẩn (2, mặc dù tôi có thể thay đổi điều này sau). Tôi cũng đang sử dụng một NN duy nhất trả về một đầu ra cho mỗi hành động như được khuyên.Q(a)

Tuy nhiên, thuật toán vẫn chuyển hướng cho bài toán cân bằng cực đơn giản. Vì vậy, tôi sợ Q-update của tôi sai. Sau khi khởi tạo, những gì tôi đã làm ở mỗi bước như sau:

  • Tính toán bằng cách truyền chuyển tiếp NN cho tất cả các hành động.Qt(st)
  • Chọn một hành động mới, , hạ cánh ở trạng thái mới .s tatst
  • Tính toán bằng cách sử dụng lan truyền về phía trước của NN cho tất cả các hành động.Qt(st+1)
  • Đặt giá trị Q đích là: chỉ cho hành động hiện tại, a_t , trong khi đặt Q_ {t + 1} (s, a_t) = Q_ {t} (s, a_t) cho các trạng thái khác. Lưu ý, tôi nghĩ rằng đây là vấn đề.Qt+1(st,at)=Qt(st,at)+αt[rt+1+γmaxaQ(st+1,a)Qt(st,at)]atQt+1(s,at)=Qt(s,at)
  • Đặt vectơ lỗi thành e=QtargetQt=Qt+1Qt
  • Backpropagate lỗi thông qua NN để cập nhật ma trận trọng số.

Bất cứ ai có thể xin vui lòng chỉ cho tôi nơi tôi đã đi sai?

Ngoài ra, bạn có nghĩ rằng tôi nên bao gồm một thuật ngữ thiên vị cũng như trong lớp đầu vào và lớp ẩn đầu tiên (nghĩa là cho các hàm sigmoid)? Nó sẽ làm cho một sự khác biệt?

Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn. Tôi có thể giúp làm rõ câu hỏi hoặc chia sẻ mã nếu cần.

Câu trả lời:


9

Mục tiêu của bạn chỉ là

rt+1+γmaxaQ(st+1,a) .

Lưu ý rằng thuật ngữ lỗi của bạn (đúng) sau đó có thể được viết lại thành rt+1+γmaxaQ(st+1,a)Qt

đó là thuật ngữ bên trong ngoặc trong công thức cập nhật. Điều này sẽ được nhân với tỷ lệ học NN của bạn và các thuật ngữ truyền bá khác trong quá trình học, sau đó được thêm vào các trọng số trước đó, giống như công thức cập nhậtQ


Cảm ơn vì tiền boa! Bằng cách đó tôi có thể tránh được các lỗi số trong giá trị đích: như bạn nói, việc thêm và trừ là vô nghĩa . Qt
Enrico Anderlini

Tuy nhiên, NN + Q-learning của tôi vẫn không hội tụ. Vì vậy, nếu phương pháp này là chính xác, tôi đoán tôi sẽ cố gắng chơi xung quanh với tốc độ học tập và số lượng tế bào thần kinh trong (các) lớp ẩn
Enrico Anderlini

1
Có, bạn nên làm điều đó (cố gắng sử dụng chức năng chuyển ReLU nữa). Nhưng lưu ý rằng Q-Learning không có đảm bảo hội tụ với hàm gần đúng. Nếu lần thử tiếp theo của bạn không hiệu quả, bạn có thể muốn thử Lợi ích học tập. Và cuối cùng, vấn đề có thể là dữ liệu của bạn không phải là iid. Vì vậy, bạn cần triển khai Trải nghiệm Phát lại.
RCpinto

Tôi có một phần mở rộng cho câu hỏi. Tôi hiểu thuật toán như được đề cập trong câu hỏi nhưng bối rối về các điều khoản và . Nếu phần thưởng cho trò chơi chỉ được biết đến vào cuối trò chơi (tại một điều kiện thắng hoặc thua), làm thế nào để chúng ta cung cấp phần thưởng cho một bước trung gian? Qt+1rt+1
K Biếnka Ganguly

1
Bạn không, nó bằng không. Nhưng nó sẽ được truyền từ từ bởi các giá trị Q sang các trạng thái trước đó, bởi vì giá trị Q là ước tính của phần thưởng tích lũy trong tương lai .
RCpinto
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.