Đây có phải là một thuật toán Q-learning hay chỉ là vũ phu?


8

Tôi đã chơi với một thuật toán học cách chơi tictactoe. Mã giả cơ bản là:

repeat many thousand times {
  repeat until game is over {
    if(board layout is unknown or exploring) {
      move randomly
    } else {
      move in location which historically gives highest reward
    }
  }

  for each step in the game {
    determine board layout for current step
    if(board layout is unknown) {
      add board layout to memory
    }
    update reward for board layout based on game outcome
  }
}

now play a human and win :-)

Thăm dò: ban đầu thuật toán khám phá một cách tích cực và điều này làm giảm tuyến tính. Sau khi nói một ngàn trò chơi, nó chỉ khám phá trong 10% số lần di chuyển. Tất cả các động thái khác được dựa trên khai thác các phần thưởng trước đó.

Phần thưởng: nếu trò chơi dẫn đến chiến thắng, sau đó thưởng 10 điểm. Nếu trò chơi dẫn đến kết quả hòa, 0 điểm, nếu không -5 điểm. Trên thực tế, những phần thưởng này có thể được "điều chỉnh", do đó, nếu trò chơi ngắn hơn và giành chiến thắng, sau đó trao nhiều điểm hơn hoặc nếu nó được trao giải thưởng ít điểm hơn. Bằng cách này, thuật toán thích chiến thắng một cách nhanh chóng. Điều đó có nghĩa là nó học cách chiến thắng càng sớm càng tốt, thay vì nhắm đến chiến thắng sau này. Điều đó rất quan trọng để nó không bỏ lỡ chiến thắng ngay lập tức - nếu nó bỏ lỡ một động tác như vậy, đối thủ có thể sẽ a) di chuyển đến đó để tránh cho AI chiến thắng lần sau và b) nghĩ rằng thuật toán là ngu ngốc vì nó đã bỏ lỡ một "điều hiển nhiên " thắng lợi.

Thuật toán này thực sự học, vì vậy tôi có thể xếp nó thành thuật toán học máy.

Tôi nghĩ, nhưng tôi không chắc chắn, đó là một thuật toán học tập được củng cố. Tuy nhiên, theo https://www.cse.unsw.edu.au/~cs9417ml/RL1/tdlearning.html đó không phải là học tập khác biệt theo thời gian, vì nó không ước tính phần thưởng cho đến khi kết thúc và nên ước tính phần thưởng khi nó đi cùng. Điều đó có thể có nghĩa là nó không được củng cố việc học.

Câu hỏi 1: Tôi có thể lập luận thành công rằng tôi đang ước tính phần thưởng dựa trên lịch sử và vẫn cho rằng thuật toán được học tăng cường hoặc thậm chí là học hỏi không?

Câu hỏi 2: Nếu tôi thay thế tra cứu phần thưởng dựa trên bố trí bảng, bằng mạng thần kinh, trong đó bố trí bảng là đầu vào và phần thưởng là đầu ra, thuật toán có thể được coi là học tăng cường sâu không?

Câu hỏi 3: Tôi không nghĩ rằng tôi có tỷ lệ học tập hoặc yếu tố giảm giá. Nó rất quan trọng?

Tôi nhận thấy rằng thuật toán này khá vô dụng trừ khi tôi huấn luyện nó với ít nhất mọi động tác mà đối thủ cố gắng. Vì vậy, theo một cách nào đó, nó cảm thấy như nó sử dụng vũ lực hơn là thực sự "học hỏi". Điều này khiến tôi đặt câu hỏi liệu máy học tictactoe có thực sự học hay không. Tôi đồng ý rằng việc sử dụng mạng thần kinh để học nhận dạng hình ảnh có thể được phân loại là học vì khi nhìn thấy hình ảnh không xác định, nó có thể nêu ra phân loại của nó. Nhưng điều đó khá vô dụng đối với các trò chơi như tictactoe khi bố trí bảng tương tự hoàn toàn không liên quan (một cái có thể dẫn đến một chiến thắng, cái còn lại có thể dẫn đến thua cuộc). Vì thế...

Câu hỏi 4: Các thuật toán tictactoe có thể được phân loại là học thực sự chứ không chỉ đơn giản là vũ lực?

Cập nhật: liên quan đến phần thưởng ... khi thuật toán quyết định nơi sẽ đi, nó sẽ tìm ra phần thưởng cho từng vị trí như sau:

var total = winRewards + drawRewards + lossRewards;
move.reward = (100*(winRewards/total)) + (10*(drawRewards/total)) + (-1*(lossRewards/total));

Tôi chia cho tổng số điểm (cho mỗi lần di chuyển), bởi vì nếu không thì dường như biết rằng một nơi là TUYỆT VỜI và không cho người khác cơ hội. Bằng cách này, chúng tôi tính ra tỷ lệ thắng bất kể tần suất được chơi như thế nào. Nó được chuẩn hóa so với những người khác.

Mã có sẵn ở đây: https://github.com/maxant/tictactoe/blob/master/ai.js

CẬP NHẬT # 2: Tôi đã nhận ra rằng thuật toán này không thể được phân loại là sử dụng vũ lực bởi vì nó không thực sự học được nhiều trò chơi đó trước khi trở thành một chuyên gia. Chi tiết tại đây: http://blog.maxant.co.uk/pebble/2018/04/11/1523468336936.html

Câu trả lời:


5

Các câu hỏi về định nghĩa luôn thú vị, vì vậy hãy để tôi thử đưa ra một câu trả lời khác ở đây.

Đầu tiên, hãy để chúng tôi mô hình hóa toán học những gì bạn đang làm. Ở cấp độ cao nhất, bạn đang ước tính một số biện pháp "phần thưởng" cho mỗi trạng thái bảng . Bạn đang làm điều đó bằng cách tương tác với môi trường và cập nhật các tham số bên trong của bạn (tức là bảng giá trị ) theo hướng củng cố các hành vi thuận lợi. Do đó, theo hầu hết các định nghĩa tiêu chuẩn, thuật toán của bạn thực sự nên được phân loại là học tăng cường .R(s)sR

Để hiểu loại học tăng cường nào bạn đang làm và liệu nó có "tốt" không, chúng ta nên đi sâu hơn một chút. Một trong những khái niệm quan trọng trong học tập củng cố là hàm giá trị (hoặc hàm thay đổi của nó, hàm ), báo cáo tổng phần thưởng tốt nhất có thể bạn có thể đạt được nếu bạn chơi tối ưu từ trạng thái bảng nhất định. Nếu bạn có thể chỉ ra rằng thuật toán của bạn, ít nhất là theo một cách nào đó, ước tính , bạn có thể yêu cầu một sự bảo đảm "lòng tốt" nhất định và tiến hành phân loại nó thành bất kỳ loại thuật toán "tốt" nào (mà tất cả đều nhắm đến ước tính trực tiếp, hoặc hành động như thể họ ước tính nó ngầm).VQVV

Lưu ý rằng khi chúng ta nói về các trò chơi hai người chơi, không nhất thiết phải tồn tại một duy nhất để nhắm tới. Ví dụ: giả sử phần thưởng 1 cho chiến thắng, 0 cho thua, 0,5 cho một trận hòa và không giảm giá, là nếu bạn chơi với một đối thủ tối ưu, nhưng có thể gần bằng nếu đối thủ của bạn là ngẫu nhiên. Nếu bạn chơi với một con người, của bạnVV(empty board)0.51Vcó thể khác nhau tùy thuộc vào con người. Mọi người đều biết rằng bước đầu tiên vào trung tâm là an toàn nhất, tuy nhiên bản thân tôi chưa bao giờ chiến thắng với một nước đi như vậy - trò chơi luôn kết thúc với tỷ số hòa. Tôi đã giành chiến thắng một vài lần bằng cách di chuyển đầu tiên vào góc, bởi vì nó gây nhầm lẫn cho một số đối thủ và họ đã phạm sai lầm trong lượt đầu tiên của họ. Điều này sang một bên, giả sử để biểu thị trò chơi chống lại một đối thủ tối ưu là một lựa chọn hợp lý.V

Quay trở lại thuật toán của bạn, bước quan trọng là cập nhật , mà bạn không thực sự chỉ định. Hãy để tôi giả sử bạn chỉ đơn giản là tích lũy điểm số ở đó. Nếu đúng như vậy, chúng tôi có thể nói rằng, nói đúng ra, bạn không thực hiện Q-learning, đơn giản vì đó không phải là cách chức năng được cập nhật theo định nghĩa cổ điển. Tuy nhiên, điều đó không có nghĩa là bạn không hoàn toàn ước tính đúng , và thật khó để chứng minh hay bác bỏ liệu cuối cùng bạn có làm điều đó hay không.RQV

Hãy để tôi điều chỉnh thuật toán của bạn một chút cho rõ ràng. Thay vì thêm lên phần thưởng cuối cùng để cho mỗi tiểu bang , mà xảy ra trong game, chúng ta hãy theo dõi trung bình thưởng bao giờ đạt từ mỗi tiểu bang. Rõ ràng, vị trí mà bạn luôn giành chiến thắng, mặc dù hiếm khi đạt được, nên được đánh giá cao hơn vị trí mà bạn hiếm khi giành được, ngay cả khi bạn thường đạt được nó, vì vậy chúng tôi có thể sẽ không phá vỡ thuật toán bằng thay đổi này và tinh thần chung của việc học vẫn như cũ. Sau thay đổi này, trở nên dễ hiểu - đó là phần thưởng dự kiến ​​trung bình có thể đạt được từ vị trí .R(s)sR(s)s

Phần thưởng dự kiến ​​trung bình này không thực sự là hàm giá trị mà chúng ta quan tâm để ước tính. Mục tiêu của chúng tôi sẽ cho chúng tôi biết phần thưởng được mong đợi tốt nhấtVVcho từng vị trí, sau tất cả Tuy nhiên, điều thú vị là khi chính sách của bạn đã tối ưu thì phần thưởng trung bình của bạn bằng với phần thưởng tối ưu của bạn (vì dù sao bạn luôn thực hiện các động tác tối ưu), do đó, có thể bạn đã học được cách đo sai trong số liệu của mình thuật toán, nếu quá trình học tập đẩy thuật toán của bạn trở nên hơi hướng tới việc chơi tối ưu, khi bạn dần dần cải thiện chính sách của mình, thì số liệu "phần thưởng dự kiến ​​trung bình" sẽ dần trở nên "chính xác hơn" và cuối cùng bạn bắt đầu hội tụ đến hàm giá trị chính xác. Đây là cách viết tay thuần túy, nhưng nó sẽ minh họa cho tuyên bố về việc khó chứng minh hoặc bác bỏ liệu thuật toán của bạn có chính thức học những gì nó nên học hay không. Có lẽ nó làm.

Trong mọi trường hợp, hãy để chúng tôi, thay vì theo dõi phần thưởng trung bình cho mỗi trạng thái, hãy thay đổi thuật toán của bạn để theo dõi phần thưởng tốt nhất có thể cho đến nay. Điều này có nghĩa là, bạn sẽ kiểm tra tất cả các di chuyển thay thế từ mỗi vị trí và chỉ cập nhật nếu di chuyển hiện tại của bạn dẫn đến điểm số được cải thiện (so với các tùy chọn thay thế bạn có thể thực hiện từ trạng thái này). Xin chúc mừng, bây giờ thuật toán của bạn tương đương với phương pháp Q-học thông thường (nó là "giá trị lặp" phương pháp, để được chính xác hơn).R(s)

Cuối cùng, "đó là học tập hay vũ phu" là một câu hỏi hợp lệ. Từ "học" có thể được hiểu theo ít nhất hai cách khác nhau. Thứ nhất, học tập có thể biểu thị ghi nhớ đơn giản . Ví dụ, nếu tôi phát hiện ra rằng di chuyển đầu tiên đến trung tâm là tốt, tôi có thể viết thực tế này xuống một bảng và sử dụng thực tế này sau đó trực tiếp. Mọi người gọi việc học thuộc như vậy là "học", nhưng việc học này thực sự khá ngu ngốc.

Một ý nghĩa thứ hai, khác thường được gán cho "học tập" là khái quát hóa . Sẽ là trường hợp, ngoài việc đơn giản là viết ra những động tác nào là tốt, thuật toán của bạn có thể khái quát thông tin này cho các động thái chưa từng thấy trước đây. Đây là kiểu học "thông minh".

Q-learning, cũng như nhiều thuật toán RL khác thường được hình thành trong điều kiện của bản cập nhật cho các bảng hoặc . Như vậy, chúng vốn là các thuật toán "học câm", thậm chí không nhằm mục đích khái quát hóa thông tin trạng thái. Khái quát hóa thực sự (còn gọi là "học thông minh") chỉ xuất hiện khi bạn bắt đầu mô hình hóa trạng thái hoặc chính sách bằng cách sử dụng một cái gì đó có khả năng khái quát hóa tích hợp, chẳng hạn như mạng lưới thần kinh.VQ

Vì vậy, để tóm tắt. Vâng, thuật toán của bạn là tăng cường học tập. Không, nó không phải là Q-learning, mà nó trở thành một thay đổi nhỏ. Đúng, nó là "vũ phu" hơn là "học thông minh", nhưng Q-learning mặc định cũng vậy. Có, việc thêm khái quát bằng cách mô hình hóa các trạng thái với mạng nơ ron làm cho thuật toán "thông minh hơn".


câu trả lời rất tốt, cảm ơn. Khi tôi sử dụng R (s) để quyết định nơi sẽ đi, tôi không sử dụng phần thưởng thô và tôi không sử dụng mức trung bình, nhưng những gì tôi làm, là làm cho phần thưởng tương đối. Tôi cập nhật câu hỏi để cung cấp thêm chi tiết. Ý tưởng sử dụng mức trung bình, hoặc chỉ tốt nhất là khá tuyệt, tôi có thể cho nó một vòng xoáy :-)
Ant Kutschera

6

Kudos đã tìm ra một thuật toán chơi tic-tac-toe hoạt động từ đầu!

Câu hỏi 1: Tôi có thể lập luận thành công rằng tôi đang ước tính phần thưởng dựa trên lịch sử và vẫn cho rằng thuật toán được học tăng cường hoặc thậm chí là học hỏi không?

Điều đầu tiên trước tiên, đây chắc chắn không phải là Q-learning.

Tuy nhiên, tôi nghĩ nó được phân loại là Học tăng cường. Bạn đã triển khai các thành phần chính của RL:

  • Một trạng thái (bảng hiện tại), được sử dụng làm đầu vào trên mỗi bước.

  • Một hành động (mong muốn sắp xếp bảng tiếp theo), được sử dụng làm đầu ra. Khi hành động có hiệu quả để chọn trạng thái tiếp theo trực tiếp, điều này đôi khi được gọi là đại diện sau. Nó thường được sử dụng trong RL cho các trò chơi xác định.

  • Phần thưởng được tạo ra bởi môi trường, nơi mục tiêu của đại lý là tối đa hóa phần thưởng dự kiến.

  • Một thuật toán có thể lấy dữ liệu về trạng thái, hành động và phần thưởng và học cách tối ưu hóa phần thưởng mong đợi thông qua việc tích lũy kinh nghiệm trong môi trường.

Thuật toán của bạn là IMO gần nhất với Monte Carlo Control , đây là cách tiếp cận RL tiêu chuẩn.

Một trong những lợi thế lớn của Q Learning là nó sẽ học được một chính sách tối ưu ngay cả khi khám phá - điều này được gọi là học ngoài chính sách , trong khi thuật toán của bạn là chính sách, tức là nó học về các giá trị của cách ứng xử hiện tại. Đây là lý do tại sao bạn phải giảm tốc độ thăm dò theo thời gian - và đó có thể là một vấn đề vì lịch biểu tỷ lệ thăm dò là một tham số siêu của thuật toán học tập của bạn có thể cần điều chỉnh cẩn thận.

Câu hỏi 2: Nếu tôi thay thế tra cứu phần thưởng dựa trên bố trí bảng, bằng mạng thần kinh, trong đó bố trí bảng là đầu vào và phần thưởng là đầu ra, thuật toán có thể được coi là học tăng cường sâu không?

Vâng, tôi cho rằng nó sẽ là kỹ thuật. Tuy nhiên, không có khả năng mở rộng quy mô tốt cho các vấn đề phức tạp hơn chỉ từ việc thêm mạng thần kinh để ước tính giá trị hành động, trừ khi bạn thêm vào một số yếu tố phức tạp hơn, chẳng hạn như sử dụng độ lệch chính sách hoặc độ dốc chính sách.

Câu hỏi 3: Tôi không nghĩ rằng tôi có tỷ lệ học tập hoặc yếu tố giảm giá. Nó rất quan trọng?

Một yếu tố giảm giá không quan trọng đối với các vấn đề về tình tiết. Nó chỉ cần thiết cho các vấn đề liên tục, trong đó bạn cần có một khoảng thời gian nào đó nếu không phần thưởng dự đoán sẽ là vô hạn (mặc dù bạn cũng có thể thay thế cơ chế giảm giá bằng cách tiếp cận phần thưởng trung bình trong thực tế).

Tỷ lệ học tập là một thiếu sót quan trọng. Bạn không giải thích những gì bạn có thay cho nó. Bạn đã đặt update reward for board layout based on game outcome- bước cập nhật đó thường có tỷ lệ học tập trong đó. Tuy nhiên, đối với tic-tac-toe và Q-Learning, bạn thực sự có thể đặt tỷ lệ học tập thành 1.0, mà tôi đoán là giống như cách tiếp cận của bạn và nó hoạt động. Tôi đã viết mã ví dụ thực hiện chính xác điều đó - xem dòng này đặt tỷ lệ học tập thành 1.0 . Tuy nhiên, các kịch bản phức tạp hơn, đặc biệt là trong các môi trường không xác định, sẽ học kém với tỷ lệ học tập cao như vậy.

Câu hỏi 4: Các thuật toán tictactoe có thể được phân loại là học thực sự chứ không chỉ đơn giản là vũ lực?

Thuật toán của bạn chắc chắn đang học được điều gì đó từ kinh nghiệm, mặc dù không hiệu quả so với con người. Mặc dù vậy, rất nhiều thuật toán RL cơ bản có vấn đề tương tự và thường cần phải xem từng trạng thái có thể có của một hệ thống nhiều lần trước khi chúng hội tụ vào một câu trả lời.

Tôi sẽ nói rằng một tìm kiếm cây đầy đủ từ vị trí hiện tại trong khi chơi là "sức mạnh vũ phu". Trong một trò chơi đơn giản như tictactoe, điều này có lẽ hiệu quả hơn RL. Tuy nhiên, khi các trò chơi ngày càng tinh vi hơn, phương pháp học máy trở nên cạnh tranh với tìm kiếm. Thường thì cả RL và một số hình thức tìm kiếm được sử dụng cùng nhau.

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.