[PYTHON] Analyse von "XOR Network" aus dem offiziellen PyPhi-Dokument

Vorwort

Lesen Sie das Verwendungsbeispiel aus dem offiziellen Dokument von PyPhi, einer Bibliothek, die sich mit integrierter Informationstheorie (IIT) befasst, und verschieben Sie es tatsächlich, um Ihr Verständnis zu vertiefen.

Im vorherigen Artikel (https://qiita.com/NNNiNiNNN/items/7074d7773b44f33d9b13) haben wir die Einführung der Bibliothek und ein einfaches Berechnungsbeispiel behandelt.

Sehen wir uns diesmal ein Beispiel für die Verwendung von XOR Network aus dem offiziellen Dokument an.

Ich schreibe nur mit einer groben japanischen Übersetzung mit wirklich unzureichenden Kenntnissen, daher wäre ich sehr dankbar, wenn ein Experte darauf hinweisen würde.

Der Originalartikel ist hier

Ein Netzwerk erstellen

Stellen Sie sich ein vollständiges Diagramm vor, in dem A, B und C verbunden sind. A, B und C haben jeweils keine Bindung zu sich.

rapture_20200422164134.jpg

Angenommen, jedes Element fungiert als XOR-Schaltung und sein Zustand (1 oder 0) wird durch die Eingabe von zwei verbundenen Eckpunkten bestimmt.

Erstellen Sie dieses Netzwerk. Dieses Netzwerk scheint als Beispiel in der Bibliothek angegeben zu sein (einschließlich Verbindung, TPM und Markenname ABC).

import pyphi
network = pyphi.examples.xor_network()

Der Anfangszustand ist (0, 0, 0).

state = (0, 0, 0)

In diesem Artikel betrachten wir eine Struktur, die als Hauptkomplex bezeichnet wird.

major_complex = pyphi.compute.major_complex(network, state)

Ist es in Ordnung zu verstehen, dass dies eine Extraktion des Hauptteils des Netzwerks ist? In diesem Fall scheint dies mit der Erstellung eines Subsystems bestehend aus (A, B, C) vereinbar zu sein.

Der Typ, der dem Beispiel in der Dokumentation gefolgt ist.py


print(major_complex.phi) # 1.874999
print(major_complex.subsystem) # Subsystem(A, B, C)

'''
Das Folgende ist die zuletzt berechnete Methode. Die berechnete Phi-Übereinstimmung.
subsystem = pyphi.Subsystem(network, state)
print(pyphi.compute.phi(subsystem)) # 1.874999
'''

Wir werden mit der Berechnung um diesen Hauptkomplex fortfahren.

Das Konzept des "Konzepts"

Betrachten wir aus dem Hauptkomplex das Element Ursache-Wirkungs-Struktur (ces).

ces = major_complex.ces

Was ist darin los?

print(len(ces)) # 3

Es sieht aus wie ein Array der Länge 3. Werfen wir einen Blick auf die Beschriftung, die jedem Element zugeordnet ist.

print(ces.labeled_mechanisms)
# (['A', 'B'], ['A', 'C'], ['B', 'C'])

Es scheint, dass A und B, A und C sowie B und C die Elemente sind, die als "Konzept" dieses Netzwerks bezeichnet werden.

Was ist ces?

Ich werde ein wenig zurückblicken und erklären.

Erstens ist die Ursache-Wirkungs-Struktur eine Struktur, die sich zwischen Netzwerken gegenseitig beeinflusst, wenn sich der Status von $ t -1 $ zu $ t $ oder von $ t $ zu $ t + 1 $ ändert. Das ist.

Die Komponenten, aus denen das Netzwerk besteht, werden unterteilt und die Informationen werden so weit reduziert, dass sie nicht mehr reduziert werden können. Das Netzwerk der Komponenten wird als "Konzept" bezeichnet.

Im Fall dieses Netzwerks scheinen A-B, A-C und B-C jeweils "Konzept" zu sein.

Werfen wir einen Blick auf den Inhalt des Konzepts

Konzentrieren wir uns nun auf das erste Konzept.

concept = ces[0]
print(concept.mechanism) # (0, 1)

Werfen wir einen Blick auf das Konzept des Netzwerks, das aus den Knoten 0, 1 besteht (kann die Bezeichnung in diesem Zustand nicht angezeigt werden?).

Berechnen wir Φ nur mit diesem Netzwerk.

print(concept.phi) # 0.5

Es scheint, dass $ φ = 0,5 $ nur für dieses Netzwerk ist.

Ursache

Werfen wir einen Blick auf den Bereich (Bereich?) Der Ursache (Ursache, Faktor?) Dieses Netzwerks. Mit anderen Worten, welches Netzwerk bestimmt den aktuellen Status des Netzwerks?

print(concept.cause.purview)
# (0, 1, 2)

Es scheint, dass das Netzwerk von Knoten (0, 1, 2) (kurz gesagt) Einfluss hat.

Schauen wir uns nun das Ursachenrepertoire dieses Netzwerks an.

print(concept.cause.repertoire)
'''
[[[0.5 0. ]
  [0.  0. ]]

 [[0.  0. ]
  [0.  0.5]]]
'''

Ich habe diese Ausgabe erhalten. Diese Form ist etwas schwer zu verstehen, daher werde ich eine Tabelle mit den ausgelassenen Teilen schreiben, die unten sorgfältig geschrieben wurden.

t-Zustand bei 1 Zustand bei t(0, 0, 0)Wahrscheinlichkeit eines Beitrags zu
A B C
0 0 0 0.5
1 0 0 0
0 1 0 0
1 1 0 0
0 0 1 0
1 0 1 0
0 1 1 0
1 1 1 0.5

Das bedeutet es.

Wenn Sie darüber nachdenken, um (0,0,0) in einem Netzwerk zu werden, das vollständig aus xor besteht, ist der vorherige Schritt entweder (0, 0, 0) oder (1, 1, 1). Es kann nur geben. Diese Tabelle zeigt das.

bewirken

Werfen wir einen Blick auf den Bereich und das Repertoire der Auswirkungen dieses Netzwerks.

print(concept.effect.purview)
# (2,)
print(concept.effect.repertoire)
# [[[1. 0.]]]

Diesmal scheint es nur Knoten 2 zu betreffen. Es sieht so auf dem Tisch aus.

t+Zustand bei 1 Zustand bei t(0, 0, 0)Wahrscheinlichkeit eines Wechsels von
C
0 1
1 0

Von (0, 0, 0) kann Knoten 2 nur zu 0 wechseln.

Was sind Ursache und Wirkung?

Ursache ist die "Ursache" und wir betrachten die Auswirkung der Änderung von $ t-1 $ zu $ t $.

Der Effekt ist das "Ergebnis", das den Effekt der Änderung von $ t $ zu $ t + 1 $ untersucht.

Bei der Berechnung der IIT (Integrated Information Theory) werden diese beiden geteilt und berechnet. Verwenden Sie im Allgemeinen einen der beiden Werte "niedrige Punktzahl" als Endwert.

Schauen wir uns das gesamte Netzwerk an

Die folgende Tabelle fasst die Auswirkungen des gesamten Netzwerks und Konzepts zusammen.

\mathrm{Major~Complex: ABC}, \Phi = 1.875
Konstruktion φ cause purview(Ursachenbereich) effect purview(Wirkungsbereich)
AB 0.5 ABC C
AC 0.5 ABC B
BC 0.5 ABC A

Wenn man dies betrachtet, sind die Punkte, dass "das gesamte ABC, das eine Komponente ist, im Hauptkomplex enthalten ist", "die Kombination von AB, AC und BC ein Faktor ist", "A, Sie können sehen, dass B und C allein kein "Konzept" werden, das die Struktur des Netzwerks bestimmt, und dass das ABC-Dreifachnetzwerk kein "Konzept" wird.

A Der Wert eines einzelnen Netzwerks

Ist A alleine wirklich wertlos? Berechnen wir.

Lassen Sie uns ein eigenständiges und ein Subsystem als Ganzes erstellen.

subsystem = pyphi.examples.xor_subsystem()
A = (0,)
ABC = (0, 1, 2)

Gibt es einen Einfluss von A auf Ursache und Wirkung?

print(subsystem.cause_info(A, ABC))
# 0.5
print(subsystem.effect_info(A, ABC))
# 0

Sie können sehen, dass A allein keinen Wert in Bezug auf die Wirkung hat.

Dies bedeutet, dass es in einer xor-Schaltung, die aus A, B und C besteht, nicht möglich ist, den Wert von B oder den Wert von C zu bestimmen, wenn A als "1" bestimmt wird. Es ist als Information nicht wertvoll, es sei denn, es besteht aus zwei Sätzen.

ABC kombinierter Netzwerkwert

Als nächstes wollen wir sehen, ob die drei Knoten von "ABC" keine Konzepte sind. Lassen Sie uns die gleiche Berechnung durchführen.

subsystem.cause_info(ABC, ABC)
# 0.749999

Ich sehe, es gibt sicherlich Ursacheninformationen. Aber was ist, wenn dies "die kleinste Komponente" ist?

Berechnen wir die sogenannte Minimum Information Partition (MIP).

mip = subsystem.cause_mip(ABC, ABC)
print(mip.phi)
# 0.0

Die Tatsache, dass φ = 0 hier erscheint, bedeutet, dass es keine "Abweichung" in den Werten zwischen "bei der Berechnung durch Teilen von ABC" und "bei der Berechnung mit dem gesamten ABC" gibt (wahrscheinlich. Ich bin hier nicht zuversichtlich

Wie sind sie getrennt? Lass uns einen Blick darauf werfen.

print(mip.partition)
'''
 A     B,C 
─── ✕ ─────
 ∅    A,B,C
'''

So etwas wie AA kam heraus. Die Formel wird wie folgt umgeschrieben.

{A\over \varnothing }\times {BC \over ABC}

Diese Formel drückt aus, dass "wenn die Information von BC bekannt ist, die Information von A vollständig abgeschnitten werden kann".

Wenn beispielsweise die (0, 0) von B und C im vorherigen Zustand bekannt ist, ist A immer 0.

Gleiches gilt für die folgenden beiden.

{B\over \varnothing }\times {AC \over ABC}
{C\over \varnothing }\times {AB \over ABC}

Jetzt wissen wir, dass AB, AC und BC die "Konzepte" sind, aus denen dieses Netzwerk besteht.

Referenz

Dies ist das Ende dieses Artikels. Fast alle Inhalte sind bisher japanische Übersetzungen der folgenden Artikel.

Offizielles PyPhi Document-XOR-Netzwerk https://pyphi.readthedocs.io/en/latest/examples/xor.html

Außerdem habe ich es unter der Annahme geschrieben, dass ich [Vorheriger Artikel] gelesen habe (https://qiita.com/NNNiNiNNN/items/7074d7773b44f33d9b13).

Recommended Posts

Analyse von "XOR Network" aus dem offiziellen PyPhi-Dokument
Mathematisches Verständnis der Hauptkomponentenanalyse von Anfang an