Now moving to PIRL a little bit, and that’s trying to understand what the main difference of pretext tasks is and how contrastive learning is very different from the pretext tasks. Again, pretext tasks always reason about a single image at once. So the idea is that given an image your and prior transform to that image, in this case a Jigsaw transform, and then inputting this transformed image into a ConvNet and trying to predict the property of the transform that you applied to, the permutation that you applied or the rotation that you applied or the kind of colour that you removed and so on. So the pretext tasks always reason about a single image. And the second thing is that the task that you’re performing in this case really has to capture some property of the transform. So it really needs to capture the exact permutation that are applied or the kind of rotation that are applied, which means that the last layer representations are actually going to go PIRL very a lot as the transform the changes and that is by design, because you’re really trying to solve that pretext tasks. But unfortunately, what this means is that the last layer representations capture a very low-level property of the signal. They capture things like rotation or so on. Whereas what is designed or what is expected of these representations is that they are invariant to these things that it should be able to recognize a cat, no matter whether the cat is upright or that the cat is say, bent towards like by 90 degrees. Whereas when you’re solving that particular pretext task you’re imposing the exact opposite thing. We’re saying that we should be able to recognize whether this picture is upright or whether this picture is basically turning it sideways. There are many exceptions in which you really want these low-level representations to be covariant and a lot of it really has to do with the tasks that you’re performing and quite a few tasks in 3D really want to be predictive. So you want to predict what camera transforms you have: you’re looking at two views of the same object or so on. But unless you have that kind of a specific application for a lot of semantic tasks, you really want to be invariant to the transforms that are used to use that input.
Passons maintenant à PIRL et essayons de comprendre quelle est la principale différence entre les tâches de prétexte et comment l’apprentissage contrastif est très différent des tâches de prétexte. L’idée des tâches de prétexte est de donner à une image une transformation préalable (une transformation Jigsaw pour PIRL), puis de passer cette image transformée dans un ConvNet pour essayer de prédire la propriété de la transformation qui a été appliquée (permutation, rotation, changement de couleur, etc.). Ainsi, les tâches de prétexte raisonnent toujours à propos d’une seule image à la fois. Le deuxième point est que la tâche que nous effectuons doit capturer une certaine propriété de la transformation. Mais malheureusement, cela signifie que les représentations de la dernière couche capturent une propriété de très bas niveau du signal comme la rotation par exemple. Alors que ce qui est conçu ou ce que l’on attend de ces représentations, est qu’elles soient invariantes. Par exemple être capable de reconnaître un chat, peu importe si le chat est debout ou que le chat est tourné à 90 degrés. Alors que lorsque nous résolvons cette tâche de prétexte, nous imposons la chose exactement inverse. Nous disons que nous devrions être capables de reconnaître si l’image a été tourné sur un côté. Il y a de nombreuses exceptions où l’on veut vraiment que ces représentations de bas niveau soient covariantes mais ces exceptions sont liées aux tâches (en aval) que nous effectuons.