Mengapa tidak ada mesin pembelajaran penguatan yang dalam untuk catur, mirip dengan AlphaGo?

32

Komputer sudah lama bisa bermain catur menggunakan teknik "brute-force", mencari ke kedalaman tertentu dan kemudian mengevaluasi posisi. Namun komputer AlphaGo, hanya menggunakan JST untuk mengevaluasi posisi (itu tidak melakukan pencarian mendalam sejauh yang saya tahu). Apakah mungkin untuk membuat mesin catur yang memainkan catur dengan cara yang sama seperti AlphaGo memainkan Go? Kenapa tidak ada yang melakukan ini? Apakah program ini berkinerja lebih baik daripada mesin catur terbaik (dan pemain catur) hari ini?

lijas
sumber
5
Lihat arxiv.org/abs/1509.01549 (Jerapah: Menggunakan Pembelajaran Penguatan Mendalam untuk Bermain Catur) dan artikel populer technologyreview.com/s/541276/… . Juga erikbern.com/2014/11/29/deep-learning-for-chess.html
amoeba mengatakan Reinstate Monica
Itu hanya masalah waktu sampai seseorang berhasil melakukan ini dengan benar. Jadi satu bulan setelah Anda memposting pertanyaan Anda, ini dia: arxiv.org/abs/1712.01815 .
Amoeba berkata Reinstate Monica

Jawaban:

49

EDIT (setelah membaca makalah):

Saya sudah membaca koran dengan serius. Mari kita mulai dengan apa yang diklaim Google di koran:

  • Mereka mengalahkan Stockfish dengan Monte-Carlo-Tree-Search + Deep neural networks
  • Pertandingan benar-benar sepihak, banyak kemenangan untuk AlphaZero tetapi tidak untuk Stockfish
  • Mereka mampu melakukannya hanya dalam empat jam
  • AlphaZero bermain seperti manusia

Sayangnya, menurut saya itu bukan jurnal yang bagus. Saya akan menjelaskan dengan tautan (agar Anda tahu saya tidak bermimpi):

https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author

Hasil pertandingan sendiri tidak terlalu berarti karena pilihan kontrol waktu dan pengaturan parameter Stockfish yang agak aneh: Permainan dimainkan pada waktu yang tetap 1 menit / bergerak, yang berarti bahwa Stockfish tidak menggunakan heuristik manajemen waktu ( banyak upaya telah dilakukan untuk membuat Stockfish mengidentifikasi poin-poin penting dalam permainan dan memutuskan kapan harus menghabiskan waktu ekstra untuk bergerak; pada waktu yang tetap per gerakan, kekuatannya akan sangat berkurang).

Stockfish tidak bisa memainkan catur terbaik hanya dengan satu menit per gerakan. Program tidak dirancang untuk itu.

  • Stockfish berjalan pada mesin komersial biasa, sementara AlphaZero menggunakan 4 juta + mesin TPU yang disetel untuk AlphaZero. Ini seperti mencocokkan desktop kelas atas Anda dengan ponsel Android yang murah. Tord menulis:

Salah satunya adalah program catur konvensional yang berjalan di komputer biasa, yang lain menggunakan teknik yang berbeda secara mendasar dan berjalan pada perangkat keras yang dirancang khusus yang tidak tersedia untuk pembelian (dan akan jauh dari anggaran pengguna biasa jika itu).

  • Google secara tidak sengaja memberikan 64 utas ke mesin 32 inti untuk Stockfish. Saya mengutip GM Larry Kaufman (pakar catur komputer kelas dunia):

http://talkchess.com/forum/viewtopic.php?p=741987&highlight=#741987

Saya setuju bahwa tes itu jauh dari adil; Masalah lain yang melukai SF adalah bahwa itu tampaknya dijalankan pada 64 utas pada mesin 32 inti, tetapi akan lebih baik menjalankan hanya 32 utas pada mesin itu, karena hampir tidak ada manfaat SMP untuk mengimbangi perlambatan sekitar 5 hingga 3 secara kasar. Juga rasio biaya lebih dari yang saya katakan; Saya berpikir itu adalah mesin 64 core, tetapi mesin 32 core harganya sekitar setengah dari yang saya duga. Jadi mungkin keseluruhan 30 sampai 1 tidak terlalu buruk perkiraan. Di sisi lain saya pikir Anda meremehkan berapa banyak yang bisa ditingkatkan lebih lanjut.

  • Stockfish hanya memberikan tabel hash 1GB. Ini adalah lelucon ... Saya memiliki tabel hash yang lebih besar untuk aplikasi iOS Stockfish saya (Penafian: Saya penulis) di iPhone saya! Tord menulis:

    ... tabel hash terlalu kecil untuk jumlah utas ...

Tabel hash 1GB benar-benar tidak dapat diterima untuk pertandingan seperti ini. Stockfish akan sering menghadapi tabrakan hash. Dibutuhkan siklus CPU untuk mengganti entri hash lama.

  • Stockfish tidak dirancang untuk berjalan dengan banyak thread. Di aplikasi catur iOS saya, hanya beberapa utas yang digunakan. Tord menulis:

... sedang bermain dengan lebih banyak utas pencarian daripada yang pernah diterima dalam jumlah signifikan pengujian ...

  • Stockfish sedang berjalan tanpa buku pembuka atau tablebase Syzygy endgame 6-piece. Ukuran sampel tidak cukup. Versi Stockfish bukan yang terbaru. Diskusi di sini .

KESIMPULAN

Google tidak membuktikan tanpa keraguan metode mereka lebih unggul dari Stockfish. Jumlah mereka dangkal dan sangat bias ke AlphaZero. Metode mereka tidak dapat direproduksi oleh pihak ketiga yang independen. Masih terlalu dini untuk mengatakan Deep Learning adalah metode yang unggul untuk pemrograman catur tradisional.


EDIT (Des 2017):

Ada sebuah makalah baru dari Google Deepmind ( https://arxiv.org/pdf/1712.01815.pdf ) untuk pembelajaran penguatan dalam catur. Dari abstrak, mesin catur Stockfish nomor satu dunia "secara meyakinkan" dikalahkan. Saya pikir ini adalah pencapaian paling signifikan dalam catur komputer sejak pertandingan Deep Blue 1997. Saya akan memperbarui jawaban saya setelah saya membaca kertas secara detail.


Asli (sebelum Des 2017)

Mari kita perjelas pertanyaan Anda:

  • Tidak, mesin catur tidak menggunakan kekerasan.
  • AlphaGo tidak menggunakan pencarian pohon, ia menggunakan Pencarian Pohon Monte Carlo . Google " Pencarian Pohon Monte Carlo alphaGo " jika Anda ingin diyakinkan.

JST dapat digunakan untuk mesin catur:

Apakah program ini berkinerja lebih baik daripada mesin catur terbaik (dan pemain catur) hari ini?

Giraffe bermain di tingkat Master Internasional, yaitu sekitar peringkat FIDE 2400. Namun, Stockfish, Houdini dan Komodo semuanya bermain sekitar FIDE 3000. Ini adalah kesenjangan yang besar. Mengapa? Mengapa tidak Pencarian Pohon Monte-Carlo?

  • Bahan heuristik dalam catur itu sederhana. Sebagian besar waktu, posisi catur menang / kalah hanya dengan menghitung materi di papan tulis. Harap ingat bahwa penghitungan materi tidak berfungsi untuk Go. Penghitungan bahan adalah urutan yang lebih cepat daripada menjalankan jaringan saraf - ini dapat dilakukan oleh bitboard yang diwakili oleh integer 64-bit. Pada sistem 64 bit, itu dapat dilakukan hanya dengan beberapa instruksi mesin. Pencarian dengan algoritma tradisional jauh lebih cepat daripada pembelajaran mesin. Node yang lebih tinggi per detik diterjemahkan ke pencarian yang lebih dalam.
  • Demikian pula, ada teknik yang sangat berguna dan murah seperti pemangkasan gerakan nol, pengurangan gerakan lanjut, dan gerakan pembunuh, dll. Mereka murah untuk dijalankan, dan jauh lebih efisien untuk pendekatan yang digunakan dalam AlphaGo.
  • Evaluasi statis dalam catur cepat dan bermanfaat
  • Pembelajaran mesin berguna untuk mengoptimalkan parameter, tetapi kami juga memiliki SPSA dan CLOP untuk catur.
  • Ada banyak metrik yang berguna untuk pengurangan pohon dalam catur. Apalagi untuk Go.

Ada penelitian bahwa Pencarian Pohon Monte Carlo tidak skala baik untuk catur. Go adalah permainan yang berbeda dengan catur. Algoritma catur tidak berfungsi untuk Go karena catur bergantung pada taktik brutal. Taktik bisa dibilang lebih penting dalam catur.

Sekarang, kami telah menetapkan bahwa MCTS bekerja dengan baik untuk AlphaGo tetapi kurang untuk catur. Pembelajaran mendalam akan lebih bermanfaat jika:

  • Evaluasi NN yang disetel lebih baik daripada algoritma tradisional. Namun ... pembelajaran yang mendalam bukanlah sihir, Anda sebagai programmer masih perlu melakukan pemrograman. Seperti yang disebutkan, kami memiliki sesuatu seperti SPSA untuk bermain sendiri untuk penyetelan parameter dalam catur.
  • Investasi, uang! Tidak ada banyak uang untuk pembelajaran mesin dalam catur. Stockfish adalah sumber bebas dan terbuka, tetapi cukup kuat untuk mengalahkan semua pemain manusia. Mengapa Google menghabiskan jutaan jika ada yang bisa mengunduh Stockfish secara gratis? Mengapa harus membayar untuk cluster CPU? Siapa yang akan membayar talenta? Tidak ada yang mau melakukannya, karena catur dianggap permainan yang "diselesaikan".

Jika pembelajaran mendalam dapat mencapai hal-hal berikut, itu akan mengalahkan algoritma tradisional:

  • Diberikan posisi catur, "rasakan" itu seperti grandmaster manusia. Misalnya, grandmaster manusia tidak akan masuk ke jalur yang buruk - berdasarkan pengalaman. Algoritma tradisional maupun pembelajaran mendalam tidak dapat mencapai hal itu. Model NN Anda mungkin memberi Anda probabilitas [0..1] untuk posisi Anda, tetapi itu tidak cukup baik.

Biarkan saya tunjukkan:

Tidak. Giraffe (tautan yang diposting oleh @Tim) tidak menggunakan Pencarian Pohon Monte Carlo. Ini menggunakan algoritma nega-max biasa. Yang dilakukannya hanyalah mengganti fungsi evaluasi reguler dengan NN, dan ini sangat lambat.

satu lagi:

Meskipun Kasparov dikalahkan oleh Deep Blue pada pertandingan 1997. "Kemanusiaan" benar-benar hilang sekitar 2003-2005, ketika Kramnik kehilangan pertandingan untuk Deep Fritz tanpa kemenangan dan Michael Adams kalah dari mesin klaster dalam pertandingan satu sisi. Sekitar waktu itu, Rybka terbukti terlalu kuat bahkan untuk pemain terbaik di dunia.

Referensi:

http://www.talkchess.com/forum/viewtopic.php?t=64096&postdays=0&postorder=asc&highlight=alphago+chess&topic_view=flat&start=0

Saya mengutip:

Dalam catur, kami memiliki konsep materialitas yang telah memberikan perkiraan yang dapat digembirakan tentang seberapa baik mesin bekerja dan dapat dihitung dengan cepat. Selain itu, ada banyak aspek lain dari permainan yang dapat dikodekan dalam fungsi evaluasi statis yang tidak dapat dilakukan di Go. Karena banyak heuristik dan evaluasi yang baik, EBF (Effective-Branching-Factor) cukup kecil. Menggunakan Neural Network sebagai pengganti fungsi evaluasi statis pasti akan memperlambat mesin cukup banyak.

Catur kecil
sumber
1
Terima kasih. Beberapa pertanyaan: Mesin catur menggunakan algoritme alfa-beta, apakah ini bukan algoritma "brute-force"? Apakah "Pencarian Pohon Monte Carlo" berarti bahwa seseorang melihat sejumlah gerakan di depan posisi saat ini?
lijas
1
@lija "brute-force" umumnya didefinisikan sebagai pencarian semua kemungkinan. Mesin catur tidak melakukan itu.
SmallChess
7
@lijas Anda baru saja menjawab pertanyaan. Penggandaan matriks adalah operasi yang lambat.
SmallChess
3
Pencarian Alpha Beta pastinya adalah "brute forcish". Hans Berliner tentang tren AI: "Saya menganggap tren yang paling penting adalah bahwa komputer menjadi jauh lebih cepat dalam 50 tahun terakhir. Dalam proses ini, kami menemukan bahwa banyak hal yang kami miliki sebagai solusi antropomorfik terbaik, yang dalam banyak kasus gagal menangkap inti nyata dari metode manusia, dapat dilakukan dengan metode yang lebih kasar yang hanya disebutkan sampai solusi yang memuaskan ditemukan. Jika ini bid'ah, biarlah. " (lihat ieeexplore.ieee.org/document/820322/?reload=true )
Daniel Lidström
1
@smallchess alpha beta adalah algoritma pencarian de facto, bahkan variasinya seperti negascout yang hanya merupakan peningkatan tambahan. Apa lagi yang bisa dia maksud? Ini ditulis sebelum sistem pembelajaran yang mendalam terbentuk.
Daniel Lidström
6

DeepBlue telah mengalahkan Kasparov sehingga masalah ini diselesaikan dengan pendekatan yang lebih sederhana. Ini dimungkinkan karena jumlah gerakan yang dimungkinkan dalam catur jauh lebih kecil daripada saat berjalan , jadi itu adalah masalah yang jauh lebih sederhana. Terlebih lagi, perhatikan bahwa NN dan brute force membutuhkan sumber daya komputasi yang besar (di sini Anda dapat menemukan foto komputer di belakang AlphaGo, perhatikan bahwa ia menggunakan bahkan bukan GPU, tetapi TPU untuk perhitungan). Seluruh keributan dengan go adalah bahwa ketika Deep Blue mengalahkan Kasparov, komunitas go berpendapat bahwa ini tidak akan mungkin terjadi dengan go (karena banyak alasan berbeda, tetapi untuk meringkas argumen saya perlu memberikan pengantar rinci untuk permainan pergi). Ya, Anda dapat mengajar NN bermain catur, Mario , atau mencoba mengajarkannya bermainStarcraft ...

Saya kira alasannya adalah karena Anda tidak sering mendengar di media arus utama tentang kasus ketika orang memecahkan masalah yang sudah diselesaikan.

Selain itu premis Anda salah, Deep Learning yang digunakan untuk bermain catur, misalnya seperti yang dijelaskan dalam Jauh Belajar Mesin Mengajar Hakikat Catur di 72 Jam, Dimainkan di International Master Tingkat . Lihat juga makalah yang sesuai, Jerapah: Menggunakan Penguatan Dalam Pembelajaran untuk Bermain Catur .

Tim
sumber
3
Meskipun jelas ada beberapa program catur yang dilatih dengan pembelajaran penguatan yang kuat, faktanya tetap bahwa tidak ada yang membangun satu yang akan mengalahkan mesin catur "tradisional". Saya berasumsi ini karena masalah ini (mengalahkan mesin tradisional) sama sekali tidak menarik / memotivasi cukup untuk menginvestasikan banyak upaya yang diperlukan untuk mengembangkan sesuatu dari tingkat AlphaGo.
Amuba kata Reinstate Monica
1
@amoeba software go-playing yang tersedia secara luas juga tidak menggunakan pembelajaran yang dalam dan biasanya lebih lemah dari pemain amatir 1, dan jauh lebih buruk dari AlphaGo. AlphaGo adalah bukti konsep.
Tim
1
@Rus9384 itu tidak mudah tapi kami sudah "menyelesaikannya", Deep Bluie telah mengalahkan Kasparov, kami memiliki angsa hitam kami yang telah lulus uji catur Turing.
Tim
5
Permainan yang terpecahkan adalah hal lain: kita tidak tahu apakah jaminan bermain sempurna menang untuk hitam / putih atau berakhir dengan seri.
rus9384
1
@Rus9384: Akan menyenangkan untuk memulai permainan melawan AI catur yang sempurna dan melihat "Putih menang. Skakmat dalam 97 gerakan".
Eric Duminil