少しばかり周りより頭のいい人は、自分より頭の悪い人を軽視しがちである。
「あいつから学ぶことなんて何もない」
などと決め台詞を残して去っていくこともしばしば。
その人から学びたくない、教えてもらいたくないというのであれば、わからなくはないし、私自身、数学は小学校のころに高校で習う範囲ぐらいまで理解していたので学校の授業がつまらなくて仕方がなかった。数学の先生が先生に見えてなかった。ただの頭の悪いおっさんだと思っていた。「このおっさんより、俺のほうがまともな授業ができるわい!」ぐらいに思っていた。まあ、数学のような分野では、そういうこともあるかも知れない。
だからと言って、自分より頭の悪い人からは本当に何も学ぶことは出来ないのか?というのが本日のお題である。
もしそうだとしたら、将棋の羽生さんは、どうやって強くなったのだろう?私が大学生のころにちょうど、羽生さんは七冠になった。これが現代なら将棋ソフトが強くて、「将棋ソフトから学びました」みたいな話でもおかしくはない。
しかし、当時は将棋ソフトもまだアマチュア二段程度の棋力しかない時代である。将棋ソフトから学ぶことなんて到底叶わないだろう。では羽生さんは誰からどうやって将棋を学んだのであろうか?
ここで2つの方法が考えられる。
強化学習で強くなる
まず、自分自身で勝手に強くなるというパターンである。
対局して、一局を振り返り、反省し、学習するのを繰り返すことで強くなるというものである。
将棋ソフトでもBonanzaのころ(2004年)は、プロの棋譜から学習させていたが、その後、自己対局の棋譜から学習させるようになった。これは2つの理由があって、一つは、プロの棋譜は(当時)3万局ぐらいしか入手できなくて、機械学習に用いるにはデータが少なすぎたこと。二つ目の理由は、将棋ソフトが強くなった結果、プロの棋譜より将棋ソフトの自己対局の棋譜のほうが強いプレイヤー同士の棋譜になり、プロの棋譜から学習させるよりは、自己対局棋譜から学習させたほうが良い学習ができるようになったからである。
このような自己対局の棋譜を元に学習をして、また自己対局をして…というサイクルを繰り返すことを、機械学習分野では「強化学習」と呼ぶ。
強化学習を用いると、将棋ソフトはゼロからプロレベル(か、それ以上)になることが証明されている。GoogleがAlphaZeroを発表する以前に、やねうら王がそのブログで評価関数をゼロから学習をスタートしてプロレベルに到達することは証明した。(詳しくは「やねうら王 リゼロ」などでググって欲しい。)
つまりは、誰の力も借りずとも、自分ひとりで強化学習みたいなことをすれば無限に強くなれるのである。
// ただし、人間の学習能力が無限であるものとする。
このことは、強化学習でうまくいくような分野であれば、人間も独力で、誰の力も借りずに、そして外部的な一切の情報なしに、無限に賢くなれるということを意味している。
// 「強化学習でうまくいくような分野」が何であるかは、ここではあえて触れないことにする。
しかし、それは、わりと効率は悪い。将棋ソフトのほうでは、リゼロプロジェクトでは教師局面を10億局面ほど生成するのを繰り返した。1局が平均160手として、600万棋譜ほどある計算だ。その棋譜から学習させ、学習させたソフトでまた自己対局をして教師局面を生成して――それを繰り返し行ったのでトータルでは1億棋譜ぐらいは生成していた計算になる。
人間が1億棋譜も見れるであろうか。そもそも自己対局でって言っても自分と自分で対局して1億棋譜も作れるであろうか。
強化学習で無限に賢くなれることが原理的に保証されているとしても、その効率はすこぶる悪そうである。
これは、人間にとって、自己対局にはそれ相応に時間がかかるということでもある。
他人の棋譜から羽生さんは学ぶことが出来るのか
そこで強化学習に依らない方法として、他人の棋譜から羽生さんは学ぶことが出来るのかという話になる。
将棋ソフトでは、思考時間を倍にするとその棋力(レーティング)が+R200程度上がることが知られている。+R200というのは、段位で言うと1段である。思考時間2倍で1段強いプレイヤーになるということだ。思考時間4倍で2段、8倍で3段、…というように強くなっていく。
// 人間も2倍の時間を使った時にソフトと同様に強くなるかは知られていない。ソフトと対局するときに自分と5分の持ち時間で自分と互角の棋力のソフトがあるとして、この持ち時間を10分、20分と変えても同じ程度の勝率であるのが普通なので、人間の場合もやはり2倍で+R200ぐらいは上がっているのではないかと思われる。以下、その前提で話を進める。
羽生さんが七冠当時、仮にプロ最強の棋力であったとして、二番目のプレイヤーとR200離れていたとして(実際はそんなに離れていなかったと推測される)、二番目のプレイヤーが10分考えれば、羽生さんが5分で考えた指し手に匹敵するわけである。そういう意味では、羽生さんが、ぱぱっと自己対局で棋譜を作りそこから学ぶよりは、他のプレイヤーの対局棋譜のほうが強いプレイヤーの棋譜であるとは言えるわけだ。
つまり、将棋においては、
「自分より弱い人の将棋(の棋譜)から学ぶことは何もない」
というのはなかなか成り立たないわけである。
本当に弱いプレイヤーの棋譜から学習できるのかについて
このように将棋のように他の知識があまり活用できないようなゲームにおいては、2倍考えると+Xだけ強い(賢い)プレイヤーになりうるので、自分より弱いプレイヤーから学ぶことは何もないという状況にはなかなかなりえないと言うことである。
そもそもで言うと、将棋ソフトはいまやレーティングで言うとfloodgateという将棋ソフトの対局サイトでR4500程度なのだが、強化学習のために生成している棋譜はさほど1手に時間をかけて生成しているわけではないので、R3300程度のプレイヤーの棋譜なのである。つまり、R3300の人の棋譜から、R4500という将棋星人並に強い人(?)が学習しているのである。その差はR1200であり、段位に換算すると六段である。将棋ソフトは六段弱い人の棋譜から学習しているわけであるな。
// ただし棋譜は大量に生成しているので、このような学習が効率的であるかは議論を要する。
それほど棋力に差があるのに強化学習がちゃんと成立して無限に強くなる(ただし学習能力の上限はある)という事実は、賢い人はアホさんからも学べる、学ぶ価値があるということの証明でもある。
こと、将棋に限っては、「自分より弱い人に学ぶことは何もない」とはなかなかならないということがわかっていただけたであろう。
将棋以外の分野について同様に考えると?
「2倍考えると+X強くなる」は常に成り立つと私は思うのだが、しかし分野によっては「+X強くなる」の+Xが小さすぎる場合と、「+X強く」なったところで「私の戦闘力は53万です」みたいな化け物がその分野にいるので太刀打ちできない場合とがある。
先日、きふわらべ(という最弱の将棋ソフトと呼ばれている将棋ソフトの作者)が、以下の問題、一般項がわからないと2,3日悩んでいたので、私がちらっと見たら、ただのカタラン数であった。
https://crieit.net/posts/Easy-Japanese
彼は、カタラン数を自力で再発見したわけである。(ただ、数列の一般項を求めるテクニックを彼は知らないので、一般項が求められないでいたようだが。)
1,1,2,5,14,41ときたら、階差が3^(n-1)な数列。(1つ目の項は無視するとして)
1,1,2,5,14,42ときたら、カタラン数。
みたいなことは、考えずとも知識として知っていれば、この数列を14まで見た時点で「ああ、どっちかだな」ぐらいは思うだろう。
「2倍考えると+X賢くなる」みたいなのは真実ではあると思うのだが、上の数列問題にしても、数列の一般項を求めるテクニック(高校で学ぶ)を知らずに独力で一般項を発見するのは非常に難しい。
高校で学ぶような数列の一般項を求めるテクニックを開発した数学者が誰であるのか私は知らないが(一人の数学者ではないのであろう)、まあ、知能が高く、一生を数学に捧げているような人が長い時間かけて発見したようなテクニックを、(その数学者と同じ条件で)独力で発見するには、同じだけの知性の持ち主であったとしても、その人と同じぐらい考えないと自力での発見は難しいであろう。
結局「2倍考えると+X賢くなる」みたいなのは事実だとしても、そういった過去の偉大なる数学者の発見したテクニック、知識を使える時点でスーパーチートなわけである。過去の偉人の開発したスーパー兵器を持って来られたのでは、「2倍考えて+X」ぐらいの戦闘力では太刀打ちできないのである。数学の分野ではこの現象が特に起きやすい。
ラグランジュの未定乗数法なんてその最たるものだ。
逆に、そういった過去の天才の知識が使えないか、広まっていないような分野であれば、「2倍考えると+X賢くなる」が利いてきて、自分より仕事ができないと思っていた後輩が長い時間考えて練ってきたプレゼン資料が非常に素晴らしいというようなことは現実世界で普通に有り得る。
いくら賢い人であっても、「アホさんに学ぶことは何もない」という状況にはなかなか巡り会えなくて、アホさんが非常に長い時間を費やして考え出したアイデアに舌を巻くことは多々ある。だから賢い人は、アホさんにも敬意を払いながら接するようにすべきなのである。
> アホさんにも敬意を払いながら接するように
誰がアホさんやねん!お前がまず敬意を払えや!
というようなコメントをじゃんじゃん以下にお寄せください。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
フィンランド方面にアリ・マキネンさんはそこそこ実在するんだなとか考える時期も過ぎて、年は明けましたが、ダレガ・アホヤネンさんは存在するのだろうか?
というのはおいておいて、アルキメデスが道端を歩きながら思いついたようなことはもはや常識だし、こういうことをやるなら、カタラン数という知識を得ているような人生のルートを選択しているようじゃないと、力が足らんということでいいですか?
カタラン数についてはワシは語らん
ヒッヒッヒw
数学をフロムスクラッチするからな☆m9(^~^)
高校の数学ぐらいはまずは勉強してからにしてみては…(´ω`)
ふっと合議を思い出した。乱数によって弱くなったものが集まって強くなる
やねさんのようなプログラマーになりたいと思っています。
プログラマーの世界で「ラグランジュの未定乗数法」のようなものがあったら教えてください。
ヒープソートなどのアルゴリズムの本に載ってるようなものを独力で発見するのは、非常に困難なので、まずはそのへんからですかね…。
将棋弱い人が時間長くかけたらR3000のソフトに勝てるのか、勝てるはずがないだろ、みたいなコメントをガンガン送ってくる人がいるんだけど、「人間も2倍の時間を使った時にソフトと同様に強くなるかは知られていない。~と思われる。その前提で話を進める。」と本文に書いてある。
そんなわけで、「将棋弱い人が時間長くかけたらR3000のソフトに勝てる」とは私も思っていない。
// とりあえず、その手のコメントはゴミ箱行きである。
ただ、私は開発のデバッグ時に、Bonanzaに勝ったことならある。(Bonanzaは1手3秒。24でR2800程度と思われる。こちらは時間無制限。私の棋力はクエスト四段。)
つまりアレですよね。
能力は仕事率という物理量と同じ次元で比較できるから、問題を解決する手段を持ってなくて手が止まると、時間を掛けても仕事は進んでないから仕事率は下がっていくばかり。
問題を解決する手段を多く持っていて手が止まってしまうことがなければ、時間を掛ければ仕事も多く終わらせられると。
で、この問題を解決する手段を多く持たせるというのが、評価関数をウンタラカンタラとかそんなこと。
関係ないけど、リアル仕事はお金という報酬と引き換えるから仕事とお金の次元は同じ。
だから、労働基準局みたいなところは今日中に終わるはずの仕事を定時に終わらせられなかったせいで発生した残業と明日やる仕事を今日から手を付け始めたために発生した残業は区別するべき(コラw
初めまして。
笑いの話で恐縮なのですが
先人の方々が残された技術、
たとえば
ボケたらつっこむ、
てんどん、
三段おち、
ほんまにすごいです。
ぼくも笑いの修行をしていますが
その域までは達せません。
特に、
ボケたらつっこむは
内容を差し替えれば、
何度見ても笑えます。
ただ、どんな人でも
学べると思います。