Poem: SELFについて SELF に問う
〜計算機科学に見える社会哲学・人生哲学〜
突然ですが、コンピューティングの世界観に、社会哲学や人生哲学の縮図を感じることはありませんか?
筆者は、計算機科学に登場するさまざまな SELF の概念に、しばしば「自己」「自律」「内省」といった人間社会のテーマと通じる 何か を感じます。
たとえば——
- Self-Attention(自己注意機構)
- Self Recursion(自己再帰)
- Y Combinator(名前のない自己再帰)
- Reflection(自己反映計算)
本記事では、これらの「計算機のSELF」を、社会・人生哲学と重ね合わせて考えてみます。
Self-Attention(自己注意機構)
大規模言語モデルや Transformer を支える中核技術として有名な自己注意機構です。
$$
Attention(Q,K,V)= \mathrm{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
$$
- Q(Query): 私は「何を求めているのか?」
- K(Key): 他者は「何を持っているのか?」
- V(Value): 他者から「何を受け取るのか?」
例として、
「私は猫が好きだ」
という長文(原稿用紙200枚分でも)をモデルが読んだとき、
各単語はすべての他単語との関係性を計算します。
- 「私」→「好き」に強く注意する
- 「猫」→「好き」に注意する
- 「私」→「猫」にも一定の注意を払う
Self-Attention は、自分の内側の文脈と外側の文脈の両方に注意を向ける仕組みとも解釈できます。
Multi-Head Self Attention
Multi-Head では、文法・意味・感性など多角的な視点が同時に働きます。
これはまるで、
- 仕事モードの自分
- 家族の中の自分
- 趣味に没頭する自分
- ひとりの時間の自分
といった 複数の自己を使い分けながら、自分を理解する プロセスに似ています。
$$
head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)
$$
自己再帰(Self Recursion)
階乗計算を例にとります。 $$ 5! = 5 \times 4 \times 3 \times 2 \times 1 $$
def factorial(n):
if n == 0:
return 1
return n * factorial(n-1) # 未来の自分を信じて力を借りる
再帰は、
「未来の自分はきっと解けるはずだ」
と信じて現在の自分が一歩を進める構造です。
- (1) 未来の SELF を信じる
- (2) 未来の SELF の力を借りつつ、今できることを実行する
これは、人生における 分割統治(Divide & Conquer) そのもの。
日常生活の再帰
- 今日できることをやる
- 残りは明日の自分に託す
- 明日の自分を信じて、今日の一歩を踏み出す
✓ 論文を書く → 今日は1ページ
✓ キャリア形成 → 今日はスキルを1つ磨く
✓ 夢を叶える → 今日は1歩だけ
名前のない自己再帰(Y Combinator)
神話・民俗学では「名前を知る=その存在を支配する」という考え方があり、真名は重要なテーマでした。
プログラミングでも、
- 無名関数
- スコープ
- カプセル化
- 情報隠蔽
など、「名前を隠す」概念が頻出します。
Yコンビネータは、名前を持たない関数を再帰可能にする数学的構造です。
$$ Y = \lambda f.(\lambda x.f(xx))(\lambda x.f(xx)) $$
Python 版 Y コンビネータ
def Y(f):
return (lambda x: f(lambda *args: x(x)(*args)))(
lambda x: f(lambda *args: x(x)(*args)))
$ W = ww = (\lambda_x F(xx)) w = F(ww) = FW $
$ W = (\lambda_x F(xx)) (\lambda_x F(xx)) = \lambda_g (\lambda_x g(xx)) (\lambda_x g(xx)) F = YF $
$ W = FW = YF = F(YF) $
$ Y = \lambda_g (\lambda_x g(xx)) (\lambda_x g(xx)) $
ハノイの塔を無名再帰で解く
未来の SELF が働く3ステップ:
- (1) 未来の SELF が n-1 枚を退避
- (2) 現在の SELF が 1 枚動かす
- (3) 再び未来の SELF が戻す
Y = lambda f: (lambda g: g(g))(lambda h: f(lambda *args: h(h)(*args)))
hanoi = Y(
lambda rec:
(lambda f: lambda n, a, b, c:
(0 if n == 0 else
(rec(n-1, a, c, b),
print(f"Move disk {n} from {a} to {c}"),
rec(n-1, b, a, c))[2]
)
)(None)
)
hanoi(3, "A", "B", "C")
Y コンビネータが示唆すること
- 名前(ラベル)がなくても本質は変わらない
- 自我に執着しないとき、逆説的に「本質の自己」が見えてくる
| 概念 | 計算機の世界 | 哲学の世界 |
|---|---|---|
| 純粋関数 | 副作用なし | 煩悩が消えた状態 |
| 不動点 | (f(x)=x) | 悟り・無我 |
| Y Combinator | 無名再帰 | ラベルを超えた本質 |
Reflection(自己反映計算)とメタ認知
-
Reflection(リフレクション)
実行中のプログラムが自身を観察し、必要なら修正する能力。 -
メタ認知
「自分の思考プロセスについて考える」能力。
プログラムが自身のコードを読み、改善し、最適化する——
これはまさに人間の「内省」に対応します。
内省は成長のエンジン
- 今日の判断は正しかったか?
- その感情はどこから来たか?
- 次に同じ状況ならどうするか?
アジャイル開発の KPT(Keep / Problem / Try)やレトロスペクティブと同様、
自分たちの行動を観察→改善する
という循環が成長を生みます。
自律・自己効力感・自己肯定感
(Autonomy / Self-Efficacy / Self-Esteem)
計算機の SELF から眺めると、自律的に生きるとは
「他者から完全に独立する」ことではなく、
**「自分を律し、望む方向へと行動を導ける力」**です。
Self-regulation = Self-reflection + Self-trust
(自己統制 = 内省 + 自己信頼)
| 概念 | 意味 |
|---|---|
| Autonomy | 自分で決め、自分で行動する力 |
| Self-Efficacy | 「自分ならできる」という確信 |
| Self-Esteem | 自分の存在に価値を感じる感覚 |
Autonomy → Self-Efficacy → Self-Esteem
という順で積み上がるイメージです。
おわりに
- Self-Attention:関係性の中で自己を理解する
- 再帰関数:未来の自分に協力してもらう
- Reflection:内省し、行動を改善する
- Y Combinator:名前(ラベル)を超えた本質を見る
技術の世界では、急速な変化に必死で追従していたはずが、
ある日ふと、何百倍も早く・賢く仕事をこなせるようになる瞬間があります。
SELF に関する概念を円環として理解することで、
技術者としての成長の原動力を、より深くつかむきっかけになれば幸いです。