A adição de ruído aleatório a camadas ocultas é considerada uma regularização? Qual é a diferença entre fazer isso e adicionar a desistência e a normalização de lotes?


resposta 1:

Sim, adicionar ruído aleatório a camadas ocultas é uma regularização exatamente da mesma maneira que o abandono. A principal intuição aqui é que, se a resposta neural em cada camada for barulhenta, o treinamento precisará ajustar os pesos para separar categorias com uma folga maior que o ruído. Assim, no momento do teste, quando o ruído está ausente, a classificação deve ser mais estável. Isso é muito semelhante ao funcionamento da classificação da margem máxima, e todos sabemos como foram bem-sucedidas as técnicas da margem máxima (por exemplo, máquinas de vetores de suporte). Você precisa ter cuidado para garantir que o ruído não sobrecarregue o sinal.

O abandono é considerado um método de regularização porque realiza a média do modelo. Ou seja, durante o treinamento, o modelo em um determinado momento no tempo é na verdade uma distribuição de probabilidade em uma classe de modelos de redes neurais em que os pesos são fixos, mas qualquer um dos neurônios do modelo pode estar ausente. A probabilidade geral de cada rede neural é determinada pela probabilidade individual de um determinado neurônio estar presente ou ausente. Isso é regularização porque calcula a média do viés de cada instância, suavizando a função de custo.

A adição de ruído aleatório à camada oculta opera da mesma maneira, mas com uma distribuição de probabilidade diferente. Em vez de ter pesos fixos, você tem uma topologia fixa e a distribuição de probabilidades escolhe pesos aleatoriamente, de acordo com uma distribuição gaussiana centrada nos pesos "verdadeiros", ou seja, os pesos que você está armazenando no disco rígido. Novamente, essa é a média do modelo e deve ter uma influência regularizante, com a ressalva de que o ruído (a variação) não deve sobrecarregar o sinal. Portanto, por exemplo, se você aplicar o BatchNorm pela primeira vez, terá um perfil de saída normal mais ou menos padrão (unidades centralizadas em zero com variação 1) e poderá aplicar ruído com variação de, digamos, 0,1. Você pode brincar com a variação para ver o que funciona.

Edição: Desde a pergunta mencionada BatchNorm, eu gostaria de salientar que BatchNorm não é realmente usado para regularização. Ou seja, o BatchNorm não diminui o custo. Em vez disso, o BatchNorm é adicionado para melhorar o desempenho da retropropagação. Em essência, evita que o gradiente propagado de volta fique muito grande ou pequeno ao redimensionar e atualizar; Como técnica, possui conexões mais profundas com os métodos de otimização de segunda ordem que tentam modelar a curvatura da superfície de custo. Como mencionei acima, o BatchNorm também pode ser usado para garantir que a escala relativa esteja correta se você adicionar ruído aleatório às atividades neurais.


resposta 2:

Eu consideraria isso um truque de otimização mais do que regularização.

O efeito deve ser equivalente ao efeito de estocástico na SGD.

O SGD e seus métodos inspiradores de Monte Carlo evitam ficar presos em mínimos locais pobres, dando um passo aleatório de vez em quando, em vez de seguir estritamente a direção da descida mais íngreme; ou fazer algo equivalente em suas várias encarnações, por exemplo, adicionar um componente aleatório a cada etapa, em vez de periodicamente executar uma etapa aleatória.

Adicionar ruído aleatório fraco a pesos alcançará exatamente o mesmo. [Dica: a descida de gradiente também adiciona algo aos pesos em todas as iterações!]


resposta 3:

EDITAR:

A adição de ruído aleatório e distribuído em gaussiana aos dados de entrada de cada camada pode tornar seu modelo mais robusto a pequenas alterações nos dados, permitindo que sua rede diferencie melhor o ruído do sinal. Como Zeeshan Zia disse, este seria essencialmente um gradiente estocástico decente. Eu ainda não consideraria essa regularização. É mais uma técnica para ajudar seu modelo a aprender padrões para separar o ruído do sinal.

A desistência desativa aleatoriamente uma certa proporção dos nós em uma camada oculta em cada passagem. Isso melhora a rede porque a força a aprender a reconhecer os mesmos padrões de várias maneiras, o que leva a um modelo melhor.

A normalização de lote é onde você leva as entradas para uma camada e garante que todas estejam normalizadas entre 0 e 1. Isso ajuda a rede a aprender melhor porque mantém o gradiente decente, mais consistente e suave. Dessa forma, você evita pular os mínimos porque seu gradiente é muito grande.