Quel est le rôle du biais dans les réseaux de neurones?


807

Je connais la descente de gradient et l'algorithme de rétropropagation. Ce que je ne comprends pas, c'est: quand est-il important d'utiliser un biais et comment l'utilisez-vous?

Par exemple, lors du mappage de la ANDfonction, lorsque j'utilise 2 entrées et 1 sortie, elle ne donne pas les poids corrects, cependant, lorsque j'utilise 3 entrées (dont 1 est un biais), elle donne les poids corrects.


17
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 de terme biaisé
Amro

6
Et voici un bel exemple en Python de la raison pour laquelle le biais est important :) stackoverflow.com/questions/38248657/…
minéraux

3
voici un excellent article plein de mathématiques backprop, couvrant également les mises à jour de biais: theclevermachine.wordpress.com/2014/09/06/…
Andy

Réponses:


1361

Je pense que les biais sont presque toujours utiles. En effet, une valeur de biais vous permet de décaler la fonction d'activation vers la gauche ou la droite , ce qui peut être critique pour un apprentissage réussi.

Il pourrait être utile d'examiner un exemple simple. Considérez ce réseau à 1 entrée et 1 sortie qui n'a pas de biais:

réseau simple

La sortie du réseau est calculée en multipliant l'entrée (x) par le poids (w 0 ) et en passant le résultat par une sorte de fonction d'activation (par exemple une fonction sigmoïde).

Voici la fonction que ce réseau calcule, pour différentes valeurs de w 0 :

sortie réseau, avec différents poids w0

La modification du poids w 0 modifie essentiellement la "pente" du sigmoïde. C'est utile, mais que se passe-t-il si vous souhaitez que le réseau génère 0 lorsque x est 2? Changer simplement la pente du sigmoïde ne fonctionnera pas vraiment - vous voulez pouvoir déplacer la courbe entière vers la droite .

C'est exactement ce que le biais vous permet de faire. Si nous ajoutons un biais à ce réseau, comme ceci:

réseau simple avec un biais

... alors la sortie du réseau devient sig (w 0 * x + w 1 * 1.0). Voici à quoi ressemble la sortie du réseau pour différentes valeurs de w 1 :

sortie réseau, avec différents poids w1

Avoir un poids de -5 pour w 1 décale la courbe vers la droite, ce qui nous permet d'avoir un réseau qui produit 0 lorsque x est 2.


6
@ user1621769: L'approche la plus simple est un réseau avec un nœud de polarisation unique qui se connecte à tous les nœuds non entrants du réseau.
Nate Kohl

65
@ user1621769: La fonction principale d'un biais est de fournir à chaque nœud une valeur constante entraînable (en plus des entrées normales que le nœud reçoit). Vous pouvez y parvenir avec un nœud de polarisation unique avec des connexions à N nœuds, ou avec N nœuds de polarisation chacun avec une connexion unique; le résultat devrait être le même.
Nate Kohl

4
@ user1621769: Vous ne tenez peut-être pas compte des pondérations? Chaque connexion a une pondération entraînable et le nœud de polarisation a une valeur fixe.
Dimpl

4
@ user132458, si l'algorithme d'apprentissage détermine que vous n'avez pas besoin du décalage de polarisation, les pondérations de polarisation approcheront probablement de 0. Éliminant ainsi le signal de polarisation.
jorgenkg

8
@Gabriel: Il devrait y avoir un biais par neurone caché.

343

Juste pour ajouter mes deux cents.

Une façon plus simple de comprendre ce qu'est le biais: il est en quelque sorte similaire à la constante b d'une fonction linéaire

y = ax + b

Il vous permet de déplacer la ligne vers le haut et vers le bas pour mieux adapter la prédiction aux données. Sans b, la ligne passe toujours par l'origine (0, 0) et vous pouvez obtenir un ajustement moins bon.


5
belle anologie mais si nous fixons le biais à 1, alors pourquoi cela fait-il une différence dans l'ajustement maintenant que chaque ligne passera maintenant par (0,1) au lieu de (0,0)? Comme toutes les lignes sont maintenant biaisées à y = 1 au lieu de y = 0 pourquoi est-ce utile?
ciel bleu

36
@ blue-sky Parce qu'en multipliant un biais par un poids, vous pouvez le déplacer d'une quantité arbitraire.
Carcigenicate

3
Est-il correct d'appeler b un "coefficient"? Un "coefficient" n'est-il pas un nombre utilisé pour multiplier une variable?
Ben

8
b n'est pas un «coefficient» mais plutôt une interception.
Espanta

22
b est le coefficient de $ x ^ 0 $. a est le coefficient de $ x ^ 1 $

65

Ce fil m'a vraiment aidé à développer mon propre projet. Voici quelques illustrations supplémentaires montrant le résultat d'un simple réseau neuronal à 2 couches avec et sans unités de biais sur un problème de régression à deux variables. Les poids sont initialisés de façon aléatoire et l'activation standard de ReLU est utilisée. Comme l'ont conclu les réponses avant moi, sans biais, le réseau ReLU n'est pas en mesure de dévier de zéro à (0,0).

entrez la description de l'image ici

entrez la description de l'image ici


1
Pouvez-vous ajouter la fonction tracée avec des étiquettes d'axe?
Komal-SkyNET

46

Deux types de paramètres différents peuvent être ajustés pendant l'entraînement d'un ANN, les poids et la valeur des fonctions d'activation. Ceci n'est pas pratique et il serait plus facile si un seul des paramètres devait être ajusté. Pour faire face à ce problème, un neurone de polarisation est inventé. Le neurone de polarisation se trouve dans une couche, est connecté à tous les neurones de la couche suivante, mais aucun dans la couche précédente et il en émet toujours 1. Comme le neurone de polarisation émet 1, les poids, connectés au neurone de polarisation, sont ajoutés directement à la somme combinée des autres poids (équation 2.1), tout comme la valeur t dans les fonctions d'activation. 1

La raison pour laquelle cela n'est pas pratique est que vous ajustez simultanément le poids et la valeur, de sorte que toute modification du poids peut neutraliser la modification de la valeur qui était utile pour une instance de données précédente ... l'ajout d'un neurone de biais sans modification de la valeur permet vous de contrôler le comportement du calque.

De plus, le biais vous permet d'utiliser un seul réseau neuronal pour représenter des cas similaires. Considérons la fonction booléenne AND représentée par le réseau neuronal suivant:

ANN
(source: aihorizon.com )

  • w0 correspond à b .
  • w1 correspond à x1 .
  • w2 correspond à x2 .

Un seul perceptron peut être utilisé pour représenter de nombreuses fonctions booléennes.

Par exemple, si nous supposons des valeurs booléennes de 1 (vrai) et -1 (faux), alors une façon d'utiliser un perceptron à deux entrées pour implémenter la fonction ET est de définir les poids w0 = -3 et w1 = w2 = .5. Ce perceptron peut être fait pour représenter la fonction OU à la place en modifiant le seuil à w0 = -.3. En fait, AND et OR peuvent être considérés comme des cas particuliers de fonctions m-de-n: c'est-à-dire des fonctions où au moins m des n entrées du perceptron doivent être vraies. La fonction OU correspond à m = 1 et la fonction ET à m = n. Toute fonction m-of-n est facilement représentée à l'aide d'un perceptron en définissant tous les poids d'entrée à la même valeur (par exemple, 0,5), puis en définissant le seuil w0 en conséquence.

Les perceptrons peuvent représenter toutes les fonctions booléennes primitives AND, OR, NAND (1 AND) et NOR (1 OR). Apprentissage automatique - Tom Mitchell)

Le seuil est le biais et w0 est le poids associé au neurone de biais / seuil.


8
Considérez-le comme une règle générale: ajoutez des biais! Les réseaux de neurones sont "imprévisibles" dans une certaine mesure, donc si vous ajoutez un neurone de biais, vous êtes plus susceptible de trouver des solutions plus rapidement que si vous n'avez pas utilisé de biais. Bien sûr, ce n'est pas prouvé mathématiquement, mais c'est ce que j'ai observé dans la littérature et en général.
Kiril

25

Le biais n'est pas un NN terme, c'est un terme d'algèbre générique à considérer.

Y = M*X + C (équation en ligne droite)

Maintenant, si C(Bias) = 0alors, la ligne passera toujours par l'origine, c'est (0,0)-à- dire , et ne dépend que d'un paramètre, c'est-à-direM -à- qui est la pente, nous avons donc moins de choses à jouer.

C, qui est le biais prend n'importe quel nombre et a pour activité de déplacer le graphique, et donc capable de représenter des situations plus complexes.

Dans une régression logistique, la valeur attendue de la cible est transformée par une fonction de liaison pour limiter sa valeur à l'intervalle unitaire. De cette façon, les prédictions du modèle peuvent être considérées comme des probabilités de résultats primaires comme indiqué: Fonction sigmoïde sur Wikipedia

Il s'agit de la dernière couche d'activation de la carte NN qui active et désactive le neurone. Ici aussi, le biais a un rôle à jouer et il déplace la courbe avec souplesse pour nous aider à cartographier le modèle.


1
Quels sont donc les problèmes de formation / apprentissage des réseaux neuronaux lorsque la ligne passe toujours par l'origine lorsque le biais n'est pas utilisé?
Daniyal Javaid

@DaniyalJavaid Cela peut être une possibilité et non le problème
Pradi KL

23

Une couche dans un réseau neuronal sans biais n'est rien de plus que la multiplication d'un vecteur d'entrée avec une matrice. (Le vecteur de sortie peut être passé par une fonction sigmoïde pour la normalisation et pour une utilisation dans ANN à plusieurs 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 les zéros sera toujours mappée sur une sortie de tous les zéros. Cela peut être une solution raisonnable pour certains systèmes, mais en général, elle est trop restrictive.

En utilisant un biais, vous ajoutez effectivement une autre dimension à votre espace d'entrée, qui prend toujours la valeur une, de sorte que vous évitez un vecteur d'entrée de tous les zéros. Vous ne perdez aucune généralité par cela car votre matrice de poids entraînée n'a pas besoin d'être surjective, elle peut donc toujours correspondre à toutes les valeurs précédemment possibles.

2d ANN:

Pour un ANN mappant deux dimensions à une dimension, comme lors de la reproduction des fonctions AND ou OR (ou XOR), vous pouvez penser à un réseau neuronal comme suit:

Sur le plan 2D, marquez toutes les positions des vecteurs d'entrée. Ainsi, pour les valeurs booléennes, vous souhaitez marquer (-1, -1), (1,1), (-1,1), (1, -1). Ce que fait maintenant votre ANN, c'est de tracer une ligne droite sur le plan 2D, en séparant la sortie positive des valeurs de sortie négatives.

Sans biais, cette ligne droite doit passer par zéro, alors qu'avec le biais, vous êtes libre de la mettre n'importe où. Donc, vous verrez que sans biais, vous rencontrez un problème avec la fonction ET, car vous ne pouvez pas mettre les deux (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.


4
Si vous utilisez une fonction de transfert sigmoïde, vous introduisez la non-linéarité. Affirmer qu'il s'agit d'une fonction linéaire est erroné et aussi en quelque sorte dangereux, car la non-linéarité du sigmoïde est la clé de la solution de plusieurs problèmes. Aussi, sigmoïde (0) = 0,5, et il n'y a pas de x pour lequel sigmoïde (x) = 0.
bayer

2
Oui, mais c'est 0,5 pour toute entrée de 0 sans biais, quelle que soit la fonction linéaire avant. Et c'est le point. Normalement, vous ne formez pas votre fonction sigmoïde, vous vivez simplement avec. Le problème de linéarité se produit bien avant la fonction sigmoïde.
Debilski

Je comprends votre point de vue: la couche n'est pas en mesure d'apprendre une sortie différente pour 0 que celle avec laquelle elle a commencé. C'est correct et important. Cependant, "l'argument de la fonction linéaire" ne s'applique tout simplement pas à mon avis. Même avec un biais, la fonction est toujours linéaire. La propriété de linéarité est trompeuse ici. (Oui, je pourrais être tatillonne.)
bayer

Je dirais qu'avec un biais c'est affine . ( en.wikipedia.org/wiki/Affine_transformation#Representation )
Debilski

Oui, tu as raison. Merci de m'avoir signalé cette différence. (Pourquoi l'appelle-t-on alors régression linéaire, btw, bien qu'elle soit affine?)
bayer

20

Lorsque vous utilisez des ANN, vous connaissez rarement les caractéristiques internes des systèmes que vous souhaitez apprendre. Certaines choses ne peuvent être apprises sans parti pris. Par exemple, jetez un œil aux données suivantes: (0, 1), (1, 1), (2, 1), essentiellement une fonction qui mappe n'importe quel x à 1.

Si vous avez un réseau à une couche (ou un mappage linéaire), vous ne pouvez pas trouver de solution. Cependant, si vous avez un biais c'est trivial!

Dans un cadre idéal, un biais pourrait également mapper tous les points à la moyenne des points cibles et laisser les neurones cachés modéliser les différences à partir de ce point.


18

La modification des poids des neurones à elle seule ne sert qu'à manipuler la forme / courbure de votre fonction de transfert, et non son point de croisement équilibre / zéro .

L'introduction de biais neurones vous permet de décaler la courbe de la fonction de transfert horizontalement (gauche / droite) le long de l'axe d'entrée tout en laissant la forme / courbure inchangée. Cela permettra au réseau de produire des sorties arbitraires différentes des valeurs par défaut et vous pourrez donc personnaliser / décaler le mappage entrée-sortie pour répondre à vos besoins particuliers.

Voir ici pour l'explication graphique: http://www.heatonresearch.com/wiki/Bias


16

Juste pour ajouter à tout cela quelque chose qui manque beaucoup et que le reste, très probablement, ne savait pas.

Si vous travaillez avec des images, vous préférerez peut-être ne pas utiliser de biais du tout. En théorie, de cette façon, votre réseau sera plus indépendant de la magnitude des données, comme si l'image est sombre ou claire et vive. Et le réseau va apprendre à faire son travail en étudiant la relativité à l'intérieur de vos données. Beaucoup de réseaux de neurones modernes l'utilisent.

Pour d'autres données, les biais peuvent être critiques. Cela dépend du type de données que vous traitez. Si vos informations sont invariables en magnitude --- si la saisie de [1,0,0,1] doit conduire au même résultat que si vous saisissez [100,0,10], vous pourriez être mieux sans biais.


vous êtes probablement mieux avec la normalisation. Quel est l'exemple d'un réseau moderne qui utilise le «manque de biais» pour produire une invariance d'amplitude?
AwokeKnowing

@AwokeKnowing, je crois, le ResNet habituel utilise cela, car cela fait partie de son "initialisation", mais je ne suis pas exactement sûr qu'ils l'ont fait strictement dans ce but, ou, peut-être pour des considérations de taille / efficacité du modèle et je '' Je ne suis pas sûr que ce concept soit publié nulle part. Mais je pense que c'est tout à fait compréhensible sur le plan théorique. Si vous n'avez pas de biais qui ne soit pas mis à l'échelle, lorsque vous mettez à l'échelle des valeurs, toutes les sorties sont simplement mises à l'échelle en conséquence. Consciente ou non de ce concept, une grande partie des architectures modernes n'ont pas de biais au moins dans une grande partie de leurs structures.
Íhor Mé

16

Dans quelques expériences de ma thèse de maîtrise (par exemple, page 59), j'ai trouvé que le biais pouvait être important pour la ou les premières couches, mais surtout au niveau des couches entièrement connectées à la fin, il ne semble pas jouer un grand rôle.

Cela peut dépendre fortement de l'architecture / du jeu de données du réseau.


Cela semble tout à fait analogue au processus de modélisation des systèmes "à la main" avec régression linéaire. Le modèle le plus simple serait Y_bar = moyenne (Y). Ensuite, vous ajoutez de la complexité en incluant divers termes X, en vous arrêtant lorsqu'il n'y a pas de gain d'informations significatif.
IRTFM

15

Le biais décide de l'angle selon lequel vous souhaitez que votre poids tourne.

Dans un graphique à deux dimensions, le poids et le biais nous aident à trouver la limite de décision des sorties. Disons que nous devons construire ET fonctionner, la paire d'entrée (p) -sortie (t) doit être

{p = [0,0], t = 0}, {p = [1,0], t = 0}, {p = [0,1], t = 0}, {p = [1,1] , t = 1}

entrez la description de l'image ici

Maintenant, nous devons trouver la limite de décision, la limite de l'idée devrait être:

entrez la description de l'image ici

Voir? W est perpendiculaire à notre frontière. Ainsi, nous disons que W a décidé de la direction de la frontière.

Cependant, il est difficile de trouver un W correct au premier essai. Généralement, nous choisissons la valeur W d'origine au hasard. Ainsi, la première frontière peut être la suivante: entrez la description de l'image ici

Maintenant, la frontière est parallèle à l'axe y.

Nous voulons faire pivoter la frontière, comment?

En changeant le W.

Donc, nous utilisons la fonction de règle d'apprentissage: W '= W + P: entrez la description de l'image ici

W '= W + P est équivalent à W' = W + bP, tandis que b = 1.

Par conséquent, en changeant la valeur de b (biais), vous pouvez décider de l'angle entre W 'et W. C'est "la règle d'apprentissage de ANN".

Vous pouvez également lire Neural Network Design par Martin T. Hagan / Howard B. Demuth / Mark H. Beale, chapitre 4 "Perceptron Learning Rule"


1
Explication / illustration utile
javadba

10

En particulier, Nate réponse , de ZFY réponse et de Pradi réponse sont grands.

En termes plus simples, les biais permettent d' apprendre / stocker de plus en plus de variations de poids ... ( note latérale : parfois avec un certain seuil). Quoi qu'il en soit, plus de variations signifient que les biais ajoutent une représentation plus riche de l'espace d'entrée aux poids appris / stockés du modèle. (Où de meilleurs poids peuvent améliorer le pouvoir de devinette du réseau neuronal)

Par exemple, dans les modèles d'apprentissage, l'hypothèse / supposition est délimitée de manière souhaitable par y = 0 ou y = 1 étant donné une certaine entrée, peut-être une tâche de classification ... c'est-à-dire un y = 0 pour certains x = (1,1) et certains y = 1 pour certains x = (0,1). (La condition sur l'hypothèse / le résultat est le seuil dont j'ai parlé ci-dessus. Notez que mes exemples configurent les entrées X pour qu'elles soient chacune x = un vecteur double ou à 2 valeurs, au lieu des entrées x à valeur unique de Nate d'une collection X).

Si nous ignorons le biais, de nombreuses entrées peuvent finir par être représentées par un grand nombre des mêmes poids (c'est-à-dire que les poids appris se produisent principalement près de l'origine (0,0). Le modèle serait alors limité à des quantités plus faibles de bons poids, au lieu des nombreux autres bons poids, il pourrait mieux apprendre avec biais. (Lorsque les poids mal appris conduisent à de moins bonnes suppositions ou à une diminution du pouvoir de devinette du réseau neuronal)

Ainsi, il est optimal que le modèle apprenne à la fois près de l'origine, mais aussi, dans autant d'endroits que possible à l'intérieur de la frontière seuil / décision. Avec le biais, nous pouvons permettre des degrés de liberté proches de l'origine, mais non limités à la région immédiate de l'origine.


9

Développer sur l'explication @zfy ... L'équation pour une entrée, un neurone, une sortie devrait ressembler à:

y = a * x + b * 1    and out = f(y)

où x est la valeur du nœud d'entrée et 1 est la valeur du nœud de polarisation; y peut être directement votre sortie ou être passé dans une fonction, souvent une fonction sigmoïde. Notez également que le biais peut être n'importe quelle constante, mais pour simplifier tout, nous choisissons toujours 1 (et c'est probablement si courant que @zfy l'a fait sans le montrer ni l'expliquer).

Votre réseau essaie d'apprendre les coefficients a et b pour s'adapter à vos données. Vous pouvez donc voir pourquoi l'ajout de l'élément lui b * 1permet de mieux s'adapter à davantage de données: vous pouvez maintenant modifier la pente et l'interception.

Si vous avez plus d'une entrée, votre équation ressemblera à:

y = a0 * x0 + a1 * x1 + ... + aN * 1

Notez que l'équation décrit toujours un réseau de neurones, un réseau de sortie; si vous avez plus de neurones, vous ajoutez simplement une dimension à la matrice de coefficients, pour multiplexer les entrées vers tous les nœuds et résumer chaque contribution de nœud.

Que vous pouvez écrire au format vectorisé

A = [a0, a1, .., aN] , X = [x0, x1, ..., 1]
Y = A . XT

c'est-à-dire en mettant des coefficients dans un tableau et (entrées + biais) dans un autre, vous avez la solution souhaitée comme produit scalaire des deux vecteurs (vous devez transposer X pour que la forme soit correcte, j'ai écrit XT un «X transposé»)

Donc, à la fin, vous pouvez également voir votre biais comme une seule entrée de plus pour représenter la partie de la sortie qui est réellement indépendante de votre entrée.


Je semble me souvenir de la classe d'Andrew Ng que le parti pris a été omis dans une partie du processus de formation. pourriez-vous mettre à jour votre réponse pour expliquer que compte tenu de votre conclusion qu'il ne s'agit que d'une "autre entrée"?
AwokeKnowing

@AwokeKnowing Je ne m'en souviens pas de la classe d'Andrew Ng, mais c'était il y a quelques années. Le biais peut également être activé ou désactivé selon ce que vous essayez d'apprendre. J'ai lu que dans le traitement d'image, ils ne l'utilisaient pas pour permettre la mise à l'échelle. Pour moi, si vous l'utilisez, vous l'utilisez également à l'entraînement. L'effet est de stabiliser les coefficients lorsque tout ou partie des entrées est nulle ou presque nulle. Pourquoi n'utiliseriez-vous pas le biais pendant la formation, puis l'utiliser lors de l'utilisation du NN pour prédire les sorties pour de nouvelles entrées? Comment cela pourrait-il être utile?
RobMcZag

Non, c'était plus comme, utilisez-le dans la passe avant, mais ne l'utilisez pas lors du calcul du gradient pour backprop, ou quelque chose comme ça.
AwokeKnowing

@AwokeKnowing Je suppose que c'est un moyen d'économiser de la mémoire et du temps. Vous pouvez décider que vous ne vous souciez pas d'apprendre les coefficients des unités de biais. Cela peut être bien si vous avez au moins une couche cachée car le biais fournira une entrée à cette couche et la sortie peut être apprise par les coefficients de la première à la deuxième couche. Je ne sais pas si la vitesse de convergence va changer. Dans mon exemple d'une couche, vous êtes obligé d'apprendre également le coefficient de biais tel qu'il est appliqué à la sortie.
RobMcZag

Dans de nombreux problèmes simples, les données cibles ont été dégradées et mises à l'échelle, donc aucun biais n'est nécessaire et le potentiel d'influence aberrante excessive dans les variables avec de grandes plages est réduit.
IRTFM

9

Autre que les réponses mentionnées .. Je voudrais ajouter quelques autres points.

Le biais est notre point d'ancrage. C'est une façon pour nous d'avoir une sorte de référence où nous ne descendons pas en dessous. En termes de graphique, pensez à y = mx + b, c'est comme une ordonnée à l'origine de cette fonction.

sortie = entrée multiplie la valeur de poids et ajoute une valeur de biais , puis applique une fonction d'activation.


8

Pour penser de manière simple, si vous avez y = w1 * xy est votre sortie et w1 est le poids imaginez une condition où x = 0 alors y = w1 * x est égal à 0 , si vous voulez mettre à jour votre poids, vous avez pour calculer la quantité de changement par delw = target-y où target est votre sortie cible, dans ce cas, 'delw' ne changera pas puisque y est calculé comme 0. Donc, supposons que si vous pouvez ajouter une valeur supplémentaire, cela aidera y = w1 * x + w0 * 1 , où le biais = 1 et le poids peuvent être ajustés pour obtenir un biais correct.Considérez l'exemple ci-dessous.

En termes de ligne Slope-intercept est une forme spécifique d'équations linéaires.

y = mx + b

vérifier l'image

image

ici b est (0,2)

si vous voulez l'augmenter à (0,3) comment allez-vous le faire en changeant la valeur de b qui sera votre biais


7

Pour tous les livres ML que j'ai étudiés, le W est toujours défini comme l'indice de connectivité entre deux neurones, ce qui signifie que la connectivité plus élevée entre deux neurones, plus les signaux seront transmis du neurone de tir au neurone cible ou Y = w * Par conséquent, pour maintenir le caractère biologique des neurones, nous devons garder le 1> = W> = -1, mais dans la régression réelle, le W se retrouvera avec | W | > = 1 qui contredit le fonctionnement des neurones, je propose donc W = cos (thêta), tandis que 1> = | cos (thêta) | et Y = a * X = W * X + b tandis que a = b + W = b + cos (thêta), b est un entier


7

Dans les réseaux de neurones:

  1. Chaque neurone a un biais
  2. Vous pouvez afficher le biais comme seuil (valeurs généralement opposées de seuil)
  3. La somme pondérée des couches d'entrée + le biais décide de l'activation du neurone
  4. Le biais augmente la flexibilité du modèle.

En l'absence de biais, le neurone peut ne pas être activé en considérant uniquement la somme pondérée de la couche d'entrée. Si le neurone n'est pas activé, les informations de ce neurone ne passent pas par le reste du réseau neuronal.

La valeur du biais peut être apprise.

entrez la description de l'image ici

En effet, biais = - seuil. Vous pouvez penser au biais comme à la facilité avec laquelle le neurone émet un 1 - avec un très grand biais, il est très facile pour le neurone de sortir un 1, mais si le biais est très négatif, alors c'est difficile.

en résumé: le biais aide à contrôler la valeur à laquelle la fonction d'activation se déclenchera.

Suivez cette vidéo pour plus de détails

Quelques liens plus utiles:

geeksforgeeks

vers la datascience


1
Belle interprétation. Mais je ne sais pas comment le biais peut être appris (ou entraîné?). Dans un cas simple où la perte = ReLU (oméga * x + a), l'oméga de poids peut être entraîné par la règle de la chaîne, mais comment aentraîner le biais lorsque le gradient à aest toujours constant?
Libin Wen

4

Le terme biais est utilisé pour ajuster la matrice de sortie finale comme le fait l'ordonnée à l'origine. Par exemple, dans l'équation classique, y = mx + c, si c = 0, alors la ligne passera toujours par 0. L'ajout du terme de biais offre plus de flexibilité et une meilleure généralisation à notre modèle de réseau neuronal.


0

En général, dans l'apprentissage automatique, nous avons cette formule de base Bias-Variance Tradeoff Parce que dans NN nous avons un problème de sur-ajustement (problème de généralisation du modèle où de petits changements dans les données entraînent de grands changements dans le résultat du modèle) et à cause de cela nous avons une grande variance, introduisant un un petit biais pourrait aider beaucoup. Si l'on considère la formule au - dessus du compromis entre les biais et les écarts , où le biais est au carré, l'introduction d'un petit biais pourrait donc réduire considérablement la variance. Donc, introduisez un parti pris lorsque vous avez une grande variance et un danger de surajustement.


3
Les unités de biais et le compromis biais-variance sont des concepts distincts. La question concerne la première.
SigmaX

0

Le biais aide à obtenir une meilleure équation

Imaginez l'entrée et la sortie comme une fonction y = ax + bet vous devez mettre la bonne ligne entre l'entrée (x) et la sortie (y) pour minimiser l'erreur globale entre chaque point et la ligne, si vous gardez l'équation comme ceci y = ax, vous aurez un seul paramètre pour l'adaptation, même si vous trouvez le meilleur en aminimisant l'erreur globale, il sera un peu loin de la valeur souhaitée

Vous pouvez dire que le biais rend l'équation plus flexible pour s'adapter aux meilleures valeurs

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.