Inicialização de pesos, também chamada de inicialização de parâmetros, é a etapa de pré-treinamento que atribui valores iniciais aos parâmetros treináveis de uma rede neural. Em aprendizado profundo, uma rede neural contém pesos e vieses que são modificados durante o treinamento; a escolha dos valores iniciais afeta a velocidade de convergência, a escala das ativações, a escala dos sinais de gradiente durante a retropropagação e a qualidade do modelo final. Uma inicialização adequada é necessária para evitar problemas como gradientes que desaparecem ou explodem e a saturação da função de ativação. Embora o artigo seja intitulado "inicialização de pesos", tanto pesos quanto vieses são parâmetros treináveis, e os mesmos princípios se aplicam a kernels convolucionais e vieses em redes neurais convolucionais (CNNs).
Inicialização Constante
A forma mais simples de inicialização é a inicialização zero, onde todos os pesos e vieses são definidos como zero. Isso é comumente usado para vieses, mas não para pesos, porque leva à simetria: todos os neurônios em uma camada recebem gradientes idênticos e, portanto, aprendem as mesmas características, limitando severamente a capacidade da rede. Na maioria dos casos, os vieses são inicializados como zero, mas algumas situações exigem valores diferentes de zero. Por exemplo, em unidades multiplicativas, como o portão de esquecimento de um LSTM, o viés pode ser inicializado como 1 para permitir um bom sinal de gradiente através do portão. Para neurônios com ativação ReLU, inicializar o viés com um pequeno valor positivo, como 0,1, pode ajudar a evitar o problema do ReLU morto, onde neurônios se tornam inativos e param de aprender.
Para redes neurais recorrentes (RNNs), funções de ativação com intervalo limitado (por exemplo, sigmoide ou tanh) são tipicamente usadas, já que ativações sem limite podem causar valores explosivos. Le, Jaitly e Hinton (2015) sugeriram inicializar os pesos nas partes recorrentes da rede com a matriz identidade e os vieses com zero, semelhante à ideia de conexões residuais e LSTMs sem portão de esquecimento.
Inicialização Aleatória
A inicialização aleatória envolve amostrar pesos de uma distribuição normal ou uniforme, geralmente de forma independente para cada peso. Isso quebra a simetria e permite que diferentes neurônios aprendam diferentes características. A escala da distribuição é crítica: valores muito grandes podem causar ativações ou gradientes explosivos, enquanto valores muito pequenos podem causar sinais que desaparecem. Vários métodos foram desenvolvidos para escolher escalas apropriadas.
Inicialização de LeCun
A inicialização de LeCun, popularizada por Yann LeCun e colegas em 1998, é projetada para preservar a variância das ativações durante a passagem direta. Ela amostra cada peso independentemente de uma distribuição com média 0 e variância 1/n_in, onde n_in é o número de entradas da camada (fan-in). Para uma distribuição uniforme, isso corresponde a amostrar de U(±√(3/n_in)). Este método funciona bem com funções de ativação que são aproximadamente lineares perto de zero, como tanh, mas pode ser subótimo para ReLU.
Inicialização de Glorot
A inicialização de Glorot, também conhecida como inicialização de Xavier, foi proposta por Xavier Glorot e Yoshua Bengio em 2010. Ela foi projetada como um compromisso entre dois objetivos: preservar a variância das ativações durante a passagem direta e preservar a variância dos gradientes durante a passagem reversa. Para inicialização uniforme, cada peso é amostrado de U(±√(6/(n_in + n_out))), onde n_in é o fan-in e n_out é o fan-out (número de neurônios na próxima camada). Este método é amplamente usado para redes com ativações sigmoide ou tanh, mas pode ser menos eficaz para ReLU devido à não linearidade de retificação.
Inicialização de He
A inicialização de He, proposta por Kaiming He e colegas em 2015, é especificamente projetada para ativações ReLU. Ela amostra pesos de uma distribuição com média 0 e variância 2/n_in, onde n_in é o fan-in. Para uma distribuição normal, isso é N(0, 2/n_in); para uma distribuição uniforme, é U(±√(6/n_in)). O fator de 2 leva em conta que o ReLU zera metade das ativações, efetivamente reduzindo a variância pela metade. A inicialização de He se tornou a escolha padrão para muitas redes profundas, incluindo redes residuais e CNNs.
Inicialização Ortogonal
A inicialização ortogonal define a matriz de pesos como uma matriz ortogonal aleatória, o que significa que as linhas e colunas são ortonormais. Isso preserva a norma das ativações e gradientes durante as passagens direta e reversa, o que é benéfico para redes neurais recorrentes e redes profundas. É frequentemente usada em RNNs e LSTMs para mitigar gradientes que desaparecem. O método é tipicamente aplicado à matriz de pesos recorrente, enquanto outros pesos podem usar inicialização aleatória.
Inicialização Dependente de Dados
Em alguns casos, a inicialização pode ser derivada dos próprios dados de treinamento. Por exemplo, em pré-treinamento não supervisionado, autoencoders podem ser inicializados usando treinamento ganancioso camada por camada. Mais recentemente, métodos dependentes de dados, como inicialização sequencial camada por camada, foram explorados. No entanto, esses são menos comuns do que métodos aleatórios fixos devido ao custo computacional e à complexidade.
Impacto na Dinâmica de Treinamento
A escolha da inicialização afeta vários aspectos do treinamento. Uma inicialização adequada pode acelerar a convergência, reduzir o risco de gradientes que desaparecem ou explodem e melhorar a qualidade final do modelo. Por outro lado, uma inicialização ruim pode levar a treinamento lento, ativações saturadas ou falha na convergência. Em redes profundas, a interação entre inicialização e funções de ativação é crucial; por exemplo, redes ReLU exigem pesos iniciais maiores do que redes tanh para manter a propagação do sinal.
Considerações Práticas
Em frameworks modernos de aprendizado profundo, métodos de inicialização são embutidos e podem ser selecionados via um parâmetro. Por exemplo, PyTorch e TensorFlow fornecem funções para inicialização de Xavier e He. Ao treinar modelos grandes, como transformers, uma inicialização cuidadosa é essencial; por exemplo, os ramos residuais em transformers são frequentemente inicializados com zero para garantir treinamento estável no início. Isso é uma forma de inicialização zero para partes específicas da rede.
Técnicas Relacionadas
A inicialização de pesos está intimamente relacionada a outras técnicas que abordam problemas de gradiente, como normalização em lote, normalização de camada e recorte de gradiente. Esses métodos podem mitigar os efeitos de uma inicialização ruim, mas não substituem a necessidade de um ponto de partida razoável. Na prática, uma combinação de boa inicialização e normalização é frequentemente usada para treinar redes muito profundas.
Ver Também
- rede neural
- aprendizado profundo
- gradiente que desaparece
- gradiente explosivo
- função de ativação