[PYTHON] Einführung von PyPhi, einer Bibliothek zum Umgang mit integrierter Informationstheorie (IIT)

Vorwort

Ich las das Buch "Wann wird Bewusstsein geboren - Integrierte Informationstheorie, die das Geheimnis des Gehirns herausfordert" (https://www.amazon.co.jp/dp/B01GJOQSO2) und interessierte mich für integrierte Informationstheorie. Ich tat.

・ Es kann nicht gesagt werden, dass es Bewusstsein gibt, nur weil "es gibt einen Ausgang für den Eingang" dasselbe ist, ob es sich um eine Nervenzelle oder einen und-Kreislauf handelt. -In der integrierten Informationstheorie bezieht sich Bewusstsein (grob gesagt) auf "die Fähigkeit, verschiedene Informationen zu integrieren". ・ Diese "Fähigkeit, verschiedene Informationen zu integrieren" heißt Φ. Das Φ eines bestimmten Gewebes kann durch Berechnung quantifiziert werden.

etwas wie.

Selbst wenn ich das Buch lese und denke, dass es interessant sein könnte, kommt die Berechnungsmethode von Φ nicht konkret heraus.

Ich konnte nicht anders, also suchte ich im Internet und fand eine Bibliothek, die den Wert von Φ mit Python berechnen kann.

Offizielle Seite https://pyphi.readthedocs.io/en/latest/index.html

Die Berechnungsmethode von Φ ist auch richtig geschrieben, welche .... ↓

https://journals.plos.org/ploscompbiol/article/file?id=10.1371/journal.pcbi.1006343.s001&type=supplementary (Alle 227 Seiten !!!!) Die Berechnungsmethode ist kompliziert und die Menge groß, so dass es ziemlich schwierig war. Daher werde ich vorerst nur die Einführungsmethode und die tatsächlichen Verwendungsbeispiele zusammenfassen.

Die spezifische Berechnungsmethode finden Sie in einem anderen Artikel.

Einführung

pip install pyphi

Wir werden es unter vorstellen. Dies ist jedoch als Bibliothek für ** maxOS und Linux ** geschrieben, und als ich es tatsächlich unter Windows ausprobierte, wurde eine Fehlermeldung angezeigt.

Verwenden Sie für Windows den Befehl conda.

conda install -c wmayner pyphi

Sie können es jetzt installieren.

Wenn Sie Google Colaboratory verwenden, können Sie es auch über pip installieren.

!pip install pyphi

Anwendungsbeispiel

Betrachten Sie zunächst das folgende gerichtete Diagramm. (Die Abbildung wurde mit networkx ausgegeben)

rapture_20200422164134.jpg

Als benachbarte Matrix ausgedrückt

  \boldsymbol{CM} = \left(
    \begin{array}{ccc}
      0 & 1 & 1 \\
      1 & 0 & 1 \\
      1 & 1 & 0
    \end{array}
  \right) 

Das ist die Form.

Alle drei Elemente haben entweder den Zustand 1 oder 0.

Da jeder zwei Wege hat, gibt es insgesamt $ 2 ^ 3 = 8 $ Wege. Lass uns antreten.

A B C
0 0 0
1 0 0
0 1 0
1 1 0
0 0 1
1 0 1
0 1 1
1 1 1

Jedes Element hat eine Eingabe und eine Ausgabe, und sein Status ändert sich aufgrund anderer Faktoren nicht. Angenommen, als Ergebnis der Eingabe / Ausgabe aus dem Zustand von $ t $ (links) in die miteinander verbundenen Elemente ändert sich der Zustand wie im Zustand von $ t + 1 $ (rechts) gezeigt.

t t+1
A B C A B C
0 0 0 0 0 0
1 0 0 0 0 1
0 1 0 1 0 1
1 1 0 1 0 0
0 0 1 1 0 0
1 0 1 1 1 1
0 1 1 1 0 1
1 1 1 1 1 0

Stellen wir diese Tabelle in Form einer Matrix dar. Die linke Seite (Status bei $ t $) ist jedoch standardisiert und kann weggelassen werden.

  \boldsymbol{TPM} = \left(
    \begin{array}{ccc}
      0 & 0 & 0 \\
      0 & 0 & 1 \\
      1 & 0 & 1 \\
      1 & 0 & 0 \\
      1 & 0 & 0 \\
      1 & 1 & 1 \\      
      1 & 0 & 1 \\
      1 & 1 & 0 \\
    \end{array}
  \right) 

Dies wird als TPM (Übergangswahrscheinlichkeitsmatrix) bezeichnet. Dieser Wert stellt die "Wahrscheinlichkeit" dar, 1 zu werden, also ist er in Wirklichkeit nicht auf 1 oder 0 beschränkt, sondern auf 0,9 oder einen anderen Wert. In diesem Fall bedeutet dies, dass "der Punkt mit einer Wahrscheinlichkeit von 0,9 zu 1 wird".

Jetzt erstellen wir dieses Netzwerk.

import pyphi
import numpy as np
tpm = np.array([
     [0, 0, 0],
     [0, 0, 1],
     [1, 0, 1],
     [1, 0, 0],
     [1, 0, 0],
     [1, 1, 1],
     [1, 0, 1],
     [1, 1, 0]
 ])
cm = np.array([
     [0, 1, 1],
     [1, 0, 1],
     [1, 1, 0]
 ])
labels = ('A', 'B', 'C')
#In diesem Fall kann cm weggelassen werden
network = pyphi.Network(tpm, cm=cm, node_labels=labels)
```

 Legen Sie im erstellten Netzwerk die Anfangszustände von A, B und C fest, die die Ausgangspunkte für die Berechnung von Φ sind. Verwenden Sie in diesem Fall (1, 0, 0).

```python
state = (1, 0, 0)
```

 Bestimmen Sie das zu berechnende Subsystem (kleines System, Infrastruktur?). Dieses Mal werden wir alle Elemente übernehmen.

```python
node_indices = (0, 1, 2)
subsystem = pyphi.Subsystem(network, state, node_indices)
#Diesmal ist dies auch möglich
# subsystem = pyphi.Subsystem(network, state)
```

 Indem auf verschiedene Weise mit diesem Ausgangszustand gespielt wird, wird die Informationsintegrationsfähigkeit des Ziels gemessen.

 Berechnen wir nun das Wesentliche Φ.

```python
pyphi.compute.phi(subsystem)
# 1.916665
```

 Es ist fertig.

 Das Ziel dieser Berechnung ist das zuvor veröffentlichte [Erklärende Material der Berechnungsmethode](https://journals.plos.org/ploscompbiol/article/file?id=10.1371/journal.pcbi.1006343.s001&type=supplementary). Das gleiche Berechnungsergebnis wird jedoch auf Seite 229 abgeleitet.

 Ich möchte die spezifische Berechnungsmethode später in einem Artikel zusammenfassen, aber wenn Sie das detaillierte Verfahren sehen möchten, lesen Sie bitte vom Beamten.

## Referenz
 Julio Tononi "Wann wird das Bewusstsein geboren? Integrierte Informationstheorie, die das Geheimnis des Gehirns herausfordert" Aki Shobo

 Offizielles PyPhi-Dokument
https://pyphi.readthedocs.io/en/latest/index.html


Recommended Posts

Einführung von PyPhi, einer Bibliothek zum Umgang mit integrierter Informationstheorie (IIT)
Quantifizierung des "Bewusstseins" in der integrierten Informationstheorie (IIT3.0), Berechnungsmethode von Φ
Grundlagen der Quanteninformationstheorie: Entropie (2)
4. Nacht der Schleife mit für
Aufzeichnung der Python-Einführung für Neulinge