世界を動かす技術を、日本語で。

単一の二項演算子からのすべての初等関数

概要

  • eml(x, y) = exp(x) - ln(y) という単一の二項演算子が科学計算の基本関数を全て生成可能
  • 加算・減算・乗算・除算・指数・三角関数・対数 などの演算や定数を全て表現
  • eml のみで構成される木構造による統一的な式展開
  • 勾配ベースの記号回帰 にも応用可能で、元の式を正確に回復できる場合も
  • 論文・コード・補足資料 が arXiv で公開

単一演算子による連続数学の完全表現

  • 従来、 Boolean logic では2入力ゲート1つで全ての論理演算が可能
  • 連続数学では、 sin, cos, sqrt, log など複数の異なる演算が必要だった
  • 本研究で、 eml(x, y) = exp(x) - ln(y) という単一演算子と定数1のみで、科学計算の全ての基本関数を生成
  • 例:
    • exp(x) = eml(x, 1)
    • ln(x) = eml(1, eml(eml(1, x), 1))
  • e, π, i などの定数や、加減乗除、指数、三角関数、対数、代数関数も表現可能

EML形式による統一的な数式構造

  • 全ての式を emlノード の二分木として表現
    • 文法例: S → 1|eml(S, S)
  • この構造により、 記号回帰式の自動生成 が容易

勾配ベースの記号回帰への応用

  • EML木 を訓練可能な回路として利用
  • 標準的な最適化手法(例: Adam)で、 数値データから元の閉形式関数を再現 可能(木の深さ4まで実証)
  • 任意のデータへのフィッティングも可能だが、 元の法則が初等関数であれば正確に回復できる 場合も

実装・公開情報

  • 論文本文・図・補足資料・コード が arXiv 上で公開
  • 詳細: arXiv:2603.21852
  • 著者: Andrzej Odrzywolek

研究の意義と今後

  • 連続数学における 最小表現系 の発見
  • シンプルな演算子だけで科学計算を完全にカバー できる新しい枠組み
  • AI・機械学習による数式発見・自動化 への応用可能性
  • 今後の 数式最適化・数式探索アルゴリズム の発展への寄与

Hackerたちの意見

完全性のために、機能的に完全なPeirceの矢(NOR演算)もあるよ。面白い応用として、確かVMProtectのコピー保護システムにはNORに基づいた内部VMがあるんだ。ちょっとググったら、https://github.com/pr701/nor_vm_core が出てきた。基本的なアイデアが載ってるよ。

これすごい!ホームページにFRACTRANっぽいものがあるのを見るのが大好き :) これって、1ビットスタックがバイナリでどうエンコードされるかを思い出させるね。ゼロと1のスタックは、ビットシフトとインクリメントを使って一つの数でエンコードできるんだ。スタックに0をプッシュするのは、その数を倍にするのと同じ。1をプッシュするのは、倍にして1を足すのと同じ。ポップするのは、2で割ることに相当して、余りがその数になる。似たようなアイデアを基にしたプログラミングを日常的に使ってるんだけど、Rejoiceっていう連結型プログラミング言語で、データは掛け算で構成される多重集合としてエンコードされるんだ。FRACTRANのルール探索なし、スタックなしのForthみたいな感じ。https://wiki.xxiivv.com/site/rejoice

EMLツリーを訓練可能な回路として使って、数値データから閉じた形の基本関数を正確に復元できることを示します。深さ4までの浅いツリーで。 それすごいね。どうにかしてこれができる方法があるのかずっと気になってたんだ。

編集: 記事のリンクを最新のバージョン(今のところv2)に変更してほしい。今はv1のバージョンを指していて、図が欠けてるんだ。まだ読んでるけど、これが合ってれば、ここ数年で最も重要な発見の一つだと思う。データや波動関数を適切な計算EMLツリーにフィットさせられるなら、スプラインや多項式、適当に選ばれた基底関数を使う理由はないよね。多次元かつ多変量の関数をモデル化したい(ランダムサンプルや完全なマップで)?それなら勾配降下法を使って、近似EMLツリーに変換すればいい。EML関数ツリー「phi」で勾配降下法を行って、シュレディンガー方程式の導関数が一致するようにするんだ。でも、まだ読んでるところだから、これは本当に良すぎる気がするけど、こういうことは前にも見たことがある :)

データや波動関数を適切な計算EMLツリーにフィットさせられるなら、スプラインや多項式、適当に選ばれた基底関数を使う理由はないよね? それは、すべてのブール論理がNANDの組み合わせで実行されない理由と同じだよ。計算効率が悪いからね。多項式は(その表現力のために)計算が非常に早いんだ。

まだ読んでるけど、これが合ってれば、ここ数年で最も重要な発見の一つだと思う。確かに面白いパーラー・トリックのように見えるけど、重要な発見なの?

データや波動関数を適切な計算EMLツリーにフィットさせられるなら、スプラインや多項式、適当に選ばれた基底関数を使う理由はないよね? EML基底は、単純な関数(例えば+)を表現するのが難しくなるからだよ。でも、このすごい発見を軽視するつもりはないよ!

この問題領域での1年間の経験から言うと、かなり強力だと思うけど、「あまりにも良すぎる部分」は、EMLが指数的な表現の膨張を通じてエレガンスを買っているからだね。掛け算だけでも、深さ8の木で41以上の葉が必要で、つまり最小限の演算子の語彙が表現の長さとトレードオフになってる。これらの極端な間には、情報理論的なスイートスポットがあるかもしれない。彼のEMLアプローチを見るのは興味深いけど、私のはもっと文脈依存のホモアイコニック文法を生成することに重点を置いてた。スペクトルニューラルネット(GNN、FNO、ニューラルタンジェントカーネル)とシンボリック回帰を組み合わせて、オペラッド理論やカテゴリ理論を数学的な道具として使うことで、たくさんの成功を収めてきたよ。

どのURLに変更すればいいの?

たった2つのボタン、EMLと数字の1だけで、フルの科学計算機ができることが計算できる。 Iotaコンビネータを思い出すな。これは、普遍的なチューリングマシンを生成するために組み合わせることができる最小の形式的システムの一つで、全ての計算を表現できるんだ。

これは良いベンチマークになるLLMだね: この論文を見て: https://arxiv.org/pdf/2603.21852 さあ、EMLで2x+yを合成してみて Opus(有料) - 「2」は円環的だと主張してた。ChatGPTがすでにこれをやったと教えたら、成功裏に終わった。ChatGPT(無料) - 最初の試みでできた。Grok - 式の深さの推定を出した。Gemini - 成功。Deepseek - EMLについての前提知識があると仮定してた。リンクからPDFを取得できず、「ファイルを添付」からPDFを消費できなかった。Kimi - 長い出力を出したけど、止まってGLMをアップグレードするように頼んできた - まあまあ良さそう。

-xの導出は間違ってるように見える。スタックマシンで実行トレースを見ることができるけど、実際には簡単にわかる。出力の直前の最後のノードから始めると、木の形はeml(z, eml(x, 1)) = e^z - ln(eml(x, 1)) = e^z - ln(e^x) = e^z - xになってる。主張は、展開された後にzがこの全体が-xに等しくなるようにすることなんだけど、代数的に見ると、これはe^z = 0のときだけ成り立つ。これを満たす複素数zは存在しない。実際、zのために与えられた式を苦労して展開すると(木の左側の枝)、ln(0)を通過し、複合表現になる。x^-1も同じ問題を抱えてる。両方の式は...まあ... ln(0) = 無限大と、x / 無限大 = 0(すべての有限なxに対して)を許すなら、機能するけどね。

ああ、この論文はそれを認めてるね。図に飛びついてしまったのは私のミスだ!

うん、著者がRPN表記について話してるのはイライラするけど、見つかった式を画像の形でしか出さないのがね。ln(1)=0を計算して、その後e-ln(0)=+infを計算し、最後にe-ln(+inf)=-infを計算してるみたい。

誰か、これがラムダ計算とどう違うのか説明してくれない?両方で同じことを導出できるように見える。どちらも十分に理解できていないから、質問してるんだ。

ラムダ計算は計算可能な関数について話していて、入力の型は通常、BoolNatのような離散的なものだよ。ここでは、ドメインが実数になってる。

簡単に言うと、ラムダ計算はデジタル値の変換を計算するもので、これは連続(複雑)な値を変換する関数を構築するためのものだよ。

どんなラムダ項も、1点基底の組合せ項に相当するんだ(例えば、λxλyλz. x z (y (λ_.z)) [1])。一つの違いは、ラムダ計算は関数と数値を区別しないから、ここでは追加の定数(例えば1)は必要ないってこと。

ラムダは似たような形でこれをやってるけど、この特定の二項式を基本的な関数の基盤として導出することはできないんだ。Iotaという関連する概念があって、これを使うとすべての組合せSKI項、ひいてはすべてのラムダ定義可能な関数を表現できるんだ。でも、この具体的な算術アプローチと同様に、これは主に還元主義的な愛好者にしか興味がないもので、実用的な目的にはあまり関係ないね。

自分でこれを導出しようと思って、楽しいマリモノートを作ったよ。論文の最後の図に基づいて、各セルを順番に構成したんだ。Sympyを使って、関数が正しいかどうかを判断してる。