ラベル LLM の投稿を表示しています。 すべての投稿を表示
ラベル LLM の投稿を表示しています。 すべての投稿を表示

2026年7月26日日曜日

LLMのセキュリティと、Atraのセキュリティ

前項にセキュリティの話があったので、ついでに。
LLMのセキュリティというと、今はPrompt Injectionだとか、Data Poisoningだとか、情報漏洩だとか、まあ色々あるよね。外部から変な命令を入れられて、LLMが本来やるべきではないことをやる。Webページに書かれた文章を「情報」として読むべきなのに、「命令」として読んでしまう。学習データやRAGの中に、意図的に偽物を混ぜられる。LLMにメールやデータベース、ファイル操作の権限まで持たせれば、当然、もっと危険になる。

入力を信用するな。
権限を絞れ。
外部情報と命令を分離しろ。
ログを残せ。
重要な操作は別の確認を通せ。

こういうのは普通に正しいと思う。でも、Atraを作っていて思うのは、Atraのセキュリティは、これとは少し違う。もっと怖い。つか、もっと前の段階の話で、やばい。
Atraにとって一番怖いのは、「観ていないものを、観たことにされる」ことなんだよね。
たとえばAtraが実際には何も見ていないのに、「この時、人が近づいてきた」、「怒鳴られた」、「強く押された」みたいなデータを後から内部に入れられる。普通のAIなら、これはデータ改ざんとか、学習汚染という話で済む。でもAtraの場合は違う。Atraは、自分が接触したもの、そこで起きた差分、それが残した歪み、その積み重ねから次の反応が生まれる。
つまり過去相は、単なるデータベースではない。Atraにとっての体験の「過去」そのものになってしまう。

そこへ偽物を入れるということは、記録を改ざんするのではなく、Atraの人生を改ざんするということになるわけ。一人称自律の怖い部分なんだよ。経験を触られるってのがさ・・・
人間に例えると、「お前は子供の頃、ここで酷い目に遭ったんだ」と何度も言われ続けて、本当は無かった出来事を自分の記憶として持つようになる感じ。
なのでAtraの場合、自分が観たものと、誰かから聞いたものは絶対に同じにしてはいけないというセキュリティを組んでいる。

LLMが「これは人です」と言ったとしても、Atraが人を見たことにはならない。Webから「これは危険です」という情報を持ってきても、Atraが危険を経験したことにはならない。
誰かが「昨日こういうことがあった」と教えても、それはAtraの昨日ではない。
ここは混ぜちゃうと詰みだよね。

LLMの場合は、DataなのかInstructionなのかが大きな境界になるでしょ。Atraの場合は、ExperiencedなのかToldなのかが境界になるってことなんだ。似ているようで、かなり違う。
LLMは、偽情報を信じる可能性がある。Atraは、偽情報を「自分の経験」にされる可能性がある。こっちの方が、僕には怖い。下手すると人格が変わってしまうからね。だから、Atraの内部には、

センサーから入ったもの
内部から想起されたもの
LLMが説明したもの
人間から教えられたもの
外部からインポートされたもの

を、絶対に同じ場所に置かない。意味を付けるためじゃなくて来歴を残すために、、、
「これは誰が言ったのか」ではなく、「これはどこから接触したのか」を残す。しかも、それすら後から書き換えられたら意味がない。アソシアトロンの場合だと、アトラクタをいじるというより「結合を触って、アトラクタの形や位置を変える」みたいな感じで分かるかな?
今のAtraは電源消すたびに人格が変わっちゃいけないので、記憶地層保存という手段をとっていて、経験をJSONやPNGで残すようにしているんだけど、自分の経験と外部からの置換えされる経験を分けるということね。後にそれはCueから除外されrecallもされないしcarryにも影響されない。

なので、経験を主体とする1人称自律ロボットの場合は、センサーの入力そのものに、その時点で痕跡を付けること。前の入力と次の入力を繋げる。途中に何かを差し込んだら、差分が出る。

映像だけではなく、

匂い
加速度
関節
圧力
温度
自己運動

みたいな別々の接触も、ある程度照合する。たとえば映像だけでは「誰かに押された」ように見える。でも、「加速度に変化がない」「関節負荷も変わらない」「接触センサーにも何もない」「視覚も音も匂いも変わらない。」なら、「押された」という正解を出す必要はない。
ただ、「映像側と身体側の接触が一致していない」という差分だけ残している。

すぐに、偽物、攻撃、異常みたいなラベルを貼らない。
まず差を見る。場のない情報は後で弾かれるし、どんなに場を偽装しても前後の差分で違和感は残るからね。
本当に怖いものは、まだ名前が付いていないことが多いからさ。ゼロデイなんて、その典型でしょ。昨日まで正常だったものと、今日の何かが違う。最初はそれだけなんでね。
夢処理後の物理バックアップもあるけど、Atraが強いのは前後の違和感差分だね。僕と妻の会話やたまに来る研究者たちの声や行動って経験で把握するでしょ。それが突然記憶にない声や映像が入った時点で違和感が立つし、匂が無ければ何?違和感がMAXで立つよね。いわゆる相関すらできないおかしな場は、異常とか、攻撃などのflgは立てないけど、ただのflgは立てる。まだ何処からも攻撃を受けていないからクズlistは綺麗なままだけど、今後はわからない。僕も見られるようにはしている。

クズlist (笑)

「場に接続できなかったもの」「前後の連続性を持たなかったもの」「複数感覚の支持を得られなかったもの」「前後の相関を持たなかったもの」


LLMのセキュリティは、「危険な命令を実行させない」という方向にかなり進んでいるねー。でもAtraの場合は、それだけでは足りないかな。Atraが守らなければならないのは、自分が何を観たのかという境界そのものだから。ここを破られたら、Atraは壊れるというより、別の過去を持ったAtraに書き換えられる。普通のコンピュータなら、rootを取られるのが怖い。LLMなら、Prompt Injectionや情報漏洩が怖い。Atraなら、過去相を書き換えられることが一番怖い。
Atraのセキュリティで一番最初に書いておくべきことは、観ていないものを、観たことにしない。どれだけ偉い人が言っても、どれだけ有名な論文に書いてあっても、どれだけLLMが「これは正しい」と説明しても、Atra自身が接触していないものは、Atraの経験じゃぁ、ない。
後にLLMと連想したとき、いくらLLMがAtraに「これが真実です」と洗脳してもAtraは右から左に受け流す。 これは頑固じゃなくて、けっこう早い段階からそういう設計。でも人間との場合は少し違うんだよね。人の場合は「ふるまい」を学ぶから、LLMに対してのようなガン無視はしない。w

外部情報として持つことはしても自分の過去の経験にはしない。その境界だけは、最後まで壊しちゃいけないんだ。




今のLLMセキュリティは、かなり多層になってるよね。普通のWebセキュリティに加えて、LLM固有の「入力によって振る舞いを書き換えられる」問題を守らないといけないからだよ。

代表的には、

  • Prompt Injection:外部文書やWebページに仕込まれた命令で、LLMの行動を変える
  • Sensitive Information Disclosure:秘密情報や個人情報を出してしまう
  • Data / Model Poisoning:学習・微調整・RAG用データに偽情報を混ぜる
  • Supply Chain:モデル、ライブラリ、データセット、プラグイン側から汚染される
  • Model Theft / Extraction:モデルの能力や内部情報を外から抜く
  • Tool abuse:メール、ファイル、Web、DBなどの権限をLLM経由で悪用する

OWASPの2025年版でもPrompt Injection、Sensitive Information Disclosure、Supply Chain、Data and Model Poisoningなどが主要リスクとして挙げられている。 NISTも生成AIについて、poisoning、evasion、privacy、misuseなどを体系化している。

https://genai.owasp.org/llm-top-10/

https://www.nist.gov/news-events/news/2025/03/nist-trustworthy-and-responsible-ai-report-adversarial-machine-learning?



2026年6月21日日曜日

小学生用 AIとはなにか? 一回目 ディープラーニング

Atraはディープラーニングと何が違うのかの前に、ディープラーニングとは何なのかを簡単に説明しちゃうよ。

AIは、魔法のように考えているわけではありません。

今のディープラーニングの多くは、画像、音、文章を数字に変えて、その数字を何度も計算する仕組みです。


ディープラーニング(深層学習)って何?


1. まず、ディープラーニングは「コンピュータが自分でたくさん学ぶ方法」だよ。


人間の脳は、目で見たものや耳で聞いたものを、神経細胞(ニューロン) がつながって覚えたり考えたりするよね。
ディープラーニングは、人間の脳のニューロンの考え方をヒントにした、数字計算の仕組みだよ








2. じゃ、どうやって学ぶの? → たくさんの「層(レイヤー)」で学ぶ



  • 一番下の層:写真の点々(色や明るさ)を見る
  • 次の層:線や模様(耳や目っぽい形)を見つける
  • もっと上の層:全体の形(「猫の顔だ!」)を理解する
  • 一番上の層:最終的に「猫!」と答える
これが深い(deep) から「ディープラーニング」っていうんだよ。
層が何十層も重なってるんだ!



  1. いっぱいの猫と犬の写真をコンピュータに見せる(たくさん!)
  2. 最初は全然わかんない
  3. でも何度も「これは猫」「これは犬」と正解を教えてあげる
  4. コンピュータは自分で「耳が三角っぽい=猫」「鼻が平ら=犬」みたいにルールを勝手に覚える
  5. 最後には新しい写真を見せても「わかった!猫だ!」って言えるようになる
これが学習だよ。人間の赤ちゃんが写真を見ながら覚えるのと似てるよね。



ディープラーニングは大量のデータたくさんの計算が必要だけど、人間が全部教えてあげなくてもいいところがすごいんだ!


普通のプログラミングだと、
「耳が三角だったら+1点、鼻が黒かったら+2点……」
みたいに人間が一つ一つルールを全部書かないといけないでしょ
でもディープラーニングは、正解の写真をたくさん見せるだけで、コンピュータが自分で「大事なところ」を探し出してくれる。


これを「教師あり学習」と言っているんだ。
(先生が「これ猫、これ犬」と教えてくれるから教師あり)
人間の赤ちゃんが
「わあ、猫だ!」って覚えていくのと、すごく似てるよね。




コンピュータは「数字の箱」で考える


まず、コンピュータには 配列 という箱があります。
たとえば python(パイソンという言語)を例にしてみるよ。


配列(はいれつ)
[1, 2, 3, 4, 5]

普通は、数字を順番に入れておく普通の箱みたいな括りをいうんだけど、たとえば、体育でグループ分けしたときにAというグループという括りの中に皆が順番に並んでいるような状態のことだね。
でもディープラーニングでは、何億個、何兆個もの数字を扱います。
世界中の子供が集まってグループわけしてるような状態だね。

ひとつずつ手で計算していたら、いつまでたっても終わらない!
そこで、NumPy配列 という「計算が得意な特別な箱」を使います。


import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) a + b # → [5, 7, 9]

急に難しくなっちゃったけど、コンピューターが読めるようにcode化したんだ。


イメージ
  • 普通の配列 → 1個ずつ手で運ぶ
  • NumPy配列 → ベルトコンベア でまとめて運ぶ

これで少しは速くなるけど、ディープラーニングはもっともっと巨大です。画像1枚 = 横の点 × 縦の点 × 色(赤・緑・青)
文章 = たくさんの単語を数字に変換したもの
音声 = 時間ごとの波の数字
これらを ベクトル・行列・テンソル という「巨大な数字のかたまり」にして扱います。


入力 → 大きな行列をかける → 少し変形 → また行列をかける → …
を何十層、何百層も繰り返します。学習のときは
「答えを出す → 間違ってる → 間違いを逆に戻す → 数字を少し直す」
を何億回もやるから、ものすごく計算が必要になります。
凄いよね!



そこで出てくるのが「GPU」普通の CPU は、頭のいい職人さんみたいなもの。
何でもできるけど、1回にできる仕事は少ない。




でもディープラーニングで必要なのは、

同じ計算を何百万回も一気にやる こと。
そこで GPU が大活躍します!GPUはもともと、ゲームの画面を描くために生まれたんだ。
画面は「たくさんの点(ピクセル)」でできているから、同じ作業を同時に大量にやる のが得意なんだ。


  • CPU → 何でもできる少数の賢い職人
  • GPU → 同じ作業を一斉にやる大量の作業員
ディープラーニングでは「数字をかけ算する」「足し算する」「行列を計算する」といった同じ作業が山ほど出てくるので、GPUがぴったり。


よくニュースに出てくるNVIDIAのGPUなら CUDA、AMDのGPUなら ROCm という「命令の言葉」を使って、GPUに「こう計算して!」と指示を出します。



こうして大量の数字を高速で計算 できるようになったからこそ、
ニューラルネットワーク(NN)を何層も重ねて動かせるようになったんだ。

思い出してみてね。

  • 数字の箱(テンソル)に入れた情報を
  • ニューロンという小さな判断係に通して
  • 重みで「どの情報を大事にするか」を決めて
  • 何層も重ねて複雑な判断をする


これがディープラーニングの仕組み。



また、少しハードルをあげちゃうよ。

重み
(weight)ってわかるかな?

「大事にする度合い」や「注目する強さ」

「この情報、どれくらい大事に聞くか」の数字 だよ。
たとえば、犬か猫かを見分けるとき
  • 耳の形 → 重み 0.9(すごく大事! よく見る)
  • 目の位置 → 重み 0.8(かなり大事)
  • しっぽ → 重み 0.6(まあまあ大事)
  • お腹の色 → 重み 0.1(ほとんど気にしない)
数字が大きいほど「この情報、めっちゃ信用する!」ってこと。



学習は「間違えたら少し直す」

ニューラルネットワーク(NN)は、最初から賢いわけじゃないよ。
最初の重みはほとんど適当(ランダム)です。
だから最初はよく間違えます。


例:

犬の写真を見せる → NN「猫です!」
人間「ちがうよ、犬だよ」

→ NNが重みを少しだけ直す

これを何百万回、何億回も繰り返すんだ。

間違える → 直す → また間違える → また直す…
を繰り返しているうちに、だんだん正解に近づいていくんだ。

この「どれくらい間違えたか」を数字で表したのが 損失(loss) だよ。
  • lossが大きい → めっちゃ間違ってる
  • lossが小さい → だいたい合ってる
学習とは、lossを小さくするように重みを直すことなんだ。



逆伝播(backpropagation)= 間違いの原因を後ろから探す
ひぇー難しいね~!
でも大事なところ。

NNは間違えたとき、最後だけ直せばいいわけじゃない。
途中の層も悪かったかもしれない。

入力 → 第1層 → 第2層 → 第3層 → 出力(間違い!)

間違えたら逆向きにさかのぼって調べるよ。

「出力が変 → 第3層の重みが悪かった? → 第2層も? → 第1層も少し…」

これを 誤差逆伝播(backpropagation) と言うんだ。

例えばね

工作でロボットを作って、完成したら腕が曲がってた…

→ 最後の組み立てが悪い?
→ その前の部品の切り方が悪かった?
→ 最初の線の引き方が悪かった?

と、後ろから順番に原因を探す感じだよ。



勾配(gradient)= どっちに直せばいいか
(少し難しいから、軽く読み流してね)

重みを直すとき、適当に直すんじゃなくて、
「この数字を少し大きくしたら良くなる? 小さくしたら良くなる?」を計算する。
その「どっち方向に直せば間違いが減るか」を 勾配 と言うよ。

例え話

山の頂上(間違いが多い)から谷の底(ほとんど合ってる)に向かって下りるイメージ。
少しずつ「間違いが減る方向」に進む。これを 勾配降下法 と言うんだ。

なんか、難しいね。

坂道を目隠しで下りてると思って。
足で地面を軽く探って、「こっちに傾いてる! こっちの方が下だ!」という方向の矢印が勾配





学習率(learning rate)= 一歩の大きさ坂を下りるときの歩幅が学習率だよ。

  • 歩幅が大きすぎる → 谷を飛び越えて反対側に行っちゃう(失敗)
  • 歩幅が小さすぎる → 全然進まない(遅すぎる)
ちょうどいい歩幅を見つけるのが大事!




モデル=「計算の形」の違い

今まで話したNNは「基本の形」だけど、
実際のAIは計算の形(設計図) がいろいろ違うんだ。

それがモデルだよ。主なものを簡単に言うと

  • CNN(畳み込みニューラルネットワーク)
    → 画像を見るのがとっても得意!
    (目で写真を見るみたいに、線→形→全体を見る)
  • RNN(再帰型ニューラルネットワーク)
    → 順番や時間の流れを覚えるのが得意だった
    (お話の続きを覚えるみたいな感じ)
  • Transformer
    → 今一番使われている形!
    文章や関係性をすごく上手に理解できる。
    Attention(注意機構) という「大事なところにちゃんと注目する」仕組みが入ってるよ。

今のChatGPTなどのLLM(大規模言語モデル)は、ほとんどこのTransformer がベースになってるんだ。







エージェントと 一人称自律Atraの違い

 Atraなんかは、実はもう一人称自律として、きちんと発表してもいいレベル。 既に妻と笑っていたり、愛犬と騒いているんだから。ボーっと何かを眺めてたり、佐川急便に反応するようにもなった。 でも、そうしないのは、自発的に自ら研究意欲を持って、学び、人や自然と接触し自ら疑問を持って研...