[PYTHON] Introduction de la bibliothèque PyPhi pour gérer la théorie de l'information intégrée (IIT)

Préface

J'ai lu le livre "Quand est née la conscience - Théorie de l'information intégrée qui défie le mystère du cerveau-" (https://www.amazon.co.jp/dp/B01GJOQSO2) et je me suis intéressé à la théorie de l'information intégrée. J'ai fait.

・ On ne peut pas dire qu'il y a conscience simplement parce que "il y a une sortie pour l'entrée" est le même que pour une cellule nerveuse ou un circuit et. -Dans la théorie de l'information intégrée, la conscience (grosso modo) fait référence à «la capacité d'intégrer des informations diverses». ・ Cette "capacité à intégrer diverses informations" s'appelle Φ. Le Φ d'un certain tissu peut être quantifié par calcul.

quelque chose comme.

Même si je lis le livre en pensant qu'il pourrait être intéressant, la méthode de calcul de Φ ne sort pas concrètement.

Je ne pouvais pas m'en empêcher, alors j'ai cherché sur le net et j'ai trouvé une bibliothèque capable de calculer la valeur de p avec python.

Page Officielle https://pyphi.readthedocs.io/en/latest/index.html

La méthode de calcul de Φ s'écrit également correctement, laquelle .... ↓

https://journals.plos.org/ploscompbiol/article/file?id=10.1371/journal.pcbi.1006343.s001&type=supplementary (Toutes les 227 pages !!!!) La méthode de calcul est compliquée et le montant est important, donc c'était assez difficile, donc pour le moment, je ne résumerai que la méthode d'introduction et les exemples d'utilisation réels.

La méthode de calcul spécifique est dans un autre article.

introduction

pip install pyphi

Nous allons le présenter à. Cependant, ceci est écrit comme une bibliothèque faite pour ** maxOS et Linux **, et quand je l'ai essayé sur mes fenêtres, j'ai eu une erreur.

Pour Windows, utilisez la commande conda.

conda install -c wmayner pyphi

Vous pouvez maintenant l'installer.

De plus, si vous utilisez google Colaboratory, vous pouvez l'installer à partir de pip.

!pip install pyphi

Exemple d'utilisation

Tout d'abord, considérons le graphe orienté suivant. (La figure a été sortie en utilisant networkx)

rapture_20200422164134.jpg

Exprimé sous forme de matrice adjacente

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

Voilà la forme.

Ces trois éléments ont un état 1 ou 0.

Puisque chacun a deux manières, il y a un total de $ 2 ^ 3 = 8 $ manières. Faisons la queue.

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

Chaque élément a une entrée et une sortie, et son état ne change pas en raison d'autres facteurs. Supposons qu'à la suite de l'entrée / sortie de l'état de $ t $ (à gauche) vers les éléments connectés les uns aux autres, l'état change comme indiqué dans l'état de $ t + 1 $ (à droite).

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

Représentons ce tableau sous la forme d'une matrice. Cependant, le côté gauche (état à $ t $) est standardisé et peut être omis.

  \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) 

C'est ce qu'on appelle TPM (matrice de probabilité de transition). Puisque cette valeur représente la "probabilité" de devenir 1, elle n'est pas limitée à 1 ou 0, mais 0,9 ou une autre valeur est en fait entrée. Dans ce cas, cela signifie que "le point devient 1 avec une probabilité de 0,9".

Créons maintenant ce réseau.

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')
#Dans ce cas, cm peut être omis
network = pyphi.Network(tpm, cm=cm, node_labels=labels)
```

 Dans le réseau créé, définissez les états initiaux de A, B et C, qui sont les points de départ du calcul de Φ. Dans ce cas, utilisez (1, 0, 0).

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

 Déterminer le sous-système (petit système, infrastructure?) À calculer. Cette fois, nous prendrons tous les éléments.

```python
node_indices = (0, 1, 2)
subsystem = pyphi.Subsystem(network, state, node_indices)
#Cette fois c'est aussi possible
# subsystem = pyphi.Subsystem(network, state)
```

 En jouant avec cet état initial de différentes manières, la capacité d'intégration d'informations de la cible est mesurée.

 Calculons maintenant l'essentiel Φ.

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

 C'est fait.

 La cible de ce calcul est celle des [Documents explicatifs de la méthode de calcul](https://journals.plos.org/ploscompbiol/article/file?id=10.1371/journal.pcbi.1006343.s001&type=supplementary) postés précédemment. Cependant, le même résultat de calcul est obtenu à la page 220.

 Je voudrais résumer la méthode de calcul spécifique dans un article plus tard, mais si vous souhaitez voir la procédure détaillée, veuillez lire le responsable.

## référence
 Julio Tononi "Quand naîtra la conscience? Théorie de l'information intégrée qui défie le mystère du cerveau" Aki Shobo

 Document officiel PyPhi
https://pyphi.readthedocs.io/en/latest/index.html


Recommended Posts

Introduction de la bibliothèque PyPhi pour gérer la théorie de l'information intégrée (IIT)
Quantification de la "conscience" en théorie de l'information intégrée (IIT3.0), méthode de calcul de Φ
Bases de la théorie de l'information quantique: Entropie (2)
4ème nuit de boucle avec pour
Enregistrement de l'introduction de Python pour les nouveaux arrivants