
But:
On cherche une fonction \(f: \mathbb{R}^p \rightarrow \mathbb{R}^q\) t.q. \(f(x) \approx y\)
Un modèle est un ensemble de fonctions \(\mathcal{F}\) de \(\mathbb{R}^p \rightarrow \mathbb{R}^q\)
Pour les réseaux de neurones:
Régime surparamétré

Fonctions les plus courantes :
Fonction Seuil (Heaviside) :
\[
h(x) = \begin{cases}
1, & x \geq 0 \\
0, & x < 0
\end{cases}
\]
Sigmoïde :
\[
h(x) = \frac{1}{1 + e^{-x}}
\]
Tanh (Tangente hyperbolique) :
\[
h(x) = \tanh(x)
\]
ReLU (Rectified Linear Unit) :
\[
h(x) = \max(0, x)
\]


Calcul pour chaque neurone \(j\):
\[ z_j = \sum_{i=1}^{n} w_{ij} x_i + b_j \]
Sortie: \([h(z_1), \ldots, h(z_m)]\)
Note 1:
Chaque neurone reçoit les mêmes entrées mais a des poids et biais différents, permettant d’apprendre des représentations complexes des données.
Note 2:


On note \(W^{(i)}\),\(b^{(i)}\) les poids et biais de la couche \(i\).
\(W^{(1)} = [1,2,3]\), \(W^{(2)} = \begin{bmatrix} 3 & 4 \\ -2 & 0 \\ 1 & 2 \end{bmatrix}\), \(W^{(3)} = \begin{bmatrix} 1 \\ 2 \end{bmatrix}\)
\(b^{(1)} = (0,0,0)\), \(b^{(2)} = (1,1)\), \(b^{(3)} = (-1)\)
La fonction d’activation est \(tanh\)
Entrainement:
Inference:
Dans ce chapitre: on ne s’intéresse pas à l’entraînement.
3 librairies populaires pour les réseaux de neurones:
On utilisera ici Pytorch, la plus populaire. Les 3 libraries sont sous Python.
https://pytorch.org/get-started/locally/
torch.nn.functional contient:
Tensors:
Cas particulier: les scalaires (i.e. un seul nombre) sont dits des tenseurs de dimension 0
Fashion MNIST:

Classification:
Le modèle:
Les paramètres (\(\theta\)):
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.flatten = nn.Flatten()
# Définir les poids et biais pour trois couches
self.w1 = nn.Parameter(torch.randn(28*28,512))
self.b1 = nn.Parameter(torch.randn(512))
self.w2 = nn.Parameter(torch.randn(512, 512))
self.b2 = nn.Parameter(torch.randn(512))
self.w3 = nn.Parameter(torch.randn(512, 10))
self.b3 = nn.Parameter(torch.randn(10))
def forward(self, x):
x = self.flatten(x)
# Appliquer les transformations et les fonctions d'activation
x = F.relu(x.matmul(self.w1) + self.b1)
x = F.relu(x.matmul(self.w2) + self.b2)
x = x.matmul(self.w3) + self.b3
return x
# Instancier le modèle
model = SimpleNN()2
Initialisation:
Evaluation:
Les paramètres du modèle sont initialisés aléatoirement :
Charger un modèle avec PyTorch:
On utilise ici une donnée du jeux de test:
model.eval()
with torch.no_grad():
prediction = model(x)
label_idx = prediction.argmax().item()
print("prediction",label_idx,labels_map[label_idx])prediction 9 Ankle Boot