ニューラルネットワークにブール回路を埋め込む
Embedding boolean circuits in a neural network (edwardbenson.com)
要約
この記事では、ニューラルネットワークにブール回路を統合する手法について考察しています。まず、AND、OR、NOTといったブール演算をニューロンの重みと活性化関数で表現する方法を示し、次に、学習済みのニューラルネットワークのリアル値信号をブール値に変換する「プローブ」と、ブール値出力をネットワークのニューロンに影響を与える「スティム」というインターフェースの概念を提案しています。これは、AIの推論プロセスに論理的な制御を組み込むためのアプローチです。
全文翻訳
ニューラルネットワークにブール回路を埋め込む
2026年10月30日
ニューラルネットワーク内に埋め込まれたブール回路
LLMが私よりも雄弁にこのアイデアを図解する
LLMは通常通り処理する
1/5
実数値の活動がモデルを流れます。
この記事は、主に私が考えを巡らせているものです。学習済みのニューラルネットワークに、ブール回路をサイドカーとしてどのようにインストールできるでしょうか?
本質的に、ここには2つの異なる問題があるように思われます。
- ブール回路をニューロンのセットとして表現すること
- ブール回路を学習済みネットワークに接続すること
表現の部分は比較的簡単です。ニューロンは、バイアスに加えて入力の重み付き合計であり、活性化関数を通過します。
入力がすべて0または1であり、活性化関数が単に「ゼロより大きいか」であると仮定すると、ブール演算子を次のようにニューロンに変換できます。
AND(A, B) = A + B - 1.5 > 0
OR(A, B) = A + B - 0.5 > 0
NOT(A) = 0.5 - A > 0
ブール式に関して、これ以上の説明は必要ありません。これらのゲートがあれば、あらゆる式を作成するために必要なすべてが揃っており、ニューロンは紙上のシンボリック演算子と同じように構成できます。
2番目の問題は、この回路を学習済みネットワークにパッチすることです。学習済みニューラルネットワーク内の信号は、どこから取得するかによって、必ずしもクリーンな0または1ではありません。
そのため、入力と出力のマッピングが必要です。ニューラルネットからブール回路へ、そして再びニューラルネットへ。まるでニューラリンクがLLM用になったかのようです。
入力側については、「プローブ」を、実数値出力を持つ学習済みニューロンからブール値信号へのマッピングと呼びましょう。プローブは次のように表記します。
probe Trigger: [L3 N234 >1]
このプローブは、ニューロン L3 N234 が1以下の場合に0、それ以外の場合に1になります。これは、ターゲットニューロンの知識と、さまざまな値の下で発火する際のその意味の観察に基づいて設定されたしきい値を持つ、ブール回路の入力側に単一のニューロンで実装できます。
出力側については、「スティム」を、ブール値がオンまたはオフに切り替える加算的なプッシュと呼びましょう。スティムはニューロンと符号付きステアリングマグニチュードを識別します。
stim Watermelon: [L11 N15292 -12.5]
ここで -12.5 は、追加されるプッシュの方向とサイズを設定します。このサイズの値は、学習済みLLMにおける観察された望ましい効果に基づいて選択する必要があります。例えば、-12.5でプッシュするとスイカのように振る舞うニューロンを見つけた場合、このstimを、適切なタイミングでオンにするために意図されたブール回路の出力として接続するかもしれません。
個々のMLPニューロンはスカラー活性を持っています。トランスフォーマーでは、その出力重みが、ベクトル値の残差ストリーム内の方向を定義します。ここで、スティムは、長さ1に正規化された、その方向への指定された符号付きマグニチュードを追加します。
1回のフォワードパス内で、プローブはそれが刺激する場所の前に実行される必要があります(上記のL3からL11の例のように)。後続のレイヤーを読み取り、先行するレイヤーを刺激するには、信号を後続の処理ステップに伝える必要があります。
そして、それがすべてです!
私はこれが以下を記述していると確信しています。
- ブール式をニューラル回路に変換する方法
- 実数値ニューロンをこの回路のブール値入力に適合させる方法
- この回路のブール値出力をネットワークの実数値出力に適合させる方法
今回はコード例はありません。私は、私が取り組んでいる、もう少し複雑なもののための思考を構造化するために、このブログ記事を使用しています。