Propagation avant

Forward propagation, feed forward NN.

Motivation

Reconnaissance de formes, etc.

Analyse

La propagation avant consiste à calculer :

Conception

Comme nous disposons potentiellement de `K` sorties, nous devons minimiser le coût de `(h_Θ(x))_i` (ième sortie) via une fonction de coût similaire à celle utilisée pour la régression logistique, mais pour `K` sorties (`y`). Idem pour la fonction de régularisation.

Exemples

"Et" logique

On définit des paramètres/poids générant la table de vérité du "et" logique :

`Θ^((1))=[−30, 20, 20]`

ce qui donne :

`h_Θ(x)=g(−30 + 20 x_1 + 20 x_2)`

et donc :

  • si `x_1 = 0` et `x_2 = 0` alors `g(-30 + 0 + 0) = g(-30) ~~ 0`
  • si `x_1 = 0` et `x_2 = 1` alors `g(-30 + 0 + 20) = g(-10) ~~ 0`
  • si `x_1 = 1` et `x_2 = 0` alors `g(-30 + 20 + 0) = g(-10) ~~ 0`
  • si `x_1 = 1` et `x_2 = 1` alors `g(-30 + 20 + 20) = g(10) ~~ 1`

(puisque `g` permet de produire des valeurs tendant vers 0 ou 1 suivant que x est négatif ou positif)

"Ou" logique

On définit des paramètres/poids générant la table de vérité du "ou" logique :

`Θ^((1))=[−10, 20, 20]`

ce qui donne :

`h_Θ(x)=g(−10 + 20 x_1 + 20 x_2)`

et donc :

  • si `x_1 = 0` et `x_2 = 0` alors `g(-10 + 0 + 0) = g(-10) ~~ 0`
  • si `x_1 = 0` et `x_2 = 1` alors `g(-10 + 0 + 20) = g(10) ~~ 1`
  • si `x_1 = 1` et `x_2 = 0` alors `g(-10 + 20 + 0) = g(10) ~~ 1`
  • si `x_1 = 1` et `x_2 = 1` alors `g(-10 + 20 + 20) = g(30) ~~ 1`

"Non" logique

On définit des paramètres/poids générant la table de vérité du "non" logique :

`Θ^((1))=[10, -20]`

ce qui donne :

`h_Θ(x)=g(10 - 20 x_1)`

et donc :

  • si `x_1 = 0` alors `g(10 - 0) = g(10) ~~ 1`
  • si `x_1 = 1` alors `g(10 - 20) = g(-10) ~~ 0`

"Nor" logique

On définit des paramètres/poids générant la table de vérité du "ni l'un ni l'autre" (`x_1 = x_2 = 0`) logique :

`Θ^((1))=[10, -20, -20]`

ce qui donne :

`h_Θ(x)=g(10 - 20 x_1 - 20 x_2)`

et donc :

  • si `x_1 = 0` et `x_2 = 0` alors `g(10 - 0 - 0) = g(10) ~~ 1`
  • si `x_1 = 0` et `x_2 = 1` alors `g(10 - 20 - 0) = g(-10) ~~ 0`
  • si `x_1 = 1` et `x_2 = 0` alors `g(10 - 0 - 20) = g(-10) ~~ 0`
  • si `x_1 = 1` et `x_2 = 1` alors `g(10 - 20 - 20) = g(-30) ~~ 0`

Not(Xor)

On réutilise les paramètres/poids des exemples précédents :

  • 1ʳᵉ couche :
    • Le "et" : `Θ^((1))=[−30, 20, 20]`
    • Le "nor" : `Θ^((1))=[10, -20, -20]`
    donnent : `Θ^((1))=[[−30, 20, 20],[10, -20, -20]]`
  • 2ᵉ couche : Le "ou" : `Θ^((2))=[-10, 20, 20]`

on calcule alors le résultat des couches :

`a^((2))=g(Θ^((1)) * x)`

`a^((3))=g(Θ^((2)) * a^((2)))`

ce qui donne :

`h_Θ(x)=a^((3))`

Bibliothèques

Des exemples de libraries FNN sont :