リーズニングの分解
はじめに
LLM(大規模言語モデル)の躍進以降注目が集まっているReasoning(リーズニング・推論)。知能の主たる要素の1つと言える重要なものだろう。これについて考えたい。リーズニングは古来、注目され議論の対象となり続けているだろう。ここで行う考察は、ある意味では車輪の再発明かもしれないが、あまり文献を見つけられなかったため、改めて整理してみたい。
まず、リーズニング課題の具体例にはどういったものが挙げられるだろうか。o1-proは、以下のようなものを挙げてくれた。
演繹推論(Deductive Reasoning)
帰納推論(Inductive Reasoning)
条件推論(Conditional Reasoning)
因果関係(Causal Reasoning)
パターン認識(Pattern Recognition)
論理パズル(Logic Puzzle)
複数ステップ問題(Multi-step Problem Solving)
命題論理の証明・検証(Propositional Logic Proof)
文章読解と推論(Reading Comprehension & Reasoning)
創造的推論(Lateral Thinking)
ここでは、それぞれの具体例には踏み込まない。そうではなく、リーズニングとはなにかを独自に定義してみよう。
リーズニングの定義
リーズニングを以下のような定義としてみよう。
ゴールを設定し、いろいろな知識を活用して、ゴールに至る道筋を探し、その道の上を実際に歩んでいくこと。
上記の主張には、4つの主要な要素が現れる。ところで、実際に人間が行うリーズニングにおいては、必ずしもこの順番どおりに進むわけではなく、複数の要素が同時並行的・相互作用的に進行することが一般的だろう。以下では、これら4つの要素を順に見ていく。
ゴールの設定
まず、ゴールがあらかじめ明確に定まっている場合と、そうでない場合がある。ゴールをシステム自らが定めねばならないのであれば、これは自律性と関わってくるだろう。
試験問題などでは、多くの場合はゴールが定められていると言えるだろう。しかし小論文課題など広めの設問であれば、メタなゴールはあるにせよ、ある程度のゴールを自分で定める必要もあるだろう。
研究活動では、何を解きたいか、という問題設定がゴールの設定に相当するだろう。名誉がほしい、業績を上げたいだとか、社会の役に立ちたいといったより上位のゴールと連動することもあるだろう。ゴールは多くの場合、階層的に構成されているように思われる。
知識の活用
あるタスクを解くための知識には、大きく明示的なもの(explicit)と暗に与えられるもの(implicit)の2つあるように思われる。この区別はリーズニングを行うシステムについて考えるときに重要な差だと思われる。
例えば、常識を要するタスクは多分にimplicitな知識を要求する。一方で、ある一定の範囲内の公式や定理を使うのだろうということがほとんど文脈から明らかな場合は、explicitな知識を要求されるタスクと言えるだろう。より明示的なのは、問題文中にその使用が指定される場合であろう。
人間は、implicitな知識を多用するタスクを複雑だと感じる傾向がありそうだ。一方でLLMは、この点で逆の傾向を示しているように思われる。私たちがLLMの知能に圧倒される感覚を覚えるのは、この点が大きく作用しているのではないだろうか。
なお、本当は知識についてもより明確に定義したいが、この記事の範疇を超えるため、ここでは常識的に思いつく範囲の知識を想定するにとどめる。
道筋の探索
これはいくつかのレベルがありそうなのと、もう一つの要素の「道を歩むこと」と必ずしもきれいに分離できないかもしれない。しかし、大雑把に言えば、解答の方針を立てることと言えそうだ。もしくは、複数の類題が与えられたときに、それを解くためのアルゴリズムを考案することとも言える。アルゴリズムを考案することと、アルゴリズムを実行することは異なる点は、敢えて注意しておきたい。
道筋をたどること
解答の方針を立てたり、解くべきアルゴリズムがあったとしても、それだけではタスクを解決したことにはならない。実際に(広い意味での)計算を行い、タスクのゴールに至る必要がある。
どんな問題でもプログラムで解けるのであれば、道筋の探索におけるアルゴリズムの作成までで問題を解いたことになるのかもしれない。しかし、あらゆる問題が真にすべてあるプログラミング言語に実際に乗せられるかというと、これは簡単な問題ではない。したがって、何でもPythonやC言語などのアルゴリズムを記述すれば済むというわけでは、実際はないだろう。
リーズニングの分解の利点
さて、このようにリーズニングを分解してみることにはどのような利点があるだろうか。大きく2つあると思う。
リーズニングの科学的理解に向けたフレームワーク
私たちは自分自身がなぜリーズニングを遂行できるのかを、十分には理解していない。リーズニングという複雑な知的活動のダイナミクスを科学的に理解しようとする際、このような段階的な分解は、基礎的なフレームワークとして役に立つだろう。LLMとのギャップを考える視点
昨今のLLMを受けて、依然として感じる人間とのギャップを考えるよい切り口となる。特に、昨年10月にアップロードしたプレプリントProcBenchでは、このような考え方の下、「道筋をたどること」がどの程度LLMに行えるのかを評価した。
ProcBenchについて
科学の常套手段として「問題の簡単化」がある。ProcBenchではこれを行った。すなわち、上記のリーズニングの定義において、ゴールの設定と道の探索が不要なタスク設計を目指し、知識としては明示的に与えるようにして、「道筋をたどること」の能力評価に注目した。
ProcBench: Benchmark for Multi-Step Reasoning and Following Procedure [arXiv:2410.03117]
おわりに
このような主張をしてみると、リーズニングは探索課題であることがより明確になる。もちろん、最初から探索課題であることは自明だと思う人もいるだろう。しかし、このように明示的にステップを分解し、それぞれを検証しようという文献は少ないように感じる。関連文献をご存じの方は、ぜひご教示いただきたい。
なお、こうした分解がこれまであまり行われてこなかった背景には、リーズニングを行うためには言語運用能力や意味理解などが不可欠で、それらが先立って必要になることが明らかだった、という事情があるのかもしれない。LLMは、その部分を実際に行えるシステムのように見える。このようなリーズニングの分解が有効となる時代が、ようやく到来したのだとも言えるだろう。
ところで、以下のサーベイ論文も興味深いので、関心のある方は読んでみてほしい。
Natural Language Reasoning, A Survey
複雑なリーズニングという知的活動をさらに深く理解するため、またリーズニングを行うシステムを構築するために、以上のようなリーズニングの分解が一助となるのではないだろうか。