[PYTHON] Relationales Netzwerk

In Anlehnung an den vorherigen Artikel (https://qiita.com/SoseSose/items/8cbb8016847603f320e6) wird das relationale Netzwerk so weit wie möglich erläutert.

Über das relationale Netzwerk

Verlinken Sie zunächst auf das Originalpapier (https://arxiv.org/pdf/1706.01427). Schauen wir uns die experimentellen Ergebnisse an. コメント 2020-07-18 155717.png Dies ist die korrekte Antwortrate des Datensatzes, der die Antwort aus der Beziehung des Objekts namens CLEVR ableitet. Die Genauigkeitsrate gängiger neuronaler Netze (CNN + LSTM, die derzeit selten verwendet zu werden scheint) ist niedrig und niedriger als die von Menschen. Andererseits hat (CNN + LSTM + RN) mit Relational Network die Leistung des Menschen übertroffen. Wie Sie diesem Ergebnis entnehmen können, kann ein einfaches neuronales Netzwerk (NN) nur wenig Beziehungen erkennen. Dieses relationale Netzwerk wurde dort vorgeschlagen. Wie später beschrieben wird, hat es eine spezielle Struktur, die sich von einem einfachen neuronalen Netzwerk unterscheidet, um die Beziehung in der Ausgabe widerzuspiegeln. Ich denke also darüber nach, diese Technologie in ARC einzusetzen.

Details zum relationalen Netzwerk

Das relationale Netzwerk hat die folgende Struktur, wenn es als Ausdruck ausgedrückt wird.

RN(O)=f_\phi (\sum_{i,j}g_\theta(o_i,o_j))

Wobei $ O = \ {o_1, o_2, \ dots o_n \}, o_i \ in \ mathbb {R} ^ m $ und $ o_i $ ein Objekt darstellen. Und $ f_ \ phi $ und $ g_ \ theta $ repräsentieren Funktionen mit Parametern (implementiert in MLP in Relational Network). Die Figur ist wie folgt. Kommentar 2020-07-18 152120.png

Die Struktur besteht darin, dass CNN und LSTM das Objekt erkennen und in RN eingeben, um eine Antwort zu geben. Diese RN-Formel ist mir ehrlich gesagt nicht sicher, aber $ g_ \ theta $ gibt die Beziehung für jedes Objekt aus, fügt sie hinzu und integriert sie in $ f_ \ phi $, um sie auszugeben. Scheint zu bekommen. Der Unterschied zum gemeinsamen NN (alle Objekte sind in einer Reihe angeordnet und werden in MLP eingegeben) besteht jedoch darin, dass nur der Vektor, der zwei Objekte darstellt, und der Fragenvektor in MLP nebeneinander eingegeben werden. Dies wird als eingeschränktere Struktur als das übliche NN angesehen, und ich denke, diese Einschränkung erleichtert es dem Netzwerk, die Beziehungen zwischen Objekten zu lernen.

Art des CLEVR-Datensatzes

Es scheint, dass es andere Datensätze gibt, die tatsächlich in dem Artikel verwendet wurden, aber ich habe einen Folgetest des Sort OF CLE VR-Experiments versucht. Ein Beispiel für Sort Of CLEVR ist unten dargestellt. コメント 2020-07-29 210411.png Dieser Datensatz besteht aus einem Bild und einem Fragetext (der Text ist in der Abbildung geschrieben, der Fragentext ist jedoch tatsächlich codiert). Das Bild enthält mehrere Objekte, und der Fragentext besteht aus Fragen zu diesen Objekten. Es gibt zwei Arten von Fragen: Eine ist eine nicht relationale Frage, bei der die Beziehung zwischen Objekten nicht berücksichtigt werden muss, und die andere ist eine relationale Frage, bei der die Beziehung zwischen Objekten berücksichtigt werden muss. Und wie Sie oben rechts in der Abbildung sehen können, gibt CNN + RN auch eine korrekte Antwortrate an, die CNN + MLP übersteigt, insbesondere bei relationalen Fragen.

Ich habe auch einen Folgetest durchgeführt, aber ehrlich gesagt habe ich nur auf dieses Repository verwiesen (https://github.com/kimhc6028/relational-networks), sodass ich keinen bestimmten Code einfügen werde. Es wird nur das Ergebnis des zusätzlichen Tests angezeigt. Erstens ist die Genauigkeitsrate der Trainingsdaten. train.png Als nächstes folgt die korrekte Antwortrate der Testdaten. test.png Was den Unterschied zwischen Training und Test angeht, scheint es um 20 Epochen zu viel zu lernen, aber ich finde es gut, dass test_acc_rel nahe bei 90% liegt. Und das schlimmste test_acc_ternary. Dies ist eine Frage zu drei Objekten, die jedoch vollständig überlernt ist und eine geringere Genauigkeitsrate aufweist als test_acc_rel. Derzeit sind 60% aus, aber es scheint, dass die drei Beziehungen selbst mit RN schwierig sind. Ich denke, dass Beziehungen von drei oder mehr in erster Linie schwierig sind, da es Beispiele wie das Drei-Körper-Problem gibt. Das Problem der drei Beziehungen von Sort of Clevr ist jedoch nicht so schwierig (ich denke, wenn ich es löse, bekomme ich eine Zahl nahe 100%), daher gibt es Raum für Verbesserungen.

Zusammenfassung und Zukunft

Wie Sie den Ergebnissen des Papiers entnehmen können, können RNs Beziehungen besser verarbeiten als einfache NNs. Es scheint jedoch, dass sie mit drei Beziehungen zu kämpfen haben, und es kann Probleme mit ARC geben, die drei oder mehr Beziehungen erfordern. Also werde ich das nächste Mal Reccurent Relatinal Network (RRN) ausprobieren. Um ehrlich zu sein, ist dieser Artikel durchaus angemessen, aber ich dachte, dass ARC nicht nur mit RN gelöst werden kann, deshalb wollte ich so schnell wie möglich an dieser RRN arbeiten. Wenn Sie RRN verwenden, können Sie Sudden lösen, und ich denke, dass Sudden und ARC im Format ähnlich sind. Mal sehen, was passiert.

Recommended Posts

Relationales Netzwerk
Netzwerk
Netzwerkprogrammierung (grundlegend)
CentOS 7-Netzwerkinitialisierung
Parametrisches neuronales Netzwerk