It is a matter of scale equivariance. If kink is hard, you multiply the input by two and the output is multiplied by two. If you have a smooth transition, for example, if you multiply the input by 100, the output looks like you have a hard kink because the smooth part is shrunk by a factor of 100. If you divide the input by 100, the kink becomes a very smooth convex function. Thus, by changing the scale of the input, you change the behaviour of the activation unit. Sometimes this could be a problem. For example, when you train a multi-layer neural net and you have two layers that are one after the other. You do not have a good control for how big the weights of one layer is relative to the other layer’s weights. If you have nonlinearity that cares about scales, your network doesn’t have a choice of what size of weight matrix can be used in the first layer because this will completely change the behaviour. One way to fix this problem is setting a hard scale on the weights of every layer so you can normalise the weights of layers, such as batch normalisation. Thus, the variance that goes into a unit becomes always constant. If you fix the scale, then the system doesn’t have any way of choosing which part of the nonlinearity will be using in two kink function systems. This could be a problem if this ‘fixed’ part becomes too ‘linear’. For example, Sigmoid becomes almost linear near zero, and thus batch normalisation outputs (close to 0) could not be activated ‘non-linearly’. It is not entirely clear why deep networks work better with single kink functions. It’s probably due to the scale equivariance property.
C’est une question d’équivariance d’échelle. Si le coude est difficile, vous multipliez l’entrée par deux et la sortie est multipliée par deux. Si vous avez une transition en douceur, par exemple si vous multipliez l’entrée par 100, la sortie semble avoir un coude dur parce que la partie lisse est réduite d’un facteur 100. Si vous divisez l’entrée par 100, le coude devient une fonction convexe très lisse. Ainsi, en changeant l’échelle de l’entrée, vous modifiez le comportement de l’unité d’activation. Parfois, cela peut poser un problème. Par exemple, lorsque vous entraînez un réseau neuronal multicouche et que vous avez deux couches qui se suivent l’une l’autre. Vous n’avez pas un bon contrôle sur la taille des poids d’une couche par rapport aux poids de l’autre couche. Si vous avez une non-linéarité qui se soucie des échelles, votre réseau n’a pas le choix de la taille de la matrice de poids qui peut être utilisée dans la première couche car cela changera complètement le comportement. Une façon de résoudre ce problème est de fixer une échelle dure sur les poids de chaque couche afin de pouvoir normaliser les poids des couches, comme la batch normalisation. Ainsi, la variance qui va dans une unité devient toujours constante. Si vous fixez l’échelle, alors le système n’a aucun moyen de choisir quelle partie de la non-linéarité sera utilisée dans deux systèmes de fonction de coude. Cela peut poser un problème si cette partie fixe devient trop linéaire. Par exemple, Sigmoïde devient presque linéaire près de 0 et donc les sorties de la batch normalisation (proches de 0) ne pourraient pas être activées non linéairement. Il n’est pas tout à fait clair pourquoi les réseaux profonds fonctionnent mieux avec des fonctions de coude unique. C’est probablement dû à la propriété d’équivariance d’échelle.