{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Oubli catastrophique sur MNIST\n",
        "\n",
        "Un complément à la présentation 14\n",
        "\n",
        "Marcel Turcotte  \n",
        "2026-10-31\n",
        "\n",
        "Un réseau peut apprendre une nouvelle tâche tout en perdant la capacité\n",
        "d’en résoudre une ancienne : c’est le phénomène d’**oubli\n",
        "catastrophique** (*catastrophic forgetting*). Ce carnet entraîne un\n",
        "petit perceptron multicouche (MLP) sur les chiffres MNIST **0–4**, puis\n",
        "**5–9**. Nous mesurons les deux capacités et comparons l’entraînement\n",
        "sur les nouvelles données seulement au rejeu d’une petite mémoire\n",
        "d’anciens exemples d’entraînement (*replay*).\n",
        "\n",
        "Cet exemple prolonge la discussion de la présentation 14 sur les\n",
        "difficultés d’entraînement. Le modèle conserve une seule couche de\n",
        "sortie fixe à **dix logits**; les étiquettes des chiffres gardent leurs\n",
        "valeurs d’origine. À l’évaluation, les dix classes sont en concurrence.\n",
        "C’est une forme simple d’**apprentissage incrémental par classes**\n",
        "(*class-incremental learning*), plutôt qu’une évaluation qui indique au\n",
        "modèle parmi quels cinq chiffres choisir. Voir\n",
        "<a href=\"https://arxiv.org/abs/1904.07734\" class=\"external\"\n",
        "data-icon=\"true\">van de Ven et Tolias (2019)</a>.\n",
        "\n",
        "## Données et budget d’entraînement reproductible\n",
        "\n",
        "Nous utilisons la séparation officielle de MNIST entre entraînement et\n",
        "test. Pour une expérience rapide, chaque chiffre fournit 1 000 images\n",
        "d’entraînement et 200 de validation, toutes issues de la partition\n",
        "officielle d’entraînement. Les images du test officiel ne servent pas au\n",
        "choix des réglages. La première exécution télécharge MNIST avec Keras si\n",
        "les données ne sont pas déjà en cache.\n",
        "\n",
        "Les graines fixent les réglages d’initialisation et d’échantillonnage.\n",
        "Les résultats exacts peuvent quand même varier selon le moteur de calcul\n",
        "et le matériel; il faut interpréter l’oubli et la rétention mesurés dans\n",
        "l’exécution réalisée, plutôt qu’attendre des pourcentages identiques sur\n",
        "tous les systèmes."
      ],
      "id": "e722d470-7f36-423b-ad94-c1454aa71fc4"
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {},
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import keras\n",
        "\n",
        "SEED = 42\n",
        "EPOCHS = 6\n",
        "STEPS_PER_EPOCH = 40\n",
        "BATCH_SIZE = 128\n",
        "LEARNING_RATE = 0.1\n",
        "\n",
        "keras.utils.set_random_seed(SEED)\n",
        "(images, labels), (test_images, test_labels) = keras.datasets.mnist.load_data()\n",
        "data_rng = np.random.default_rng(SEED)\n",
        "train_indices, validation_indices = [], []\n",
        "for digit in range(10):\n",
        "    indices = data_rng.permutation(np.flatnonzero(labels == digit))\n",
        "    train_indices.extend(indices[:1000])\n",
        "    validation_indices.extend(indices[1000:1200])\n",
        "\n",
        "train_images, train_labels = images[train_indices], labels[train_indices]\n",
        "validation_images = images[validation_indices]\n",
        "validation_labels = labels[validation_indices]\n",
        "train_a = (train_images[train_labels < 5], train_labels[train_labels < 5])\n",
        "train_b = (train_images[train_labels >= 5], train_labels[train_labels >= 5])\n",
        "validation_a = (validation_images[validation_labels < 5], validation_labels[validation_labels < 5])\n",
        "validation_b = (validation_images[validation_labels >= 5], validation_labels[validation_labels >= 5])"
      ],
      "id": "d0dce06c"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Un modèle, dix classes possibles\n",
        "\n",
        "La couche cachée utilise ReLU et la sortie est linéaire.\n",
        "`SparseCategoricalCrossentropy(from_logits=True)` reçoit directement les\n",
        "logits et accepte des étiquettes de chiffres entières. Softmax\n",
        "convertirait les logits en probabilités; `argmax` donne la même classe\n",
        "prédite avant ou après softmax.\n",
        "\n",
        "SGD utilise un taux d’apprentissage constant, sans momentum ni\n",
        "régularisation. La comparaison porte ainsi sur les données fournies\n",
        "pendant la seconde phase."
      ],
      "id": "4761c4db-4504-49aa-ba21-1c51e4769464"
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {},
      "outputs": [],
      "source": [
        "def compile_model(model):\n",
        "    model.compile(optimizer=keras.optimizers.SGD(learning_rate=LEARNING_RATE),\n",
        "                  loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True))\n",
        "\n",
        "def make_model():\n",
        "    model = keras.Sequential([\n",
        "        keras.layers.Input(shape=(28, 28)),\n",
        "        keras.layers.Rescaling(1/255),\n",
        "        keras.layers.Flatten(),\n",
        "        keras.layers.Dense(128, activation='relu', kernel_initializer='he_normal'),\n",
        "        keras.layers.Dense(10)\n",
        "    ])\n",
        "    compile_model(model)\n",
        "    return model\n",
        "\n",
        "def predicted_classes(model, x):\n",
        "    logits = keras.ops.convert_to_numpy(model(x, training=False))\n",
        "    return logits.argmax(axis=1)\n",
        "\n",
        "def validation_accuracy(model):\n",
        "    return [np.mean(predicted_classes(model, x) == y)\n",
        "            for x, y in (validation_a, validation_b)]"
      ],
      "id": "2d6396a0"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## La même boucle d’entraînement, avec ou sans mémoire\n",
        "\n",
        "Chaque phase a le même nombre de mises à jour et la même taille de lot.\n",
        "L’échantillonnage avec remise rend ce budget explicite. Sans mémoire,\n",
        "chaque lot ne contient que des exemples de la nouvelle tâche. Avec\n",
        "mémoire, la moitié du lot provient de la nouvelle tâche et l’autre\n",
        "moitié des anciens exemples conservés. Le rejeu modifie donc le mélange\n",
        "des données dans ce budget fixe.\n",
        "\n",
        "L’historique retourné consigne l’exactitude de validation des deux\n",
        "groupes avant l’entraînement et après chaque époque. `train_on_batch`\n",
        "effectue le passage avant, le calcul des gradients et la mise à jour\n",
        "SGD; le code NumPy ne fait que constituer les lots."
      ],
      "id": "d2aa188c-58e2-4234-bafa-257662d1cd04"
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {},
      "outputs": [],
      "source": [
        "def train_phase(model, training_data, seed, memory=None):\n",
        "    rng = np.random.default_rng(seed)\n",
        "    x, y = training_data\n",
        "    history = [validation_accuracy(model)]\n",
        "    new_count = BATCH_SIZE if memory is None else BATCH_SIZE // 2\n",
        "    for epoch in range(EPOCHS):\n",
        "        for _ in range(STEPS_PER_EPOCH):\n",
        "            indices = rng.integers(len(y), size=new_count)\n",
        "            xb, yb = x[indices], y[indices]\n",
        "            if memory is not None:\n",
        "                old_x, old_y = memory\n",
        "                old_indices = rng.integers(len(old_y), size=BATCH_SIZE-new_count)\n",
        "                xb = np.concatenate([xb, old_x[old_indices]])\n",
        "                yb = np.concatenate([yb, old_y[old_indices]])\n",
        "            model.train_on_batch(xb, yb)\n",
        "        history.append(validation_accuracy(model))\n",
        "    return np.asarray(history)"
      ],
      "id": "fcb6b6ee"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Phase A : apprendre les chiffres 0–4"
      ],
      "id": "814d704f-76e3-44e3-bc5f-420d94879430"
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {},
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Exactitude de validation après A :\n",
            "  chiffres 0–4 : 95.6%\n",
            "  chiffres 5–9 : 0.0%"
          ]
        }
      ],
      "source": [
        "sequential_model = make_model()\n",
        "history_a = train_phase(sequential_model, train_a, seed=101)\n",
        "weights_after_a = [weight.copy() for weight in sequential_model.get_weights()]\n",
        "test_predictions_after_a = predicted_classes(sequential_model, test_images)\n",
        "print('Exactitude de validation après A :')\n",
        "print(f'  chiffres 0–4 : {history_a[-1, 0]:.1%}')\n",
        "print(f'  chiffres 5–9 : {history_a[-1, 1]:.1%}')"
      ],
      "id": "3d3cb841"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Une faible performance sur les chiffres 5–9 est normale à ce stade : ils\n",
        "n’ont pas encore été des cibles d’entraînement. La référence pour\n",
        "mesurer l’oubli est la performance sur les chiffres 0–4 **après\n",
        "l’apprentissage de A**.\n",
        "\n",
        "## Phase B : nouvelles données seules ou rejeu\n",
        "\n",
        "La branche séquentielle continue avec ses paramètres appris. La branche\n",
        "avec rejeu part d’une copie identique de ces paramètres. Les deux\n",
        "branches utilisent un nouvel optimiseur SGD avec le même taux\n",
        "d’apprentissage constant; recompiler la branche séquentielle ne\n",
        "réinitialise pas les poids du modèle.\n",
        "\n",
        "La mémoire conserve vingt images d’entraînement par ancienne classe,\n",
        "soit cent images au total. Aucune image de validation ou de test n’y est\n",
        "placée. Les deux branches ont le même nombre de mises à jour de phase B."
      ],
      "id": "96cde5d2-f2d7-4830-878f-1447a604c1ff"
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {},
      "outputs": [],
      "source": [
        "memory_rng = np.random.default_rng(202)\n",
        "memory_indices = np.concatenate([\n",
        "    memory_rng.choice(np.flatnonzero(train_a[1] == digit), size=20, replace=False)\n",
        "    for digit in range(5)\n",
        "])\n",
        "memory = (train_a[0][memory_indices], train_a[1][memory_indices])\n",
        "\n",
        "replay_model = make_model()\n",
        "replay_model.set_weights(weights_after_a)\n",
        "compile_model(sequential_model)\n",
        "history_b = train_phase(sequential_model, train_b, seed=303)\n",
        "history_replay = train_phase(replay_model, train_b, seed=303, memory=memory)"
      ],
      "id": "2d523bd4"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Suivre les deux capacités"
      ],
      "id": "fb14397c-c6fd-40d0-aeac-376dacacfcff"
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {},
      "outputs": [
        {
          "output_type": "display_data",
          "metadata": {},
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAABBYAAAFZCAYAAAAsFKy0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90\nbGliIHZlcnNpb24zLjExLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvctoD+AAAAAlwSFlzAAAO\nxAAADsQBlSsOGwAAvrJJREFUeJzsnQWYE9f6xt91XxbWcPcKWqGlTmmBlrq7e0vd/VZu5d/b3gr1\nFiq0vTUqtEC9pQbUcFhcV4CFdcv/eU92QjZr2Wxsk/f3PLOTTCYzJ2cn+ea855MIm81mgxBCCCGE\nEEIIIYQHRHryJiGEEEIIIYQQQggJC0IIIYQQQgghhGgV8lgQQgghhBBCCCGEx0hYEEIIIYQQQggh\nhMdIWBBCCCGEEEIIIYTHSFgQQgghhBBCCCGEx0hYEEIIIYQQQgghhMdIWBBCCCGEEEIIIYTHSFgQ\nIoxYu3YtBg4c6FgGDRqE0aNH45JLLsGSJUsQbCxcuNC0c/78+YFuihBCiCDljDPOqGPbhg0bhmOP\nPRbvvfcebDYb2iLLly83n+Xnn38OdFPw5ptvmrZUV1d75XglJSV46623MGHCBHPcKVOmNLrvRx99\nhHHjxmHo0KE46aST8Ouvv7Zqv2Dt40DCz89+4P9DiNYgYUGIMKKiogJLly7F8ccfb4zwhx9+iPvu\nuw8rV67EXnvthcWLFyOYKC0tNe3lTUhbhsIIjfZff/0V6KYIIUTIsWbNGkRERBi7xuXFF1/E3nvv\njVNOOQX/+te/vHaeI444Avfccw/8QXl5ubF/xcXFCDTbtm0zbfGWSDN8+HB8+umnOOaYY8xxt27d\n2uB+zz//PE4++WQcddRRePXVV9GjRw8ccMAB+OGHHzzaL5j7OJC8/PLLRmT5/PPP8ffffwe6OaIN\nEx3oBggh/E9WVpYZ6BKuqfCnp6dj6tSpePDBB/Uv8TIURnjzQqFECCGE94mLi3PYNTJy5Egza/3c\nc8/hzjvv9Mo5cnJy0KtXL/iD/v37G7G/e/fuCDX+/PNPxMfHY/Xq1Y3us3PnTtx000245pprcMUV\nV5ht9ESZN28eJk2aZNYt2S/c+thdeF9Cz56LLroIb7zxBl5//XU8/vjjgW6WaKPIY0EIgdTUVMTE\nxKCwsLDZ3qDhGT9+vJlxoKvptGnT6rxeVVWFZ555BmPGjMGQIUNw9NFHY+bMmXX2+eSTT8wN4Pbt\n2+ts5ywT39MU7hzfcutjeMcrr7yC/fffHwcddJCZIbFmX66++mqMGDECEydObNBTo6XnYb9whoSz\nZI888ohjZufHH380brrk1FNPdbjqcnZACCGE7+jQoYNbdo3MmTMHp59+uhmU7rfffkZk54y2BX/f\nGU74zjvvOH7H+VvfGAcffDAeeughE9JHz4k99tjDEdbHkALOso8dOxZ77rmnmWn/7LPP6nlh0MY6\ne7q58z7aKbZty5YtdbYz3MBZeGkMeg/QPrIf6KHxzTffNLifO21pDIoKzfHll19ix44dxhPBGdpR\n9iNFnpbs1xCufezsXciJFv7PudC7k/A81157rbl3YNjAP//8U+d4vKdxDjXley+99FLjFepKQUEB\nrrrqqjr93FDIibv9zOuSr/HejJ4gbL87Hib8bPxc5513nrnPYRu8FfIiwhCbECJsWL58Oa2M7Ykn\nnnBsq6mpsT3yyCO2iIgI2xdffNHk+5999llbUlKS7eWXX7b98ccftk8//dR2xhln2N566y3zenV1\ntW38+PG27Oxs26uvvmr77bffbA8//LAtNjbW9vbbbzuOM3XqVNOOvLy8Osd/6KGHbHFxcY7nv//+\nu9nvhx9+aNHxZ82aZd53xRVX2G6//XbbL7/8Yrvjjjts0dHR5j3HHHOMafNPP/1kO/DAA209e/a0\nVVZWOt7f0vNcc801thtuuMH2888/255++mlbTEyM7amnnjL7FBUV2d58802z37Rp02yLFy82S3l5\nuUf/QyGEEHXZf//9bUOGDKmzbeHChbb09HTbaaed1mx3vfHGG8Y+TJo0ydiF6dOn2/r162fsAG2k\nZT+7d+9uO+WUUxy/47m5uY0es0uXLraTTjrJNnbsWNuMGTPM/iUlJeZ4xx57rC0zM9P24osvGjv3\n2GOPGdv32muvOd7/zz//GLtBO0Pcfd97771n3rdu3bo67aHdb+62v6qqyjZ06FDz2T/++GPbt99+\nazvuuONs5557rnmvZSfdbUtzrFq1qt49iQVtNl+jDXWG9wPc/v7777dov4Zw7WPrPZdffrnt5ptv\nNvcO9913ny0qKspcF8cff7y5f5kzZ45tzJgx5n/sbMvZf9a1sWjRIts333xjrpd27drZ1q9fX2e/\nPffc0zZgwABzrX333XfmWjnnnHM86udXXnnFlpCQYHv++edt8+fPt3322Wfmf8btzcHrs0ePHubx\n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\n0pKKRdu3b3d4f9FOsfRhW6aiogJbt251a98tW7b4vD3CzVBGCQtC+MyG10MVIYQICjz204uNjcWJ\nJ55oQiJYYvLoo4/GLbfcghtvvNG7LQwzlF9BiMYZMWKEI3GsVypDMIGjc44F0Til2+x9xbUPoCDA\nOsnO/N///Z9ZGvOcs0QHighHHnmkyf/z+OOPY9WqVejRo4e5Xn7++Wf4isLCQqxfv96xWKWX3YFi\nQVVVVbP73XPPPfj0008d77HOZQkozjz88MN47733WvgphE8mB1QRQgif2fB6qCKEEEFBqwMAOUP0\nv//9D++++665yXNN7ChahvIrCOF7LGFhzZatwPY1QEQk0KG3ur4hCnKAaWcAj/QGnh5pX79zpn27\nF+CgedCgQejYsaNZWHVo0aJFzb6PJY6feeYZ8/iPP/4wg/q8vDxTpYivsULRxo0bcfDBB/vs/8pz\n7b777th3333Ncu211zb7np9++gm9e/dGnz59kJ2djXfeeafRfSkeTJs2DWeccYZ5fvnllzvOx4pM\n/fv3x59//unYn+e/7777vPTpRGtsuDwWhPAjqgghRNsVFpi0kZ4KJ510Ejp37ozXXnsN559/vnE7\nnTRpkvdbGUYstcpUabZDiHpcfPHFuO6667wmLFTk5QC2GiCtOxAdpx53heLBi4cAy76w9xPheukM\n+/ZWigscZJ922mm49957UVxcjG3btpmB8ffff9+gd4AzZ511Fq644goT6rBgwQKkp6djw4YNZjY/\nJycHKSkp5rFrSIWrVwE9HyorK+udj8e1jtdUouI77rjD4UVAQaM5KHjcdttt5rN+9913uOaaaxoN\n96D3wdixYxEVFVXHg4Hn4vvHjRtnPDQsmPcoKSnJuBsL/5NfVI6C4gokx0WjczvlSBLCVza8UY+F\nLJWaFKLNCQsvvfQSzjvvPHTt2tXcwMybN8/c4LVv3977LQwjampsWG7NdkhYEKLB3x53Bm/N0Sk1\nHgkxUehQuta+QfkVGmb23UBFMVDj4rLP59zO11sBwxwuu+wynHzyyWbwHBkZiQMOOACXXnqpYx96\nL9CjgYPm4cOHOwQGeis8+OCDmD9/vrlRpRhheQ68//77eOihh8xjCgQ8D8VvzvAPHTrUCAVMOrz3\n3nsb74EOHToYG8aQCsLjUajg6zzGunXrGv0MPBY999yB+65cudKEDhJ6H2RkZGDmzJkN7s/PtNde\n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\n99uxYwdOP/10DBgwAD/88AP++OMPHHTQQSHhJX/++edjxYraya8mYLnJo446qvHkpm0ECQutgKVb\nWBe2moVh+cVAMlbaOps1ub/yTHxbPQQo3Qq8dYq9JJ4QwrsUrgOqy4HkbCA+1S+960jgqMoQQoSk\nDS9GAi6suB75tlRg1XfAjJsYGxHoJgsRmqgihO/gxAsnOB/pDTw90r5+58xdEzKt5JtvvsGxxx6L\n3XffHePGjcM777zjeG3dunUoKytr8H2nnnqqCY0hr776qll/8sknGDFiBG666SYjNHz22WfwJUcc\ncQT69u3rWFigoDl+/PFH8zn32GMPXH755SgqarxC2O+//44NGzaYY5MhQ4aYx/369cO+++6Lxx57\nrE65SX52Jjhty0hYaAWsB1t7P9IgNYjElZVXoaJ9fyB/KfDeeUB1Q0kehRCefxGtMIj+futEeSwI\nEfo2fAMycVHF9aiJigPmvgL8+rw/mydEeOCoCJECtOsa6NaEFhQPXjwEWPbFrgp2XDNhLbe3Ulx4\n9913cfzxx5ucGVOmTMG1115rxIGvvvqq2fc+/vjj2G233cxjzugfcsgh6N+/PxITE83ziRMnok+f\nPvAla9aswbPPPosvvvjCLEcffXST+2/evNl4FZx44olGhNi5c6cRQRrj+eefxxlnnOF4npOTY4SD\nGTNm4MEHHzR98Pnnnztep5jC97RlJCy0goykOETaQzIbpSQiEWUnvQ0kpgM5XwEzb2/NKYUQASw1\n6Sos5OQ1rlQLIdq+Df8L/VA27kn7ky9vBZbP9kvbhAgbVBHCd8y+G6gorl/1hs+5na+3ghtuuAFP\nP/00rr76agwfPhxjx441A26GMVj89ddfGD9+vMmv8dZbbzm2X3/99Vi4cCEefvhhI0rcfvvtDs8B\nejrst99+OOeccxwhFdyHx7nwwgvNtuXLlxuvB3oBOIdc1NTU4LbbbsOwYcPMseiV0BTdu3d3nLdd\nu3ZN7jt37lzjbXDBBReY895///147bXXUFXV8KTxzJkzMXr06AbPt//++yMrKwvV1buSBjMUJD8/\nH+vXr0dYVIUQdWmXGIPDB2dj9uJchyula5K3MYOykNq5L3DKm8CUicCvk+0zq3sp07QQba3UpEWv\njCQzIFm7tQTlVdWIi47y27mFEP614YkjJwA7coDvHwX+dx5wwSwgq+3H/goRFCgMwnPuaXog3CQU\n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\nQmCC\n"
          }
        }
      ],
      "source": [
        "fig, axes = plt.subplots(1, 2, figsize=(11, 3.7), sharey=True)\n",
        "for ax, continuation, title in zip(axes, (history_b, history_replay),\n",
        "                                  ('B seulement', 'B et rejeu de 100 images A')):\n",
        "    history = np.vstack([history_a, continuation[1:]])\n",
        "    epochs = np.arange(len(history))\n",
        "    ax.plot(epochs, 100*history[:, 0], 'o-', label='Chiffres 0–4 (A)')\n",
        "    ax.plot(epochs, 100*history[:, 1], 'o-', label='Chiffres 5–9 (B)')\n",
        "    ax.axvline(EPOCHS, color='black', linestyle='--', label='Début de la phase B')\n",
        "    ax.set(title=title, xlabel='Époque', ylim=(0, 100), xticks=np.arange(0, 2*EPOCHS+1, 2))\n",
        "    ax.grid(alpha=0.25)\n",
        "    ax.legend(fontsize=8)\n",
        "axes[0].set_ylabel('Exactitude de validation (%)')\n",
        "fig.tight_layout()\n",
        "fig.savefig('catastrophic_forgetting_accuracy.png', dpi=150, bbox_inches='tight')\n",
        "plt.show()"
      ],
      "id": "33e78707"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Les deux panneaux partagent le même historique de phase A. La seconde\n",
        "phase doit être lue selon deux questions : le modèle apprend-il B et\n",
        "quelle part de A conserve-t-il? Les courbes de validation décrivent\n",
        "cette expérience fixe; elles ne servent pas ici à choisir des\n",
        "hyperparamètres ou un moment d’arrêt.\n",
        "\n",
        "Le rejeu réduit l’oubli dans cette expérience, sans l’éliminer. Une\n",
        "partie du budget fixe de mises à jour de phase B est consacrée à A; il\n",
        "faut donc considérer à la fois la rétention et la performance sur la\n",
        "nouvelle tâche pour comparer les branches.\n",
        "\n",
        "## Mesures en fin de phase sur le test officiel\n",
        "\n",
        "Rapporter les groupes séparément : une exactitude globale peut masquer\n",
        "une forte perte d’une capacité antérieure. Les dix classes de sortie\n",
        "restent disponibles pour chaque prédiction."
      ],
      "id": "50698b39-e680-4411-aa0f-c32164f46371"
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {},
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Point de sauvegarde       A (0–4)    B (5–9) Tous chiffres\n",
            "Après A                     97.1%       0.0%      49.9%\n",
            "Après B seulement            2.3%      93.9%      46.8%\n",
            "Après B avec rejeu          79.8%      91.4%      85.4%\n",
            "Baisse sur A, Après B seulement : 94.8 points de pourcentage\n",
            "Baisse sur A, Après B avec rejeu : 17.3 points de pourcentage"
          ]
        }
      ],
      "source": [
        "test_predictions_sequential = predicted_classes(sequential_model, test_images)\n",
        "test_predictions_replay = predicted_classes(replay_model, test_images)\n",
        "mask_a = test_labels < 5\n",
        "\n",
        "def group_accuracies(predictions):\n",
        "    correct = predictions == test_labels\n",
        "    return np.array([correct[mask_a].mean(), correct[~mask_a].mean(), correct.mean()])\n",
        "\n",
        "test_results = {\n",
        "    'Après A': group_accuracies(test_predictions_after_a),\n",
        "    'Après B seulement': group_accuracies(test_predictions_sequential),\n",
        "    'Après B avec rejeu': group_accuracies(test_predictions_replay)\n",
        "}\n",
        "print(f\"{'Point de sauvegarde':<22} {'A (0–4)':>10} {'B (5–9)':>10} {'Tous chiffres':>12}\")\n",
        "for name, values in test_results.items():\n",
        "    print(f'{name:<22}' + ''.join(f'{100*value:>10.1f}%' for value in values))\n",
        "for name in ('Après B seulement', 'Après B avec rejeu'):\n",
        "    forgetting_pp = 100*(test_results['Après A'][0]-test_results[name][0])\n",
        "    print(f'Baisse sur A, {name} : {forgetting_pp:.1f} points de pourcentage')"
      ],
      "id": "7a5850a9"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Ces mesures comparent des points de sauvegarde prédéfinis. Les\n",
        "prédictions de test de phase A ont été consignées avant l’entraînement\n",
        "de phase B et ne sont pas recalculées avec les paramètres ultérieurs.\n",
        "\n",
        "## Les mêmes images, des prédictions différentes"
      ],
      "id": "99c149d6-86ac-46a8-b3dc-66240ef70e09"
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {},
      "outputs": [
        {
          "output_type": "display_data",
          "metadata": {},
          "data": {
            "image/png": "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\njrNp0ybn3HPPde69996UfbF333232Yb8pZdeSsn5Jk2a5NSpU8eZMmXKIZ9LD6VHHnnEadSokdOi\nRQtn2LBhNEoi6LXXXjN5at68eSk5n7YjHDBggKnwa5vzVLjuuuuc+vXrO3v27Dnkcym/6/fVn4cf\nfjgl14fwadasmSn3UkXn0tadt9xyS0rOp61DlUd1L6XC/Pnznfbt2zsXXnihc+utt5ptqREtc+fO\nNXlKZX4qaIvbgQMHOs8995wza9aslJyzf//+5hq1rXSqHDhwwLnyyivNeVPxDEG49OzZ09Tt1emU\nClWrVnW6devmtGvX7qBtyHNCeVL1m+uvv/6Qz7V+/fpY/UZ/xowZc8jnRPhErT3r99BDD5nzfvPN\nN06UEdhxHGfEiBFOvnz5TKbdsmVLSr7YvHnzOiNHjnQuuOCClJzv2WefdQoVKmQqUofq4osvNtd3\n//33mwp/3759nV69eqXkOhEeqpgrTw0ZMiRl56xcubIzdepUJ0+eQy9afvzxR+e9995z/vzzz5T0\nDD/zzDMmiFmqVCln5cqVh3w+hM+MGTOcZcuWOV9//bUzZ86clFZ87rrrLmfXrl2HfK7hw4eb+/Lp\np58+5Mao7qEGDRo4p5xyignmq/LfsGFDGrkRozJeeUplfqocf/zxzrRp05zSpUsf8rl036h81jW+\n8sorTqroHlq6dKmzYMECE+RBdGzevNmUpaqLjBo1KmXnbdKkifP666+npKwfP36887///c/Ub376\n6adDOlfx4sVN/UZ/9Ltv2LDhkK8P4RO19qzn008/NQGjBQsWONu2bXMizY24AwcOuKeddpo7e/Zs\nt02bNu5zzz2X6fiIESPcO+64w3355Zfdpk2buldccYX74YcfHnT8tddec1u0aOH27NnTpI8dO9Zt\n27ate/HFF7sPPPCAu3379th75syZ47Zv396tX7++261bN/e3335LeI3Lli1zS5cu7f7+++9u8eLF\n3Z9++inh6/XZl156aeDxv/76K9PPQ4cOdcuUKZPwnEgvM2bMcM844wx3/fr1btGiRd3NmzdnOq58\nPm7cOPf22293GzRo4N56663uxo0bMx0fP36826NHD/eiiy4y98/WrVtNXm/UqJHbqlUrd8KECbHX\n79+/33366afdxo0bu02aNDF5TvdeIrqX9Gf06NHmGrLSsWNH96WXXsrydZ06dTJ/ED0qd5999lm3\nf//+7tVXX53p2JdffmnKzQ8++MCU3cqrKvfjj0+fPt2cp3nz5iZ97ty57jXXXGPug65du7rr1q2L\nvWf58uXuzTff7NarV8+85ttvv014fbt27XJLlizp/vDDD+6FF17ovv322wlf/91337m1a9d2N2zY\nYD1+2223Zbp3VPYfc8wx7pgxY7L4ppAuVLarjFc9Q3Wdzz77LNNxldmDBw92H3nkEVN2qxxVvoo/\n3q9fv9g9sXfvXnfQoEHmHrjsssvcF154wZTxHuVbHWvYsKE5786dOxNeo8r4Sy65xHyu6jp79uxJ\n+HqdU/WuRBYvXuxWqlTJnTRpkquqblbXgPQycOBA85xXeX3mmWdmOrZt2zZTbn766aemXFY+ffjh\nh93du3dnOj5z5kz3+uuvd88//3xzH/3888+mLqQyVffJ/PnzY+fcsmWLe88995hjrVu3dqdOnZrl\nNeqZobJY9ai777474Wv37dtnrin+/rWpXLmyec4hWqLYnhW1PU499VRTF3Mcx/z+URb5wM4nn3zi\n1qlTx3wZn3/+uVulSpVMX5AaAAUKFDCZWq9VZaZQoULmgeA/roeDGsuqyPft29dUKP7973+b16mR\nqxtC/vjjD/P+J5980mQ+NXB17kR0o6kiI/fff7/bq1evhK9XJUs3TnbpgeJ9B4iGDh06uMOGDTN/\nV8XlmWeeyXRc+ffYY481FXrle+VhVY5UofeOq1BWIEUNXhXmqkyosqPXq7JSrlw5cw/Iiy++GKtk\nq6KlgJEeIkFUwVIeXrVqlankn3DCCaaxm0iNGjXcBx98MMvfncBONCkwWaJECVMJUDms/KvKhUf5\nMm/evO4555zjTps2zX3rrbdMwFsBSe94vnz5TAVGwZ9vvvnGnTJlinv88ceb/K1GgMrm8uXLm4aB\nVKtWzb3xxhvdWbNmmXvivPPOS3iNb775ZixgpMCpGhyJzJs3z1Rk1q5daz1eq1Yt8zzy++c//2ka\nEogG5d+bbrrJ/H3IkCHuVVddlem4KuWqw6geoPqK/n/00UfHApQ6XrBgQfehhx4ylfhffvnFbdmy\npQlWKv/rXjn77LNNo1b0GgUPR40aZRqhjz32mHvfffclvMa6deuac3n5U5X5RDp37uw2a9Ys8Lie\nU2oEq3GtehmBneg5/fTT3f/+97/m72eddZYpn/1BGOWJihUrmnJZ+UR5WPUi/3HVaZQXdR7VP1Qn\n6t27t8nXzz//vMnnCiDKddddZ8prPSfef/990zBOFMj//vvv3RNPPNHk1ZUrV5r6jhdYstHrdE0T\nJ07M8ncnsBNNUW3Pqg3z6KOPmnqXQ2CHwM6VV15pKvAeVbz90T5ldGUq9aR6VCn2Kt86XqFCBRNN\nlx07dpgbQ5FDj3qK1GO2cOFCU4CrcaAbwuM/dzy9Vw1kr0dWlSo1HBI9ANSAWbRokZsduvkLFy5s\nGiqIhk2bNpk8pbwq6iXV6B0/FeRetN7Lh2oUKzDjHfcKZ1GQSI1Y/ygc9cKqci2K8ute80uU7/UQ\nadeuXexn3Wf+67FZsmSJuT+yQmAnmgYMGODeeeedsZ8VXPT3aqpCrkqBvwdJedgbzegd1yg3T82a\nNU0F308jbV555RXz92LFisUqTVnleVHQ6D//+Y/5u0ZA6D778ccfA1+vnjM1OoJGOOjZFD+KTQ37\n+NFKSF8q273Gp8r8smXLmmeAR4EbjRzw089qwHrHvfqOfPHFF6YyrwCpR88QBX9UD3rnnXdMg8Kr\nE2WV75cuXWoaot6zQ3URjd5JRCMnEvX09unTxzROhMBO9KjMVeDR88Ybb2QapesFbvwjFzWSwAuS\ne8e9YKMoOHrttddm+hy1BTRKUzSaTc8Yv0T19Lvuust96qmnYj9rhEVWIylV1uvaskJgJ5qi2J7V\nPapOXdWBCOz8n3xOhG3cuNHMydNilYMGDTJpv/76q/Pyyy87devWzbRgWsGCBWM/165d2/nggw9i\nP5955plmDqIsX77crF9w++23Z1pnZPfu3WYOrRZde+KJJ8xcxWrVqpmF0zp16pTp/H7jxo0za4w0\nbdo0lqaF4CZOnGjWx7EpWbKk+ZMVLZqrFf5ffPFFM28Y0ZmDu2PHDpP3PMq3M2fOdC666KJM+dxz\n1FFHOVWqVDFrdniUf/27RejeOeecc2Jp+gylSY8ePZybb77ZqVWrlsn7ym9axDaI7sFVq1aZhdBE\nCxXqftVOc0H3iq4PsNHoVK3dof97i72qXC1QoIBzxx13xF537LHHOqeeemqme0CLDXtztkuUKOGU\nKVMmdk6t36H1SzT/3KN8662XoLUYlPdPOOEEs3hxhw4dnEqVKlmvUYsTzp4927nnnntiaVu3bjXr\nRAStjVKkSJHYPWKje0X3oZ9+1jpTSH+fffaZWYxYu7Z5VJYqv2phWVtZ7/2cqKxX3tdafR79rDrO\nmjVrnCuuuML55JNPnLPOOsss4qnXBdVVvLJedRrv2aFzLVy40DyT/PeiX8WKFQPPp/WztEh01BfQ\njDLlKeV7r2zULm6q5w8ePNisRWPL92eccYZTuHBhU3afffbZ1ny/du3aTOWt6iSnnXZabOcg1fu1\nS6LK+tatW5v8b6N7RfegyuF33nkntuitNjbRMyJIorIe0RbF9qzeqw0h9HtrQX9dFxwn0oGdN954\nw2Sm7t27x9JUqVCmU4bRLj8Sv7WhFibzPxy8m0C896iQ1+KCflrAUrRQsRbb1INHhXuNGjXMzaiH\nSjzdlFpgynvQeBUXpSeqLGVnoak2bdqYBbauuuqqHJ8H4aMGrhqcJ510Uixt+vTpJk/5AzvJ5nsV\n7FoA0897GKgCo4WQteDgV1995dx3332mgW3b+Uf3ws8//2wWFvTr06ePSevYseMh/f6IHpV3RYsW\ndYYOHZopXTtZKR96QU4FPVQ58ComyvP6uwIo8Xk+IyPDlPG33XbbQYsKegvKtmzZ0vxRcEiLiiuw\n+cUXX5jKUzzdfwoCqWLkb4Sr8qSApoJQyVJjRYtFxweQ6tWrl/S5ED7KU9oB0N9x88svv5jgoT+w\nk2xZf9xxx5lFWuOVLVvWVLD1ufv373e+++4758knn3RGjx7tfPzxxwe9Xs+Dt956y5Tr/vqP0hTQ\nzMnOcFqIVvdw48aNzc9eUFaNbX0Xuh+RvhQgUX3mww8/NGW05/nnnzf1bS1y78/3XmBGZe3OnTsT\n5nsFK7Xrp98xxxxj/l+zZk3n888/N8F4dZK1bdvWLN6tXdlsDVwFafr165cpXa9VQPX0009PyXeB\n6Ihie1Z1N/1uXbp0MT97C+TfdNNNpjNDGwRFkhtRGvarxZZsU5A0N9Yboq+hafqavIXQtICahjZr\nIUHvePxcbw3F1yJS3vAy/V8Luf35559mXQYNlfOGHXvDP9esWWMdolykSJGDhrbpZ6UHDdHParEp\nDV3TULrszNVF+g1R1tDHeBoaedRRR8WG6GsKSNWqVWNDLN977z0z1H716tWx4/78o3yt+ef+eewa\npqk5t/Lqq69mWiNH06o0dDloiLI3vNnv9ddfP2jKgB+LJyPREGWt9RFP88e9IfreVCvN1RYN7dWz\nQAsMesfj53prGLOmjXjD41WuayqKFtXUQsV6Pnjlt4YJ6/3+RcX9Q5Q1bUvDm+Ode+65gUP0s1o8\nWe9TWe89K7RuT/78+c29ifSmslxl+q+//nrQsZNOOslMUfKmWmmtEK35Ifq/fvamoei4f+0y5XVN\nTxw+fHgsTc8J5XXR+iJaU8o/nbFUqVLWa9Q6PLZ1p77++muziHjQEP1EiydreL+mrHh/NE1Y97Wm\nnfunoCE9aTqU1oCKp7WgNEVJvKlWWuTYWzdQa0idcsopptz3jvvXLlM+1po8/rJTa5x59SB9rrcJ\nhabRar0dTUEPmnLrTdeNX+w+aMo5iycjSFTbs7pP/WW9njuO45j2htdWiaLIBnZUSdc8cdtOCWqM\neqvoK6Or4qw/Wm1ciwrqoeHtLGW7EZSplRGPO+44M9dcFWstEKUHiCpAakjomNYkUQXKW3Qwnn/u\nYzx9ZtAq+lktNqWKvRoR3u/l/fHPiUd6UiXdW0gznvKAt1CsAjcKlKhCrnyvdZhGjhwZe218YEfe\nffddM39WlR/90fs++ugjc0yLDeqeUvrJJ59sFkO2rVyvQl6L2npr+fipgZKRkWEeHjlZPFmVJv2O\nyvte/lca0puCHpon7t/BxKPKgAKWquDomaB8ocq+5plrTSmtoeNVEGyBHc1B1/2k54LKepXrusfU\ngFTlXhV7pSlIqueAgkTxuxJ6jQatfWLbKU7rhQTtCpfV4sk6X/fu3U0DX/esrtN/HyN9qfKt/Guj\nwLm3UKzyq3ZIUdmshq/uB3/dIj6w462zo/qLAjx6j+4Lbwc5BfAVgFeaGg1aXDxooXw1Gvxrtfnz\nre6HoF3hslo82Y81dqK3K5C3MYSfyl3V+VUX8QI3N9xwg8mnCnQqLyv4J7bAjjzxxBOmHNfCzHqf\n8q/W9vPW8VGe9e4HLcZsa+Cq/qJ6jK3MVlBU9R/bOiXZWTxZzwnVa1Tea2Fm/V3tAaS3KLdn/Vhj\n5/9k6D9OBGnuoeb62dbl2L59uxmurqGVGko5Z84cZ8qUKWZ+rYYZe2ssiIbY6/W2ueAakqnP0ZoK\n8cPo//e//znr1q1zTjzxxNhQzngaQq81H8qXL3/QMQ2n1hBjDbW3DUXV52pInM38+fOt6czfTX/f\nfvutyb+2NTa0Nsi+fftMXtYf5X0N49S0qAoVKph1djyLFy8264ZoSL6fihPdJ+Kf6uX/DA3R1xoJ\n/iGfHg2H1rol1atXt87T1boJuh+01kk8vU/XU65cOevvriHOuu/8dH8x7Dm9qRzWfHDNJfcPzffy\n64IFC0we0BTBq6++2pTpGp6s8vXkk0+OvVY/r1y50lquagi/8rbuifjyXNNCNEw50Vzx1atXm7ns\n3rQAPz2n9P74dVC8qWN6Tuia9GwKot9n/fr1Zvi0N60M6U3rI6iM9edhfx1B+UFTS7Smh8r7vn37\nmvytstVfritNZb+tXN2wYYMpU1XH8a/B4B3bsmWL+fygNRd07+m98c8Rr7zW5wY9R7xnVVZ032pq\ngO3+R3rRWjqqI2iqq62cUx1BU0oKFSpk/q+6ivKeV0/36iSqo2idJ1u5qnynOpHeF1+eayqInjX6\nbD0Lgspi1f3VvoinZ4DqaGqX2KayqO6uPG+7X2TRokXm+uKnR9raEEgfUW7Pxt9/X3/9tTnP0Ucf\n7URVZAM72aX54d6NAESFF9jRQphAFGjBVy+wA0SFF9iJX+8DSFdqBHuBnaAADJBuaM9GQ+YuFgAA\nAAAAAIQGI3aykGhoGpCugqZaAekq0VQrIF0lmmoFpKNEU62AdEV7NhoI7AAAAAAAAIQUU7EAAAAA\nAABCisBOLnnqqaecxx9/PLdODxxx/vjjD6dly5ZmVwcgKiZPnux07tz5oN1IgHTefeimm25yJkyY\ncLgvBfjbLFmyxGnevLnz+++/860jMmjPhguBnf+/ndq5557r3HvvvSn7Yu+++26zxdxLL710SOfR\nNWkbcv0577zznFatWjnvvPPOIV+ftiLt1auXU79+fefaa6818+wRLa+99prJV/PmzUvJ+YoVK+YM\nGDDAVPi1fXNOaU0rL8/rj/LoLbfcYrYRzSn9jv5zen/UIEe0NGvWzGnRokXKzqdzVa9e3eTRQzFy\n5MhYvjznnHOcpk2bOs8++6xpROfUxx9/fFCe17MJ0TJ37lzzb68yPxW0LsnAgQOd5557zpk1a9Yh\n3z9e3rzgggucTp06mes9FNp+98EHH3QuueQScx+NGTPmkM6HcOrZs6ep26vTKRWqVq3qdOvWzWnX\nrp3z119/5fg8X331VaYyuVGjRs4DDzxwSAGj119/3VrH0U5IiI6otWfVofb888+bel3Dhg3Nbr5R\n72TLd7gv4EgwYsQIJ1++fCbT3nfffWYbxEOVN29eU1E/1NELK1asMIvY9u7d2yz49vXXX5tAjHap\nb9++fY7O+euvv5qbSjeBKj9aNPS2225zPvzww0O6VoSLKuYlS5Z0hgwZ4px//vkpOWflypWdqVOn\nOrt27crxOVQoL1iwwHnjjTecatWqOTt27DD3pgI8Cu4cffTROaqQDRs27KAGRSob+DjyzZgxw1m2\nbJmzZ88eZ86cOU7dunVTVvFZunSpyfdaiDYn1q9fb8rit956y5TvP//8s3PXXXeZ8lr3ak6oQaOt\nfd9+++1YWiqebwgXlfGFChUy+ejGG29MyTmVj6ZNm+b88ssvh3Qe1ZE6duzotG7d2tm9e7czZcoU\nUzfR4rZVqlRJ+nyqJ/3zn/90ihQpYhrLuq/+9a9/mYZ4qn53HPk2b97sDB8+3Dz7R40a5dxxxx0p\nOW+TJk2cM844w5T1hQsXznHgUXWcL774wrQV1Bh/5JFHTAeUnlE5cdlllzlnnXVWprJf19q3b98c\nnQ/hFLX27O23327uGXUq6/e+7777zOcMHTrUiSw34g4cOOCedtpp7uzZs902bdq4zz33XKbjI0aM\ncO+44w735Zdfdps2bepeccUV7ocffnjQ8ddee81t0aKF27NnT5M+duxYt23btu7FF1/sPvDAA+72\n7dtj75kzZ47bvn17t379+m63bt3c3377LfD6dE033nhjpjR9Tnyanz770ksvDTx+/fXXu02aNMmU\ntmvXrsDXI/3MmDHDPeOMM9z169e7RYsWdTdv3pzpuPL5uHHj3Ntvv91t0KCBe+utt7obN27MdHz8\n+PFujx493IsuusjcP1u3bjV5vVGjRm6rVq3cCRMmxF6/f/9+9+mnn3YbN25s8t7QoUPNvWezZcsW\nV0XTvHnzYmn67Pi0eB07dnRfeumlbP3+n332mZs3b1533bp12Xo90oPK3Weffdbt37+/e/XVV2c6\n9uWXX5py84MPPjBlt/Kqyv3449OnTzfnad68uUmfO3eue80115j7oGvXrpny1PLly92bb77ZrVev\nnnnNt99+G3htuqYaNWpkSuvbt+9BaX7fffedW7t2bXfDhg3W42PGjHGrVq2ajW8G6Uplu8p41TNU\n11HZ56cye/Dgwe4jjzxiym6Vo8pX8cf79esXuyf27t3rDho0yNwDl112mfvCCy+YMt7z9ttvm2MN\nGzY05925c2fg9VWoUME8D/zKlSt3UJqfzql6l42eEXpW+OtVuudPOumkLL4ppJOBAwe6nTp1MuX1\nmWeemenYtm3bTLn56aefmnJZ+fThhx92d+/enen4zJkzTX35/PPPN/fRzz//bOpCqhPpPpk/f36m\ness999xjjrVu3dqdOnVq4LXpmpRHdR95pk2b5mZkZMSuId6+ffvMNcXfv0FU39K95b8vkd6i1p7V\nc0X1+ClTpsTSZs+e7ebJk8e0baIq8lOxPv30U6do0aKm51a9o4rw+6m3R5HP6dOnm+MaNaDhY15U\n3Tv+2WefOXfeeadz6623Oo899pjpKVIPlCKT6iH2RgZs2bLF9CadffbZZg0eb2hndqlHVz3DibZf\n37hxo7No0aKEa0I0btzYufnmm83v06VLF9MrjOh4+eWXTQ9WmTJlTD5VNN7vu+++c2644Qbn9NNP\nN3lY2yRedNFFsSGOOq58oxE6ipSfdtppZvjnqlWrTMT8yiuvNPnaGwKv6Ln+aGSYhkdrO3X1omWX\nerY0/L9ChQoJ579nt/dYo3cuv/xyp3z58tm+BoSbekX/85//mHzdtWtX54MPPsg0RF+9qJ988onz\n8MMPm9doml6fPn2cZ555JnZc71f5ft1115nyW6PTNARYIyDVM3rssceav2s6oVxxxRXOgQMHzGs1\nJURlbnapR2v+/PkJy3p9jnp+NQIpyLp168wICPXo6tq9a0N0enA1daR06dKmzFfZ76feTU3LVr5Q\nvUXbnmsEp1eW6vg999xjRtPo3tAaI23btnUmTpxoph9qNIymgdx///3m9Z9//rnJ53oG6P5Rb++j\njz6a7evV52m0RaJ8r9FsQVNzVcfSZxYvXjyWpt99zZo1hzy6COHxyiuvmPyuaU6qO/inDHqjglXO\nq1zWiMv3338/NjXbO646jka9aKqHpklpe3TlK42u+cc//mHKVdU7RPX///73v2YU/PXXX2/uM9WT\nsuvLL790TjrpJKdAgQLW4xrVoGtS/s6KXqu2jO7DPHki38yLjKi1Z/V+1ZNUvntKly5t6ly6nyLL\njbgrr7zSfeutt2I/n3feeSbi5+9FLV26dKYRLRql4PXW6rii4oqmy44dO9wCBQqYXlx/VFE9ZgsX\nLnRXrlzp5suXz/3jjz+yNVpGEc4SJUqYSH3NmjXdY4891oyGCIrqe6MbFi1aZD2mz9I/e/Hixd3n\nn3/ejNzo3LmzW6pUqYNGbSA9bdq0yfSIKq+Kemc1esevUqVKsWi9l4eVDydNmhQ7rl5Tz7Bhw9xq\n1aplGoUzevRok29FUX7da35B+d4bsaNr0vv1/yJFirhvvvlmwt9ryZIl7i+//JLl76/7Q/eov6cC\n6W/AgAHunXfeGftZo9HUkx/fi/rTTz9lysNlypTJdNzfE6QyWeWo34UXXui+8sor5u/FihUzvcLZ\nKev1LClUqJDJ87Vq1TJlskbrJOp5Us/Zf//7X3fPnj3W43rO6PhXX31lRuDp3Oeee27g65F+VH4u\nXrzY/F1lftmyZc0zwKPeVo0289PPvXv3jh336jvyxRdfmHyqEZoePUMKFixo6kHvvPOOW6VKlVid\nKKt8r/qTRtMob1avXt096qijYp8dRCMn/Pepn3qMdX3eaDt9tkYa6d4NqhchvajM1ShJzxtvvGFG\n78TXMTSi0bNs2TKTtnbt2thx/0iAm266yb322mszfY7aAhqlKcpjesb4BdXTvWeJ8rz+6B7QfalR\noYmoLNe1ZeWTTz5x8+fPH+lRC1EUtfasaISS7kGv7dGzZ09zb7366qtuVEV6jR1FAidNmuT88MMP\nzqBBg0yaRq4o0u5fe0FRyIIFC8Z+rl27tunt9Zx55pmmh0iWL19uek81788fKVdvl3qY1HP2xBNP\nmEUCtX6IIqZaLNB//ngXXnihiZQqCq9eJ/1dvcP9+vWzvl7rpuiPjXouMjIyTPRVPW2i31W9dBrJ\no54GpH8PrtatUd7zKN/OnDnTjMrx53OP1g3Regc//vhjLE3516NeK907WvTVo8/wRoL16NHD9B7V\nqlXL5H31gmmkQ1YLrekzdO9oPRSdQ/dizZo1ra/P7noM6l3WSB2NWkM0qOxUD67+7/Xcau0Z9Y76\n117QiBt/75HuAY1WU8+QlChRwoxy886p3iatX+If8aZRa95oAuU15VvNK1c53qFDB6dSpUqB13ni\niSfG1oJSD7FGC6lXWSODVG7H0zoiWogwiObXe8d1b+r+1vXrflJvM9Kbel41Asa/SLzWmlF+1chJ\nW1nv/ZyorFfev/jii2Np+lnltOonGqWmkW9a70OjOPW6rNZPUB1IdRKNlNA9pVGfer/qSzYVK1YM\nPJd6bHXfqbdZawpppJ1GGUlO1mdD+KgOr3zvlX1agF71/MGDB2cayeXP91o3R2vmqOzWCARbvl+7\ndm2m8lZtCI1W9nYOUr1f9WiV9crPyv+J6NmhtoPqSv/+97/NfaCFlYPWRUlU1vvpGaIdSr1nFdJf\nFNuzojUJ9XxRHUvXXb9+fbOeXJTL+kgHdrQ4qzJE9+7dY2nKbBqaqSH62uVH4leq1zBh/8PBuwnE\ne48K+fjC+ZRTTjH/17BnDf3Ug0cVLA3v1M0YtBCbGhP+yrkeAmok62ZIdpilXq/pNaVKlYqlacEp\nXevWrVuTOhfCSQ1cVXw17NejoZl6APgDO8nmexXs3rQVj5c/ld/ee+89s+CgKi6quKuBrWlcQVTR\n8vK9HgZq3KrCEr8IcjK8IcoaYm1rKCO9hyjHL6inqSTKh16QU2WrKi1exUR5Xn9XACU+zyv/qNzU\n9EJVbPy8ocGqXOuPgkPKvwpsalqhKk82qpD4K+8K9Kgi9s033wQGNJOh+1efkapdYnBkU5mu6VMK\npHs0HUlTq/yBnWTL+uOOO85aDpctW9Z0HulzNUReU1G0K8/o0aPNDm1B9Czy8r2muGjovZ4lQYGd\nrCiAqoa1dvvU76F7Tw3uk08+OUfnQ7im3Ko+o81A/M94TadSfVtTUPz53gvMKOC5c+fOhPlewUbt\n+ul3zDHHmP+rfNY0RNWj1Umm6YraoUdTEoOoUa36t+gZpMbo+PHjD/qMZOhZo7qWFjZHdESxPeud\nQwEodajp2rf9/w0o/J3MURPZyZfK8K+++qrZjcG/NaAygyrp/vU/VKn2CkndFGoYBo028HpmVYnQ\nQ0Dn1P/Vc6ZMp1XFFZkX9Qwruqk1ELK7zaGuW1uBKoIZdBNo+zh/RS6ePnPcuHGxubq6NlWA/I16\npCfNpVVBqkqvP99rtxCtmaBC3qOKu5dHlJ9VcGu+uo3Op8q4KkfeOfWwUBBHtM2ueoA18kcVGN1j\nuq+S6Y1QD0GiHijl66xWwlfjQvebRkEgOlRmK8ASvxWs0vzz0NUYVSXG6+VVxVxr0wSVtWpA6t5Q\nWa7zqaKu9T+UX9VIUKNWgSLlW1W6FFTRtqHZpYaCGif+QLyf1qrS5+rzgnqE1dDxnh36fTT/XI1n\npDeV5erBVdken+cVYNdz3zNhwgRTGRf9X8+CoDpOgwYNzP+1a5V3To1C0ygdle/a1Wr27NmmvqPG\nrkbLJFPW69q0lkiisl5r9mgNiESjUnUvq3NAI/P0ejVAWG8k/enfvl69eqYu78/3V1111UFrjmhE\nl7duoMpqBf6Cgu4q6z/66CNTr/HOqfdqzRHvXKrHqwNBeV7PhGTyve4n1Z+C8r3ysz5TQaNEVNfS\nWoSXXHJJtj8b4Rbl9qyecRs2bDCBJo247t69u+kQ8AJPURTZwI4WwVTPlVdJ8VNF3v8AUGVdvV4a\n6aIhwFow1h/1j6cFY9UIVa+teltVKVfFW72+6oHVTaVIaPXq1c1QTfWeKT2Iou9eo0FTptQTEb/Y\nbTKLJ+vzVOHS76KHmCp6GqLqDT9F+lJPqvJ3POVR5VV/vlLkXRVj5XuvUuQf5eOnwl4VCr1OlSP9\nufTSS2OFqwp9DdFXutLGjh3rPPTQQwmvVdMCvQeJ3qe/+3uZc7J4soJVWiwuqKGM9B2ibMv3SlOQ\n26uIqFxWxUdlo8paDRVW2RhEw5CVN72RNXq/elxVsdZIH/UeqaKu0WyqJGlR2kSVFAU/vUqZ7hOV\n1VrMUNeSk8WT9T5V7vTM0nUo0KN7j0XDo9HAVfmtUTS2fO9fRFkNYW8bZ5X7Wlw8qLKv0Tq6nzQC\nQufWe1SP8Hp39bxQ2a78pnRVtBONzJT+/fubPK86iN6nYKg3nSDZxZNFASbdl7oWnVMNHgV2EI0p\nt7ayXnV9lef+wIjyssplldd6n0aWacSZzdVXX21G+io/eeWpRiooj4kap6rT635QuauAokaEJqIA\nu/K97hNNl9G03aD7LjuLJytor99D9y8jkqMjyu1Z1WX0/NJ9p3u5VKlSZkZClGVooR0ngjT3UAWv\nbV0OVZbVq6rgh3o4tR6BeqE0v1aFvj+irmGPer1tVW8NydTnqDcrfqV7zftWZFM3gDeU00Yjabxh\n8yqoNYxN70nU86QeWn2uKmiJ6Np1bjUgVBFC+lOEXfnXFtjQUEb1QCkv64/yvoZxqhKtio8/j2ik\ngApRVYz8VJzoPhFbEEifoZ4nPVD8Qz79dFy9Vx41kFV4ew2HIFqbQdcT1AgWPSB0rkRzdpFeVA6r\nYqKKRHxl16ssq5Kj0WWqvKtc1GgHBWX8Uzf0s8pjW7mq0TnK27on4stzNVI12i2rueL6XD0TRNep\nnt9Eu6SIRt+px1jXFNQg0e+oz9f9q3uDUQvRoOHpKmNt049UR9AOKAqaaySCynsNhVf+Vh3DX64r\nzcs78dRTqrqM6jjx+UrH1AjV5ydac0HTtXSPiKal6PmU1dog/mdVopE/yvd61nhTKZHeNMpSgXkF\nSmz/5qojaEqJRk7q/6qrKK979XSvTuLVQWzlqvKd6kR6X3x5rsCKnjX6bD0LguhZ4o2QE71eZX1W\n+dTbJTG+3uVRgF91vKDfH+kp6u1Z3a/qFFO7prhvWllURTawk10anundCEBUeIEdjbIBokBTSbzA\nDhAVXmAnaPFKIN2oEewFdhIFYIB0Qns2GiI7FQsAAAAAACDsGLGThURD04B0FTTVCkhXiaZaAekq\n0VQrIB0lmmoFpCvas9FAYAcAAAAAACCkmIoFAAAAAAAQUgR2AAAAAAAAQorADgAAAAAAQEjly+4L\ntec8EEau6+bofeR5RC3PC/keYUVZjygi3yNqqOMgitxs1O0ZsQMAAAAAABBSBHYAAAAAAABCisAO\nAAAAAABASBHYAQAAAAAACCkCOwAAAAAAACFFYAcAAAAAACCkCOwAAAAAAACEFIEdAAAAAACAkCKw\nAwAAAAAAEFIEdgAAAAAAAEKKwA4AAAAAAEBIEdgBAAAAAAAIKQI7AAAAAAAAIUVgBwAAAAAAIKQI\n7AAAAAAAAIQUgR0AAAAAAICQIrADAAAAAAAQUgR2AAAAAAAAQirf4b6AI93dd99tTS9UqFDge846\n6yxretu2bZP67KFDhwYemzdvnjV99OjRSX0GAAAAAAAIL0bsAAAAAAAAhBSBHQAAAAAAgJAisAMA\nAAAAABBSBHYAAAAAAABCisAOAAAAAABASGW4rutm64UZGU46Gzt2bEp2svq7rFixwpreqFEja/qa\nNWucqMpmFo9cng+b008/PfDY999/b03v0aOHNf2FF15w0llO87yQ77OvSJEi1vSBAwda07t27Rp4\nrgULFljT27VrZ01fvXp1tq4xSijrEUXke0QNdRxEkZuNuj0jdgAAAAAAAEKKwA4AAAAAAEBIEdgB\nAAAAAAAIKQI7AAAAAAAAIUVgBwAAAAAAIKTyORHzd+x+FbRDz0cffWRNP+WUU6zpl19+eeBnVKpU\nyZreqVMna3r//v0DzwWEwdlnnx147MCBA9b0devW5eIVIerKli1rTb/55puTyqdSu3Zta3rz5s2t\n6UOGDMnWNQKJ1KpVy5o+YcIEa3rFihVD9YU2btw48NiyZcus6WvXrs3FKwKcpOr8kydPDvzKunXr\nZk0fNmyYNX3//v18/WmuVKlS1vR33nnHmj537tzAcw0fPtyavmrVKicdFC1a1Jpev379wPd8+OGH\n1vS9e/c6RwJG7AAAAAAAAIQUgR0AAAAAAICQIrADAAAAAAAQUgR2AAAAAAAAQorADgAAAAAAQEgR\n2AEAAAAAAAiptNzuvE6dOoHHWrVqldS5lixZYk1v0aJF4Hs2b95sTd++fbs1vUCBAtb0L774IvAz\natSoYU0vXrx44HuAMKtZs2bgsR07dljTJ06cmItXhKgoWbKkNX3kyJF/+7UAqXTppZda0wsWLJjW\nW0jLDTfcYE3v0KFDLl4Roi6onv7SSy8lfa4XX3zRmv76669b03fu3Jn0Z+DIdPzxxyfVbg3a2nvD\nhg2Bn5Hu25ovWLAgqTqf1K5d25q+fPly50jAiB0AAAAAAICQIrADAAAAAAAQUgR2AAAAAAAAQorA\nDgAAAAAAQEgR2AEAAAAAAAiptNwVq2zZsoHHMjIyklpFPGjHiPXr1zup0rNnT2t6lSpVkj7X1KlT\nU3BFwOFTrVo1a3q3bt0C3zN69OhcvCJEQffu3QOPXXHFFdb0c88918lt9evXt6bnyWPvl/nmm28C\nzzVr1qyUXRfCJV8+e3WvadOmTjoL2vVE7rrrLmt6kSJFktp9EUhFmX7CCSck/UWOGTPGmr5r1y7+\nUdJAiRIlAo+NHTvWml6sWLGkdl3717/+5aS73r17W9NPPvlka3rXrl0Dz3Wk7H4VhBE7AAAAAAAA\nIUVgBwAAAAAAIKQI7AAAAAAAAIQUgR0AAAAAAICQIrADAAAAAAAQUmm5K9b7778feOzUU0+1pm/b\nts2a/scffzi5rUOHDtb0/Pnz5/pnA0eaM844I6mdShLtDgBk17PPPht47MCBA4fti2zdunVS6atX\nrw48V/v27ZPeOQjpoWHDhtb0888/35o+YMAAJx0cf/zxgceCdh4tXLiwNZ1dsZCMggULWtMffPDB\nlH2RQTuCuq6bss/A4VOrVq3AYw0aNEjqXH379nXSWdWqVZPefXrixIlp16ZgxA4AAAAAAEBIEdgB\nAAAAAAAIKQI7AAAAAAAAIUVgBwAAAAAAIKQI7AAAAAAAAIQUgR0AAAAAAICQSsvtzhNJtBVsbuvV\nq5c1/fTTT0/6XF9++WVS6UBY3HPPPUnfu/Pnz8/FK0I6mTZtmjU9T57D28/x+++/W9O3b99uTa9Q\noYI1/eSTTw78jK+++sqanjdv3mxdI45s1apVCzw2ZswYa/qKFSus6U888YSTDlq2bHm4LwERVb16\ndWt67dq1kzrPvn37Ao998MEHSV8XjjylSpWyprdp0ybpc914443W9E2bNjnpvK35J598kvS5grY7\n37ZtmxNWjNgBAAAAAAAIKQI7AAAAAAAAIUVgBwAAAAAAIKQI7AAAAAAAAIQUgR0AAAAAAICQityu\nWH+H5s2bW9P79u1rTS9QoIA1fePGjYGfcf/991vT//rrr2xdI3C4VaxY0Zpep04da/qPP/4YeK4d\nO3ak7LqQHi666CJreuXKla3pBw4cCDxXomPJGDZsWOCxjz/+2Jq+detWa/rFF19sTX/wwQeTvq5b\nb73Vmj506NCkz4XDp3fv3oHHihQpYk1v0qRJUruxHamKFSuWVDmQyvsaSNWORsk8G5A+nnnmGWv6\n1VdfHfieBQsWWNPfffddJ53Vq1fPml66dOnA94wYMcKa/uabbzrphhE7AAAAAAAAIUVgBwAAAAAA\nIKQI7AAAAAAAAIQUgR0AAAAAAICQIrADAAAAAAAQUuyKlQuCdvUJ2v0qyNixYwOPzZw5M+nrAo4k\niXYrsdm0aVOuXQvSb3e1t99+25peokSJlH326tWrrenjx4+3pj/66KOB50p2R8Ogz+7SpUvge0qW\nLGlNHzBggDX9qKOOsqa/+OKLgZ+xd+/ewGNIjbZt21rTmzZtGvie5cuXW9Pnz5+fFv8sQbvBJdr5\n6rPPPrOm//nnnym7LkRX/fr1k3r9nj17UrbTIcLFdd2ky69ff/01qXx0pCpUqJA1/YEHHrCm33bb\nbUl9h3LDDTc4UcGIHQAAAAAAgJAisAMAAAAAABBSBHYAAAAAAABCisAOAAAAAABASBHYAQAAAAAA\nCCl2xcqhSZMmBR5r3LhxUucaNWqUNb13795JXxcQFtWrV0/q9UE79yDa8uXLl+u7XwXtQtihQwdr\n+ubNm53cFrQrVv/+/QPfM2jQIGt64cKFk7rnJk+eHPgZK1asCDyG1GjXrl1S/47y0ksvpfUueJ06\ndbKm79+/P/Bc/fr1s6azsxuy64ILLsjRMZsdO3ZY0xctWsQ/CA7SrFkz67fy8ccfJ7Xb39ChQw/r\nLrgNGjSwpv/jH/9I6jPGjRuX9HWlI0bsAAAAAAAAhBSBHQAAAAAAgJAisAMAAAAAABBSBHYAAAAA\nAABCisAOAAAAAABASBHYAQAAAAAACCm2O89C2bJlk97GsGDBgkltgRu05eb27duzujzgiBe0ZeH1\n119vTV+4cKE1ffr06Sm9LsBv/vz5gV/IDTfccNi2NU9Woq3Ig7aEPuecc3LxipBTRYsWTck2sH/X\nlrZ/hy5duljTS5QoYU1ftmxZ4LlmzJiRsutCNKWy7EyXexTJGzx4sDW9YcOGge8pV66cNb1+/frW\n9IyMDGt6ixYtnNwW9Nnium5S51q5cqU1/YEHHkj6utIRI3YAAAAAAABCisAOAAAAAABASBHYAQAA\nAAAACCkCOwAAAAAAACFFYAcAAAAAACCk2BUrC+PHj7emFy9ePOkv+80337Smr1ixIulzAWHRqFEj\na3qxYsWs6R9++KE1fdeuXSm9LqS3PHmS67c477zznHSQaPeJoO8k2e/qkUceCTx2zTXXJHUuOEnv\nsFm+fHlr+pgxY9L+66xUqVJSr1+8eHGuXQtQp06dpL+EP//805rOrljRtWDBAmv6WWedFfiemjVr\nWtObNGliTe/Vq5c1fdOmTYGfMXLkSCcVRo8eHXjsm2++Sepcc+fOtabTlv4/jNgBAAAAAAAIKQI7\nAAAAAAAAIUVgBwAAAAAAIKQI7AAAAAAAAIQUgR0AAAAAAICQYles/69FixbWL6hWrVpJf6mfffaZ\nNb1Pnz5JnwsIuxo1aljTXde1po8bNy6Xrwjp5JZbbrGmHzhwwImiyy+/PPDY2WefndR3FZSeaFcs\npM62bdus6YsWLUp6B5WgXQj/+OMP50hUqlQpa3rbtm2TOs+cOXNSdEWIsrp161rTO3bsmPS5tm7d\nak1ft25d0udCetuyZUvgsRkzZiSVfu+99zqHyymnnJL0Tp5Bz7m77747ZdeVjhixAwAAAAAAEFIE\ndgAAAAAAAEKKwA4AAAAAAEBIEdgBAAAAAAAIKQI7AAAAAAAAIRW5XbGKFy9uTX/ggQes6fnz50/6\nM4JW8t6+fXvS5wLCoEyZMoHH6tWrZ03/4YcfrOkTJ05M2XUh2rtApYOSJUta06tUqZLUsywnNm3a\nZE3fu3dvyj4DwXbu3GlNX7FihTW9TZs2geeaOnWqNX3QoEG5/k9QrVq1pHdKqVixYlK7KQaJ6u54\n+HvaDnnyJN8/Pn369BRcERAeDz/8cOCxoDI9aBevoHoJ/g8jdgAAAAAAAEKKwA4AAAAAAEBIEdgB\nAAAAAAAIKQI7AAAAAAAAIUVgBwAAAAAAIKQI7AAAAAAAAIRU5LY779mzpzX9nHPOSeo8kyZNCjzW\np0+fpK8LCLPrrrsu8FipUqWs6R988EEuXhGQHh588EFr+u23356yz1i1apU1vXPnztb0NWvWpOyz\nkbygOkZGRkbge5o1a2ZNHzNmTK7/E2zevDnprctLlCiRks8eMWJESs6DaGvbtm3S7/nzzz+t6S+/\n/HIKrgg48rRr186afu211wa+Z9u2bdb033//PWXXFSWM2AEAAAAAAAgpAjsAAAAAAAAhRWAHAAAA\nAAAgpAjsAAAAAAAAhBSBHQAAAAAAgJCK3K5Yd911V0rO061bt8Bj27dvT8lnAGFRoUKFpN+zZcuW\nXLkWIIymTZtmTa9cuXKuf/bSpUut6XPmzMn1z0byvv/+e2v6lVdeGfiemjVrWtNPPfXUXP8nGDdu\nXNLvGTlypDW9U6dOSZ1n586dSX82ouuEE06wpnfs2DHpc61bt86aPn/+/KTPBYTBZZddlvR7pkyZ\nYk3/+uuvU3BF0cOIHQAAAAAAgJAisAMAAAAAABBSBHYAAAAAAABCisAOAAAAAABASBHYAQAAAAAA\nCKnI7YqVKsWKFQs8tnfv3lz//K1btyb12fnz57emFy1aNOnPPu6443J1xzHZv3+/Nf3ee+8NfM9f\nf/2Vss9Hcpo3b570V/b+++/zNeOQZWRkWNPz5MmT67s5DB8+3Jperly5pM8VdL0HDhxwctvll1+e\n65+Bw2vRokVJpR9uK1euTMl5qlWrFnhs8eLFKfkMpI8LLrggJc8TmTRpUgquCAiPoHrUjh07At/z\nzDPP5OIVRQ8jdgAAAAAAAEKKwA4AAAAAAEBIEdgBAAAAAAAIKQI7AAAAAAAAIUVgBwAAAAAAIKTY\nFSuHvv32W+dwevfdd63p69evt6aXLl3amt6+fXsnTH777bfAY48//vjfei1RVLduXWt6mTJl/vZr\nAWTo0KHWL2LAgAFJfUFTpkwJPJbszlSp3MkqlecaNmxYys4FHI7d7oLSg7DzFZJRvHjxpF6/efPm\nwGODBw/my0dauuWWW5Jqa27cuDHwXF9//XXKrguM2AEAAAAAAAgtpmIBAAAAAACEFIEdAAAAAACA\nkCKwAwAAAAAAEFIEdgAAAAAAAEKKwA4AAAAAAEBIRW6782nTplnTW7Zs6YRJu3btcv0z9u3bl7Lt\ndydPnmxNnz9/flLnmT17dtKfjdRp1aqVNT1v3ryB71m4cKE1fdasWSm7LkTXhAkTrOm9evWyppcs\nWdIJk02bNlnTly1bZk3v0qVL4LnWr1+fsusCcpPrukmlA6lw6aWXJvX6NWvWBB7bunVrCq4ICM92\n50Hl89SpU5P+jGOOOcaafvzxxyd9L0YJI3YAAAAAAABCisAOAAAAAABASBHYAQAAAAAACCkCOwAA\nAAAAACFFYAcAAAAAACCkIrcrVuvWra3p99xzjzU9f/78KfvsqlWrWtPbt2+fss94/fXXremrVq1K\n+lzjx4+3pn///fdJnwvhUrhwYWt606ZNkz7XuHHjrOn79+9P+lxAvNWrV1u/lA4dOljTr7jiCmt6\njx49jsgv9/HHH7emDxky5G+/FuDvctRRRyX1+p07d+batSD9BNXtK1WqlNR5du3aFXhs7969SV8X\nkI4S1fc7depkTb/zzjut6UuWLLGmd+7cOYdXl14YsQMAAAAAABBSBHYAAAAAAABCisAOAAAAAABA\nSBHYAQAAAAAACCkCOwAAAAAAACGV4bqum60XZmTk/tUAuSCbWfwgUc7zQTtGzJw505q+cePGwHN1\n7NjRmv7XX3/l8OqQW3k+yvm+SZMmgce6dOliTb/88sut6ZMnT7amDx8+POnvfenSpdb0NWvWBJ4r\nqijr08dvv/1mTc+Xz76Z62OPPWZNHzx4sJPuyPfJy5s3rzX91VdftaZfd9111vRRo0YFfga79OQe\n6jiH16JFi6zp1atXT7peGfRv+dprryVV1q9du9ZJd9nJ94zYAQAAAAAACCkCOwAAAAAAACFFYAcA\nAAAAACCkCOwAAAAAAACEFIEdAAAAAACAkGJXLKQ9doxA1LBjBKKIsj59vP/++9b0QYMGWdNnzJjh\nRBX5PnXKlStnTe/Xr581fcGCBYHnGjJkSMquC5lRxzm86tata03v27evNX3WrFmB5xo6dKg1fcuW\nLdb0PXv2OFHlsisWAAAAAABA+mIqFgAAAAAAQEgR2AEAAAAAAAgpAjsAAAAAAAAhRWAHAAAAAAAg\npAjsAAAAAAAAhBTbnSPtsRUoooatQBFFlPWIIvI9ooY6DqLIZbtzAAAAAACA9MVULAAAAAAAgJAi\nsAMAAAAAABBSBHYAAAAAAABCisAOAAAAAABASBHYAQAAAAAACCkCOwAAAAAAACFFYAcAAAAAACCk\nCOwAAAAAAACEFIEdAAAAAACAkCKwAwAAAAAAEFIEdgAAAAAAAEKKwA4AAAAAAEBIEdgBAAAAAAAI\nKQI7AAAAAAAAIUVgBwAAAAAAIKQI7AAAAAAAAIRUhuu67uG+CAAAAAAAACSPETsAAAAAAAAhRWAH\nAAAAAAAgpAjsAAAAAAAAhBSBHQAAAAAAgJAisAMAAAAAABBSBHYAAAAAAABCisAOAAAAAABASBHY\nAQAAAAAACCkCOwAAAAAAAE44/T8A5oVj3U6R/AAAAABJRU5ErkJggg==\n"
          }
        }
      ],
      "source": [
        "forgotten = np.flatnonzero(mask_a & (test_predictions_after_a == test_labels)\n",
        "                           & (test_predictions_sequential != test_labels))[:6]\n",
        "if len(forgotten):\n",
        "    fig, axes = plt.subplots(1, len(forgotten), figsize=(2*len(forgotten), 2.6), squeeze=False)\n",
        "    for ax, index in zip(axes[0], forgotten):\n",
        "        ax.imshow(test_images[index], cmap='gray')\n",
        "        ax.set_title(f'Vrai : {test_labels[index]}\\nAprès A : {test_predictions_after_a[index]}\\nAprès B : {test_predictions_sequential[index]}', fontsize=10)\n",
        "        ax.axis('off')\n",
        "    fig.tight_layout()\n",
        "    plt.show()\n",
        "else:\n",
        "    print('Aucune image A correctement prédite au départ n\\'est devenue incorrecte dans cette exécution.')"
      ],
      "id": "308323f9"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Les entrées et leurs étiquettes n’ont pas changé. Les paramètres ont\n",
        "changé pendant la poursuite de l’entraînement. Dans cet exemple aux\n",
        "classes disjointes, la baisse peut comprendre un fort biais vers les\n",
        "classes récentes et des changements des représentations partagées; elle\n",
        "ne prouve pas que toutes les anciennes représentations utiles ont été\n",
        "effacées.\n",
        "\n",
        "## Quelles conséquences pour les modèles déployés?\n",
        "\n",
        "Faire une prédiction avec un modèle entraîné laisse habituellement ses\n",
        "poids fixes. L’apprentissage exige un processus explicite de mise à\n",
        "jour. L’oubli catastrophique peut survenir pendant l’apprentissage en\n",
        "ligne (*online learning*) ou l’ajustement fin (*fine-tuning*) périodique\n",
        "par lots, lorsque les nouvelles mises à jour ne protègent pas le\n",
        "comportement antérieur.\n",
        "\n",
        "Des réseaux en production peuvent apprendre en ligne;\n",
        "<a href=\"https://arxiv.org/abs/2209.07663\" class=\"external\"\n",
        "data-icon=\"true\">Monolith</a> est un exemple de recommandation en temps\n",
        "réel. Il faut donc concevoir et évaluer soigneusement les mises à jour,\n",
        "plutôt que conclure que l’apprentissage en ligne serait impossible. La\n",
        "<a\n",
        "href=\"https://developers.google.com/machine-learning/crash-course/production-ml-systems/static-vs-dynamic-training\"\n",
        "class=\"external\" data-icon=\"true\">discussion de Google sur les systèmes\n",
        "d’apprentissage en production</a> distingue l’entraînement statique et\n",
        "dynamique.\n",
        "\n",
        "Le rejeu réintroduit explicitement un objectif sur les anciennes\n",
        "données. L2 habituelle centrée en zéro pénalise les grands poids; elle\n",
        "ne préserve pas explicitement les prédictions déjà apprises. Des\n",
        "méthodes comme la\n",
        "<a href=\"https://arxiv.org/abs/1612.00796\" class=\"external\"\n",
        "data-icon=\"true\">consolidation élastique des poids</a> utilisent\n",
        "d’autres mécanismes pour protéger les acquis. Aucune méthode\n",
        "d’apprentissage continu n’est ici implémentée ou présentée comme\n",
        "universellement supérieure.\n",
        "\n",
        "Pour réfléchir : pourquoi l’exactitude sur B peut-elle augmenter pendant\n",
        "que celle sur A diminue? Pourquoi la seule exactitude moyenne ne\n",
        "suffit-elle pas? Qu’est-ce qui change lorsque d’anciens exemples\n",
        "occupent une partie du budget fixe de mises à jour de phase B?\n",
        "\n",
        "[Retour à la présentation 14](index.qmd)."
      ],
      "id": "6f09e9da-3d6b-4620-acdc-bd40b0cccd42"
    }
  ],
  "nbformat": 4,
  "nbformat_minor": 5,
  "metadata": {
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3 (ipykernel)",
      "language": "python",
      "path": "/Users/turcotte/.virtualenvs/csi4106/share/jupyter/kernels/python3"
    }
  }
}