Archives pour la catégorie Intelligence artificielle

Quelle est la popularité des réseaux de neurones dans le temps ?

Le graphique suivant présente le nombre de résultats dans Google Scholar :

L’apprentissage profond (Deep learning) devient de plus en plus populaire, alors que “neural networks” est sur la pente descendante:

Dans de nombreux livre ou blogs, vous lirez que les réseaux de neurones ont connu un age d’or dans les années 60 et une période de déclin (AI winter) dans les années 70. Le graphique suivant dément cette analyse, puisque le nombre d’articles scientifiques publiés n’a cessé de croître pendant ces décennies:


TensorFlow Word2vec nsync_cv_h: no such file or directory

Ajouter le chemin vers les entêtes au compilateur, ajouter la ligne suivante à g++ :

-I  YOUR_TENSOR_FLOW_DIR/lib/python3.5/site-packages/external/nsync/public/

-I indique au compilateur où il doit chercher les inclusions.

La nouvelle ligne de compilation devrait ressembler à ça:

g++ -std=c++11 -shared word2vec_ops.cc word2vec_kernels.cc -o word2vec_ops.so -fPIC -I $TF_INC -I /home/philippe/tensorflow/lib/python3.5/site-packages/external/nsync/public/ -O2 -D_GLIBCXX_USE_CXX11_ABI=0

Guide d’installation rapide pour TensorFlow sous Ubuntu 16.04 (virtualenv)

Installation

Etant donné que Python 3 est installé nativement sous Ubuntu 16.04, l’installation de TensorFlow peut-être faite rapidement avec les instructions suivantes:

$ sudo apt-get install python3-pip python3-dev python-virtualenv
$ virtualenv --system-site-packages -p python3 ~/tensorflow
$ source ~/tensorflow/bin/activate
(tensorflow)$ pip3 install --upgrade tensorflow

Il est à noter que l’installation se fait dans un environnement virtuel, ce qui permet de l’isoler des autres développement Python.

Tester l’installation

Télécharger ou créer le fichier tf_test.py contenant le script suivant :

# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

Dans l’environnement virtuel TensorFlow, exécuter la commande suivante:

(tensorflow)$ python3 tf_test.py 

Ce script devrait afficher:

'Hello, TensorFlow!'

Environnement virtuel

Activatation

Pour activer l’environnement virtuel :

$ source ~/tensorflow/bin/activate

Désactivation

Pour désactiver l’environnement virtuel TensorFlow :

(tensorflow)$ deactivate

Téléchargement

Apprentissage d’un perceptron

Consultez la version mise à jour de cette page sur neural-networks.io.

Perceptron

Considérons le simple perceptron ci-dessous:

Fonction de transfert

La fonction de transfert est donnée par:

 y= f(w_1.x_1 + w_2.x_2 + ... + w_N.x_N) = f(\sum\limits_{i=1}^N w_i.x_i)

Définissons la somme S(w_i,x_i):

 S(w_i,x_i)= \sum\limits_{i=1}^N w_i.x_i)

Nous pouvons réécrire y :

 y= f(\sum\limits_{i=1}^N w_i.x_i)=f(S(w_i,x_i))

Erreur de sortie

Dans les réseaux de neurones artificiels, l’erreur que l’on souhaite minimiser est :

 E=(y

Avec :

  • E l’erreur
  • y la sortie souhaitée (de la base d’exemples d’entrainement)
  • y la sortie réelle (du réseau)

En pratique et pour simplifier la suite des équations, l’erreur est divisée par 2:

 E=\frac{1}{2}(y

Descente de gradient

L’algorithme de descente de gradient utilisé pour entraîner le réseau (i.e. mettre à jour les poids) est donné par :

 w_i

avec :

  • w_i la valeur des poids avant mise à jour
  • w_i la valeur des poids après mise à jour
  • \eta le taux d’apprentissage (learning rate)

Dérivée de l’erreur

Dérivons l’erreur :

 \frac{dE}{dw_i} = \frac{1}{2}\frac{d}{dw_i}(y

Grâce à la formule de dérivation des fonctions composées [ (f∘g)′=(f′∘g).g′) ] l’équation précédente peut être réécrite :

 \frac{dE}{dw_i} = \frac{2}{2}(y

Calculons la dérivée d’y :

 \frac{dy}{dw_i} = \frac{df(S(w_i,x_i))}{dw_i}

Grâce à la formule de dérivation des fonctions composées [ (f∘g)′=(f′∘g).g′) ] l’équation précédente peut à nouveau être réécrite :

 \frac{df(S)}{dw_i} = \frac{df(S)}{dS}\frac{dS}{dw_i} = x_i\frac{df(S)}{dS}

La dérivée de l’erreur devient :

 \frac{dE}{dw_i} = -x_i(y

Mise à jour des poids

Les poids peuvent être mis à jour avec la formule suivante :

 w_i

En conclusion :

 w_i

Apprentissage d’un perceptron simpliste.

Consultez la version mise à jour de cette page sur neural-networks.io.

Simple perceptron

Considérons le simple perceptron ci-dessous avec une fonction de transfert donnée par f(x)=x pour simplifier les calculs:

Fonction de transfert

La fonction de transfert est donnée par:

 y= w_1.x_1 + w_2.x_2 + ... + w_N.x_N = \sum\limits_{i=1}^N w_i.x_i

Erreur de sortie

Dans les réseaux de neurones artificiels, l’erreur que l’on souhaite minimiser est donnée par:

 E=(y

avec:

  • E l’erreur de sortie
  • y la sortie souhaitée (de la base d’exemples d’entrainement)
  • y la sortie réelle (du réseau)

En pratique et pour simplifier la suite des équations, l’erreur est divisée par 2:

 E=\frac{1}{2}(y

Descente de gradient

L’algorithme de descente de gradient utilisé pour entraîner le réseau (i.e. mettre à jour les poids) est donné par:

 w_i

avec:

  • w_i la valeur des poids avant mise à jour
  • w_i la valeur des poids après mise à jour
  • \eta le taux d’apprentissage (learning rate)

Dérivée de l’erreur

Dérivons l’erreur:

 \frac{dE}{dw_i} = \frac{1}{2}\frac{d}{dw_i}(y

Grâce à la formule de dérivation des fonctions composées [  (f \circ g) ] l’équation précédente peut être réécrite:

 \frac{dE}{dw_i} = \frac{2}{2}(y

Comme  y= w_1.x_1 + w_2.x_2 + ... + w_N.x_N :

 \frac{dE}{dw_i} = -(y

Mise à jour des poids

Les poids peuvent être mis à jour avec la formule suivante:

 w_i

En conclusion :

 w_i