Qual é a diferença entre época e iteração ao treinar um perceptron de várias camadas?
413
Qual é a diferença entre época e iteração ao treinar um perceptron de várias camadas?
Na terminologia da rede neural:
Exemplo: se você tiver 1000 exemplos de treinamento e seu tamanho de lote for 500, serão necessárias duas iterações para concluir uma época.
FYI: Tamanho do lote de troca versus número de iterações para treinar uma rede neural
O termo "lote" é ambíguo: algumas pessoas o usam para designar todo o conjunto de treinamento e outras usam-no para se referir ao número de exemplos de treinamento em uma passagem para frente / trás (como eu fiz nesta resposta). Para evitar essa ambiguidade e deixar claro que o lote corresponde ao número de exemplos de treinamento em uma passagem para frente / trás, pode-se usar o termo minilote .
Época e iteração descrevem coisas diferentes.
Época
Uma época descreve o número de vezes que o algoritmo vê o conjunto de dados inteiro . Portanto, sempre que o algoritmo visualiza todas as amostras no conjunto de dados, uma época é concluída.
Iteração
Uma iteração descreve o número de vezes que um lote de dados passou pelo algoritmo. No caso de redes neurais, isso significa passagem para frente e para trás . Portanto, toda vez que você passa um lote de dados pelo NN, você conclui uma iteração .
Exemplo
Um exemplo pode torná-lo mais claro.
Digamos que você tenha um conjunto de dados de 10 exemplos (ou amostras). Você tem um tamanho de lote 2 e especificou que deseja que o algoritmo seja executado por três épocas.
Portanto, em cada época, você tem 5 lotes (10/2 = 5). Cada lote é passado pelo algoritmo, portanto, você tem 5 iterações por época. Como você especificou três épocas, você tem um total de 15 iterações (5 * 3 = 15) para treinamento.
fonte
Muitos algoritmos de treinamento de rede neural envolvem a realização de várias apresentações de todo o conjunto de dados na rede neural. Freqüentemente, uma única apresentação de todo o conjunto de dados é chamada de "época". Por outro lado, alguns algoritmos apresentam dados para a rede neural um único caso de cada vez.
"Iteração" é um termo muito mais geral, mas como você perguntou sobre isso junto com "época", presumo que sua fonte esteja se referindo à apresentação de um único caso a uma rede neural.
fonte
Para entender a diferença entre eles, você deve entender o algoritmo de descida de gradiente e suas variantes .
Antes de começar com a resposta real, gostaria de criar alguns antecedentes.
Um lote é o conjunto de dados completo. Seu tamanho é o número total de exemplos de treinamento no conjunto de dados disponível.
Tamanho de minilote é o número de exemplos que o algoritmo de aprendizado processa em uma única passagem (para frente e para trás).
Um mini-lote é uma pequena parte do conjunto de dados de determinado tamanho de mini-lote .
Iterações é o número de lotes de dados que o algoritmo viu (ou simplesmente o número de passes que o algoritmo realizou no conjunto de dados).
Épocas é o número de vezes que um algoritmo de aprendizado vê o conjunto de dados completo. Agora, isso pode não ser igual ao número de iterações , pois o conjunto de dados também pode ser processado em minilotes, em essência, uma única passagem pode processar apenas uma parte do conjunto de dados. Nesses casos, o número de iterações não é igual ao número de épocas .
No caso da descida do gradiente do lote, todo o lote é processado em cada passe de treinamento. Portanto, o otimizador de descida de gradiente resulta em convergência mais suave do que a descida de gradiente de mini-lote, mas leva mais tempo. A descida do gradiente do lote é garantida para encontrar um ótimo, se existir.
A descida de gradiente estocástico é um caso especial de descida de gradiente de minilote em que o tamanho do minilote é 1 .
fonte
Você tem um dado de treinamento que embaralha e seleciona mini-lotes a partir dele. Quando você ajusta seus pesos e desvios usando um mini lote, você conclui uma iteração. Depois de acabar os mini lotes, você completou uma época. Em seguida, você embaralha seus dados de treinamento novamente, seleciona seus mini-lotes novamente e repete todos eles novamente. Essa seria sua segunda época.
fonte
Normalmente, você dividirá seu conjunto de testes em pequenos lotes para a rede aprender e fará o treinamento passo a passo através do seu número de camadas, aplicando a descida gradiente até o fim. Todos esses pequenos passos podem ser chamados de iterações .
Uma época corresponde a todo o conjunto de treinamento que percorre toda a rede uma vez. Pode ser útil limitar isso, por exemplo, para combater o excesso de ajustes.
fonte
Uma época contém algumas iterações. Isso é realmente o que é essa "época". Vamos definir 'época' como o número de iterações sobre o conjunto de dados para treinar a rede neural.
fonte
Para meu entendimento, quando você precisa treinar um NN, você precisa de um grande conjunto de dados que envolve muitos itens de dados. quando o NN está sendo treinado, os itens de dados entram no NN, um por um, isso é chamado de iteração; Quando todo o conjunto de dados passa, é chamado de época.
fonte
Acredito que a iteração é equivalente a um único lote forward + backprop no lote SGD. A Epoch está analisando todo o conjunto de dados uma vez (como outra pessoa mencionou).
fonte
Eu acho que no contexto da terminologia de rede neural:
Para definir a iteração (também conhecida como etapas ), você precisa primeiro conhecer o tamanho do lote :
Tamanho do lote: você provavelmente não gostaria de processar todas as instâncias de treinamento de uma só vez, pois é ineficiente e precisa de muita memória. Portanto, o que geralmente é feito é dividir as instâncias de treinamento em subconjuntos (por exemplo, lotes), executando uma passagem pelo subconjunto selecionado (por exemplo, lote) e otimizando a rede por meio de retropropagação. O número de instâncias de treinamento em um subconjunto (ou seja, lote) é chamado batch_size .
Iteração: (aka etapas de treinamento) Você sabe que sua rede precisa repassar todas as instâncias de treinamento em uma única passagem para concluir uma época. Mas espere! quando você está dividindo suas instâncias de treinamento em lotes, isso significa que você pode processar apenas um lote (um subconjunto de instâncias de treinamento) em uma passagem para frente, e os outros lotes? É aqui que o termo Iteração entra em jogo:
Por exemplo, quando você tem 1000 instâncias de treinamento e deseja fazer lotes com tamanho 10; você precisa fazer 10000/10 = 1000 iterações para concluir uma época.
Espero que isso possa responder à sua pergunta!
fonte
epoch é uma iteração de subconjunto das amostras para treinamento, por exemplo, o algoritmo de descida de gradiente em rede neutra. Uma boa referência é: http://neuralnetworksanddeeplearning.com/chap1.html
Observe que a página possui um código para o algoritmo de descida de gradiente que usa a época
Veja o código. Para cada época, geramos aleatoriamente um subconjunto das entradas para o algoritmo de descida do gradiente. Por que a época é eficaz também é explicada na página. Por favor dê uma olhada.
fonte
como bônus:
fonte: https://developers.google.com/machine-learning/glossary/
fonte
1.Epoch é um ciclo completo em que a rede Neural viu todos os seus dados.
2. Pode-se dizer 100.000 imagens para treinar o modelo; no entanto, o espaço na memória pode não ser suficiente para processar todas as imagens de uma só vez; portanto, dividimos o treinamento do modelo em pequenos pedaços de dados chamados lotes. por exemplo, o tamanho do lote é 100.
3. Precisamos cobrir todas as imagens usando vários lotes. Portanto, precisaremos de 1000 iterações para cobrir todas as 100.000 imagens. (Tamanho de 100 lotes * 1000 iterações)
4. Uma vez que a Rede Neural analisa dados completos, ela é denominada 1 Época (Ponto 1). Pode-se precisar de várias épocas para treinar o modelo. (digamos 10 épocas).
fonte