Leela Zero

**Leela Zero**（リーラ・ゼロ）は2017年10月25日にリリースされた自由ソフトウェアのコンピュータ囲碁プログラム。チェスエンジンと囲碁ソフトLeelaを開発したベルギーのプログラマー、が開発した。

## 概要
Leela Zeroの思考アルゴリズムは、DeepMindのAlphaGo Zeroに関する2017年の論文に基づいて作られた。オリジナルの（Zeroではない）Leelaには多くの定石などの人間による知識やヒューリスティクスがプログラムに書き込まれているのとは異なり、Leela Zeroには囲碁の基本的なルールだけがプログラムされた。Leela Zeroはニューラルネットワークをもち、過去に対局した結果から学習することによって強化された。

Leela Zeroは、自身のWebサイトで調整された分散型の協力によって強化された。コミュニティのメンバーは、計算資源を提供してクライアントプログラムを実行した。クライアントでは自己対戦の対局を行い、結果は新しいニューラルネットの強化に使用された。通常、500以上のクライアントがサーバーに接続して計算資源を提供した。コミュニティは、高品質のプログラムコードの開発にも貢献していた。

Leela Zeroは、2018年4月28日に中国福建省福州で開催された「貝瑞基因杯2018世界人工知能囲棋大戦」（）で3位となった。2018年末の雑誌ザ・ニューヨーカーは、LeelaとLeela Zeroを「世界で最も成功しているオープンソースの囲碁エンジン」と評した。

2018年の初頭に、別のチームが同じコードベースからLeela Chess Zeroを分岐させ、チェスのゲームに適用されたAlphaZero論文の方法を検証した。AlphaZeroではGoogleのTPU（テンソル・プロセッシング・ユニット）が使用されていたが、Leela Chess ZeroではクラウドによるインフラストラクチャとOpenCLライブラリを介してGPUを使用する手法に置き換えられた。それでも、AlphaZero論文においてチェスのために必要だったという数十時間の訓練を補うためには、Leela Chess Zeroではクラウドによる1年のトレーニングが必要になると予想された。

2021年2月15日にLeela Zeroの分散トレーニングが終了した。プロジェクト終了に伴い、サーバーも閉鎖した。

## AlphaGo Zero論文との差異
強化学習の初期の段階では、Leela Zeroのアルゴリズムとプログラムが正しく機能するかどうかの確認のため、検証を高速化するために、AlphaGo Zero論文に記載されているいくつかのパラメータを調整していた。

; ニューラルネットワークの構造
: AlphaGo Zeroでは256種類のフィルターで20ブロックまたは40ブロックのCNN（畳み込みニューラルネットワーク）が使われていた。
: Leela Zeroはニューラルネットワークのサイズを徐々に拡大した（ニューラルネットワークを変更する際に、Net2Netで変換が行われた）。
:* 1 ブロック x 8種類のフィルター（2017年11月10日，#0） から始まり
:* 4 ブロック x 32種類のフィルター（2017年11月17日，#2，強化学習約1.9万局）、
:* 5 ブロック x 64種類のフィルター（2017年11月21日，#5，約13.7万局）、
:* 6 ブロック x 128種類のフィルター（2018年1月20日，#58、約286万局）、
:* 10 ブロック x 128種類のフィルター（2018年3月5日，#92、約481万局）、
:* 15 ブロック x 192種類のフィルター（2018年4月9日，#117、約664万局）、
:* 20 ブロック x 256種類のフィルター（2018年7月28日，#158、約872万局） のフィルターが今まで使用された
:* 40 ブロック x 256種類のフィルター（2018年9月4日，#174、約997万局）。
; 強化学習のための自己対局の局数
: AlphaGo Zeroは自己対局を50万局行っていた。
: Leela Zeroでは10ブロックより前では直近の25万局の結果が使われていた（2018年3月4日以前）（2018年1月1日以前はバグの為、16万局の結果のみの使用），10ブロックx 128種類のフィルター以降は直近の50万局の結果が使われている。
; モンテカルロ木探索（MCTS）シミュレーションの数
: AlphaGo Zeroが論文で自己訓練や正式な対局の際には、一手ごとに1600回のシミュレーションが行われる。
: Leela Zeroでは当初はAlphaGo Zeroと同様に1600回のシミュレーションだったがのちに、3200回のシミュレーションに変更された。

作者は元のAlphaGo Zero論文に欠陥があることを発見した。論文の最初の入力は17チャネルだったが、白番が碁盤の端を認識しやすくするために、Leela Zeroで18に修正されている。

## 目標
Leela Zeroの最初の目標は、AlphaGo Zeroの論文の結果を再現することだった。後に注目を集めた後、より多くのコンピューティングリソースと人材がLeela Zeroプロジェクトに投資され、Leela Zeroの強さは急速に増加し、以前に開発されたLeelaや他の囲碁ソフトを上回った。

2018年5月のインタビューで作者のGian-Carlo Pascuttoは携帯電話で使用できる強力な囲碁ソフトウェアを作ることと答えている。

## 強化学習
作者は、開発開始当時のハイエンドPCで使われていたのハードウェア（NvidiaのGeForce GTX 1080 Ti）を使った場合、AlphaGo Zero自己学習レベル2900万局を達成するのに約1700年かかると予測していたため、2017年11月から、有志者が各自のハードウェアを使用して、作者グループが開発した「AutoGTP」プログラムを通じて分散コンピューティングのプロジェクトに参加する仕組みになった（GTPを使用して学習結果をサーバーと自動的に通信する）。

* プロジェクトの開始から34日後（2017年12月13日），強化学習のための自己対局が100万局を超えた。
* 59日後（2018年1月8日）、200万局を超えた。
* 74日後（2018年1月23日）、300万局を超えた。
* 100日後（2018年2月18日）、400万局を超えた。
* 119日後（2018年3月9日）、500万局を超えた。
* 138日後（2018年3月28日）、600万局を超えた。
* 166日後（2018年4月25日）、700万局を超えた。
* 218日後（2018年6月16日）、800万局を超えた。
* 261日後（2018年7月29日）、900万局を超えた。
* 299日後（2018年9月5日）、1000万局を超えた。

2018年の初めに、ボランティアはインディアナ大学のスーパーコンピューターのBig Red IIのコンピューティングリソースの利用を申請した（スーパーコンピューターの約10.7％を占める3360コアを使用）。

Leela Zeroバージョン0.10以降は、GPUが不要な純粋なCPUバージョン、既存のアルゴリズムの最適化、および新しいアルゴリズムの導入がサポートされ、全体的な計算速度を大幅に向上された。

## 他の囲碁AIとの協業
### Minigo

MinigoもLeela Zeroと同樣にAlphaGo Zeroの論文をもとに作られたソフトウェアであり、Googleの援助により計算資源を得て、それをもとに多くの学習結果を得た。こうしたことから、Leela ZeroとMinigoのそれぞれの開発チームは学習結果や学習によるパラメータなどのノウハウの共有についての議論を行った。

### ELF OpenGo

ELF OpenGoは、AlphaGo ZeroとAlphaZeroの論文をもとにFacebookが実装したソフトウェアで、Facebookは豊富な計算資源を使用し（2000 GPUを2週間使用）、学習結果を公開。Leela Zero開発チームはELF OpenGoの学習データをLeela Zero用に変換した（ハッシュ値が`62b5417b`）。

Leela Zeroその後、ELF OpenGoの学習データを取り込むことを決め、2018年5月7日に実際に取り込んだ。

## 成績
### CGOS
CGOS（）で、有志者がバージョンアップごとに登録を行い、他の囲碁AIとの棋力の比較が行なわれている。

#### 登録名
CGOSでの登録名は`LZ`や`LeelaZero`を頭文字にした名前がつけられている。その後にハッシュ値（例えば`LZ-d6f3a6-t1-p1600`）や学習回数（`LZ-000-p1600-t1-r1`)などにちなんだ名前が付けられることが多い。

#### 特例
自己対戦ではなく、人間の棋譜を元に学習されたニューラルネットワークを使った思考エンジンが登録されている。

登録名`LZ-HBest1-t1-p1600`のアカウントは人間の棋譜で学習した思考エンジンとなっている(20 ブロック x 256種類のフィルター)（イロレーティングは約2650）。

もう一つの登録名は`LZH256x20-t4-nolim`で、20 ブロック x 256種類のフィルターは前出のものと同じだが、CGOSの時間制限を考慮した作りになっている（イロレーティングは約3610）。

#### CGOSでの成績
CGOSでは誰でも自由に名前を登録できるので、「なりすまし」での登録もある（LZの名で登録されているが中身はLeela Zeroではない）。CGOSでは測定のために`t1-p1600`（1スレッド、1600回のプレイアウト）が使われていたが、2018年4月時点ではこのパラメータでの学習は行なわれていない：

* 登録名`LZ-c99f1a-t1-p1600`（#36、約136万局の強化学習）ではイロレーティング約1830、CGOSでのGNU Go（1800）のイロレーティングは超えたものの、GNU Goとの直接の対局での勝率は高くなかった。
* 登録名`LZ-097dee-t1-p1600`（#41、約146万局の強化学習）GNU Goとの直接の対局ではほぼ勝利し、イロレーティング約1830約2000になった。
* 登録名`LZ-c83e1b-t1-p1600`（#57、約266万局の強化学習）でのイロレーティングは約2480に到達。このバージョンは、5ブロック x 64種類のフィルターを使用した最後のバージョン。
* 登録名`LZ-ed002c-t1-p1600`（#58、約286万局の強化学習）でのイロレーティングは約2460。このバージョンは、6ブロック x 128種類のフィルターを使用した最初のバージョン。
* 登録名`LZ-5773f4-t1-p1600`（#65、約314万局の強化学習）でのイロレーティングは約2670。人間の棋譜で学習した思考エンジン（`LZ-HBest1-t1-p1600`、2650）のイロレーティングを超えた。

### 野狐囲碁
2017年12月16日、有志者が野狐囲碁に登録名`alphaleela`で登録を行った。2017年12月30日（約150万局の強化学習）で級位から初段に上がり、2018年3月8日（約497150万局の強化学習）では九段に到達した。

### 2018貝瑞基因杯2018世界人工知能囲棋大戦
貝瑞基因杯2018世界人工知能囲棋大戦では絶芸、PhoenixGoに次いで3位となった。

## 脚注

### 注釈

### 出典

## 関連項目
* Lizzie - 思考エンジンにLeela Zeroを使用したGUIフロントエンド
* Go Text Protocol

## 外部リンク
*（英語）
*Leela Zero on GitHub
*Leela Zero on Sensei's Library
*Play Leela Zero on ZBaduk