A inicialização de Kaiming
Realizei o estudo da inicialização de Kaiming e fiquei pensando como isso pode ser aprendido e explicado. Dá-se que muitas vezes apenas se fala a respeito da inicialização, mas, sem um arcabouço maduro dos mecanismos de uma rede neural, não se tem como compreender. Na própria discussão aqui, poderá se entender o que estou falando.
Começa pela questão do problema. O que a inicialização busca? Ela busca resolver o problema da saturação dos neurônios das redes neurais, que seria quando valores extremos dominam muito a distribuição da função de ativação e, esses valores extremos, diminuem o valor do gradiente, que é usado para o aprendizado. Uma forma de lidar com isso então seria simplesmente multiplicar os pesos do neurônio por um número entre 0 e 1 para que os valores da distribuição dos pesos diminuam.
Agora, por que tem isso? Cada peso multiplica por um valor da entrada e somam no final. Esse número no final tende a ficar grande pela soma. A inicialização padrão considera uma distribuição gaussiana, com média 0 e desvio padrão 1, mas quando começa as operações de soma ponderada, que seria o modo como um neurônio atua, o resultado dos pesos não tem mais uma distribuição gaussiana. Então, caso se mantivesse essa distribuição gaussiana, valores grandes e extremos não dominariam e não afetariam então a função de ativação. Logo, seria um melhor aprendizado.
A inicialização de Kaiming seria uma técnica elaborada para saber qual número multiplicar os pesos para atenuar a magnitude dos números. O raciocínio seria o seguinte. Observa-se que a variância dos valores cresce de acordo com o número de neurônios, ou seja, a dimensão. Então, se uma camada tem 10 neurônios, cada um com desvio padrão de 1, quando multiplicar pelas entradas e produzir o resultado, o desvio padrão deve estar como raiz do número de pesos. Nesse caso, raiz de 10. Então, isso indica que os números estão grandes com extremos. No exemplo do Karpathy, ele considera justamente essa dimensão e mostra o resultado dessa variância e, intuitivamente, multiplicou a camada da rede neural por 0.2. Isso diminuiu os valores e já ajudou na obtenção de números melhores para diminuição da saturação da função de ativação e, assim, conseguindo-se obter um melhor resultado. O paper que propôs a inicialização de Kaiming, indicou que a normalização se dá então com 1 dividido pela raiz do número neurônios da camada. E, a função de ativação, tem um impacto de diminuir a distribuição, então se multiplica por um número específico, de acordo com a função de ativação da rede neural. Assim, consegue-se um aprendizado melhor e assim, mais rápido se chega em melhores resultados.
Really great learning.