From 2332e805e8027f60560d508127c7b4cfd2fd7190 Mon Sep 17 00:00:00 2001 From: Matthias Guillitte Date: Fri, 18 Sep 2026 14:12:23 +0200 Subject: [PATCH] Logarithmic error scale --- public/helptext/gradientdescent.md | 2 +- resources/js/components/PerceptronIterationsErrorsGraph.vue | 2 +- resources/js/pages/PerceptronViewer.vue | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/public/helptext/gradientdescent.md b/public/helptext/gradientdescent.md index 561f998..db5cb7c 100644 --- a/public/helptext/gradientdescent.md +++ b/public/helptext/gradientdescent.md @@ -59,7 +59,7 @@ Reprenons le dataset oblique afin de pouvoir comparer les résultats, et diminuo Puis cliquez sur "Lancer" tout en laissant les autres paramètres intacts. -On peut voir en dessous du tableau que l'entraînement s'est arrêté car le nombre maximal d'époques a été atteint. On pourrait l'augmenter (max 5000 pour mon petit serveur), mais ce serait du temps perdu. La solution du réseau est suffisante et il n'y aurait pas beaucoup de gain, même pour le triple d'itérations maximales en plus. Pour le prouver, cliquez sur le bouton `Afficher uniquement l'erreur quadratique moyenne`, la ligne que l'on peut voir ressemble fortement à la fonction logarithme $y = log(x^{-1})$. La progression de la descente du gradient est donc logarithmique ; les plus gros changements se font dans les premières époques. +On peut voir en dessous du tableau que l'entraînement s'est arrêté car le nombre maximal d'époques a été atteint. On pourrait l'augmenter (max 5000 pour mon petit serveur), mais ce serait du temps perdu. La solution du réseau est suffisante et il n'y aurait pas beaucoup de gain, même pour le triple d'itérations maximales en plus. Pour le prouver, cliquez sur le bouton `Afficher uniquement l'erreur quadratique moyenne`, la ligne que l'on peut voir ressemble fortement à la fonction logarithme $y = log(x^{-1})$ (attention à l'échelle qui est elle-même logarithmique). La progression de la descente du gradient est donc logarithmique ; les plus gros changements se font dans les premières époques. diff --git a/resources/js/components/PerceptronIterationsErrorsGraph.vue b/resources/js/components/PerceptronIterationsErrorsGraph.vue index f24e35d..bcb7d5b 100644 --- a/resources/js/components/PerceptronIterationsErrorsGraph.vue +++ b/resources/js/components/PerceptronIterationsErrorsGraph.vue @@ -113,8 +113,8 @@ const datasets = computed(() => { min: 0, }, y: { + type: !epochErrorOnly ? 'linear' : 'logarithmic', stacked: true, - beginAtZero: !props.isRegression, grid: { color: function (context) { if (context.tick.value == 0) { diff --git a/resources/js/pages/PerceptronViewer.vue b/resources/js/pages/PerceptronViewer.vue index 2efa7e0..38753c9 100644 --- a/resources/js/pages/PerceptronViewer.vue +++ b/resources/js/pages/PerceptronViewer.vue @@ -14,6 +14,7 @@ import { ScatterController, LineController, BarController, + LogarithmicScale, } from 'chart.js'; import { ArrowDown, ArrowUp } from 'lucide-vue-next'; import { computed, nextTick, ref, watch } from 'vue'; @@ -52,7 +53,8 @@ ChartJS.register( LineElement, ScatterController, LineController, - BarController + BarController, + LogarithmicScale ); ChartJS.defaults.font.size = 16; ChartJS.defaults.color = '#FFF';