Kết quả 1 đến 10 của 55
-
14-07-2018, 03:26 PM #1
Felicity - sự trở lại của Saola, hay Ký sự phiêu lưu tại Giải cờ máy Thế giới Đài Loan
Sau một thời gian rất dài không sờ tới các động cơ (engine) cờ Tướng tôi đã tìm được niềm vui để quay lại với công việc từng là niềm đam mê lớn: phát triển các động cơ cờ Tướng mang đi “chiến” với thiên hạ.
Việc đầu tiên mang chương trình “cổ” Saola ra phủi bụi đã. Thời của nó đã cách đây cả chục năm rồi. Lúc đó còn chưa hề có các chương trình cờ đình đám của TQ ngày nay như XQMS, Intela, Ccyclone, Gaga, Shiga... Thời đó là thời của vài chương trình như Saola, Xiexie tranh tài. Saola và Xiexie chưa từng có trận đấu chính thức. Nhưng nhiều người chơi đã có nhiều trận đụng độ với kết quả một chín một mười. Tôi viết như vậy để các bạn thấy Saola và Xiexie vừa là bạn (các tác giả là bạn bè trao đổi dù ngoài đời chưa từng gặp mặt) vừa là các kỳ phùng địch thủ của nhau.
Trước khi Saola “ngủ đông” tôi đã kịp tạo một phiên bản động cơ (không dùng đồ họa của riêng bản thân nữa mà dùng các chương trình GUI khác). Lắp nó vào GUI MoonRiver (Sông Trăng - một GUI mới do tôi đang phát triển, chạy trên cả Win/Mac, hiện được Việt/Anh/Hoa, có thể chơi tự động hai chiều với các web cờ) và cho nó lên chiến thử trên CXQ - môi trường thử nghiệm yêu thích của tôi ngày xưa. Saola vẫn giữ phong độ và lối đánh xưa nhưng đã nhanh hơn rất nhiều. Thời nó tung hoành máy tính phải chạy lặc lè mới đạt đến độ sâu 8-10 trung cuộc thì ngày nay chỉ cần một vài giây. Cũng như xưa, nó đấu với các kỳ thủ không chút sơ xẩy và dường như không ai có thể hạ được nó.
Cho đến khi tôi mang nó đi thử với các chương trình khác (mà tôi biết cũng đang chơi trên CXQ) thì tất cả các cảm giác tích cực biến mất hoàn toàn. Saola thua mọi ván cờ tôi thử. Rõ ràng món đồ cổ tuổi cả thập kỷ với công nghệ của thời 32 bit chạy đơn lõi (1 core / U) thiết kế để đấu với người chứ không phải với chương trình khác, đã không có chút cơ hội nào đối đầu với các chương trình mới, được phát triển, cọ xát chiến trận liên tục và tận dụng được mọi ưu thế phần cứng hiện đại. Có lẽ nó cũng không có cơ hội đối đầu với Xiexie - anh bạn kỳ phùng địch thủ xưa. Tuy không được phát triển liên tục nhưng Xiexie cũng không bị bỏ bễ lâu đến vậy. Tác giả vẫn liên tục trình làng các phiên bản mới và mang chương trình đi dự nhiều cuộc thi. Một lập trình viên người Hà Lan ông Geert Muller từng than thở rằng năm trước trình của ông chơi ngang ngửa với Xiexie thì năm sau Xiexie đánh bại ông hoàn toàn và ông ước chừng nó phải được cải tiến tăng hơn 400 ELO (một khoản rất lớn - trình cờ Vua nổi tiếng Stockfish thường chỉ cải tiến được khoảng 70 ELO / năm). Chỉ vài lần như vậy thì Saola đã phải hít khói từ lâu rồi!
Thay cho việc vá víu chiếc áo chật chội Saola tôi quyết định viết lại một chương trình mới và đặt tên là Felicity (Hạnh phúc).
Saola chạy với MoonRiver, phân tích tự động ván cờ trên CXQ
(Còn tiếp)
-
Post Thanks / Like - 24 Thích, 0 Không thíchDoThanh, Tvsi, LamQuanTuyet, minhpmt, annguyen1, caohuy, passion272, tinhlahan702, chienxahanoi, tranvanloc, tuanngan, tamthaplucke, the_fall, luongdangxuan, chinhngd, DenHenLaiLen, tonetone, trungchinh, ngovanan, dethichoo, Tiểu Nhị, trung_cadan, mruy, phieumien đã thích bài viết này
-
15-07-2018, 06:37 AM #2
Rất hay. Mong thầy Nguyên trở lại thường xuyên với Felicity....
-
Post Thanks / Like - 6 Thích, 0 Không thích
-
15-07-2018, 09:28 AM #3
Hay quá, hy vọng sớm được trải nghiệm các bản thương mại chính hãng made in Việt Nam.
Ở giải đấu vừa qua em có nghe nói đến từ "used multiple graphics cards for deep learning" và việc kết hợp thuật toán "Alphazero" vào cờ tướng.
Mong anh giải thích thêm về các vấn đề này.
Hóng phần tiếp theo của loạt ký sự phiêu lưu tại Giải cờ máy Thế giới Đài Loan của anh.
-
Post Thanks / Like - 7 Thích, 0 Không thíchtronghieuptctk, minhpmt, passion272, tinhlahan702, tamthaplucke, trung_cadan, chezz đã thích bài viết này
-
15-07-2018, 09:55 AM #4
-
Post Thanks / Like - 1 Thích, 0 Không thíchtrung_cadan đã thích bài viết này
-
15-07-2018, 10:12 AM #5
Chương trình AlphaZero không dùng thuật toán tìm kiếm kinh điển của cờ (thuật toán AlphaBeta) mà dùng phương pháp học máy, thông qua cái gọi là Mạng thần kinh (thực chất là chương trình mô phỏng hoạt động của mạng thần kinh trong não con người). Mạng này chạy được với các bộ vi xử lý thông thường. Tuy nhiên nó lại chạy nhanh hơn nhiều với các card đồ hoạ - về nhiều khía cạnh tính toán của nó giông giống như đồ hoạ, không cần tính toán thật chính xác mà chỉ cần tính gần đúng nhưng thật nhanh thật nhiều. Tôi sẽ đề cập nó trong một bài viết khác.
-
Post Thanks / Like - 6 Thích, 0 Không thích
-
15-07-2018, 10:15 AM #6
-
Post Thanks / Like - 5 Thích, 0 Không thích
-
15-07-2018, 10:19 AM #7
Phần 2
Kế hoạch trước mắt cũng khá đơn giản: hoàn thành chương trình mới và bắt kịp các chương trình “chiếu” dưới trong vòng một năm, sau đó sẽ cố gắng với tới những chương trình cao cấp hơn.
Một sự kiện xẩy ra khiến tôi phải đẩy nhanh tiến độ. Đó là Giải cờ máy Thế giới (Computer Olympiad) năm nay được tổ chức vào tháng 7. Trước đó năm 2008 giải cờ được tổ chức tại TQ có khá nhiều chương trình cờ Tướng tham dự và nó cũng chính là giải tạo đà, bệ phóng cho nhiều chương trình cờ nổi tiếng của họ (Intella, Cyclone, Gaga, NEUChess, Shiga, Chimo, XqMaster...). Nhưng sau đó khi được tổ chức ở các nước khác các lập trình viên từ TQ lại rất ít khi tham dự (có lẽ do họ khó xin visa và chi phí quá đắt đỏ). Do vậy với cờ Tướng giải này chỉ được coi là giải phong trào, kém nổi tiếng so với giải của TQ (tuy vậy giải của TQ không được coi là giải quốc tế do hầu như chỉ có người TQ tham gia với nhau).
Năm nay (2018) giải được tổ chức tại Đài Loan, thuận tiện cho các lập trình viên đến từ Trung Quốc và Đài Loan nên phần cờ Tướng khởi sắc với nhiều trình tham gia hơn, các tên tuổi có Bugcchess và Shiga.
Các địch thủ của giải dường như vừa sức hơn với trình cờ còn đang thời trứng nước của tôi. Tuy vậy cũng như mọi giải trước đây lúc đầu tôi không định tham gia (chúng đều khá tốn kém và mất nhiều thời gian, công sức từ việc chuẩn bị cho đến tham gia). Nhưng khác với mọi lần, năm nay tôi có một báo cáo cho hội nghị khoa học tổ chức song song với giải và vì vậy tôi cần đến đó tham dự. Cùng một công, đến báo cáo thì mang luôn chương trình mới đi đánh chuông xứ người.
Nói là bỏ bễ nhưng thực ra tôi vẫn rất quan tâm và theo dõi các công nghệ cờ, vẫn thường xuyên vào và trao đổi với người yêu cờ máy từ khắp mọi ngóc ngách trên Thế giới, vẫn thực hiện các nghiên cứu, viết các chương trình thử nghiệm công nghệ, vẫn đều đặn tung ra các phần mềm mã nguồn mở (open source) mà gần đây nhất là phần mềm tạo Khai cuộc và phần mềm CSDL tàn cuộc. Do vậy việc viết các phần mới, kết nối lắp ráp chúng hoàn thành tương đối nhanh.
“Nàng” Felicity giờ đã dùng hoàn toàn các công nghệ mới của thời 64 bít đa lõi thay thế cho loại 32 bít đơn lõi cổ xưa. Bộ khung xương đã được thay thế, chắc chắn, to rộng hơn sẽ dễ cho tôi bổ xung cải tiến nó về sau. Hàm tìm kiếm cũng được bổ xung những kỹ thuật mới nhất.
Tuy vậy hàm lượng giá - nơi chứa tri thức cờ lại không dễ thay thế ngày một ngày hai nên phần này tôi phát triển dựa nhiều vào Saola. Do “bộ não” được vay mượn, nhiều phần giống nên chương trình mới vẫn có thể tạm coi là Saola nhưng tính toán nhanh và sâu hơn nhiều.
Felicity cũng được khoác thêm trọng trách mới: là môi trường cho những nghiên cứu thử nghiệm của tôi. Phiên bản hiện tại được cài đặt thêm một thuật toán mới do tôi nghĩ ra và viết thành công trình nghiên cứu. Nó giống như một minh họa, một thử nghiệm thực tế cho thuật toán đó. Tuy vậy nó lại khiến cho chương trình phải chạy chậm một chút (điều xưa nay các lập trình viên tránh tối đa).
Felicity đã được cấp tốc hoàn thành, tinh chỉnh, chữa lỗi và đóng gói trong thời gian gần 3 tháng. Nó cũng phải trả giá đắt cho sự vội vã: đến ngày lên đường nó vẫn còn nhiều lỗi, nhiều vấn đề, nhiều chức năng còn đang viết dang dở tạm bợ hoặc hoạt động không đúng như thiết kế. Nó không có cả khai cuộc (phút cuối tôi phải gỡ bỏ vì lỗi). Tất cả giống như một đám núi lửa được ấn nhét vào một cái bao, luôn lăm le phun trào phá tung chương trình.
Điều may mắn giờ nó đã có thể chơi toàn bộ các ván cờ, hạ được chính cha nó Saola.
Giải cờ máy 2018 tại Đại học Quốc gia Đài Loan
Tác giả và những người tham dự hội nghị khoa học
(Còn tiếp)
-
Post Thanks / Like - 19 Thích, 0 Không thíchDoThanh, LamQuanTuyet, minhpmt, annguyen1, passion272, tinhlahan702, doioikhoi, chienxahanoi, Bến Tre, tranvanloc, tamthaplucke, trungchinh, the_fall, luongdangxuan, chinhngd, trung_cadan, laoxaocongio, DenHenLaiLen, tonetone đã thích bài viết này
-
15-07-2018, 08:37 PM #8
khi nào có cho e xin link .. :v
-
Post Thanks / Like - 2 Thích, 1 Không thíchDoThanh, trung_cadan đã thích bài viết nàyZhaoXinXin không thích bài viết này
-
16-07-2018, 10:40 AM #9
Giờ đây nếu ta cứ đi theo hướng search nước là phần mềm ngày càng tụt hậu. Neural Network có thể tận dụng cả triệu ván cờ quá khứ, có kết quả thắng thua để gắn nhãn mạnh yếu từng nước đi. Machine Learning do đó mang tính practical (thực tế) và có thể đánh chết bất kì một phần mềm cờ nào đi theo lối mòn. Vì nó có khả năng học bổ sung, và search nước truyền thống dù có mạnh cỡ nào nó cũng học được hết.
NN, hay ConvNN, còn mạnh tới nỗi có thể phân loại 1000 nhãn hình khác nhau (chó, mèo, bàn, ghế, quần, áo...) với độ chính xác 90%. NN học từ vài triệu tấm ảnh đã gắn nhãn. Vì cơ sở dữ liệu quá lớn nên có thể mất 1 tuần trên dàn máy với GPU 1080 Ti. Tương tự, trong cờ, việc đưa toàn bộ dữ liệu ở quá khứ vào cho NN phân tích mạnh yếu vẫn còn quá ít so với việc train dữ liệu hình ảnh.
Recurrent NN với LSTM cell, có thể phân tích dữ liệu thời gian (time-series), như việc dự đoán tỉ giá thị trường, dự đoán thời tiết, phát hiện nhịp tim bất thường... Áp dụng RNN vào cờ là công việc hiện nay của các data scientist ở Google AI. Chẳng hạn, pháo 2 bình 5 mã 8 tấn 7 mã 2 tấn 3, thì sau đó cờ đen nên đi nước nào thì kết quả là tốt nhất? RNN chỉ cần học từ vô vàn ván cờ quá khứ trong tích tắc và cho ra kết quả tối ưu. Trong một phạm trù nào đó, ta có thể hiểu NN không cần phải biết luật cờ là gì (tuy nhiên, việc gán vài luật cờ cơ bản cho nó để tránh error cũng là cần thiết).
Nếu được một lời khuyên, tôi xin chân thành khuyên tác giả đừng đi vào lối mòn search nước nữa. Đó đã quá lạc hậu. Việc học các ván cờ từ quá khứ bằng NN là việc không khó, cấu trúc NN, hay đúng hơn là RNN, đã có sẵn trên nhiều data science community, như Kaggle. Cái quan trọng là làm sao thu thập càng nhiều ván cờ càng tốt và phải preprocess data chỉn chu để feed vào NN.
Có thể việc search nước ngược từ lúc chiếu hết, chỉ hiệu quả ở giai đoạn cờ tàn. Còn từ khai cuộc đến hết trung cuộc, NN mạnh hơn cách truyền thống ở rất nhiều mặt. Nó có thể kết hợp với search truyền thống, bởi vì nó sẽ suggest nước đi trong tích tắc (vì model đã được train), chứ không cần tốn thời gian cho từng nước đi như cách truyền thống.
Ý trên khác hẳn với việc dò nước trong library. Việc dò nước trong library không đảm bảo đó là nước yếu hay mạnh.
Việc này chỉ cần, theo tôi nghĩ, vài tháng là tác giả có khả năng thành công. Bản thân tôi đang nghiên cứu tại UNSW cũng đang tham gia các machine learning competition trên Kaggle và thực hành với NN hằng ngày, nên tôi có cảm giác rằng nó nên được đưa vào cờ tướng.
Thân.Lần sửa cuối bởi imagination, ngày 16-07-2018 lúc 10:48 AM.
-
Post Thanks / Like - 11 Thích, 0 Không thíchSông Hàn, LamQuanTuyet, minhpmt, annguyen1, chezz, trung_cadan, the_fall, tonetone, Tiểu Nhị, DenHenLaiLen, tranvanloc đã thích bài viết này
-
16-07-2018, 01:13 PM #10
Chúc mừng anh Nguyên quay trở lại diễn đàn, em là Quang, ngày xưa test Saola cùng với anh đây ạ
-
Post Thanks / Like - 6 Thích, 0 Không thích
Felicity - sự trở lại của Saola, hay Ký sự phiêu lưu tại Giải cờ máy Thế giới Đài Loan
Đánh dấu