Por que os nós de viés são usados ​​em redes neurais?

29
  1. Por que os nós de viés são usados ​​em redes neurais?
  2. Quantos você deve usar?
  3. Em quais camadas você deve usá-las: todas as camadas ocultas e a camada de saída?
grmmhp
fonte
1
Esta questão é um pouco ampla para este fórum. Eu acho que seria melhor consultar um livro sobre redes neurais, como o Bishop Neural Networks for Pattern Recognition ou Hagan Neural Network Design .
Sycorax diz Restabelecer Monica
2
FTR, não acho que isso seja muito amplo.
gung - Restabelece Monica
1
FYI: Papel de Bias em Redes Neurais
Franck Dernoncourt

Respostas:

24

O nó de polarização em uma rede neural é um nó que está sempre 'ligado'. Ou seja, seu valor é definido como sem considerar os dados em um determinado padrão. É análogo à interceptação em um modelo de regressão e serve a mesma função. Se uma rede neural não tiver um nó de polarização em uma determinada camada, ela não poderá produzir saída na próxima camada que difere de 0 (na escala linear ou o valor que corresponde à transformação de 0 quando passada através de a função de ativação) quando os valores do recurso são 0 .1000

insira a descrição da imagem aqui

Considere-se um exemplo simples: Tem uma alimentação para a frente perceptron com 2 nós de entrada e x 2 , e um nó de saída y . x 1 e x 2 são recursos binários e configurados no nível de referência,x1x2yx1x2 . Multiplique esses 2 0 pelos pesos que quiser, w 1 e w 2 , some os produtos e passe-os pela função de ativação que você preferir. Sem um nó de viés, apenasumx1=x2=00w1w2o valor de saída é possível, o que pode resultar em um ajuste muito ruim. Por exemplo, usando uma função de ativação logística, deve ser 0,5 , o que seria terrível para classificar eventos raros.y.5

Um nó de polarização fornece flexibilidade considerável a um modelo de rede neural. No exemplo dado acima, a única proporção prevista possível sem um nó de polarização foi de , mas com um nó de polarização, qualquer proporção em ( 0 , 1 ) pode ser adequada para os padrões em que x 1 = x 2 = 0 . Para cada camada, j , na qual um nó de viés é adicionado, o nó de viés adicionará N j + 1 parâmetros / pesos adicionais a serem estimados (onde N j + 1 é o número de nós na camada j50%(0,1)x1=x2=0jNj+1Nj+1 ) Mais parâmetros a serem ajustados significa que levará proporcionalmente mais tempo para que a rede neural seja treinada. Também aumenta a chance de super ajuste, se você não tiver consideravelmente mais dados do que pesos a serem aprendidos. j+1

Com esse entendimento em mente, podemos responder suas perguntas explícitas:

  1. Nós de viés são adicionados para aumentar a flexibilidade do modelo para ajustar os dados. Especificamente, ele permite que a rede ajuste os dados quando todos os recursos de entrada são iguais a e muito provavelmente diminui o viés dos valores ajustados em outras partes do espaço de dados. 0
  2. Normalmente, um único nó de polarização é adicionado à camada de entrada e a todas as camadas ocultas em uma rede de feedforward. Você nunca adicionaria dois ou mais a uma determinada camada, mas pode adicionar zero. O número total é, portanto, determinado em grande parte pela estrutura da sua rede, embora outras considerações possam ser aplicadas. (Sou menos claro sobre como os nós de polarização são adicionados às estruturas de redes neurais além do feedforward.)
  3. Isso foi abordado principalmente, mas para ser explícito: você nunca adicionaria um nó de polarização à camada de saída; isso não faria nenhum sentido.
- Reinstate Monica
fonte
A CNN é diferente a esse respeito? desde quando adiciono viés às minhas camadas de conv, o desempenho (precisão) diminui! e quando eu os removo, ele realmente aumenta!
Rika
@ Hossein, não que eu saiba, mas você poderia fazer uma nova pergunta. Não sou muito especialista lá.
gung - Restabelecer Monica
Ainda precisaria de nós de viés se minhas entradas nunca chegarem a 0?
alec_djinn
1
@alec_djinn, sim. Certamente o modelo seria enviesado sem eles, mesmo que você nunca tenha 0 para um valor de entrada. Por analogia, pode ser útil ler: útil Quando está correto remover a interceptação em um modelo de regressão linear?
gung - Restabelece Monica
1
1
2

Respostas simples e curtas:

  1. Para mudar a função de entrada / ser mais flexível sobre a função aprendida.
  2. Um único nó de polarização por camada.
  3. Adicione-os a todas as camadas ocultas e à camada de entrada - com algumas notas de rodapé

Em algumas experiências em minha tese de mestrado (por exemplo, página 59), descobri que o viés pode ser importante para a (s) primeira (s) camada (s), mas especialmente nas camadas totalmente conectadas no final, parece não desempenhar um grande papel. Portanto, pode-se tê-los nas primeiras camadas e não nas últimas. Simplesmente treine uma rede, plote a distribuição de pesos dos nós de polarização e apare-os se os pesos parecerem muito próximos de zero.

Isso pode ser altamente dependente da arquitetura / conjunto de dados da rede.

Martin Thoma
fonte
nó de viés teria setas conectando a ele a partir da camada anterior? ou apenas contribui para a próxima camada, multiplicando seu valor "1" pelo peso na soma ponderada passada para a ativação. A resposta a isso economizará horas, por favor ajude
krupesh Anadkat 03/02
1
O viés é apenas um número adicionado à ativação das próximas camadas. Uma maneira de visualizá-lo é ter um 1valor constante na camada anterior e um peso (um valor de viés) para cada neurônio das próximas camadas.
Martin Thoma
2

No contexto de redes neurais, a Normalização em lote é atualmente o padrão-ouro para criar "nós de viés" inteligentes. Em vez de fixar o valor de polarização de um neurônio, você ajusta a covariância da entrada do neurônio. Portanto, em uma CNN, você aplicaria uma normalização em lote apenas entre a camada convolucional e a próxima camada totalmente conectada (por exemplo, ReLus). Em teoria, todas as camadas totalmente conectadas podem se beneficiar da Normalização em lote, mas isso na prática se torna muito caro de implementar, pois cada normalização em lote carrega seus próprios parâmetros.

Com relação ao motivo, a maioria das respostas já explicou que, em particular, os neurônios são suscetíveis a gradientes saturados quando a entrada leva a ativação ao extremo. No caso de ReLu, isso seria empurrado para a esquerda, dando um gradiente de 0. Em geral, quando você treina um modelo, você primeiro normaliza as entradas na rede neural. A Normalização em lote é uma maneira de normalizar as entradas dentro da rede neural, entre camadas.

Alex R.
fonte