- Por que os nós de viés são usados em redes neurais?
- Quantos você deve usar?
- Em quais camadas você deve usá-las: todas as camadas ocultas e a camada de saída?
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 .
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, . 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, apenasumo 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.
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 j ) 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.
Com esse entendimento em mente, podemos responder suas perguntas explícitas:
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.
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.