はじめに
今回は、マルチモーダルなパターンの概念コード化(=数式化と命令化)について説明します。
※とはいえ、まだ実際に、PoCやプロタイプ実装による効果検証をしていないので、ご注意ください。
※本件アプリを構成する「アイデアの一つ」としてご覧いただけるのが丁度良いと思います。
それでは、お付き合いのほど、よろしくお願いします。
具体的な手順
①. 事前に「RAGベース(=データベース)」に各分野(=化学&物理学など)の「洗練されたリッチな数式」を「RAGナレッジ」として登録・保存しておきます。
また「洗練されたリッチな数式」からパターン(≒関数写像)を計算によって生成しておいて、決定木や遺伝的アルゴリズムや強化学習エージェント(=ルールベース)によって、
そのパターンから「汚い近似多項式」を求めておき、これをRAGナレッジの一部として含ませます。
さらに、そのパターンをオートエンコーダーに学習させた後で、
その内部状態(=内部パラメータ群)を基に「ハッシュコード(=ディープハッシュ)」を作成します。このハッシュコードもRAGナレッジの一部として含ませます。
②. 所与のパターンの全体に対して適応型フィルターを適用して、外れ値などのノイズを低減します。
③. 所与のパターンに対してウェーブレット的手法を適用して、その複雑さに応じた区間で分割します。
④. それらの区間のパターンを、決定木や遺伝的アルゴリズムや強化学習エージェント(=ルールベース)に学習させた後で、①と同様に、汚い近似多項式を生成します。
⑤. それらの区間のパターンを、オートエンコーダー(=ニューラルネット)に学習させた後で、①と同様に、ハッシュコードを作成します。
⑥. ⑤で得たハッシュコードを検索キーとして、RAGベースに照会をかけて目的のRAGナレッジ(=洗練されたリッチな数式の優先候補群)を取得します。
また、数式の探索・検索には、ベイズ最適化や進化的アルゴリズムを用いて、探索・検索の効率化を図ることも考えられます。
⑦. ⑥で得たRAGナレッジ(=洗練されたリッチな数式の優先候補群)を始めとした「関連ナレッジ全体」を基に、数式翻訳(=sec2sec)を得意とする「数式トランスフォーマー(=ニューラルネット)」を動的に構築します。
⑧. 数式トランスフォーマーに対して、④で得た汚い近似多項式を入力します。すると、出力として洗練されたリッチな数式が得られます。
※1. どうしても、洗練されたリッチな数式が得られない場合には、そのロジックは数式だけでは表現不可能なプログラムロジックであると判定し、一般のプログラムコードの存在を探索します。
※2. 数式では表現不可能なパターンについて、エキスパートシステム(=ルールベース)による広汎かつ多角的なデータ分析によって、その傾向や性質を突き止めて、命令に変換します。
※3. たとえば「猫の姿」などは、数式だけでは表現不可能なパターンの例です。
⑨. ⑧で得た洗練されたリッチな数式について、ルールベースで、その「数学的正しさ」と「数学的美しさ」を基準に評価して、その採否を決定します。
また、数学的正しさとは、元のパターンに忠実であること、元のパターンに適合していることです。加えて、数学的美しさとは、RAGベースにあるナレッジ(=数式)と一致・整合するかです。
⑩. 採用された部分区間数式を新たなRAGナレッジとしてRAGベースに新規登録・新規保存します。
⑪. ルールベースによって、隣り合う区間をつなげた形の「汚い連結多項式」を生成します。
⑫. ⑪で生成した汚い連結多項式と、隣り合う二つの区間に対応する「二つの洗練されたリッチな数式」を、
数式トランスフォーマーに入力することで、その出力として「洗練されたリッチな統合式」を得ます。また、勾配降下法によって、数式の統合プロセスの結果が局所最適解に陥らないように工夫します。
※1. より精度を高めるために、ユーザーに手動で、数式同士の統合ルールのヒントをRAGルールとして登録・保存してもらうことも可能です。
※2. ⑧-1の通りに、数式だけでは表現不可能な一般のプログラムコードが対象の区間に含まれている場合には、別の処理ルートで、これに対処します。
⑬. ⑫で得た洗練されたリッチな統合式を基に、そのパターンを計算によって生成しておいて、これをオートエンコーダーに学習させた後で、その内部状態(=内部パラメーター群)について、ニューロン活性分析や特徴量マップ分析などのXAI的手法の結果を得て、それをヒントとして、洗練されたリッチな統合式をより洗練化します。
⑭. ⑬で得た「より洗練されたリッチな統合式」を「連続部分区間式」として、それをルールベースで、その数学的正しさと数学的美しさを基準に評価して、その採否を決定します。
⑮. 採用された連続部分区間式を新たなRAGナレッジとしてRAGベースに新規登録・新規保存します。
⑯. これらの手順・操作を全ての区間が繋がり、目的の数式が一つになるまで繰り返します。
⑰. 最終的に得られた全区間式を新たなRAGナレッジとしてRAGベースに新規登録・新規保存します。
処理フローの概観
この処理フローにおいては、ルールベースは「鑑別者 兼 半生成者」の役割を、ニューラルネットは「全生成者」の役割を負います。つまり、この系全体が「GANs」となります。
つまり、主にニューラルネットが数式を生成して、ルールベースがそれを鑑定・評価するというサイクルを実施する訳です。そして、この系全体の働きとして、十分に洗練された数式のみを正式なナレッジとして採用するということです。
おわりに
如何でしたでしょうか?。
また、懲りずに、記事をアップしたいと思います。
それではまた~。