baralhar dados no treinamento de mini-lote da rede neural

14

No treinamento em mini-lote de uma rede neural, ouvi dizer que uma prática importante é embaralhar os dados do treinamento antes de cada época. Alguém pode explicar por que a mudança em cada época ajuda?

Na pesquisa do google, encontrei as seguintes respostas:

  • ajuda o treinamento a convergir rapidamente
  • evita qualquer viés durante o treinamento
  • impede que o modelo aprenda a ordem do treinamento

Mas tenho dificuldade em entender por que qualquer um desses efeitos é causado pelo embaralhamento aleatório. Alguém pode fornecer uma explicação intuitiva?

Obrigado,

DSKim
fonte

Respostas:

8

Para tentar dar outra explicação:

Uma das coisas mais poderosas das redes neurais é que elas podem ser funções muito complexas, permitindo aprender relações muito complexas entre os dados de entrada e saída. Esses relacionamentos podem incluir coisas que você nunca esperaria, como a ordem na qual os dados são alimentados por época. Se a ordem dos dados em cada época for a mesma, o modelo poderá usá-lo como uma maneira de reduzir o erro de treinamento, que é uma espécie de sobreajuste.

Com relação à velocidade: os métodos de mini-lote dependem da descida do gradiente estocástico (e melhorias), o que significa que eles dependem da aleatoriedade para encontrar um mínimo. A mistura aleatória de mini-lotes torna os gradientes mais variáveis, o que pode ajudar na convergência porque aumenta a probabilidade de atingir uma boa direção (ou pelo menos é assim que eu a entendo).

bibliolítico
fonte
1
Como uma rede neural pode aprender a ordem em que os dados são alimentados em cada época?
Code Pope
1
Em uma palavra, eles não podem. Se você estiver usando treinamento em mini-lote (ou seja, mais de um lote por época), uma ordem específica para os dados poderá influenciar o treinamento, no sentido de que, treinando primeiro em um mini-lote, o solucionador pode entrar em uma determinada região (talvez contendo um local mínimo ...) em vez de outro. Mas dizer que um NN antecipado "aprende" sobre a ordem dos dados não é realmente correto, porque cada previsão é feita independentemente de qualquer outra previsão, e a ordem dentro dos mini-lotes, é claro, não terá nenhum efeito.
22419 Josh
6

De um ponto de vista muito simplista, os dados são alimentados sequencialmente, o que sugere que, no mínimo, é possível que a ordem dos dados tenha um efeito na saída. Se a ordem não importa, a randomização certamente não será prejudicial. Se a ordem importa, a randomização ajudará a suavizar esses efeitos aleatórios, para que eles não se tornem viés sistemático. Em suma, a randomização é barata e nunca prejudica, e muitas vezes minimiza os efeitos de pedido de dados.

Wang nuclear
fonte
6

Nota: ao longo desta resposta, refiro-me à minimização da perda de treinamento e não discuto critérios de parada, como perda de validação. A escolha dos critérios de parada não afeta o processo / conceitos descritos abaixo.

O processo de treinamento de uma rede neural é encontrar o valor mínimo de uma função de perda , onde W representa uma matriz (ou várias matrizes) de pesos entre os neurônios e X representa o conjunto de dados de treinamento. Eu uso um índice para X para indicar que nossa minimização de ocorre apenas sobre os pesos W (ou seja, estamos procurando por W de modo que seja minimizado) enquanto XX(W)WXXWWX é corrigido.

Agora, se assumirmos que temos elementos em W (ou seja, existem pesos P na rede), é uma superfície em um espaço dimensional P + 1 . Para dar um analógico visual, imagine que temos apenas dois pesos de neurônios ( P = 2 ). Então tem uma interpretação geométrica fácil: é uma superfície em um espaço tridimensional. Isso decorre do fato de que, para qualquer matriz de pesos W , a função de perda pode ser avaliada em X e esse valor se torna a elevação da superfície.PWPP+1P=2WX

Mas há o problema da não-convexidade; a superfície que descrevi terá numerosos mínimos locais e, portanto, algoritmos de descida de gradiente são suscetíveis de ficar "presos" nesses mínimos, enquanto uma solução mais profunda / baixa / melhor pode estar próxima. É provável que isso ocorra se for inalterado em todas as iterações de treinamento, porque a superfície é fixa para um determinado X ; todas as suas características são estáticas, incluindo seus vários mínimos.XX

Uma solução para isso é o treinamento em mini-lote combinado com o embaralhamento. Ao embaralhar as linhas e treinar apenas um subconjunto delas durante uma determinada iteração, muda a cada iteração, e é realmente possível que duas iterações ao longo de toda a sequência de iterações e épocas de treinamento sejam executadas exatamente no mesmo X . O efeito é que o solucionador pode "saltar" facilmente de um mínimo local. Imagine que o solucionador esteja preso no mínimo local na iteração i com o treinamento do minilote X i . Este mínimo local corresponde a avaliado em um valor particular de pesos; vamos chamá-lo X i ( iXXiXi . Na próxima iteração a forma do nosso superfície perda efectivamente muda porque estamos a utilizar X i + 1 , isto é,X i + 1 ( W i ) pode assumir um valor muito diferente doX i ( W i ) e isso é bem possível que não corresponda a um mínimo local! Agora podemos calcular uma atualização gradiente e continuar com o treinamento. Para ser claro: a forma deX i + 1 será - em geral - diferente da forma deX iXi(Wi)Xi+1Xi+1(Wi)Xi(Wi)Xi+1Xi. Observe que aqui estou me referindo à função de perda avaliada em um conjunto de treinamento X ; é uma superfície definida completo sobre todos os valores possíveis de W , em vez do que a avaliação de que a perda (que é apenas um escalar) para um valor específico de W . Observe também que, se mini-lotes forem usados ​​sem embaralhar, ainda haverá um grau de "diversificação" das superfícies de perda, mas haverá um número finito (e relativamente pequeno) de superfícies de erro exclusivas vistas pelo solucionador (especificamente, ele verá o mesmo conjunto exato de mini-lotes - e, portanto, superfícies de perda - durante cada época).XWW

Uma coisa que evitei deliberadamente foi uma discussão sobre tamanhos de mini lotes, porque há um milhão de opiniões a respeito e isso tem implicações práticas significativas (maior paralelismo pode ser alcançado com lotes maiores). No entanto, acredito que vale a pena mencionar o seguinte. Como é avaliado calculando um valor para cada linha de X (e somando ou calculando a média; isto é, um operador comutativo) para um determinado conjunto de matrizes de peso W , o arranjo das linhas de X não tem efeito quando se usa descida do gradiente do lote (ou seja, quando cada lote é o X completo e iterações e épocas são a mesma coisa).XWX X

Josh
fonte
Obrigado por esta explicação útil. Depois de ler sua resposta profundamente, tenho duas perguntas: 1. Você mencionou que o minilote fornece um grau de diversificação limitada. Eu não entendo por que isso não é suficiente para evitar esconder no mínimo local. Se um solucionador estiver no mínimo local da superfície de um lote, é com alta probabilidade que não esteja no mínimo local da superfície do próximo lote, portanto, ele não deve ficar preso. 2. Como o solucionador converge na superfície da função de perda, enquanto a superfície sempre muda usando lotes diferentes?
Code Pope
O benefício da diversificação ainda está presente sem o embaralhamento, mas não é tão significativo quanto quando o embaralhamento é usado porque ele está constantemente vendo a mesma sequência de superfícies de perda, enquanto que, se usarmos o embaralhamento, ele provavelmente nunca vê a mesma superfície de perda exata mais de uma vez. Quanto aos critérios de parada, geralmente escrevi os meus de tal maneira que, uma vez que a redução percentual média da perda em um número especificado de iterações é menor que alguma tolerância, o treinamento é interrompido.
18719 Josh
2
Talvez eu realmente não tenha respondido tão bem à sua pergunta sobre mínimos locais. Em teoria, todas essas superfícies de perda devem exibir algum grau de similaridade, uma vez que a distribuição de probabilidade da resposta (condicional aos preditores do modelo) é assumida como constante em todo o conjunto de dados de treinamento. Portanto, se um mínimo é profundo o suficiente, ele deve aparecer em muitos mini lotes, portanto, é improvável que o solucionador salte fora dele. Mas se o mínimo é basicamente apenas "ruído", essa estratégia deve funcionar muito bem e permitir que o modelo continue treinando.
18719 Josh
Obrigado. Sua segunda resposta torna claramente compreensível o motivo pelo qual o NN converge, apesar das diferentes superfícies. Em relação à minha primeira pergunta, é correto dizer que ter a mesma sequência teria apenas uma possibilidade maior de que um "ruído" se repita em muitas das superfícies de perda dos lotes do que quando se usa o embaralhamento? Esta é a única explicação que posso dar por que ainda é possível ficar preso em mínimos locais ao usar mini-lotes sem embaralhar.
Code Pope
@ CodePope Eu acho que está certo. Além disso, uma vez que a perda tenha sido reduzida muito desde o início do treinamento, os gradientes serão bem pequenos e pode até ser possível que o solucionador fique preso em um "loop", pois continua vendo a mesma sequência de superfícies de perda. Observe que esta é uma explicação especulativa baseada em minha experiência bastante limitada; portanto, se você tiver um interesse teórico sério, é melhor consultar um especialista.
21719 Josh
4

Imagine que seus últimos rótulos de minibatch realmente tenham mais ruído. Em seguida, esses lotes puxarão os pesos finais aprendidos na direção errada. Se você embaralhar toda vez, as chances de os últimos lotes serem desproporcionalmente barulhentos diminuirão.

Ganesh
fonte
1

Quando você treina sua rede usando um conjunto de dados fixo, ou seja, dados que você nunca embaralha durante o treinamento. É muito provável que você obtenha pesos muito altos e muito baixos, como 40,70, -101.200 ... etc. Isso significa simplesmente que sua rede não aprendeu os dados de treinamento, mas aprendeu o ruído dos dados de treinamento. Caso clássico de um modelo de excesso de ajuste. Com essa rede, você obterá previsões sobre os dados que você usou para o treinamento. Se você usar outras entradas para testá-lo, seu modelo desmoronará. Agora, quando você embaralha os dados de treinamento após cada época (iteração do conjunto geral), você simplesmente alimenta diferentes entradas de neurônios em cada época e isso simplesmente regula os pesos, o que significa que é mais provável que você obtenha pesos "mais baixos" que estão mais próximos de zero , e isso significa que sua rede pode fazer melhores generalizações.

Espero que esteja claro.

PRCube
fonte
1

Aqui está uma explicação mais intuitiva:

Ao usar a descida do gradiente, queremos que a perda seja reduzida na direção do gradiente. O gradiente é calculado pelos dados de um único mini lote para cada rodada de atualização de peso. O que queremos que aconteça é que esse gradiente baseado em mini-lote seja aproximadamente o gradiente populacional, porque é esperado que produza uma convergência mais rápida. (Imagine se você alimentar os dados da rede 100 class1 em um mini lote e 100 dados class2 em outro, a rede passará o mouse. Uma maneira melhor é alimentá-lo com 50 class1 + 50 class2 em cada min lote.)

Como conseguir isso, pois não podemos usar os dados da população em um mini-lote? A arte da estatística nos diz: embaralhe a população e os primeiros dados de batch_size podem representar a população. É por isso que precisamos embaralhar a população.

Devo dizer que o embaralhamento não é necessário se você tiver outro método para coletar dados da população e garantir que as amostras possam produzir um gradiente razoável.

Essa é a minha compreensão. Espero que ajude.

golden8212312
fonte