Época vs Iteração ao treinar redes neurais


Respostas:


574

Na terminologia da rede neural:

  • uma época = uma passagem para frente e uma passagem para trás de todos os exemplos de treinamento
  • tamanho do lote = o número de exemplos de treinamento em uma passagem para frente / trás. Quanto maior o tamanho do lote, mais espaço de memória será necessário.
  • número de iterações = número de passes, cada passe usando o número de exemplos [tamanho do lote]. Para ser claro, uma passagem = uma passagem para frente + uma passagem para trás (não contamos a passagem para frente e para trás como duas passagens diferentes).

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 .


37
Estou confuso. Por que você treinaria por mais de uma época - em todos os dados mais de uma vez? Isso não levaria à super adaptação?
Soubriquet 15/10

29
As redes neurais do @Soubriquet são normalmente treinadas usando um método de otimização iterativa (na maioria das vezes, descida gradiente), que geralmente precisa executar várias passagens no conjunto de treinamento para obter bons resultados.
Franck Dernoncourt 15/10

6
Mas se houver muitas amostras de treinamento, digamos 1 milhão de dólares, apenas uma época será suficiente? O que as pessoas normalmente fazem se o conjunto de treinamento é muito grande? Apenas divida o conjunto de treinamento em lotes e realize apenas uma época?
Pikachuchameleon

5
@pikachuchameleon Isso depende da complexidade da tarefa: uma época pode ser suficiente em alguns casos.
Franck Dernoncourt

9
@MaxPower - normalmente, a etapa é executada após cada iteração , como a resposta de Franck Dernoncourt implica; é isso que fazemos com as informações do passe para trás. Em uma descida de gradiente de mini-lote com m iterações por época, atualizamos os parâmetros m vezes por época.
2171717

142

É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.


15
Você pode explicar se os pesos são atualizados após cada época ou após cada iteração?
Inherited Geek)

7
@InheritedGeek, os pesos são atualizados após cada lote, não na época ou na iteração.
This Febhavin

2
@bhavindhedhi 1 lote = 1 iteração, não é?
Bee

2
@ Bee Não, pegue, por exemplo, 10000 amostras de treinamento e 1000 amostras por lote; serão necessárias 10 iterações para completar uma época.
thisisbhavin

4
@bhavindhedhi Acho que o que Bee estava perguntando é que, no seu exemplo de 10000 amostras totais com 1000 por lote, você tem efetivamente 10 lotes totais, o que equivale a 10 iterações. Eu acho que faz sentido, mas não tenho certeza se essa é uma maneira adequada de interpretar isso.
22668 Michael

24

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.


3
ótimo, você pode se referir a uma publicação em que isso é detalhado?
21415 Alex

17

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 .

Descida de gradiente em lote vs descida em gradiente de mini-lote

Comparação de descidas de gradiente de lote, estocástico e minilote.


12

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.


Poderia estar vinculado à validação cruzada?
sk

8

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.


7

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.


4
época não é um número ... isso poderia fazer com a reformulação, eu acho.
Nikana Reklawyks

Diminuiu o voto porque está errado: uma época é o número de episódios ou lotes, de forma que o modelo tenha visto todos os dados de treinamento uma vez.
JohnAllen 6/02/19

7

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.


6

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).


5

Eu acho que no contexto da terminologia de rede neural:

  • Época: Quando sua rede acaba repassando todo o conjunto de treinamento (ou seja, uma vez para cada instância de treinamento), ela conclui uma época .

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:

    • Definição: O número de passes de encaminhamento (o número de lotes que você criou) que sua rede precisa realizar para concluir uma época (ou seja, passar por todas as instâncias de treinamento) é chamado de Iteração .

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!


3

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

def SGD(self, training_data, epochs, mini_batch_size, eta,
        test_data=None):
    """Train the neural network using mini-batch stochastic
    gradient descent.  The "training_data" is a list of tuples
    "(x, y)" representing the training inputs and the desired
    outputs.  The other non-optional parameters are
    self-explanatory.  If "test_data" is provided then the
    network will be evaluated against the test data after each
    epoch, and partial progress printed out.  This is useful for
    tracking progress, but slows things down substantially."""
    if test_data: n_test = len(test_data)
    n = len(training_data)
    for j in xrange(epochs):
        random.shuffle(training_data)
        mini_batches = [
            training_data[k:k+mini_batch_size]
            for k in xrange(0, n, mini_batch_size)]
        for mini_batch in mini_batches:
            self.update_mini_batch(mini_batch, eta)
        if test_data:
            print "Epoch {0}: {1} / {2}".format(
                j, self.evaluate(test_data), n_test)
        else:
            print "Epoch {0} complete".format(j)

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.


1

época

Uma passagem de treinamento completa sobre todo o conjunto de dados, para que cada exemplo tenha sido visto uma vez. Assim, uma época representa iterações de treinamento de tamanho de N / lote , onde N é o número total de exemplos.

iteração

Uma única atualização dos pesos de um modelo durante o treinamento. Uma iteração consiste em calcular os gradientes dos parâmetros com relação à perda em um único lote de dados.

como bônus:

lote

O conjunto de exemplos usados ​​em uma iteração (ou seja, uma atualização de gradiente ) do treinamento do modelo .

Veja também tamanho do lote .

fonte: https://developers.google.com/machine-learning/glossary/


0

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).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.