Atualmente, estou um pouco confuso com a forma como a descida do gradiente de mini-lote pode ser presa em um ponto de sela.
A solução pode ser muito trivial que eu não entendo.
Você começa uma amostra nova todas as épocas, e calcula um novo erro com base em um novo lote, para a função de custo é de apenas estática para cada lote, o que significa que o gradiente também deve mudar para cada mini lote .. mas de acordo com esta deve uma implementação de baunilha tem problemas com pontos de sela?
Outro desafio importante de minimizar as funções de erro altamente não convexas comuns às redes neurais é evitar ficar preso em seus inúmeros mínimos locais sub-ótimos. Dauphin et al. [19] argumentam que a dificuldade surge, de fato, não de mínimos locais, mas de pontos de sela, ou seja, pontos em que uma dimensão se inclina para cima e outra desce. Esses pontos de sela geralmente são cercados por um platô com o mesmo erro, o que dificulta a fuga do SGD, pois o gradiente é próximo de zero em todas as dimensões.
Eu significaria que especialmente o SGD teria uma clara vantagem em relação aos pontos de sela, uma vez que flutua em direção à sua convergência ... As flutuações e a amostragem aleatória e a função de custo diferentes para cada época devem ser razões suficientes para não ficar preso em uma.
Para um gradiente de lote completo decente, faz sentido que ele possa ficar preso no ponto de sela, pois a função de erro é constante.
Estou um pouco confuso com as duas outras partes.
fonte
Respostas:
Dê uma olhada na imagem abaixo de Off Convex . Em uma função convexa (imagem mais à esquerda), existe apenas um mínimo local, que também é o mínimo global. Porém, em uma função não convexa (imagem à direita), pode haver vários mínimos locais e, geralmente, unir dois mínimos locais é um ponto de sela. Se você estiver se aproximando de um ponto mais alto, o gradiente é comparativamente mais plano e você corre o risco de ficar preso lá, especialmente se estiver se movendo apenas em uma direção.
Agora, o importante é se você está otimizando usando o mini-loteou descida de gradiente estocástico, a função não convexa subjacente é a mesma e o gradiente é uma propriedade dessa função. Ao fazer um mini lote, você considera muitas amostras de cada vez e executa a etapa de gradiente calculada sobre todas elas. Isso reduz a variação. Mas se a direção média do gradiente ainda estiver apontando na mesma direção do ponto de sela, você ainda corre o risco de ficar preso lá. A analogia é que, se você der dois passos à frente e um passo atrás, calculando a média sobre eles, acabará dando um passo à frente. Se você executar o SGD, execute todas as etapas uma após a outra, mas se ainda estiver se movendo em uma única direção, poderá alcançar o ponto de sela e descobrir que o gradiente de todos os lados é bastante plano e o tamanho da etapa é pequeno demais para passar por essa parte plana. Isso não
Dê uma olhada na visualização aqui . Mesmo com o SGD, se as flutuações ocorrerem apenas em uma dimensão, com as etapas cada vez menores, convergiriam para o ponto de sela. Nesse caso, o método de mini-lote reduziria apenas a quantidade de flutuação, mas não seria capaz de alterar a direção do gradiente.
Às vezes, o SGD pode romper com simples pontos de sela, se as flutuações ocorrerem em outras direções e se o tamanho da etapa for grande o suficiente para ultrapassar o nivelamento. Às vezes, porém, as regiões de sela podem ser bastante complexas, como na imagem abaixo.
A maneira como métodos como momentum, ADAGRAD, Adam etc. são capazes de romper isso é considerando os gradientes anteriores. Considere o momento,
fonte
Não deveria.
[ 1 ] mostrou que a descida do gradiente com inicialização aleatória e tamanho de passo constante apropriado não converge para um ponto de sela. É uma discussão longa, mas para lhe dar uma idéia do motivo, veja o seguinte exemplo:
fonte
Se você for ao artigo mencionado (eles também mostram empericamente como sua abordagem sem selas realmente melhora o SGD de minilote), eles declaram:
Eles também observam a presença de "platôs" perto dos pontos de sela (em outras palavras, a sela não é íngreme) - nesses casos, dar passos muito pequenos realmente resultaria em convergência prematura antes de escapar da região da sela. Como essa é uma otimização não convexa, a convergência da taxa de aprendizado tornaria isso pior.
Parece possível que se possa tentar uma abordagem iterativa, na qual se reinicia o mini-lote SGD assim que ele é concluído (isto é, redefinindo a taxa de aprendizado) para ver se é possível escapar da região problemática.
fonte
Acho que o problema é que, ao se aproximar de um ponto de sela, você entra em um platô, ou seja, uma área com gradientes baixos (em valor absoluto). Especialmente quando você está se aproximando do cume. Portanto, seu algoritmo diminui o tamanho da etapa. Com um tamanho de etapa reduzido agora todos os gradientes (em todas as direções) são pequenos em valor absoluto. Então o algoritmo para, pensando que é o mínimo.
Se você não diminuir as etapas, estará pulando acima do mínimo e sentindo muita falta delas. Você deve diminuir o tamanho da etapa de alguma forma.
fonte