「表象は感染する」のか⑥自己触媒するミームの生態系:遺伝子と文化が織りなす非線形ループ(while)の熱力学
〈スーザン・ブラックモアのミーム論を超え、より単純な社会的学習から始まる文化の「垂直・水平伝播」の動態を、情報理工学のネットワーク・トポロジーとして再構築します。
遺伝子と文化が相互に選択圧をかけ合う「自己触媒的(Autocatalytic)プロセス」みてゆきたいと思います。〉
スーザン・ブラックモアらは模倣のみがミームの伝達を支えると言明しますが、ケヴィン・レイランドとジョン・オドリン=スミーは高度な心理過程を要する模倣や教育がなくとも、より単純な心理的機構や社会的学習全般によって伝統が安定して維持され得るとしてこれを否定します。
動物の原文化から人間の文化への転換については、一過性の生存情報を非血縁間でやり取りする初期の「水平伝播」の段階から、社会的価値を持つ情報を世代を超えて累積的に伝える「垂直伝播」の段階へと発展し、さらに現代のニッチ構築の累積的影響のもとで「水平および間接的伝播」へと再転するという二段階モデルが提示されます。
人間社会において一旦この世代間伝播が始まれば、それは自己触媒的なプロセスとなり、子孫はより高次で複雑な文化特性のパッケージを学習していくようになります。
こうして構築されたミームの環境は、ミーム自体の伝播力である「感染力」、受け手側の「宿主の感受性」、あるいは伝播が生じる文脈である「社会環境」という三要素のバランスによって規定されます。
このような文化進化の数理的記述を試みた先行研究として、集団遺伝学のモデルを応用して垂直・斜め・水平の伝達経路を分類したカヴァッリ=スフォルツァとフェルドマンの理論や、人類学と進化生物学を背景に累積的適応進化のメカニズムを追究したボイドとリチャーソンの二重継承理論が存在します。
これらの知見は、牧畜という文化的慣行が乳糖耐性遺伝子の頻度を高め、それがさらに牧畜文化を強化したという乳糖耐性の例に代表される「遺伝子ー文化共進化理論」へと結実します。これらはまさに、人間のニッチ構築が遺伝子とミームの双方の選択的環境を同時に形作っていくという、相互強化的で自己触媒的な進化のダイナミズムを描き出しているのです。
# 文化進化の自己触媒ダイナミズム
def run_cultural_evolution(generations):
# 宿主の初期感受性と、社会環境(ミームの感染力へのブースト値)
host_susceptibility = 0.1
social_environment = 1.0
# 世代を超えた累積的文化特性のパッケージ(伝統の安定維持)
culture_package = ["basic_social_learning"]
for gen in range(1, generations + 1):
print(f"--- 世代 {gen} ---")
# 1. 伝播の二段階モデル(水平伝播から垂直伝播、そして累積的再転へ)
if gen <= 2:
transmission_type = "初期:水平伝播(一過性の生存情報)"
host_susceptibility += 0.05
else:
transmission_type = "発展:垂直・間接伝播(累積的適応)"
# ニッチ構築による感受性の自己触媒的上昇
host_susceptibility *= 1.5
social_environment *= 1.2
# 2. 宿主の感受性と社会環境のバランスが閾値を超えると、高次文化がアンロック
transmission_power = host_susceptibility * social_environment
if transmission_power > 0.5 and "lactase_persistence_meme" not in culture_package:
# 乳糖耐性遺伝子と牧畜文化の共進化(遺伝子ー文化共進化)
culture_package.append("pastoralism_culture")
culture_package.append("lactase_persistence_meme")
print("【共進化の臨界点】 牧畜文化と乳糖耐性遺伝子が相互強化を開始しました。")
print(f"伝播モード: {transmission_type}")
print(f"現在の文化パッケージ: {culture_package}")
print(f"ミーム伝播力(システム結合度): {transmission_power:.2f}\n")
# 5世代にわたる自己触媒ループの実行
run_cultural_evolution(generations=5)
このプログラムは、ただ計算をしているのではなく、テキストにある「人間社会が一度世代間伝播を始めると、自らを進化させるエンジン(自己触媒)になる」という物語を表現しています。
culture_package(リスト型)
人類が蓄積していく「伝統や文化のバッグ」です。最初は単純な社会的学習(basic_social_learning)しか入っていませんが、世代が進むごとに中身が勝手に進化していきます。
for gen in range(1, generations + 1):(反復処理)
時間の経過(世代の交代)を表します。カヴァッリ=スフォルツァたちが分類した「垂直・水平」の経路が、時間とともに切り替わる様子をシミュレートしています。
if gen <= 2:(条件分岐)
初期(1〜2世代目)は生存のための浅い情報交換(水平伝播)ですが、3世代目以降(else)になると、ニッチ構築(自分たちの環境改変)が始まり、「過去の文化が次の世代の学習効率をさらに加速させる」という掛け算(*= 1.5)の確変状態に入ります。
多変数システムのモデル化
情報理工学において往々にして重要なのは、「複数の変数が互いに影響を与え合う現象をどう数式にするか」です。
今回の「感染力」「感受性」「社会環境」の三要素のバランスを、コード内では transmission_power = host_susceptibility * social_environment というシンプルな積(掛け算)で表現しました。
物理でも、2つの物質の相互作用(万有引力やクーロン力など)は「引き合う要素の積」で表されます。複雑な人文学の現象を、こうした「数理の基本形」に抽象化して捉えことは思考の補助線となりますね。
数理的ギミックへ
文法とパラダイムシフトの対応:リストの動的拡張(.append) と 非線形フィードバック
今回のコードにおける最大の特徴は、条件分岐の中で culture_package.append() が実行され、要素が増えることでシステムの変数(感受性など)が爆発的に書き換わっていく点にあります。
これは、古典的な物理学(ニュートン力学的な、原因と結果が1対1で予測可能な世界観)から、「複雑系科学・ニッチ構築理論」へのパラダイムシフトに対応しています。
従来の進化論(ブラックモアの初期ミーム論含む)は、「環境という固定された枠の中に生物(ミーム)が適応する」という一方向の矢印でした。しかし、ボイドとリチャーソンの二重継承理論や、テキスト後半の「乳糖耐性」の例が示すのは、「文化(ミーム)が環境を変え、その変わった環境が遺伝子の頻度(コードの変数)をさらに変える」という、書き換え可能な動的ループ(自己触媒システム)です。
Pythonのリストが動的に形を変え、システム全体の挙動をガラリと変えていく様は、人間が自ら文化的ニッチを構築し、進化のルールそのものを書き換えていった認識論の転換を工学的に表現しているようでもありますね。
Python歴の浅い私の今回の学び
# 文化進化の自己触媒ダイナミズム
# から始まる行は「コメント」です。コンピューターは無視しますが、人間がコードに込めた思想やタイトルのメモを残すための大切な空間です。
def run_cultural_evolution(generations):
def は、オリジナルの関数(一連の手続きをまとめた箱)を作る宣言です。ここでは run_cultural_evolution(文化進化を実行せよ)という名前の関数を定義しています。後ろの (generations) は、外部から「何世代分シミュレーションするか」という数字を受け取るための窓口(引数)であり、
複雑で混沌とした歴史のプロセスを、「ひとつの数理システム」としてパッケージ化し、いつでも再現可能な状態へと脳内に認知をセットする枠組みです。
# 宿主の初期感受性と、社会環境(ミームの感染力へのブースト値)
host_susceptibility = 0.1
social_environment = 1.0
変数の代入です。host_susceptibility(宿主の感受性)という箱に 0.1 を、social_environment(社会環境)という箱に 1.0 を入れています。
文化を規定する三要素のうちの2つです。最初はまだ、人間がミームを受け入れる力(感受性)も低く、社会的な後押し(環境)も平坦な、「動物の原文化」に近い静かなスタートを表現しています。
# 世代を超えた累積的文化特性のパッケージ(伝統の安定維持)
culture_package = ["basic_social_learning"]
[ ] を使った「リスト型」のデータ構造です。ここでは culture_package というリストの中に、文字列として "basic_social_learning"(基本的な社会的学習)という要素を1つだけ格納しています。
スーザン・ブラックモアの言う「高度な模倣や教育」がなくても、人類が最初に持っていた「単純な心理的機構による伝統の安定維持」という最初のバッグを表現しています。ここから、人類の文化特性が増えていきます。
for gen in range(1, generations + 1):
for による反復(ループ)処理です。range(1, generations + 1) は、「1 から指定された世代数まで」カウントアップする連続した数字を作ります。変数 gen に現在の世代(1代目、2代目…)が代入されながら、インデント(字下げ)された中身が何度も実行されます。
世代が途切れず重なり合い、祖先の経験が次の世代へ引き継がれていく、歴史の「垂直な時間の流れ」そのものを駆動するエンジンです。
print(f"--- 世代 {gen} ---")
画面に文字を出力する print() 関数です。文字列の前に f をつけることで、{gen} の部分に現在の世代数を動的にはめ込んで表示できます。
# 1. 伝播の二段階モデル(水平伝播から垂直伝播、そして累積的再転へ)
if gen <= 2:
if による「条件分岐」です。「もし現在の世代(gen)が2以下なら(1世代目と2世代目なら)」という意味になります。
テキストにある二段階モデルの「第一の矢」です。人類がまだ一過性の生存情報をやり取りしていた初期の時代へと、システムを分岐させています。
transmission_type = "初期:水平伝播(一過性の生存情報)"
host_susceptibility += 0.05
初期段階の伝播モードの名前を変数に代入し、host_susceptibility += 0.05 で、感受性を少しだけ(0.05)足し算して増やしています。
else:
if の条件(2以下)に当てはまらなかった場合、つまり「3世代目以降」はすべてこの else の中身が実行されます。
ここがドラマの臨界点です。ただ情報が流れるだけの時代が終わり、「世代を超えて累積的に伝える垂直伝播」へと世界がシフトします。
transmission_type = "発展:垂直・間接伝播(累積的適応)"
# ニッチ構築による感受性の自己触媒的上昇
host_susceptibility *= 1.5
social_environment *= 1.2
3世代目以降は、感受性を「足し算(+=)」ではなく「掛け算(*= 1.5)」で爆発的に増やし、社会環境のブースト値も「掛け算(*= 1.2)」で強化しています。過去の世代が作った文化(ニッチ)が環境を変え、その環境が次の世代の学習をさらに加速させるという、テキストにある「自己触媒的なプロセス」を掛け算の魔法で表現しています。
# 2. 宿主の感受性と社会環境のバランスが閾値を超えると、高次文化がアンロック
transmission_power = host_susceptibility * social_environment
「感受性」と「社会環境」を掛け合わせた値を、全体の伝播力(transmission_power)として計算しています。
if transmission_power > 0.5 and "lactase_persistence_meme" not in culture_package:
2つ目の条件分岐です。「もし伝播力が 0.5 を超え」、かつ(and)、「リスト culture_package の中にまだ "lactase_persistence_meme"(乳糖耐性ミーム)が存在しないなら(not in)」という意味です。
文化のパワーが一定の閾値(0.5)を超えた瞬間、単なる生存情報ではない「高次の特性」がアンロックされる歴史的特異点(シンギュラリティ)を判定しています。
# 乳糖耐性遺伝子と牧畜文化の共進化(遺伝子ー文化共進化)
culture_package.append("pastoralism_culture")
culture_package.append("lactase_persistence_meme")
print("【共進化の臨界点】 牧畜文化と乳糖耐性遺伝子が相互強化を開始しました。")
リスト操作の .append() です。人類の伝統バッグ(culture_package)の末尾に、新しく "pastoralism_culture"(牧畜文化)と "lactase_persistence_meme"(乳糖耐性遺伝子/ミーム)の2つを動的に追加しています。
(遺伝子ー文化共進化理論の結実): 牧畜という文化が身体(遺伝子)を作り変え、身体の変化がさらに文化を強固にする。まさに、遺伝子とミームの選択的環境が同時に形作られる相互強化的ダイナミズムが、この2行の追加によって完成します。
print(f"伝播モード: {transmission_type}")
print(f"現在の文化パッケージ: {culture_package}")
print(f"ミーム伝播力(システム結合度): {transmission_power:.2f}\n")
各世代の処理の終わりに、現在の状態を画面に出力します。:.2f は小数をすっきり見せるために「小数点以下2桁まで表示する」という書式設定です。\n は改行を入れて見やすくしています。
# 5世代にわたる自己触媒ループの実行
run_cultural_evolution(generations=5)
1行目で定義した関数を、実際に generations=5(5世代分)という具体的な数字を窓口に渡して「実行」する命令です。この行がトリガーとなり、上のすべてのドラマが動き出します。
今回のコードでは、3世代目以降に「掛け算(*=)」が入ることで、人類の文化バッグ(リスト)の中身が、まるで生き物のように自律的に進化してゆくところが他にも応用できるのではないかと考えております。
ここまで、読んでくださり、ありがとうございます。
今日も、頑張りすぎず、頑張りたいですね。
では、また、次回。
※見出し画像は、ターナーの「ダンスタンバラ城」からです😌
