關於圍棋貼目的問題...

前陣子 AlphaGo 大獲全勝後放出了五十盤自戰棋譜 (兩台 AlphaGo 自己下),其實有件事情有點出乎大家意料,而在圍棋界被一直討論。就是在這五十盤裡,黑棋與白棋的勝率比是 12:38 (中國規則,黑棋貼 7.5 目的情況),明顯白棋有強大的優勢。

這個 7.5 目指的是,由於黑棋先下 (先手優勢),所以圍的地會比較多,為了彌補白棋後下的這個缺點,一般都會設計「貼目」這個規則。

交大資工的 CGI 團隊在上個月月底發了一篇論文 (參考「CGOS Whole Period Ratings for 19x19 Board」這邊的記錄,在有參加 CGOS 的團隊裡只輸新版的 Zen),討論 value network 的新想法:「Multi-Labelled Value Networks for Computer Go」。

他們對貼目的數量做了分析:

For the training data, we label on output ?? as follows. For each self-play game, first calculate territory difference ? at the end of the game. Then, based on the Chinese rule, label 1 (win) on ?? for all ? < ?, and -1 (lose) for all ? > ?. (Note that the draw case ? = ? is ignored in this paper since the komi is not an integer normally.) For example, if black occupies 7 more points of territory than white, the ?-komi game is considered a win for all ? < 7, and a loss for all ? > 7. Thus, in this case, a 7.5-komi game is a loss, and a 6.5-komi or 0.5-komi game is a win.

這個研究完全顛覆了目前職業棋手一般的理解。目前的理解是,貼 5.5 目是黑棋優勢,貼 7.5 目是白棋優勢 (所謂的大貼目時代)。

接下來應該會有更多的研究出來,圍棋界會不會反思貼目規則呢...

Linux 上跑電腦圍棋程式 (CGOS)

這邊講的不是對人下的,而是電腦之間的對弈。

目前大多數的對弈軟體會到「CGOS - A Go Server Just for Computers」這邊對弈,當然目前最紅的是一般 (人類) 正式比賽用的 19x19 棋盤,數子採用中國規則 (相當於貼 7.5 目)。

不過與常見的正式比賽比較不一樣的是採用包干制,每方限時 15 分鐘,超時就直接裁定敗,不過有個小例外:

CGOS silently adds a fraction of a second to each players clock for each move played.

要把圍棋程式接到 CGOS 上面需要兩段程式,一段是 Go Engine 本身要支援 Go Text Procotol (GTP),另外一段是把 GTP 接到 CGOS。

前面 Go Engine 的部份,目前不少圍棋軟體都有支援 GTP,像是 Leela 或是 Ray

後者一般會用 Python CGOS Client

其中比較特別的是 CGOS 的帳號密碼,帳號只允許 18 個字,另外沒有帳號申請系統,第一次用什麼帳號他就自動記錄起來,之後就要用這組。

# config.cfg
Common:
  KillFile = kill.txt

# First engine
GTPEngine:
  Name = Leela090-test
  CommandLine = ./leela090-gtp.sh

  ServerHost = yss-aya.com
  ServerPort = 6819
  ServerUser = Leela090-test
  ServerPassword = mypassword

  NumberOfGames = 1

  SGFDirectory = sgf

然後建立 sgf 目錄存棋譜後,用 python bin/cgosclient.py config.cfg 跑起來。當你 touch kill.txt 後,下一盤棋就會自己結束 (預設是一直下)。

再來是裡面提到的 leela090-gtp.sh

#!/bin/bash
exec /usr/bin/nice -n 20 $(dirname $0)/leela_090_linux_x64_opencl -g -t 8 -b 50 -q -l /tmp/leela090-gtp.log

這邊跑的是 OpenCL 版本,你也可以跑 CPU 版。其中 -g 是 GTP mode,-t 是 CPU thread 數量,-b 是 network latency penalty (避免超時),-q 是 quiet mode,-l 是 log。

DeepMind 跟 Blizzard 合作攻略 StarCraft II

DeepMind 宣佈與 Blizzard 合作,開發了 Star Craft II 的界面讓 AI 可以操作:「DeepMind and Blizzard to release StarCraft II as an AI research environment」:

Today at BlizzCon 2016 in Anaheim, California, we announced our collaboration with Blizzard Entertainment to open up StarCraft II to AI and Machine Learning researchers around the world.

這次比起圍棋更有意義的地方在於,圍棋是在完整資訊的情況下做出決策,但真實世界中經常是沒有完整的資訊就要做決策,這次的 StartCraft II 類似於這樣的環境,更接近於現實生活的情境:

StarCraft is an interesting testing environment for current AI research because it provides a useful bridge to the messiness of the real-world. The skills required for an agent to progress through the environment and play StarCraft well could ultimately transfer to real-world tasks.

另外考慮到電腦可以無限制精細操作每個單位,而人類有「操作速度」的問題,在規劃上會設限每分鐘可以操作的速度:

Computers are capable of extremely fast control, but that doesn’t necessarily demonstrate intelligence, so agents must interact with the game within limits of human dexterity in terms of “Actions Per Minute”.

來拉板凳繼續看下去...

在遊戲上模擬跑步的動作

從「Balls to learning how to animate, let's film some parkour!」這篇看到讓人懷念的遊戲,1989 年的《波斯王子》:

Jordan Mechner (波斯王子的作者) 用 Rotoscoping 的方式將他弟弟做這些動作的畫面拍下來,然後確保在電腦上角色的動作是順暢的:

Here's the source frames used to rotoscope the above animation. Don't let the ghostly pallor fool you! Jordan Mechner's brother is in fact quite healthy; he was altered with state-of-the-art Liquid Paper and Sharpie technology to fit the palette restrictions of the Apple II.

而波斯王子的原始程式碼在 2012 的時候也從 3.5 吋磁片上順利拉出來,放到 GitHub 上:「jmechner/Prince-of-Persia-Apple-II」。

Thanks to Jason Scott and Tony Diaz for successfully extracting the source code from a 22-year-old 3.5" floppy disk archive, a task that took most of a long day and night, and would have taken much longer if not for Tony's incredible expertise, perseverence, and well-maintained collection of vintage Apple hardware.

產生隨機地圖

在「Generating fantasy maps」這邊看到在講產生隨機地圖的方法,就像這樣細緻的地圖:

作者是依照「Polygonal Map Generation for Games」這篇的方法改善的,我之前看過但好像沒寫文章記錄下來...

兩篇文章裡面都寫得很詳細,一步一步提供用到的演算法以及範例說明。

暗黑破壞神 Diablo 的 Game Concept 文件

看到「Diablo - Game Concept by Condor, Inc.」這份 PDF 文件,講 1996 年年底 (12/31) 發表的 Diablo,超級經典的遊戲。

文件上可以看到這是 1994 年的紙本文件 (居然已經 22 年前了),最後面還有時程表,所以感覺起來應該是內部的紙本文件?這個經典到不行的遊戲只用了一年開發...

剛剛看英文版維基百科,最後面的連結已經加上這份資料了...

谷李五番棋今天開打

GoogleDeepMind 所研發出來的 AlphaGo李世乭的「谷李五番棋」將在今天開打。

中國規則、兩個小時、一分鐘讀秒:

The matches will be played under Chinese rules with a komi of 7.5 (the compensation points the player who goes second receives at the end of the match). Each player will receive two hours per match with three lots of 60-second byoyomi (countdown periods after they have finished their allotted time).

將在韓國時間下午一點開賽,對我們也就是十二點開賽:

The matches will be held at the Four Seasons Hotel, Seoul, South Korea, starting at 1pm local time (4am GMT; day before 11pm ET, 8pm PT) on March 9th, 10th, 12th, 13th and 15th.

將會有大量的媒體講解直播,毫無疑問的,YouTubeDeepMind 這個頻道會有直播,目前看起來是早上的十一點半就會開始了。

其他的頻道,台灣已知的有:

不過我應該會到處看吧,中國的圍棋網站「围棋TV」也會在十一點半開始直播。

很多人都有猜測勝負,但自從去年十月贏了樊麾後,不知道成長了多少。其實都是在資訊不足的情況下猜測,在這種情況下,人類大獲全勝或是電腦大獲全勝都不意外...

也因此,五番棋的第一盤應該是最轟動的,因為可以看出 AlphaGo 長到什麼程度... 不過聽說第一盤 Google 只會拿單機版出來應戰?所以如果輸的很慘的話就會拿雲端版來戰?

啊啊啊我好想看啊...

遊戲捲頁的理論與實作

文章的標題「Scroll Back: The Theory and Practice of Cameras in Side-Scrollers」,裡面圖又大又多,20Mbps 的光世代全速下載要跑滿一分鐘才能抓完。


順便測一下 Imgur 的 mp4,以及 HTML5 的 video tag。

裡面考了不少古啊,把捲頁的方式分成許多類別...