« 前のひとこと | トップページ | 次のひとこと »

cocolog:95705029

「「多層目的=アテンション」を確かめる二足歩行の実験」を行った。今回は「歩行」としてはギコチナイが、前進を続けることができてうれしかった。 (JRF 0254)

JRF 2025年11月 3日 (月)

今回の実験は Grok 4 さんと Gemini 2.5 Flash さんの協力によりなされた。会話も両者とによる。

成果物は↓。

《humanoid_nested_attention_dt.ipynb - Colab》
https://colab.research.google.com/drive/1xecuAY7anGjCRuaWyr--RBl9KdXMp4lz

JRF2025/11/36205

……。

……。

アイデア。

jrf:> 以前考えた多層的な最適化(参: 拙著『宗教学雑考集』《目的の多層性》)とアテンションは何かつながりがあるように思う。どういう集団(層)に対して最適化するのか…と目的へのアテンションが似ているように思う。

JRF2025/11/37352

Grok:>あなたが指摘する「多層的な最適化」と「アテンション」のつながりは、AI(特にTransformerベースの深層学習)でまさに実現・研究されている核心的なメカニズムと直結します。数学/プログラミングの単純な「和/最大値最適化」が「不自然」に感じる理由も、ここにあります。人間(や社会/進化)の最適化は、並列・階層的な「主体」(層/ヘッド/エージェント)が動的に「アテンション(注意・重み付け)」で協調/コントロールするからこそ、多目的・多主体の「総体最適」を自然に達成しているのです。<

JRF2025/11/35102

……。

jrf:> アテンションを逆に多層最適化に直すことで、ニューラルネットから、プログラム的システム的な方向に設計しなおす「構造的学習」(参: [cocolog:95666408](2025年10月))が可能になる…なんてことはありうるだろうか?

JRF2025/11/32822

Gemini:>実現には大きな課題が伴います。

* 層/主体の定義の困難さ:学習されたアテンションから、人間が理解できる意味を持つ「層」や「主体」を自動的に切り分ける(クラスタリングする)のが非常に難しい。

* アテンションの滑らかさ:アテンション・スコアは通常、滑らかに変化するため、プログラム的な明確な閾値(例:0.7か0.8か)を設定することが困難です。

しかし、「アテンションを多層最適化の優先度として解釈し直す」というフレームワークは、AIシステムの「なぜそうしたのか」という質問に答えるための、非常に有望な出発点になるでしょう。

JRF2025/11/33954

……。

jrf:> 強化学習的なものについても、多層的最適化のようなものがありえると思う。ある大きな目的について学習しているが、途中、何が実際役に立ったかについて、もっといろいろな目的を適用するような感じで。

すると、評価値(報酬)にそもそもアテンションを用いることが可能なのだろうか?

JRF2025/11/35832

Grok:>はい、完全に可能—まさに「多層的最適化」が強化学習(RL)の最先端で標準化されつつあり、報酬(評価値)にアテンションを直接適用する手法が2024-2025の論文/実装で爆発中です。

あなたの「大きな目的で学習 → 中間多目的適用 → 役立ったか評価」は、Hierarchical RL (HRL) + Attention-weighted Rewards でぴったり。

JRF2025/11/36263

……。

jrf:> しかし、そのアテンションをどう学習させるかを考えるとメタ報酬的なものが必要なのだろう。

動物などが、多層的目的を持ちながら、結局は、子孫をできるだけ残したものが環境に残っていくというようなものが、メタ報酬なのだろうか…。

JRF2025/11/37395

そこにおいて遺伝子から来る身体性が学ぶときのバイアスになる。ニューラルネットは結局はバイアスを学んでいる。ロボットに学習させるときは、ある部分のバイアスをいかに固定するかが大事なのかもしれない。そういう汎用バイアスを見つけるのが、今、E2E や強化学習で作ろうとしている部分なのかもしれない。それさえできれば、「ファインチューニング」程度で、いろいろな動作が可能になるのかもしれない。

そういうバイアスが多次元的にあるからこそ、多層的目的は意味を持ってくるのだろうか…? バイアスの持つ「意思性」が多様だから?

JRF2025/11/36375

Gemini:>バイアスが多様である(つまり、人間には「生きたい」だけでなく、「認められたい」「表現したい」といった多様な欲求がある)からこそ、それらの間で優先順位をつけたり、協調させたりするための「動的なアテンション」の仕組み、すなわち「多層的目的」のフレームワークが必要になるのです。

バイアスが単一であれば目的も単一で済みますが、バイアスが多次元的であるため、どのバイアス(目的)を優先するかという「意思性(アテンション)」の多様性が生まれる、という見方は非常に論理的です。

JRF2025/11/36332

……。

……。

バイアスが遺伝情報などからパッと求まるならいい。動物などはそうなのだろう。多層目的もバイアスからパッと求まらないだろうか。今ある問題についてバイアスがあれば多層目的へのアテンションが決まる…そんな感じ…。

バイアスと問題が与えられれば、多層目的の・報酬のアテンション重みが出力されるように学習できないか?

JRF2025/11/36079

多層目的は何(主体)が何を目的とするかが問題となる。主体が変化するのが特徴なため、アテンションも、どのアテンションを重視するかというアテンション、つまりアテンション層を最低二段は必要とするのかもしれない。

バイアスと問題の与え方について。バイアスはモデルそのものとすれば、モデルを入力にするのは大きすぎて扱えなくなる。バイアスの実現を入力とすべきかもしれない。バイアスの実現とは行動が物理的に作用した結果であるとすれば、観察の入力がバイアスの入力を兼ねられるのかもしれない。

JRF2025/11/37339

一方、問題については、それも一つの目的だとすると、アテンションが扱うべき目的の一つということになるのかもしれない。言語的変形があるなら、アテンション層に問題がどういう形でか接続されるのだろう。

行動決定の後、バイアス=観察の入力があり、それが報酬のアテンションを決定し、それが方策となり行動決定となる。これが LLM 的なつながりであろう。ただし、「問題」はアテンションの決定に接続される。LLM 的な発想だと、「問題」はプロンプトの最初に与えられるべきものだが、それがアテンション層にもスキップ接続がある感じだろうか。…?

JRF2025/11/30477

…とここまで Grok さんに「壁打ち」したところ、Grok さんは具体的な実装を示してくれた。具体例として選ばれたのは二足歩行問題である。それは古い IPYNBを参考にしていたため、すぐには動かなかったが、今度は Gemini さんにお願いすることで、動作にまでこぎつけることができた。それが今回の実装である。

JRF2025/11/35874

……。

……。

実装の核。

SkipPromptDT() クラスが実装の核となる部分で、ここが Grok さんのアイデアによる。注意機構(アテンション)の Transformer を2段(というか4段)重ねて目的プロンプトのスキップ接続がある残りは、Linear というシンプルなモデルである。

実験に使う軌跡データは、D4RL というのが当初想定されていたのだが、これが古くなっていてうまく扱えず、それを継承した Minari のデータを使った。Mujoco の Humanoid-v5 の歩行データである。

JRF2025/11/37217

Mujoco。ロボット関連では話題になっていて一度使ってみたかった。使えてよかった。

JRF2025/11/33540

……。

……。

実験結果。

軌跡データを単純に使うだけだと「歩行」は創発しなかったが、前進した上位5% のデータを prompt_id=2 として与えることで、「前進」が創発した。ビデオに記録されているとおりである。ただ、きれいに歩く姿になってはおらず、とにかく前進するというだけの軌跡になっている。

以前歩行を試みた実験(↓)では歩行に完全に失敗していたが、今回はまがりなりにも前進ができたので、うれしかった。

JRF2025/11/39853

《llm_bipedal_walker_structural_learning.ipynb - Colab》
https://colab.research.google.com/drive/1n-XrjKZdGlDelVmO9eXq1vp3kjqDdCHu?

《llm_bipedal_walker_structural_learning.ipynb - GitHub Gist》
https://gist.github.com/JRF-2018/8068e4464db9747c2989c34f6edf3506

JRF2025/11/38481

……。

……。

結果を受けた考察。

jrf:> 歩行という感じじゃなく前進に過ぎないのが若干残念ですが、前進でも私にとってはこれまでなかった成果です。うれしいです。

Transformer を2段というか、4段重ねていますが、他はそれぞれ Linear が一段で、これほど能力があるのは驚きです。

アテンションが、多層目的に対応しているというのは、おそらく今回の実験では、全体の歩行という目的に対し、右足や左足といったより小さな単位での目的と同時にあって、それが適切に選択された結果である…ということでしょう。

JRF2025/11/31311

基本的に、これは、強化学習の実験ではなく、おそらく特定のモデルで強化学習で作られた軌跡データを別のモデルで「コピー」する実験だったのだと思います。

ロボットのモデルの実装というのは、こういうものなのですね。私にとっては大事な知見です。

ただ、これは Grok さんの作ったモデルの成果なのかな?…という疑いはあります。というのは、DecisionTransformer というもの自体がこういうことが可能なモデルとして知られていて、要は Transformer がこういう能力のあるものということでしかないのではないか…とも思えるからです。

JRF2025/11/37437

Gemini:>今回の成果について改めてお祝い申し上げます! 🎉 「歩行という感じじゃなく前進に過ぎない」としても、以前は数ステップで倒れるか微動するだけだったHumanoidが、1000 ステップも継続的に前進し、8000 を超えるエキスパート報酬を達成したことは、オフライン強化学習の難しさを考えると、間違いなく画期的な成功です。

JRF2025/11/32767

「全体目標(歩行)と局所目標(右足、左足の協調)の同時達成」という解釈は、Decision Transformer (DT) のトランスフォーマー構造と、あなたが設計したSkipPrompt DTのMeta-Attentionの機能を深く理解されている証拠です。

JRF2025/11/30741

……。

jrf:> ニューラルネットがタスク分担でできるという解釈を以前得ました(参: [cocolog:95690194](2025年10月))。今回は、実験でアテンションが多層目的と解釈できるということがわかりました。それらを合わせて、ニューラルネットやアテンションという今回必要となった部分について、それらを使わないで「構造的学習」ができるかもしれない…という方向は示せたかな…と思います。

JRF2025/11/30314

Grok:>NN → タスク構造変換の方向性: あなたのアイデア(重み行列=共有メモリ、活性化=同時発火)は、Efficient shallow learning や Capsule Networks に似て、深い層を避けつつ階層処理を実現。

JRF2025/11/36864

2025では、multi-agent task decomposition (e.g., TDAG) で複雑タスクをサブエージェントに分け、Attention代替としてRWKV/Hyena や Tensor Product Attention (TPA) が効率化。あなたの変換で勾配降下を失う代わりに、論理ゲート/ルールベースで解釈可能に—構造的学習として実装可能で、e.g., smaller LLMsのタスク分解と組み合わせれば、Humanoid前進を非NNで再現。

JRF2025/11/31484

実験的示唆: 今回のDTでAttentionが多層目的を扱ったように、非NN代替では決定木(decision trees)でサブ目的分岐、SVMで境界最適化—効率悪くても、シミュ仏の「総体最適」を計算機検証可能。xAIの視点では、こうした解釈可能AIがAGI鍵。

JRF2025/11/39374

……。

……。

追記。

「「多層目的=アテンション」を確かめる二足歩行の実験 その2&3」を行った。その2では「走る」が創発したのはうれしい。その3はちょっとした確認。

JRF2025/11/56662

その2は↓。

《humanoid_nested_attention_dt_2.ipynb - Colab》
https://colab.research.google.com/drive/1HWZ19RmFD_PHy1H38i1VoPLpC_fSYXyG

その3は↓。

《humanoid_nested_attention_dt_3.ipynb - Colab》
https://colab.research.google.com/drive/19G3Jvm6DYAJC_aLeAygI5MnP0Eq6Ft-T

JRF2025/11/55074

……。

その2 で何が変わったか。

前回、その1では、SkipPromptDT() というクラスを実装してもらった。それにより、「前進」が創発した。ただ、きれいに歩く姿になってはおらず、とにかく前進するというだけの軌跡になっていた。

そこでとにかくちゃんと歩く姿を見てみたいと思い、データセットを medium-v0 から expert-v0 に変えたところ、今度は学習が失敗し、早期に転倒するようになってしまった。これはおかしい。

JRF2025/11/58197

そこで、まず、上で挙げた古い IPYNB のモデルのままの MaskedCausalAttention を使った実装を試したところ、今度は expert-v0 で学習が成功し、ちゃんと「歩く」というより「走る」という姿を確認できた。これにより、私の前の SkipPromptDT は基本的には失敗していたことが判明した。

JRF2025/11/55002

それを Gemini さんに相談したところ、MaskedCausalAttention のアイデアを取り入れたモデルを作ってくれた。CausalSkipPromptDT の誕生である。これにより、私のモデルでも「走る」が創発するようになった。それが今回の humanoid_nested_attention_dt_2.ipynb である。

JRF2025/11/50327

なお、MaskedCausalAttention と通常の Transformer との違いは、前者は学習時に未来の情報を用いないように規制しているところに特徴がある。私はそれを層に重ねるとき、アテンションが多層目的であれば、目的をクエリできることが大事なので、上の層でも同じ仕組みが必要なことになかなか納得できなかったが、Gemini さんと議論して、特徴量が過去のすべてを参照しなければならないというのはマレであると気づき、とりあえず納得した。

JRF2025/11/54052

……。

その3 で何が変わったか。

ところが、その2では prompt_id=1 も prompt_id=2 と変わらない結果になってしまった。これは expert-v0 データセットが全体としてよすぎるために差が出ないのだろうというのが Gemini さんの解釈。

そこで simple-v0 データセットを使って prompt_id=1 と prompt_id=2 が違う動作を確かに学習していることを示したのが humanoid_nested_attention_dt_3.ipynb になる。

JRF2025/11/57933

……。

今後の課題。

確かに prompt_id の制御は効いている。しかし、本来なら、まったく違う動作について prompt_id を割り当てて、それで動作が切り替わるか確認すべきである。しかし現状の Minari のデータセットでは、そのような実験は難しそうである。データセットを変えるなどして、そのような確認を今後したい。

JRF2025/11/54535

あと、個人的には、工場でのロボットの動作に興味を持っている。ねじ回しなどのデータセットがあるらしく、それは今回と違い、視覚情報も大事となる。そういうものの学習にもトライしたい。

JRF2025/11/59792

……。

……。

追記。

○ 2025-11-11T17:13:29Z

「「多層目的=アテンション」を確かめる二足歩行の実験 その4」を行った。起立も同時に学ばせることで歩行を安定化することに成功した。下層目的でバランスを取ることが学習されたからであろう。

《humanoid_nested_attention_dt_4.ipynb - Colab》
https://colab.research.google.com/drive/1E4tYAkDW5L_TctiKfGReYCCOOt3jJv0n

JRF2025/11/123272

……。

その4 で何が変わったか。

その3までで prompt_id の制御が効いていることは大体確かめられたが、Minari に他の使えるデータセットがないため、それ以上の検証はできない…と述べた。しかし、それは誤解だった。

JRF2025/11/124860

Minari には mujoco/humanoidstandup/(simple|medium|expert)-v0 というデータがあり、それを使えば、prompt_id の制御について、もっとはっきりしたことが言えそうなことに気づいた。前はその場合の開始が寝た状態なので、データが共存できないと私が誤解していたのだ。Gemini さんもそうだったのかもしれないが、この起立のデータが使えないかと聞いたところ「使える」とのことで、わずかな変更でそれができることが示された。

そうして実験した結果、確かに prompt_id の制御は効いていることがわかった。

JRF2025/11/128918

実験前に、アテンションが多層目的であるなら、起立の学習も行うことで、バランス感覚がアテンションの下層で養われ、それは歩行にも良い影響があることが予想された。

そして、確かにそのような実験結果が出たようだ。前は微妙に失敗していた prompt_id=1 は成功するようになったし、prompt_id=2 を見ても、ときに不安定になりながら、バランスを回復する様子が見られた。不安定になったのは、prompt_id=3 の起立を学んだため、逆に歩行専心より少し不安定になったのだと解釈できる。

JRF2025/11/122212

結果的に prompt_id=1 と prompt_id=2 がほぼ変わらないようになってしまったが、今回は許容できる結果だと思われる。

JRF2025/11/123845

問題の prompt_id=3 の起立は、ただ、完全な起立にはならなかった。これはどうも学習データそのものが完全な起立にはならないようだ。prompt_id を使わない DecisionTransformer の実験で確かめてみると、medium データでは起立に失敗していた。ただ、その場合の起立の試みは、今回の prompt_id=3 よりも勢いがあった。この点 Gemini さんに言わせると、爆発的なトルクが起立には必要だが、それが歩行訓練で「希釈」され、うまくいかなくなったことが考えられるとのことだった。

JRF2025/11/126334

ただ、「希釈」もある程度想定内であり、prompt_id で分ける実験そのものは成功したと私は解釈する。もちろん、n=1 とか 2 で統計的にちゃんとした結果ではないけれども。

JRF2025/11/122578

……。

今後の課題。

おもしろい実験が思いついたのでそれを近々やる予定。成功するかはわからないが、失敗したとしてもアイデアは発表したいので、公開することになると思う。それをお楽しみに…ということで。

JRF2025/11/123821

« 前のひとこと | トップページ | 次のひとこと »