Kaggleは「仏教理解」に役立つ ー「Word2Vec」で読み解く、龍樹の「空」の概念

第9回の今回は、Kaggleで使用した「Word2Vec」の知識が、龍樹の仏教思想「空」の概念を理解する鍵になったという経験について紹介します。

藤原 圭佑

6:30

はじめに

私は関西電力の火力部門でAI業務を担当していますが、情報系ではなく強電系の電気工学専攻出身のため、大学でも会社でもプログラミングすら碌にしていませんでした。そんな私が機械学習に興味を持ったきっかけは、10年以上前に交通事故で負傷し、入院や自宅療養のためしばらく休職していた時に、自動運転系の機械学習に興味を持ったことでした。以降、機械学習や統計を独学で学び、色々なコンペに挑戦した後、Kaggleでは約3年前にCompetition Expertになりました。

さて、Kaggleはあなたのこれからのキャリアの役に立つ、機械学習への理解を深めるのに役に立つ、コンペという実例を通して実戦経験を積める……そんなことは他の人が語るはずなので、私はKagglerとしての知識が、全然関係無さそうなところでも役に立つという話をします。   

具体的にはタイトルの如く、仏教、それも比較的歴史の古い、インド中期仏教、龍樹(ナーガールジュナ)の「空」に関する話です。

釈迦

「空」の概念に至るまでの仏教思想の流れを説明するため、まず仏教の開祖である釈迦の話をします。

彼は紀元前6世紀頃にインドで仏教を広めました。主な教えの1つは縁起です。あらゆる結果は原因によって現れる。結果が嫌であればその原因の原因の……の原因の原因を絶てばよい。よって究極の苦しみである死の恐怖から逃れたければ、その原因の原因の……の原因の原因である無知を取り除けばよい、つまり「物事を正しく理解すれば死は怖くない」ということを説きました。因果推論を頑張れと言っているわけですね。

もう1つは中道です。釈迦はネパールの王子だったので若い頃ははっちゃけすぎていましたが、心機一転した後には修行のための断食で死にかけました。それら両極端を経験したことから、何事もやらないのもやりすぎるのも良くない、両極端から離れる中庸が良いということを説きました。

また、当時のインドには、例えば肉体と精神は一体か? 宇宙は有限か無限か? のような難問について、様々な見解を説く思想家達が居ましたが、釈迦は悟りに関係ないので答えない、という姿勢を貫きました。

説一切有部

釈迦の死後に弟子達や弟子の弟子達が彼の教えを精緻化させようとした結果、仏教教団は正しい解釈を巡って分裂します。約800年後の2世紀頃に分派達の中で主流になったのは、我々の世界に存在する一切の物質や精神は実存すると説く「説一切有部」でした。

説一切有部の解釈に拠れば、この世の全ての物質は地・水・火・風の4要素の粒子から構成され、それらを眼や鼻などのセンサーが観測して発生した感覚の要素を通じ、最小時間単位ごとに心情の要素が心にひとつ効力を発生させます。

物質や感覚の各要素に心情の要素なども加えると、全ての物質・精神は75種類の要素(説一切有部ではダルマと呼びます)からなります。我々が世界が変化しているように見えたり感じたりするのはこれらの要素の働きが最小時間単位ごとに変化するためであるが、あくまで各要素自体は不変の存在である、と彼らは説きました。

データサイエンティストっぽい説明をすると、要は物質や精神は75の要素(1種類の中に小分類があるため実際はもっと多くなります)からなるベクトルで、世界はその集合からなるテンソル(説一切有部は要素の働きを数値化できるとまで主張していないので厳密にはデータフレームかもしれません)であり、それが離散時間ごとに変化しているというわけです。非常にデジタルな思考であり、Kagglerであればかなり共感できるのではないでしょうか。

説一切有部の時代にコンピュータが存在すれば、時系列モデルの開発をしていたかもしれません。しかし、彼らの物質や精神を全て説明しようというスタンスは別の論争の元になります。

釈迦が答えなかった難問(肉体と精神は一体か? 宇宙は有限か無限か?)については、要は「◯◯は××であるか?」という形式で表すことができ、考えられる回答は4種類、Yes、No、YesといえばYesだしNoといえばNoである、Yesとは違うしNoも違う、つまり、①Yes、②No、③Yes & No、④Neither Yes nor Noに整理できます。この4種類それぞれを主張する思想が、釈迦の時代から説一切有部の時代になっても存在していました。

ここで、例えば「宇宙は有限か無限か?」という質問に対しては、説一切有部にとって世界の大きさは有限(彼らの主張から概算すると須弥山を中心とした約842万km)であるため、宇宙に果てはあるので「Yes」と回答することができるわけです。

しかし「それでは何故、釈迦はその問に答えなかったのか?」という、当時の仏教教団にとってはもっと重要な問いに対しては詰まってしまうわけです。釈迦は本人としては関係ないので答えないというスタンスでしたが、数百年が経過して仏教教団は釈迦を神にも等しい、いや神を超えた神、全知全能と信奉しています。説一切有部もその一部である以上、釈迦が説いたオリジナルの解答を無視できないわけです。

「お釈迦様は当然宇宙の大きさが842万kmであることを知っていたのに、何故あえて答えなかったのだろうか…」と説一切有部らの中で論争になり、解釈の相違でさらに分派が進んだり、仏教教団の別派から批判されてしまったりしたわけです。

龍樹

この仏教教団にとっての難題にけりをつけたのが、別派の龍樹です。彼は膨大な量の般若経典に書かれた「空」思想を整理し、体系化し、理論付けをしました。龍樹の論理を手短に述べると、以下のようになります。

空とは、縁起によって変化する性質があるものです。空は永劫不変の存在でも、完全な虚無でもありません。そのため空は永久に変化し続けます。空は何もない虚無から発生するわけでもなく、消滅して虚無になるわけでもないので、縁起によって変化する空には始まりも終わりもありません。そして空は永劫不変でも、完全な虚無でもないため、それら両極端から離れた中道です。よって縁起と中道に従う空は、釈迦の教えに従っていることになります。この世の全ては不変の存在でも、完全な虚無でもなく、形あるものは変化します。よってこの世の全ては空です。心も変化するので、物質だけでなく同様に精神も空です。

このように、龍樹は「不変の本質など無い」と説きました。

さらに龍樹はここから空の概念を拡張します。この世の全ての物体、精神が空で、釈迦も悟りも永遠ではなく、何もかもが空である。よって、それら物質や精神などを指し示す言葉も、当然空であると説きます。つまり言葉の意味は変化するわけです。

Word2Vec

というところまで龍樹の著作やその解説書を読んでいて、私は疑問に思ったわけです。

  • 「空即是色、空すなわちこれ色なりという言葉が示すように、言葉が空であれば色(≒色や形のような属性)があるはずだが、言葉の属性とは何ぞや?」
  • 「言葉も空なら縁起によって変化するはずだが、言葉の縁起とは何だろうか?」
  • 「言葉が縁起である以上、言葉に始まりも終わりもないのか?」

ということをつらつら考えていて、「ああ、そういえばデータサイエンスで似たようなことやったな」ということを思い出したわけです。

それが図に示す「Word2Vec」です。KaggleのコンペでLLMのBERTを使って銅メダルを獲ったことがありますが、そのBERTのようなLLMの元となった技法です。

「Word2Vec」(CBOW)の概要

Word2Vec(Word to Vector)の名の通り、各単語をone-hotベクトルで表現して、対象の単語のone-hotベクトル(図の「coffee」であれば(0, 0, 0, 1, 0, 0, 0 ,0)が出力となり、その周辺の単語のone-hotベクトルの和 (図では「hot」と「after」の和である(0, 0, 1, 0, 1, 0, 0 ,0)) が入力となるニューラルネットです。

この図はわずか8単語の1文ですが、文章を大量に集めたコーパスで、同様の計算を繰り返し行います。こうして作成されたニューラルネットに「coffee」(0, 0, 0, 1, 0, 0, 0 ,0)を入力した時の中間層が「coffee」という単語の意味ベクトルとなるわけです。意味ベクトルはベクトルであるので、最近流行のRAGのように単語同士のcos類似度で似た単語を探したり、言葉の足し算引き算(王様 – 男 + 女 ≒ 女王様)ができたりします。

そして、意味ベクトルの各要素は、属性のようなものとして解釈できます(実際にWord2Vecを回してみると、元となるコーパスの都合や中間層で次元を圧縮している影響で綺麗な属性ではありませんが)。そこで私は「なるほど、言葉が空であるならば、この意味ベクトルの要素が空即是色の色にあたるな…」ということを考えたわけです。

そして、言葉の意味が周辺の言葉によって決まる、つまり出力となる単語の意味は、そのそばの単語を入力として作られるわけです。そして、その入力となったそばの単語の意味は、そのさらに周辺の単語を入力として作られるわけで、さらに周辺のそのさらに周辺の単語の意味は、そのさらに周辺のそのさらに……という風に、始まりも終わりも無く無限に続きます。つまり無限(Word2Vecでは無限に続くと計算が終了しないので途中で中断させますが)に続く、縁起です。

そして、各単語の意味ベクトルは計算中にニューロンの重みが変わることにより変化するし、そもそも元となるコーパスを更新すれば、違うモデルができるわけです。Word2Vecのコーパスは特定のタイミングで集めてきたデータですが、現実世界のコーパスは、人間が話したり書いたりするのを止めることはできないため常に更新されています。よって、言葉の意味は常に変化するわけです。

よって、言葉は色の性質を持ち、無限に続く縁起により常に変化する、まさに龍樹が述べる「空」であるということを、Kaggleのためにデータサイエンスを勉強していたからこそ、深く理解することができたわけです。

言語は空である

話を仏教に戻します。龍樹の主張である言葉が空であることを採用すると、釈迦以来の難題と、説一切有部ら仏教教団が悩んでいた課題が同時に解決します。
まず、質問として「ウサギの角に刺されたら痛いか?」というような不合理な例を考えます。

解答を考えると、ウサギに角は無いから痛くないはずですが、でもやっぱり角があったとしたら刺されたら痛いかもしれません。論理学的には「空虚な真」といいますが、このように問いが不合理であれば、Yes、No、Yes & No、Neither Yes nor Noの4つが全て成り立ちます。

では、難題の1つである「肉体と精神は一体か?」について考えてみます。龍樹の「言葉は空」という概念を敷衍(ふえん:詳しく説明する・趣旨を広げる)すると、「肉体」「精神」などの言葉は空である故に、その意味は変化するわけです。問いを出されて考えている時間経過の間にも意味が変化するし、問う人と答える人で違う生活をしているため違うコーパスを持っている以上、同じ単語なのに両者の中では同じ意味ベクトルではないわけです。

ということは、あらゆる難題は言葉の意味の正確性が担保できない以上、ウサギの角の問いと同じように、質問すること自体が不合理なのではないか、となってしまうわけです。

龍樹はこのロジックを全ての難題に適用しました。そして彼は「質問が不適切であるため、あらゆる難題は答えるまでもなく終了する。そして、だから釈迦が答えなかったのは正解だった、釈迦はあえて答えなかったのだ」という風に話を持ってくるわけです。

空は釈迦の教えである、縁起と中道に従う概念です。龍樹は釈迦の教えである空を元にして釈迦が答えなかった理由を説明することができたため、釈迦の偉大さを示しつつ腑に落ちる説明をしたことで釈迦以来の難題と仏教教団が悩んでいた課題を解決し、仏教史上で最も偉大な思想家と評価されることになりました。

空も空である

ところで「空とは、縁起によって変化する性質があるものです」と私は上で書きました。そうすると皆の頭を悩ませていた難題や課題が片付いた後に、言葉も空であり意味が変化してしまうのに、「定義することによって意味を固定化していいのか? 常に変化しているはずのものを固定して取り扱うことは自己矛盾していないか?」という新たな問題が発生します。

龍樹もその問題を認識しているわけです。よって彼は「空という概念そのもの自体が空であり、空に執着するな」と述べています。そして言語が空である以上、言語は中間地点、すなわち一切が空であるという理解まで到達する役には立ったものの、目的地である悟り(≒般若波羅蜜)まで行くには、言葉はもうあてにはできない、と述べています。

「言語道断」、すなわち言語で悟りに至る道は途中で断たれたとは龍樹の「中論」の漢訳で使われている言葉ですが、現代では「論外」という意味に変化してしまいました。まさに言語の意味も変化するという、空の概念を象徴してしまった言葉です。

では、後は何を使えば目的の悟り、究極の真理にたどり着くのか。龍樹は瞑想を勧めています。ただし「言葉はあてにならない」と言っている以上、詳細な瞑想方法を説明してくれていません。そのため彼の後、残りの道を登る方法を主張する、様々な思想が生まれました。

例えば密教は言語ではなく儀式による真理へのアプローチ法を考案したり、禅宗は「不立文字」、つまり言語を用いた経典以外に重要な教えがあるということを主張したりしました。

おわりに

我々は今でも、不完全で自己矛盾を起こしているにもかかわらず言語を主たるコミュニケーションの道具として使用しているわけですが、現在のLLMはそんな我々が入力した文章をトークン単位のベクトルに分解し、複数の文章をトークンが連なったテンソルとして処理しています。LLM側からすると「何故人間は常に意味が更新されてしまうような不完全な入出力に拘っているのか」「ベクトルやテンソルをそのまま入出力とすれば変化しない数値として固定化できて性能もあがるのになぁ」というようなことを考えているかもしれません。

龍樹も日常生活の道具としての言葉の効能は認めていますが、人間の知性を超越するようなAIを創造しようとする領域では、彼の説いたように言語を投げ捨てる時が来ているのではないでしょうか。まぁ龍樹の解釈からすれば一切が空である以上、数値すら空であるので、明日には2が4になり、10が20になっていることになるかもしれません(実際に、古代中国では1億=10万としていたことがありました)。

というわけで、Kaggleを通じてデータサイエンスを学んでいたことが、全然関係のない仏教思想を深く理解するということに役立ったというお話でした。コンペのスコアを少しでも上げようと足掻いて読んだ本の知識や、今まで使ったことのないライブラリを走らせた経験が、皆様の人生のふとした瞬間(別に仏教理解である必要はありませんが)にも役立つ日が来ることをお祈りしています。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored