あれ
書きかけ&考え中
目的
- LLMの推論において、知識に基づく推論をさせて、誤った回答を防ぎたい
- LLMの学習を「知識をDBに追加している」と考えたとき、極めて低速であり、「知識の追加」をLLMの外部に置いて高速化したい
道筋
自然言語で記述された文章から「知識」を抽出し、その「知識」をPrologのように機械的に検証できれば、LLMの出力を検証できるはず。
RDBの一つのテーブル(など)で「知識」を表現できれば便利なはず。
「知識」を一つのテーブルに格納するには、固定長のカラムによって「知識」を表現しなければならない。
加えて、固定長のカラムで「知識」を表現できると美しく感じられるので嬉しい。
aRbを出発点とする。
単純な文
"Penguin is bird" という文について考える(正しい英文はPenguin is a birdになるが、簡単のためにaは省略している)。
aのみを主語にすれば、Rb(a)となり、is bird(鳩) となる。
加えてbを主語にすればR(a,b)と表すことができる。すなわち、is(penguin, bird) となる。
さらにRを主語化すればT(a,R,b)と表すことができる。つまり、T(penguin ,is, bird) となる。
この時のTは「真実であると主張すること」としておく。
修飾を持つ文
"Penguin is swimming bird" という文について考える。
先の 単純な文 の結果から拡張すれば、T(penguin, is, swimming bird) となる。
T(penguin, is, swimming bird)がT(penguin ,is, bird)に含まれることは人間には推論可能だが、機械的には推論が難しく、機械的推論可能な形式に変形したい。
そこで、T(penguin, is, swimming bird)のbを分離させ、T(penguin, is, swimming)とT(penguin, is, bird)の二つに分離することを考える。これによって"Penguin is swimming bird"の"is bird"の箇所については"Penguin is bird"から推論可能となった。
複雑な文
"Pressures produced when penguins pooh"という文について考える。
T(pressure, produced, when penguins pooh)
『論理データベース論考』
あれ
関数型プログラミングの延長線として述語論理が流行らないかしら。
ドメイン駆動設計もやんやんしてるし、ドメイン駆動設計と述語論理がミーツする可能性はありそうな予感がしてる。
あれ
xor・rotate_right・rotate_leftで、ベクトル化された微分可能な述語論理が構成できる気がするんだ……。
述語論理の述語と個体を{0,1}
のベクトルであるところのビット列で表現したい。
正規表現の微分が定義できるんだから、述語論理の微分ぐらいイケるやろ。
あれ
ずっと、考えるということはマリオカートのダッシュパネルのようなものだと感じていた。つまり、ダッシュパネルに乗ったマリオはダッシュパネルが向いている方向に射出される。そして、射出された先にダッシュパネルがあれば、マリオは再びその方向へと射出される。そうして上手く連鎖したときに、マリオが遠くにふっとばされて楽しい。といった感じだ。
ここ最近の思索(A)の結果、関係はベクトルあるいはビット列で、aRbや述語論理はベクトルやビット列の加算に類する演算で表すことができるのではないかという仮説が立った。ここで、私の頭の中で、「マリオカートのダッシュパネル=関係のベクトル」という結びつきが生じた。
この、アイデアの線分と線分の重なりが発見されたため、思索(A)を掘り進めれば、仮説が正しいにせよ間違っているにせよ、何かが見つかるのではないかという気分が高まっている。
あれ
RDBのテーブルって、述語論理の述語なのではないかというよくわからん思いつきが降ってきた
一階述語論理
高階述語論理
本田 裕『学位論文 博士(工学) 深層学習を用いた一階述語論理による推論に関する研究』
微分可能述語論理
あれ
わたしの中でProlog(というか述語論理)が復権しそうな気配を見せている。
GraphQL的なAPI記述言語としてなんかこう、、、やってけませんかね。