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 .
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
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:
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
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.)
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.
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?
Para mudar a função de entrada / ser mais flexível sobre a função aprendida.
Um único nó de polarização por camada.
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.
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.
Respostas:
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 .1 0 0 0
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,x1 x2 y x1 x2 . 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=0 0 w1 w2 o 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=0 j Nj+1 Nj+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:
fonte
Respostas simples e curtas:
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.
fonte
1
valor constante na camada anterior e um peso (um valor de viés) para cada neurônio das próximas camadas.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.
fonte