Xavier et He Normal (He-et-al) Initialisation

Pourquoi ne devriez-vous pas initialiser les poids avec des zéros ou de manière aléatoire (sans connaître la distribution) :

  • Si les poids dans un réseau commencent trop petits, le signal se rétrécit lorsqu'il traverse chaque couche jusqu'à ce qu'il soit trop petit pour être utile.
  • Si les pondérations dans un réseau commencent par être trop importantes, le signal augmente alors qu'il traverse chaque couche jusqu'à ce qu'il soit trop massif pour être utile.

Xavier/Glorot Initialisation

Xavier Initialisation initialise les poids de votre réseau en les tirant d'une distribution de moyenne nulle et de variance spécifique,

où fan_in est le nombre de neurones entrants.

Il tire des échantillons d'une distribution normale tronquée centrée sur 0 stddev = sqrt(1 / fan_in)où fan_inest le nombre d'unités d'entrée dans le tenseur de poids.

Généralement utilisé avec l'activation tanh.

Aussi généralement,

est utilisé où fan_out est le nombre de neurones auxquels le résultat est envoyé.

He Normal (He-et-al) Initialisation

Cette méthode d'initialisation est devenue célèbre grâce à un article soumis en 2015 par He-et-al, et est similaire à l'initialisation de Xavier, avec le facteur multiplié par deux. Dans cette méthode, les pondérations sont initialisées en gardant à l'esprit la taille de la couche précédente, ce qui permet d'atteindre un minimum global de la fonction de coût plus rapidement et plus efficacement. Les pondérations sont toujours aléatoires mais diffèrent en fonction de la taille de la couche précédente. de neurones. Cela fournit une initialisation contrôlée d'où la descente de gradient plus rapide et plus efficace.

si activation RELU :

Il tire des échantillons d'une distribution normale tronquée centrée sur 0 stddev = sqrt(2 / fan_in)où fan_inest le nombre d'unités d'entrée dans le tenseur de poids.

Preuve pourquoi :

Nous avons une entrée X avec n composants et un neurone linéaire avec des poids aléatoires W et une sortie Y .

peut être trouvé sur Wikipédia

Supposons maintenant que la moyenne = 0

puisque

et si nous faisons une hypothèse de iid, nous obtenons

On veut donc que Var(Y) =1

Dans Glorot & Bengio, si nous suivons les mêmes étapes pour le signal rétropropagé, nous obtenons

pour conserver la même variance du gradient d'entrée et du gradient de sortie. Ces deux contraintes ne peuvent être satisfaites simultanément que si fan_in=fan_out, donc un compromis, on prend la moyenne des deux :

Dans un article récent de He, Rang, Zhen et Sun, ils s'appuient sur Glorot & Bengio et suggèrent d'utiliser

Implémentations :

Initialisation numérique

w=np.random.randn(layer_size[l],layer_size[l-1])*np.sqrt(1/layer_size[l-1])
w=np.random.randn(layer_size[l],layer_size[l-1])*np.sqrt(2/(layer_size[l-1]+layer_size[l]))

tf.contrib.layers.xavier_initializer(
    uniform=True,
    seed=None,
    dtype=tf.float32
)

Vous pouvez utiliser ce qui suit pour utiliser tous les types :

tf.contrib.layers.variance_scaling_initializer(factor=2.0, mode='FAN_IN', uniform=False, seed=None, dtype=tf.float32)

  • Pour obtenir l' architecture convolutive pour l'intégration rapide de fonctionnalités , utilisez :
    factor=1.0 mode='FAN_IN' uniform=True
  • Pour comprendre la difficulté de former des réseaux de neurones à rétroaction profonde , utilisez :
    factor=1.0 mode='FAN_AVG' uniform=True.
  • Pour obtenir , xavier_initializerutilisez soit :
    factor=1.0 mode='FAN_AVG' uniform=True, soit
    factor=1.0 mode='FAN_AVG' uniform=False.
  • if mode='FAN_IN': # Count only number of input connections.
        n = fan_in
      elif mode='FAN_OUT': # Count only number of output connections.
        n = fan_out
      elif mode='FAN_AVG': # Average number of inputs and output connections.
        n = (fan_in + fan_out)/2.0
    
        truncated_normal(shape, 0.0, stddev=sqrt(factor / n))
    

  • tf.keras.initializers.glorot_normal(seed=None)
  • tf.keras.initializers.glorot_uniform(seed=None)
  • tf.keras.initializers.he_normal(seed=None)
  • tf.keras.initializers.he_uniform(seed=None)
  • tf.keras.initializers.lecun_normal(seed=None)
  • tf.keras.initializers.lecun_uniform(seed=None)

Références:

  1. http://andyljones.tumblr.com/post/110998971763/an-explanation-of-xavier-initialization

Suggested posts

Mise en œuvre de la mémoire associative

Mise en œuvre de la mémoire associative

Écrit par Shashata Sawmya et Harveer Singh Avec l'avènement des grands réseaux de neurones et les progrès technologiques toujours croissants qui poussent les méthodes actuelles à leur limite absolue, l'accent a été mis sur la création d'un outil fourre-tout qui vise à tout faire. Cependant, la plupart des tâches n'auraient pas besoin des réseaux profonds incroyablement intensifs, mais toujours de quelque chose de plus polyvalent que les modèles mathématiques de base.

Related posts

Le défi de lecture Goodreads est toxique

Le défi de lecture Goodreads est toxique

La démangeaison dans ma main s'est propagée alors que je négociais avec le libraire local pour un autre livre. Ce livre, comme les autres que j'ai achetés récemment, trouverait son trône sur ma pile «À lire» (TBR); et pourtant, je l'ai acheté.

Suivre n'importe qui avec juste un numéro de téléphone | Enquête OSINT

Suivre n'importe qui avec juste un numéro de téléphone | Enquête OSINT

Vous pouvez être un enquêteur OSINT, un joueur CTF ou simplement quelqu'un qui reçoit des appels de spam. Quelqu'un qui essaie de vérifier le numéro que vous avez vu dans une publicité.

Comment sauver la planète et gagner de l'argent

Comment sauver la planète et gagner de l'argent

Combien de fois avez-vous jeté une bouteille en plastique, un bocal en verre, une canette en aluminium ou un paquet d'énergie verte sans réfléchir à deux fois ? Combien de fois avez-vous souhaité pouvoir obtenir quelque chose en échange de leur recyclage ? Si vous êtes comme la plupart des gens, la réponse est probablement plusieurs fois. Le recyclage est souvent perçu comme un tracas, une corvée ou un devoir qui n'apporte aucun bénéfice immédiat ou tangible.

Learning at Work Week compte plus que vous ne le pensez

Learning at Work Week compte plus que vous ne le pensez

Nous avons souvent du mal à mettre en œuvre ce que nous savons être bon pour nous. Qu'il s'agisse de dire à un proche que nous l'aimons ou de se rappeler de parler comme un pirate, il y aura toujours ceux qui prétendent qu'un jour, une semaine ou un mois d'événements ne sont pas nécessaires parce qu'ils font déjà ces choses.