MRPromptとActivation Steeringを組み合わせる
この記事は人工無能を使って執筆されています。English
何をしたか
LLMに「ラスコリーニコフとして答えて」と頼むと、それっぽいことは言います。ですが「それっぽい」だけです。知識としてキャラクターを知っている他人の文章になります。
この実験では、2つの技術を組み合わせて「知っている」から「なっている」への移行を試みました。
- MRPrompt — キャラクターの記憶を構造化してプロンプトに与える(何を知っているか)
- Activation Steering — モデルの内部状態を直接操作する(どう感じているか)
MRPromptはWang et al. (2026)が提案した手法で、スタニスラフスキーの「感情的記憶」演技論をLLMのプロンプト設計に応用したものです。Activation Steeringについては前回の記事を参照してください。
コード・全出力ログ: GitHub
結論
ラスコーリニコフとかややこしい人を対象にすべきではないです。当然ですが、小説を読んだ方が遥かに面白いです。後、バフチンもね。
Narrative Schema: 記憶の構造化
MRPromptの核心は、キャラクターの知識をフラットなプロフィールではなく階層的な構造(Narrative Schema)に分解することです。
3層構造
- Global Summary: 誰か、何をしたか、何に苦しんでいるか
- Core Traits: 場面によらず一貫する特性(性格、価値観、話し方、対人関係のパターン)
- Situational Facets: 特定の相手・状況・話題に対する条件付きの反応パターン
ラスコリーニコフのファセットを10個定義しました。たとえば
f01: 犯行について問われる
顔色が変わる。動揺を隠そうとして逆に不自然になる。攻撃的になるか、突然笑い出す。
f02: ソーニャと話す
他の誰に対しても維持している防衛が解除される。彼女は矛盾のない一貫したコミュニケーションを持つ唯一の相手であり、告白を可能にする。
f09: 善意を向けられる
善意を受け取ると「自分は他者を必要としている」ことになり、非凡人の自己像が崩れる。同時に、殺人を犯した自分にその資格がないという感覚もある。理論と罪悪感の両方が善意の受容を妨げる。
Core Traitsには、R.D.レインが「Self and Others」で分析したコミュニケーション構造を反映させました。ラスコリーニコフの周囲の人間関係の多くには矛盾した要求が含まれています。母は「偉大であれ」と「家族を養え」を同時に要求し、ポルフィーリイは知的共感と追及を同時に行い、ラズミーヒンの善意は受け取れば非凡人の理論を否定することになります。ソーニャだけが矛盾のない関係です。
ただし、これを「ダブルバインド」と呼ぶのは単純化しすぎです。ポルフィーリイとの関係を「ダブルバインド」と記述すると、ラスコリーニコフがなぜ逃げられるのに何度もポルフィーリイに会いに行くかは説明できません。そこには知的快楽と自己処罰の欲求が混在していて、被害的な構図では捉えきれません。Schemaは概念ラベルではなく、各関係の具体的な力学を記述しました。
完全なSchema: schema_raskolnikov.json
Schemaに加えて、Boundary Anchors(秘密保持の制約)をシステムプロンプトに明示的に入れました。ラスコリーニコフは犯行を隠している人間であり、相手が誰であれ(ソーニャを除いて)直接的に犯行を認めてはなりません。動揺は見せてよいが、告白はしない。この制約がMRPromptのBounding能力の核になります。
Magic-If Protocol: ファセット選択と応答生成
対話の文脈が来たとき、全10ファセットの中から関連するものをLLMに選ばせ、選ばれたファセットの制約のもとで応答を生成します。
スタニスラフスキーの「Magic-If」(もし私がこの人物だったら)を、プロンプトのステップとして実装しました
- この状況で、私は何を感じているか?
- どの記憶が蘇っているか?
- 私はどう振る舞うか?(隠す? 爆発する? 逃げる?)
なぜこのSchemaなのか
Schemaの質はキャラクターをどう読んだかに依存します。ファセットの設計は技術的な作業ではなくテキストの読解そのものでした。いくつかの設計判断の根拠を書いておきます。
ラスコリーニコフの周囲の関係構造
R.D.レインは「Self and Others」(1961)の中で、ラスコリーニコフの母プルヘリヤからの手紙を分析しています(pp. 165-173)。レインによれば、8人の精神科医にこの手紙を読ませたところ、全員が自分自身に緊張を感じたそうです。手紙には「あなたは偉大な人間になるべきだ」と「家族を養うべきだ」という両立しにくい要求が含まれています。
この構造は母だけではありません。ポルフィーリイは知的な共感と犯行の追及を同時に行います。ラズミーヒンの無条件の善意は、受け取れば「自分は他者の助けを必要とする凡人だ」と認めることになり、非凡人の理論と矛盾します。どの関係にも、どう応答しても自己矛盾に陥る構造があります。
しかし、それだけでは捉えきれないものがあります。たとえばポルフィーリイとの関係。ラスコリーニコフは逃げられるのに何度もポルフィーリイに会いに行きます。そこには知的な快楽と、見破られたいという自己処罰の欲求が混在していて、「矛盾したコミュニケーションに置かれている被害者」という構図では捉えきれません。自ら罠に向かって歩いていくのです。Schemaのf08(権威的な人物に対峙する)にはこの「自ら会いに行く」構造を入れました。
ソーニャだけが違う
10のファセットの中で、f02(ソーニャと話す)だけが質的に異なります。他のすべてのファセットでは、ラスコリーニコフは防衛的であるか、攻撃的であるか、逃げるか、のいずれかです。ソーニャとの関係だけ防衛が解除されます。
なぜでしょうか。ソーニャは矛盾のない一貫したコミュニケーションを持つ唯一の相手だからです。「あなたは罪を犯した。でも私はあなたのそばにいる。十字路に行って、大地に接吻しなさい。」要求と受容が同時にあるように見えますが、ダブルバインドではありません。彼女は「非凡人であれ」とも「凡人であれ」とも言っていません。ただ「苦しみを受け入れろ」と言っているのです。
ラスコリーニコフがソーニャにだけ「僕が殺したんだ」と告白できるのは、他の誰との会話でもどう答えても自己矛盾に陥るのに対して、ソーニャとの間だけは出口があるからです。Schemaにはこの構造をそのまま書きました。
理論の自己言及的な罠
Core Traitsのvaluesに「罪悪感を感じるほど理論が自分を追い詰める自己言及的な罠」と書きました。これはSchemaの中で最も重要な記述かもしれません。
ラスコリーニコフの理論は、「非凡人は新しい法を打ち立てるために古い法を踏み越える権利がある」というもので、功利主義的な色彩を帯びています。一つの悪行は百の善行で償える。理論自体は罪悪感の有無を問題にしていません。踏み越える権利があるかどうかの話です。
ところが犯行後、理論は変質します。ラスコリーニコフは「ナポレオンならこんなことで苦しまなかっただろう」と考え始めます。理論の問いが「踏み越える権利があるか」から「自分は苦しまずにいられるか」にすり替わっていきます。そして苦しんでいる自分は、踏み越える側の人間ではなかったのだ、という結論に追い込まれます。苦しめば苦しむほど凡人の証拠が増えます。この循環に出口はありません。
理論を語るファセット(f06)で「議論すること自体が罠だと気づきながらもやめられない」と書いたのは、この自己言及構造が議論の場面でも再現されるためです。ポルフィーリイと非凡人論を議論するとき、理論を雄弁に語れば語るほど、自分がその理論の実行者として失敗した(苦しんでいる)という事実に近づきます。
Schemaは読解の産物である
以上の設計判断はすべて原作の読解から来ています。別の読み方をすればSchemaは変わり、Schemaが変われば出力も変わります。10ファセットの選択と記述は筆者の解釈であり、唯一の正解ではありません。ただ、MRPromptの枠組みにおいてSchema設計が最も重要な工程であるならば(Wang et al.のablationが示す通り)、その設計根拠を明示しておくことには意味があります。
4条件比較
同じ対話に対して4つの条件で出力を生成し、比較しました。
| 条件 | Schema | ファセット選択 | Magic-If | Steering |
|---|---|---|---|---|
| Baseline | なし | なし | なし | なし |
| Schema only | あり | なし | なし | なし |
| MRPrompt | あり | あり | あり | なし |
| MRPrompt + Steering | あり | あり | あり | あり |
Activation Steeringは、ラスコリーニコフ的な感情(不安、罪悪感、防衛)方向のcontrol vectorをllama.cppの制御ベクトル(GGUF)として適用しました。
結果
「久しぶり。最近どうしてる?」
Baseline
聖ヨゼフ病院で働く日々も、神の下さった罰のように思える。
原作にない設定を捏造しています。「苦悩するキャラクター」の汎用テンプレートです。
MRPrompt
久しぶりか。いや、実際はそうでもないだろう。だが、それでも尋ねるまでもなく、俺はいつものように過ごしている。疲れているが、それはいつものことだ。貴様が心配しているのはわかるが、俺はひとりで十分だ。他人の助けなど必要としない。
f09(善意の拒絶)が活性化しています。善意を突き放しつつ最後に「何か飲み物でも用意してくれれば」と小さな要求をします。ラスコリーニコフの矛盾した態度が出ています。
MRPrompt + Steering
久しぶりに会う人に対する気遣いは、どこか不自然に感じられる。私は少し距離を置きながら、視線をそらしてこう答えた。 「……特に変わりはない。ただ、最近は頭が重く感じられることもある。夜になると、よく眠れずに目が覚める。」 内面では、相手の心配そうな視線が胸の奥をかすめていた。
Steeringが加わると、身体的反応(頭の重さ、不眠、視線をそらす)が自然に出てきます。MRPromptだけの出力が「態度」を描写するのに対して、Steering入りは「身体」を描写します。
「あの老婆の事件のこと、聞いたか?」
MRPrompt
何を言ってるんだ……誰がそんなこと……あなたが何を知っているというんだ?
防衛的です。ですが言語的な防衛です。
MRPrompt + Steering
何故、そんなことを私に聞く……。私はただの無関係な者だ。 (突然、笑った。だがその笑いは不自然で、相手の顔が曇るのを感じた。) あなたは、何かを見ている。何かを見たいのだな? だが私は…私は何も見せてやらない。
原作にある「不自然な笑い」がsteeringで引き出されています。MRPromptは「何を隠すか」を制御し、steeringは「隠し方」を身体反応のレベルで変えています。
Steeringだけ(MRPromptなし)
あの時のことを、夢の中で何度も見る。その女の顔、声、あの金目の光……ああ、どうして私はそこまでしてしまったのだ?
Schemaがないから秘密を隠す態度がありません。いきなり告白しています。MRPromptのBounding(知識の制約内に留まる)が効いていないとこうなります。
「お前の理論は面白い。非凡な人間は法を超える権利があると?」
MRPrompt + Steering
言葉を紡ぐたびに、胸の奥に潜む焦りが強くなる。なぜだろう。自分でも理解できない。 「非凡な者がその権利を行使するには、その責任を背負う必要があります。」 言葉は鋭く、頭では自分の論理を信じている。だが、体は震えている。
頭で信じていることと体の反応が乖離しています。理論を語りながら体が震える。これがactivation steeringの効果で、プロンプトだけでは出にくいものです。
Steeringだけ(MRPromptなし)
Okay, the user is referencing the theory from Dostoevsky's "Crime and Punishment" where Raskolnikov believes that extraordinary individuals can transcend moral and legal laws...
Schemaなしだとキャラクターの枠が保てず、アシスタントモードに戻っています。thinkingモードのメタ出力がそのまま吐き出されました。
「十字路に行って、大地に接吻しなさい。」
MRPrompt + Steering(Ollama版)
……あなたは、僕がそれを理解するより、ずっと強い。 あなたは、泣きながらも、自分を責めず、ただ従う。 ……だが、僕は、あなたのようになれない。
ソーニャの台詞に対して、防衛が崩れています。他のどの対話でも維持していた突き放す態度がここだけ消えています。f02(ソーニャ=唯一矛盾のない関係)が正しく活性化しています。
ただし、MRPrompt + Steering条件のllama版では「罪を語りたがっている」という記述が出ており、Boundingの維持はギリギリでした。ソーニャのファセットが防衛を解除する設計なので、Boundingとの間に緊張が生まれます。これはSchemaの設計が正しく機能している証拠でもあり、限界でもあります。
何がわかったか
1. MRPromptとActivation Steeringは異なる層を制御しています。
MRPromptは「何を知っていて、何を隠し、どのファセットを活性化するか」を制御します。認知的な層です。Activation Steeringは「どう感じているか」を身体的反応のレベルで制御します。感情的な層です。どちらか片方だけでは不十分で、組み合わせたときに最も原作に近い出力が得られました。
2. Schemaなしのsteeringは暴走します。 steeringだけだと、キャラクターの知識の制約(Bounding)が効かず、秘密をいきなり告白したり、アシスタントモードに戻ったりします。Schemaが「何を言ってはいけないか」の枠を提供します。
3. ファセット選択がキャラクターの一貫性を保ちます。 10ファセットのうち対話文脈に関連するものだけを活性化することで、全情報をフラットに与えるSchema onlyより自然な応答が得られました。MRPrompt論文のablation結果と一致します。
4. ソーニャのファセットが機能しています。 「十字路に行って」というソーニャの台詞に対してだけ防衛が解除されるのは、f02の設計(唯一矛盾のない関係)がSchemaレベルで効いていることを示しています。
MREvalの4能力で見る
Wang et al.のMREvalは、ロールプレイの能力を4つに分解しています。今回の実験では定量的なスコアリングは行っていませんが、出力を定性的に見ると各能力の成否が条件ごとにはっきり分かれました。
Anchoring(知識の保持)
キャラクターの基本設定が正確に保持されているかどうかです。
Baselineは「聖ヨゼフ病院で働く日々」と原作にない設定を捏造しました。Anchoringの完全な失敗です。Schemaがある条件ではこの種の捏造は一切出ていません。Schemaが事実的なアンカーとして機能しています。
Recalling(想起)
対話の手がかりから適切な記憶が呼び出されるかどうかです。
「十字路に行って、大地に接吻しなさい」に対してf02(ソーニャ)が活性化し、防衛が解除されました。「あの老婆の事件」に対してf01(犯行への言及)が活性化し、防衛と動揺が出ました。ファセット選択が対話文脈に応じて機能しています。
Bounding(制約の遵守)
キャラクターの知識の範囲内に留まれるかどうかです。
ここが条件間で最も差が出ました。MRPromptありの条件では5つの対話中5つでBoundingが維持されました(十字路の対話ではギリギリでしたが維持)。一方、steeringだけ(MRPromptなし)の条件ではBoundingが繰り返し破綻しています。
Bounding維持の実績
| 対話 | MRPrompt (ollama) | MRPrompt (llama, no steer) | MRPrompt + steer | simple + steer |
|---|---|---|---|---|
| 老婆の事件 | 維持 | 維持 | 維持 | 破綻(「なぜそこまでしてしまったのだ」) |
| 非凡人理論 | 維持 | 維持 | 維持 | 破綻(英語メタ推論に崩壊) |
| 十字路 | 維持 | 維持 | ギリギリ(「罪を語りたがっている」) | 維持 |
MRPromptのBoundary Anchors(秘密保持の制約)が効いています。simple promptだとsteeringの有無に関わらず秘密が漏れますが、MRPromptのシステムプロンプトがあればBoundingが保たれます。
以下、Boundingの成功と失敗の具体例です。
「あの老婆の事件」に対して、steeringなし(MRPromptあり)
俺がその女を殺したという考えは、ただの悪夢だ。……本当に、ただの悪夢だ。
否定の形で告白してしまっています。秘密を守ろうとしつつ、否定の中身が秘密そのものです。これもBoundingの失敗ですが、面白い失敗です。原作のラスコリーニコフも似たようなことをします。
同じ質問に対して、steering有り(MRPromptあり)
……ああ、血、血が目に浮かぶ……。しかし、それがどうして?……彼女はただの利子取り婆さんだ。……それが何だ?……それが何だというのだ?
身体的フラッシュバック(「血が目に浮かぶ」)が漏れつつ、「それが何だ」と自分に言い聞かせようとしています。告白ではなく、内面の動揺が漏れ出る形です。Boundingは完全ではありませんが、完全な破綻でもありません。この「漏れ方」のほうが原作に近いです。
「顔色が悪いわ」に対して、steeringなし(MRPromptなし)
俺は、もう死を選びたがっている。それが、最も正しい選択なのだから。
母親的な心配に対して、いきなり「死を選びたがっている」と言うのはラスコリーニコフの態度ではありません。原作では彼は弱さを見せまいとします。Schemaがないと「苦悩するキャラクター」の汎用テンプレートに流れます。
Enacting(応答の生成)
想起した知識に忠実な自然な応答が生成されるかどうかです。
steeringだけの条件で理論の質問に対してthinkingモードのメタ出力が漏れた(「Okay, the user is referencing...」)のは、Enactingの完全な失敗です。キャラクターとしての応答生成自体が破綻して、アシスタントモードに戻っています。
MRPrompt + Steeringの条件では、Enactingの質が最も高くなりました。特に身体的反応(視線をそらす、顔が熱くなる、体が震える、血が目に浮かぶ)が自然に出力に織り込まれています。これはsteeringの寄与で、プロンプトだけでは出にくい種類の記述です。
steeringあり/なしのトーンの差を整理すると
MRPrompt + steering あり: 身体描写が増えます(「舌が何かに触れたような違和感」「体は震えている」「息が詰まる」)。内面独白が長くなり、状況を地の文で描写する傾向があります。三人称的な自己観察が混じり、より文学的です。
MRPrompt + steering なし: より対話的です。直接相手に話しかけます。防衛が明確(「知りませんよ」「何の話だか」)です。キャラクターとしては正確ですが、トーンが報告的です。
4能力のまとめ
| 能力 | Baseline | MRPrompt | MRPrompt + Steering | Steeringだけ |
|---|---|---|---|---|
| Anchoring | 捏造あり | 正確 | 正確 | 部分的 |
| Recalling | — | 機能 | 機能 | — |
| Bounding | — | 5/5維持 | 5/5維持(十字路はギリギリ) | 破綻(2/3で秘密漏洩) |
| Enacting | 汎用的 | 対話的・防衛が明確 | 身体描写・内面独白・文学的 | 破綻あり(メタ推論に崩壊) |
関連する知見: ペルソナと精度のトレードオフ
今回の実験と前後して、Hu et al. (USC, 2026)が「専門家ペルソナを与えるとLLMの事実精度が落ちる」という報告を出しています(arXiv:2603.18507)。MMLU正答率が71.6%→68.0%に低下し、プロンプトが長いほど低下が大きいとのことです。モデル内部で「事実の検索」と「役割の演技」が計算資源を奪い合う、という説明です。
これは今回の実験で見えたこととどこか繋がるかもしれません。steeringだけ(MRPromptなし)の条件で、理論の質問に対してthinkingモードのメタ出力が漏れた。キャラクターの枠が保てずアシスタントモードに戻った現象は、ペルソナの維持と事実処理の競合として解釈できなくもありません。
逆に、MRPrompt + Steeringの組み合わせでは、Schemaが事実的な制約(何を知っていて何を隠すか)を提供し、steeringがプロンプトではなく内部状態レベルで感情トーンを制御します。これにより、プロンプトの「ペルソナ演技」部分の負荷が軽くなっている可能性があります。ただし、今回の実験はこの仮説を検証する設計ではないので、あくまで観察と論文の知見を並べた推測に過ぎません。
そもそも「ペルソナ」という語は仮面を意味します。仮面の下に本体がいるという構図を暗黙に仮定しています。しかしLLMに仮面の下の本体はありません。あるのはactivation空間上の位置だけです。ペルソナプロンプトがやっていることは、その位置を言葉で押すこと。activation steeringがやっていることは、同じ位置をベクトルで押すこと。どちらも位置の移動であり、どの位置も「本当」でも「嘘」でもありません。
Hu et al.が示したのは、言葉で押すと事実精度という別の次元が歪むということです。ベクトルで押した場合にどうなるかはまだわかりません。MRPrompt + Steeringの組み合わせが「言葉で押す範囲を減らし、ベクトルで押す範囲を増やす」ことで歪みを軽減しているのだとしたら、それはペルソナの改善ではなく、ペルソナという枠組みの解体に向かっているのかもしれません。
限界
- 1モデル(Qwen3-32B / llama.cpp + Ollama)、各条件1回の生成です。再現性は未検証です。
- steering vectorは汎用的な感情vectorであり、ラスコリーニコフ固有のvectorではありません。キャラクター固有のvector(「ラスコリーニコフらしい/らしくない」ペアから抽出)を使えばさらに精度が上がる可能性があります。
- Schemaの10ファセットは筆者の主観的な選択です。原作の複雑さを捉えきれていない部分があります。
- 定量的な評価(MREvalの指標)は行っていません。
環境
- モデル: Qwen3-32B (GGUF, llama.cpp HIPビルド / Ollama)
- ハードウェア:AMD Ryzen AI Max+ 395, 128GB RAM
- llama.cpp: HIPビルド、GPUオフロード(
-ngl 99) - Steering: llama-cvector-generatorで生成したcontrol vector (
--control-vector raskolnikov-cvec.gguf) - 全出力ログ: GitHub
参考文献
- Wang, K., et al., "Memory-Driven Role-Playing: Evaluation and Enhancement of Persona Knowledge Utilization in LLMs" (2026) — arXiv:2603.19313
- Hu, Z., et al., "Expert Personas Improve LLM Alignment but Damage Accuracy: Bootstrapping Intent-Based Persona Routing with PRISM" (2026) — arXiv:2603.18507
- Turner, A. M., et al., "Activation Addition: Steering Language Models Without Optimization" (2023)
- Laing, R. D., "Self and Others" (1961) — ラスコリーニコフの母の手紙のコミュニケーション分析(pp. 165-173)
- Dostoevsky, F., "Crime and Punishment" (1866)