Làm thế nào để thực hiện một không gian hành động bị hạn chế trong học tập củng cố?


12

Tôi đang mã hóa một mô hình học tập củng cố với một tác nhân PPO nhờ vào thư viện Tensorforce rất tốt , được xây dựng trên đỉnh của Tensorflow.

Phiên bản đầu tiên rất đơn giản và giờ tôi đang lặn vào một môi trường phức tạp hơn, nơi tất cả các hành động không có sẵn ở mỗi bước.

Giả sử có 5 hành động và tính khả dụng của chúng phụ thuộc vào trạng thái bên trong (được xác định bởi hành động trước và / hoặc trạng thái mới / không gian quan sát):

  • 2 hành động (0 và 1) luôn có sẵn
  • 2 hành động (2 và 3) chỉ khả dụng khi Internal_state == 0
  • 1 hành động (4) chỉ khả dụng khi Internal_state == 1

Do đó, có 4 hành động khả dụng khi Internal_state == 0 và 3 hành động khả dụng khi Internal_state == 1.

Tôi đang nghĩ về một vài khả năng để thực hiện điều đó:

  1. Thay đổi không gian hành động ở mỗi bước, tùy thuộc vào Internal_state. Tôi cho rằng điều này là vô nghĩa.
  2. Không làm gì: để mô hình hiểu rằng việc chọn một hành động không khả dụng không có tác động.
  3. Do -alest- nothing: tác động tiêu cực một chút đến phần thưởng khi người mẫu chọn một hành động không khả dụng.
  4. Giúp mô hình: bằng cách kết hợp một số nguyên vào không gian quan sát / trạng thái thông báo cho mô hình biết giá trị Internal_state + dấu đầu dòng 2 hoặc 3

Có những cách khác để thực hiện điều này? Từ kinh nghiệm của bạn, cái nào sẽ là tốt nhất?

Câu trả lời:


5

Giải pháp đơn giản nhất là đơn giản làm cho mọi hành động trở thành "hợp pháp", nhưng thực hiện một ánh xạ nhất quán, xác định từ các hành động bất hợp pháp tiềm tàng sang các hành động pháp lý khác nhau. Bất cứ khi nào triển khai PPO bạn đang sử dụng sẽ chọn một hành động bất hợp pháp, bạn chỉ cần thay thế nó bằng hành động pháp lý mà nó ánh xạ tới. Thuật toán PPO của bạn sau đó vẫn có thể tự cập nhật như thể hành động bất hợp pháp đã được chọn (hành động bất hợp pháp đơn giản trở thành ... "biệt danh" cho hành động pháp lý thay thế).

Ví dụ: trong tình huống bạn mô tả:

  • 2 hành động (0 và 1) luôn có sẵn
  • 2 hành động (2 và 3) chỉ khả dụng khi Internal_state == 0
  • 1 hành động (4) chỉ khả dụng khi Internal_state == 1

Trong trường hợp internal_state == 0, nếu hành động 4được chọn (một hành động bất hợp pháp), bạn luôn có thể trao đổi hành động đó cho một trong những hành động khác và thay vào đó thực hiện hành động đó. Nó không thực sự quan trọng (về mặt lý thuyết) mà bạn chọn, miễn là bạn nhất quán về nó. Thuật toán không cần phải biết rằng nó đã chọn một hành động bất hợp pháp, bất cứ khi nào nó chọn lại hành động bất hợp pháp đó trong tương lai ở các trạng thái tương tự, nó sẽ liên tục được ánh xạ tới cùng một hành động pháp lý, vì vậy bạn chỉ cần củng cố theo hành vi đó.


01


Đối với "giải pháp" đầu tiên, tôi đã viết ở trên rằng "về mặt lý thuyết" không quan trọng bằng cách bạn chọn bạn lập bản đồ. Tôi hoàn toàn mong đợi sự lựa chọn của bạn ở đây sẽ có tác động đến tốc độ học tập trong thực tế. Điều này là do, trong giai đoạn đầu của quá trình học tập của bạn, bạn có thể sẽ có lựa chọn hành động gần ngẫu nhiên. Nếu một số hành động "xuất hiện nhiều lần" trong các kết quả đầu ra, chúng sẽ có xác suất được chọn cao hơn với lựa chọn hành động close-tor-andom ban đầu. Vì vậy, sẽ có tác động đến hành vi ban đầu của bạn, điều này có tác động đến trải nghiệm mà bạn thu thập, do đó cũng có tác động đến những gì bạn học được.

Tôi chắc chắn hy vọng nó sẽ có lợi cho hiệu suất nếu bạn có thể bao gồm (các) tính năng đầu vào cho internal_statebiến.

Nếu một số hành động pháp lý có thể được xác định là "gần gũi về mặt ngữ nghĩa" với một số hành động bất hợp pháp nhất định, thì cũng có thể có lợi cho việc thực hiện để kết nối cụ thể các hành động "tương tự" đó trong "ánh xạ" từ hành động bất hợp pháp sang hành động pháp lý nếu bạn chọn thực hiện giải pháp đó. Ví dụ: nếu bạn có hành động "nhảy về phía trước" trở thành bất hợp pháp ở các quốc gia có trần rất thấp (vì bạn đập đầu mình), có thể tốt hơn là ánh xạ hành động đó thành hành động "di chuyển về phía trước" (mà vẫn tương tự như vậy, cả hai đều tiến lên phía trước), hơn là sẽ ánh xạ nó thành hành động "di chuyển ngược". Ý tưởng về các hành động "tương tự" này sẽ chỉ được áp dụng cho một số tên miền nhất định, tuy nhiên, trong một số miền có thể không có sự tương đồng như vậy giữa các hành động.


1

Mục tiêu là thiết kế một thành phần tối ưu hóa chính sách gần nhất có các ràng buộc cụ thể đối với không gian hành động phụ thuộc vào các quy tắc do nhà nước điều khiển, sử dụng một khung như Tensorforce.

Tùy chọn thiết kế được liệt kê trong câu hỏi

Các tùy chọn này được liệt kê ở đây để tham khảo nhanh khi đọc phân tích ban đầu bên dưới.

  • Thay đổi không gian hành động ở mỗi bước, tùy thuộc vào Internal_state. Tôi cho rằng điều này là vô nghĩa.
  • Không làm gì: để mô hình hiểu rằng việc chọn một hành động không khả dụng không có tác động.
  • Do -alest- nothing: tác động tiêu cực một chút đến phần thưởng khi người mẫu chọn một hành động không khả dụng.
  • Giúp mô hình: bằng cách kết hợp một số nguyên vào không gian quan sát / trạng thái thông báo cho mô hình biết giá trị Internal_state + dấu đầu dòng 2 hoặc 3

Phân tích ban đầu

Thực sự hợp lý để thay đổi không gian hành động cho mỗi lần di chuyển. Trên thực tế, đó là một đại diện thích hợp cho vấn đề như đã nêu và cách con người bình thường chơi trò chơi và cách máy tính đánh bại con người trong Cờ vua và cờ vây.

Sự vô cảm rõ ràng của ý tưởng này chỉ đơn thuần là một sự giả tạo của tiến trình dọc theo bản đồ dự án Tensorforce và tiến trình cùng với lý thuyết gia cố, cả hai đều trẻ trong bức tranh lớn hơn. Đọc tài liệu và Câu hỏi thường gặp về Tenorforce, có vẻ như khung được thiết kế để cắm vào một công cụ quy tắc để xác định không gian hành động. Đây không phải là một thiếu sót của nguồn mở. Dường như không có bất kỳ bài báo nào cung cấp lý thuyết hoặc đề xuất thuật toán cho quyết định chuỗi Markov có quy tắc.

Tùy chọn không làm gì là tùy chọn phù hợp với các chiến lược hiện có được trình bày trong tài liệu. Cách làm gần như không có gì có lẽ là cách tiếp cận sẽ tạo ra hành vi đáng tin cậy hơn và có lẽ ngay lập tức hơn.

Vấn đề với khái niệm giúp mô hình là nó không phải là một ý tưởng mạnh mẽ hơn là mở rộng mô hình. Trong nguồn mở, điều này sẽ được thực hiện bằng cách mở rộng các lớp đại diện cho mô hình, đòi hỏi một số công việc lý thuyết trước khi mã hóa

    a. Represent rule-conditioned learning in nomenclature
    b. Represent convergence mathematically using the new nomenclature
    c. Determining a method of convergence
    d. Proving convergence
    e. Rechecking
    f. Defining a smooth and efficient algorithm
    g. Providing PAC learning information for planning
    f. Peer review
    g. Extending the classes of the library
    h. Proof of concept with the current problem above
    i. Additional cases and metrics comparing the approach with the others
    j. Extending the library flexibility to support more such dev

Việc mở rộng các hệ thống học tập để bao quát trường hợp hạn chế quy tắc là một ý tưởng tuyệt vời cho luận án tiến sĩ và có thể bay trong các phòng thí nghiệm nghiên cứu như một đề xuất dự án với nhiều ứng dụng khả thi. Đừng để tất cả các bước can ngăn nhà nghiên cứu. Về cơ bản, chúng là một danh sách các bước cho bất kỳ luận án tiến sĩ hoặc dự án phòng thí nghiệm AI được tài trợ.

Đối với một giải pháp ngắn hạn, giúp mô hình có thể hoạt động, nhưng nó không phải là một chiến lược hợp lý để tiếp tục các ý tưởng về AI trên con đường học tập củng cố. Là một giải pháp ngắn hạn cho một vấn đề cụ thể, nó có thể hoạt động tốt. Ý tưởng gần như không có gì có thể có nhiều âm thanh hơn, vì nó phù hợp với các bằng chứng hội tụ dẫn đến việc triển khai cụ thể mà Tensorforce có thể sẽ được sử dụng.

Đổi tên nó từ gần như không có gì để hỗ trợ - hội tụ có thể giúp phát triển quan điểm đúng đắn trước khi thử. Bạn có thể thấy rằng bạn phải đạt được sự trợ giúp khi bạn tiếp cận hội tụ để tránh tình trạng quá tải giống như với tốc độ học tập.


3
Điều thường xảy ra, ví dụ AlphaGo, là biểu diễn mức độ thấp trong Mạng thần kinh thể hiện một không gian hành động rất lớn, hầu hết là không thể ở trạng thái hiện tại (điều này là do các giới hạn của NN đơn giản tạo ra các vectơ kích thước cố định ). Sau đó, một phần khác của mã áp dụng bộ lọc để chọn và chuẩn hóa xác suất chỉ cho các di chuyển được phép. NN và bộ lọc kết hợp là một phần của tác nhân. Vì vậy, thật công bằng khi nói rằng toàn bộ tác nhân sẽ "thay đổi không gian hành động cho mỗi lần di chuyển" - Tôi không biết làm thế nào có thể đạt được điều đó trong thư viện Tensorforce.
Neil Slater

1

Thông thường, tập hợp các hành động mà tác nhân có thể thực hiện không thay đổi theo thời gian, nhưng một số hành động có thể trở nên bất khả thi ở các trạng thái khác nhau (ví dụ: không phải mọi hành động đều có thể xảy ra ở bất kỳ vị trí nào của trò chơi TicTacToe).

Hãy xem ví dụ tại pice của mã https://github.com/haje01/gym-tictactoe/blob/master/examples/base_agent.py :

ava_actions = env.available_actions()
action = agent.act(state, ava_actions)
state, reward, done, info = env.step(action)
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.