[PYTHON] Réseau relationnel

Dans la continuité de l'article précédent (https://qiita.com/SoseSose/items/8cbb8016847603f320e6), ceci est une explication du réseau relationnel autant que possible.

À propos du réseau relationnel

Tout d'abord, lien vers l'article original (https://arxiv.org/pdf/1706.01427) Regardons les résultats expérimentaux. コメント 2020-07-18 155717.png Il s'agit du taux de réponse correct de l'ensemble de données qui dérive la réponse de la relation de l'objet appelé CLEVR. Le taux de précision des réseaux de neurones courants (CNN + LSTM, qui semble rarement utilisé actuellement) est faible, ce qui est inférieur à celui des humains. D'autre part, (CNN + LSTM + RN) utilisant Relational Network a surpassé les humains. Comme vous pouvez le voir à partir de ce résultat, un simple réseau de neurones (NN) a une faible capacité à reconnaître les relations. Ce réseau relationnel y était proposé. Comme cela sera décrit plus loin, il a une structure spéciale qui est différente d'un simple réseau de neurones afin de refléter la relation dans la sortie. Donc, je pense utiliser cette technologie dans ARC.

Détails du réseau relationnel

Le réseau relationnel a la structure suivante lorsqu'il est exprimé sous forme d'expression.

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

Où $ O = \ {o_1, o_2, \ dots o_n \}, o_i \ in \ mathbb {R} ^ m $ et $ o_i $ représente un objet. Et $ f_ \ phi $ et $ g_ \ theta $ représentent des fonctions avec des paramètres (implémentées en MLP dans Relational Network). La figure est la suivante. Commentaire 2020-07-18 152120.png

La structure est que CNN et LSTM reconnaissent l'objet et le saisissent dans RN pour donner une réponse. Cette formule RN, pour être honnête, je ne suis pas sûr, mais $ g_ \ theta $ génère la relation pour chaque objet, les ajoute et les intègre avec $ f_ \ phi $ en sortie. Semble obtenir. Cependant, il diffère du NN habituel (tous les objets sont disposés en ligne et entrés dans MLP) en ce que seul le vecteur représentant deux objets et le vecteur de question sont saisis côte à côte dans MLP. Ceci est considéré comme une structure plus restreinte que le NN commun, et je pense que cette restriction permet au réseau d'apprendre plus facilement les relations entre les objets.

Sort de l'ensemble de données CLEVR

Il semble qu'il existe d'autres ensembles de données qui ont été réellement utilisés dans l'article, mais j'ai essayé un test de suivi de l'expérience Sort OF CLE VR. Un exemple de Sort Of CLEVR est présenté ci-dessous. コメント 2020-07-29 210411.png Cet ensemble de données se compose d'une image et d'un texte de question (le texte est écrit dans la figure, mais le texte de la question est en fait encodé). Il y a plusieurs objets dans l'image et le texte de la question se compose de questions sur ces objets. Il existe deux types de questions, l'une est une question non relationnelle qui ne nécessite pas de prise en compte de la relation entre objets, et l'autre est une question relationnelle qui nécessite la prise en compte de la relation entre objets. Et, comme vous pouvez le voir en haut à droite de la figure, CNN + RN donne également un taux de réponse correcte qui dépasse CNN + MLP, en particulier dans les questions relationnelles.

J'ai également fait un test de suivi, mais honnêtement, je n'ai fait référence qu'à ce référentiel (https://github.com/kimhc6028/relational-networks), donc je ne mettrai pas de code en particulier. Seul le résultat du test supplémentaire est affiché. Le premier est le taux de précision des données d'entraînement. train.png Vient ensuite le taux de réponse correct des données de test. test.png En ce qui concerne la différence entre la formation et le test, il semble que l'apprentissage soit excessif autour de 20 époques, mais je pense qu'il est bon que test_acc_rel soit proche de 90%. Et le pire test_acc_ternary. Il s'agit d'une question sur trois objets, mais elle est complètement surapprise et a un taux de précision inférieur à test_acc_rel. Pour le moment, 60% sont sortis, mais il semble que les trois relations sont difficiles même avec RN. Je pense que les relations de trois ou plus sont difficiles en premier lieu, car il y a des exemples comme le problème des trois corps. Cependant, le problème des trois relations de Sort of Clevr n'est pas si difficile (je pense que si je le résous, j'obtiendrai un nombre proche de 100%), il y a donc place à l'amélioration.

Résumé et avenir

Comme vous pouvez le voir d'après les résultats de l'article, les IA sont plus capables de traiter les relations que les simples NN. Cependant, il semble que nous ayons des difficultés avec trois relations, et il peut y avoir des problèmes avec l'ARC qui nécessitent trois relations ou plus. Donc, la prochaine fois, j'essaierai Reccurent Relatinal Network (RRN). Pour être honnête, cet article est tout à fait approprié, mais je pensais que l'ARC ne pouvait pas être résolu avec seulement RN, donc je voulais travailler sur ce RRN le plus tôt possible. Si vous utilisez RRN, vous pouvez résoudre Sudden, et je pense que Sudden et ARC sont de format similaire. Eh bien, voyons ce qui se passe.

Recommended Posts

Réseau relationnel
réseau
Programmation réseau (basique)
Initialisation du réseau CentOS 7
Réseau neuronal paramétrique