Une couche dans un réseau de neurones sans un biais n'est rien de plus que la multiplication d'un vecteur d'entrée par une matrice. (Le vecteur de sortie pourrait être passé à travers une fonction sigmoïde pour normalisation et pour une utilisation dans un ANN multi-couches par la suite, mais ce n'est pas important.)
Cela signifie que vous utilisez une fonction linéaire et donc une entrée de tous zéros sera toujours mappée vers une sortie de tous zéros. Cela pourrait être une solution raisonnable pour certains systèmes mais en général c'est trop restrictif.
En utilisant un biais, vous ajoutez effectivement une autre dimension à votre espace d'entrée, qui prend toujours la valeur un, donc vous évitez un vecteur d'entrée de tous zéros. Vous ne perdez pas en généralité par cela car votre matrice de poids entraînée n'a pas besoin d'être surjective, donc elle peut toujours mapper à toutes les valeurs précédemment possibles.
RNA 2D :
Pour un RNA qui mappe deux dimensions à une dimension, comme dans la reproduction des fonctions ET ou OU (ou XOR), vous pouvez penser à un réseau neuronal comme faisant ce qui suit :
Sur le plan 2D, marquez toutes les positions des vecteurs d'entrée. Ainsi, pour les valeurs booléennes, vous voudriez marquer (-1,-1), (1,1), (-1,1), (1,-1). Ce que votre RNA fait maintenant est de tracer une ligne droite sur le plan 2D, séparant les valeurs de sortie positives des valeurs de sortie négatives.
Sans biais, cette ligne droite doit passer par zéro, tandis qu'avec un biais, vous êtes libre de la placer n'importe où. Ainsi, vous verrez que sans biais, vous rencontrez un problème avec la fonction ET, puisque vous ne pouvez pas mettre à la fois (1,-1) et (-1,1) du côté négatif. (Ils ne sont pas autorisés à être sur la ligne.) Le problème est le même pour la fonction OU. Avec un biais, cependant, il est facile de tracer la ligne.
Notez que la fonction XOR dans cette situation ne peut pas être résolue même avec un biais.
19 votes
Consultez cette question : stackoverflow.com/questions/1697243/help-with-perceptron pour un exemple d'un problème réel où l'OP n'utilisait pas un terme de biais.
7 votes
Et voici un bel exemple en Python de pourquoi le biais est important :) stackoverflow.com/questions/38248657/…
3 votes
Voici un excellent article rempli de mathématiques sur la rétropropagation, incluant également les mises à jour de biais : theclevermachine.wordpress.com/2014/09/06/…