とある機械学習講座の実態 “while True: learn()”
良きクライアントは決して奇跡の一本を求めはしない。期待すれば互いが不幸になるだけだと知っているからだ。
主人公はフリーランスのプログラマー。どうにも解決しないプログラミング上の問題を、少し目を離した隙になんと猫が綺麗さっぱり解決してしまっていた!
どうやって解決したのかその思考過程を知りたいのに、猫はただMeowと鳴くだけ。ああ、猫の言葉がわかればいいのに!
その解決法として機械学習に活路を見出した主人公はその技術の勉強と猫語翻訳システムの構築に励む傍ら、プログラマーとしてクライアントの依頼をこなしていく。この実務の数々がパズルの問題となっている。
発展途上であるにもかかわらず、学んだ内容を生かせそうならば仕事すらも請け負うというのが豪胆だが、どの問題も機械学習に関する勉強の過程で得たアルゴリズムを用いて解決していくこととなる。
案件、つまりパズルの内容は与えられたデータセットを適切に分類できるスキームを組み上げることである。
パズルゲームとして馴染みやすくするためか、標本はそれぞれ色とアイコンで単純化されていて絶対的な種類こそ少ないが、問題ごとに与えられるデータセットと標本数、分類すべき内容は様々である。
最初はAか否かを判断するエキスパートシステムのような枯れたアルゴリズムしか使えないが、勉強、つまりゲームが進むにつれ、木構造を基本とした分類アルゴリズムやニューラルネットワークを利用したアルゴリズムをも使えるようになっていく。
作中で使用されるアルゴリズムはどれも現実の機械学習に即したもので、新しく使えるようになった際はゲームの動作内容と共に現実での組み込まれ方も確認できるようになっていて、機械学習そのものの学習の導線にもなっている。
しかしながら、パズルとしての実態はただ仕分けラインを作るだけであり、リソース分配のツールとしてモチーフに機械学習を選んでいるに過ぎず、機械学習だからこそできること、この作品だからこそ身につけられるものはない。
機械学習をただのモチーフで終わらせず、機械学習の学びというテーマにまで持ち込むのなら、アルゴリズムの中身をパズルに落とし込んだほうがよかったのではないかと思うのだが、自動運転車の問題が非常にわかりにくいものだったので、わかりにくくなるくらいなら単純化してしまおうという判断もあったのだろうか?
モチーフと内容の乖離を抜きにしても、このパズルは中途半端である。
このパズルは同じ標本を複数の分類先に割り当てて分類方法を曖昧にしたり、スキームの処理時間を制限することで難易度を上げようとしているので、考えるべきことが薄く単調というわけではないが、そのために行うことはデータの流量の調整で終始変わりない。データセットの各標本数を明確にしてしまったせいで、どのデータをどの結果に流し込むか、そのリソースの分配をどうするか考えたら、あとはそこにアルゴリズムを当て嵌め調整していく、そういった作業になってしまっているのだ。
制限時間とゴールの必要データ量が決まっているということは、すなわちデータがゴールの割合分だけ均等に流れるようにすることであり、エラー許容率が決まっているということは、すなわち範囲内に収まるならばその分だけあえてエラーデータを流し込んでも構わないということである。
AIの発展もあり注目の集まる機械学習だが、学ぶにはハードルの高さがあるのも確かである。だからといってその導入にこの作品がふさわしいかといえば全くそうとは思わないが。
そもそも機械学習を学びたくてゲームをするものだろうか?学ぶことを楽しむ人は数多くいるが、ゲームは基本的に娯楽である。
ちなみに、マヌケは初回のプレイで全てのアイテムを購入することができたものの、適当にやっていると金欠になることに気づくのが遅れてしまったせいで、最終的に手元に残ったキャッシュはたったの379€だった。
リトライ不可のStartupsの評価基準が不透明ってどうなのよ?確かにそう思い通りにうまくいくものではないけど。
納品するスキームは要件だけ満たしていればあとは安くて高速なほどよかったり、残金がマイナスになると借金してしまうシステムがあったり、扱うモチーフと現実との連動だったり、妙に現実的というか、生々しさを感じる作品だったなあ……。