Choose Language
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
Abak Logo
Chơi Abak Evolution với Học Tăng Cường
Học tăng cường đã thay đổi cuộc chơi cho mọi người trong AI. Tôi đã dùng nó để huấn luyện mạng nơ-ron của Abak với kết quả xuất sắc.

Năm 2018, Google đánh bại nhà vô địch GO bằng Neural Network AlphaGo của mình, và điều đó tạo ra rất nhiều xôn xao. Những thư viện Machine Learning mã nguồn mở tuyệt vời mới trở nên sẵn có, sử dụng GPU tại nhà để tăng tốc quá trình huấn luyện.

Tôi quyết định thử làm điều đó với Abak, nhưng khi mới bắt đầu, tôi gần như chẳng biết mạng nơ-ron là gì. Tôi từng bị nó cám dỗ đôi chút ở đại học (1996), nhưng vì thiếu dữ liệu, GPU và mục tiêu rõ ràng, nên rất khó tiếp cận. Hơn nữa: xét về toán học, Neural Network là một chủ đề nặng và bạn cần rất nhiều cảm hứng.

Sau rất nhiều nghiên cứu căng thẳng và ám ảnh, tôi đã có thể xây dựng một mô hình và khiến nó học được.

Đứng trên vai những người khổng lồ, ý định đầu tiên của tôi là học hỏi từ Tiến sĩ Gerald Tesauro, người đã phát triển TD-Gammon vào những năm 90. Nếu tôi nhớ không lầm, đó là lần triển khai thực tế đầu tiên của một thuật toán học tăng cường.

Nhưng vì Abak là một trò chơi hai chiều, tôi không thể dùng mô hình được đề xuất và buộc phải phát triển mô hình riêng. Tôi quyết định sử dụng đầu ra của một số thuật toán như một phần của mô hình, như thông tin chuyên gia, để NN có thể học dễ hơn. Tôi cảm thấy như mình đang gian lận khi làm vậy.

Dưới đây là so sánh giữa hai mô hình, của Backgammon và của Abak.

Mô Hình Backgammon

Mô hình TD được dùng rộng rãi của Backgammon mô tả các cột. Với mỗi cột trên bàn, 4 đầu vào được dùng để mô tả nó.

  • Không có quân: [0,0,0,0]
  • Một quân: [1,0,0,0]
  • Hai quân: [1,1,0,0],
  • Ba quân: [1,1,1,0]
  • Nhiều hơn ba quân: [1,1,1,1].

Nó có 28 bộ như thế này (một bộ cho mỗi cột của bàn cờ) cho mỗi đội, tức tổng cộng 28*2*4 đầu vào, cộng thêm một vài đầu vào để đếm quân ở thanh giữa. Thật không may, tôi đang viết điều này theo trí nhớ, nên có thể không hoàn toàn chính xác.

Mô Hình Abak Evolution

Mô hình của Abak rất khác. Nó mô tả các quân, và mỗi quân có một tập đặc trưng riêng. Ở những phiên bản mới hơn, tôi có thêm một mô tả đơn giản hóa của bàn cờ để bổ sung, nhưng kết quả không quá ấn tượng; dù vậy, các đặc trưng vẫn còn ở đó.

Mô hình mô tả trò chơi có bốn phần [477 inputs]:

  • Mô tả các quân (14x30): Phần mô tả bao gồm chỉ số của quân, khoảng cách, độ cao, v.v. Nó không bao gồm lớp quân, vì lớp đó được kế thừa từ vị trí của quân trong mô hình.
  • Trạng thái đội (4x2): Đếm một số quân hoặc đặc điểm trạng thái.
  • Bản đồ sức mạnh (24x2).
  • Trạng thái ván chơi: ai tung tiếp theo! (1).

Bạn có thể xem mô tả đầy đủ của mô hình ở bên dưới.

Các phiên bản:

1.- Python Cumpy (TD-V1).

Phiên bản đầu tiên của AI này được huấn luyện bằng Python thuần với Cumpy, một thư viện giống Numpy chạy trên GPU. Tôi muốn học từ đầu, nên dù đã thử nghịch với Tensorflow một thời gian, tôi quyết định chơi trần trụi (à thì, được trang bị bởi bộ đôi Python và Cumpy tuyệt vời).

Tính năng:

  • Một mạng ước lượng cơ hội đội 0 thắng ván.
  • Không nhận biết điểm số.
  • Không có cờ "ai tung tiếp".
  • Không có bản đồ sức mạnh
  • Một lớp ẩn, với hàm kích hoạt sigmoid.
  • Mất 45.000 ván để đánh bại AI trước đó của tôi vốn được viết dựa trên thông tin chuyên gia (GOAFI).
  • Học trong 4.500.000 ván. Và thắng 75% số trường hợp trước GOFAI.
  • Nó đã chạy thực tế trong 2 năm.

2.- Tensorflow (TD-V2).

Nỗi đau của tôi với Phiên bản 1 là nó không giỏi tính cơ hội chiến thắng vì được huấn luyện mà không có cờ "ai tung tiếp". Bằng cách nào đó, kết quả của NN vẫn khá tốt để chọn nước đi, nhưng xét về mặt toán học, chúng không nhất quán. Phiên bản 2 đã sửa vấn đề đó và thêm một mạng mới để tính xác suất ván đấu kết thúc với 1, 2 hoặc 3 điểm.

Lần này tôi chọn tensor flow để huấn luyện mô hình mới vì tôi muốn học một framework, và tôi tìm được một ví dụ khởi đầu rất tốt cho nó.

Tính năng:

  • Một mạng để tính cơ hội đội 0 thắng ván.
  • Một mạng để tính xác suất ván đấu kết thúc với 1, 2 hoặc 3 điểm.
  • Bao gồm bản đồ sức mạnh mới.
  • Hai lớp ẩn, với các hàm kích hoạt khác nhau: Leaky RELU cho các lớp ẩn và sigmoid ở lớp đầu ra.
  • Mất 12.000 ván để thắng TD-V1 50% thời gian.
  • Học trong 350.000 ván và đạt tỷ lệ thắng 80% trước TD-V1.

3.- Phiên bản 3: Tạm Dừng.

Ở dặm cuối cùng của quá trình ra quyết định để chọn nước đi tốt nhất, có một thuật toán đơn giản tìm kiếm Equity tốt nhất [%W*%p1+%W*%p2+%W*%p3].

Tùy vào mục tiêu của trận đấu, số điểm mỗi người chơi cần để thắng và giá trị khối, nó sẽ gán trọng số khác nhau cho đầu ra của các mạng.

Tôi muốn tạo một NN có thể tự xử lý điều đó. Đó sẽ là V3. Hiện chưa được phát triển.

Mô Hình Neural Network của Abak:

Mô Tả Quân Cờ (14 inputs x 30 checkers ) :

  • Khoảng cách về nhà
    x/25
  • Số lượng quân ở phía trên
    x/4
  • Số lượng quân ở phía dưới
    x/4
  • Đang ở thanh giữa
    [0,1]
  • Đang ở nhà
    [0,1]
  • An toàn (ở khoảng cách = 0).
    [0,1]
  • Đang tạo chặn với một quân khác
    [0,1]
  • Có thể bị druid bẫy
    [0,1]
  • Đang bị druid bẫy
    [0,1]
  • Đang bẫy (đầu vào này chỉ dành cho mỗi druid)
    [0,1]
  • Rủi ro bị đánh ở vùng gần (6 vị trí phía trước)
    [0..1]
  • Rủi ro bị đánh ở vùng xa (12 vị trí phía trước)
    [0..1]
  • Rủi ro bị druid bẫy
    [0..1]
  • Cơ hội di chuyển
    [0..1]

Đầu vào liên quan đến ván chơi cho mỗi đội (4x2):

  • Số lượng quân ở thanh giữa.
    x/15
  • Số lượng quân an toàn.
    x/15
  • Mọi quân đều đã ở nhà.
    [0,1]
  • Số lượng quân an toàn 0.
    [0,1]

Bản Đồ Sức Mạnh: (24*2):

Cuối cùng là bản đồ lực, tương tự như điều Doctor Tessauros đã đề xuất cho Backgammon nhưng được đơn giản hóa. Với mỗi vị trí và mỗi đội, nó có một số từ 0 đến 1, biểu thị khối đó mạnh đến đâu:

  • 0.0
    nếu trống.
  • 0.1
    nếu có một quân.
  • 0.5
    nếu quân đó là guard.
  • 1.0
    nếu có từ hai quân trở lên.

Abak Evolution Backgammon là một biến thể Backgammon theo lớp quân cực kỳ tuyệt vời, đúng nghĩa là thêm một chiều mới vào trò chơi cờ bàn cổ điển.