신경망 훈련시 Epoch vs Iteration


답변:


574

신경망 용어에서 :

  • 하나의 에포크 (epoch) = 모든 트레이닝 예제 의 하나의 정방향 패스와 하나의 역방향 패스
  • 배치 크기 = 하나의 정방향 / 역방향 패스에서 훈련 예의 수. 배치 크기가 클수록 더 많은 메모리 공간이 필요합니다.
  • 다수의 반복 = 패스의 수, 각 패스는 예 [배치 크기] 번호를 사용. 명확하게하기 위해, 1 패스 = 1 패스 + 1 패스 (포워드 패스와 역방향 패스는 2 개의 다른 패스로 계산하지 않습니다).

예 : 훈련 예제가 1000 개이고 배치 크기가 500이면 1 에포크를 완료하는 데 2 ​​번의 반복이 필요합니다.

참고 : 신경망 학습을위한 트레이드 오프 배치 크기와 반복 횟수


"일괄 처리"라는 용어는 모호합니다. 일부 사람들은이를 사용하여 전체 훈련 세트를 지정하고 일부 사람들은 한 번의 전진 / 후진 패스에서이 예제를 사용하여 훈련 예제 수를 나타냅니다 (이 답변에서 한 것처럼). 이러한 모호성을 피하고 배치가 하나의 정방향 / 역방향 패스에있는 훈련 예의 수와 일치 함을 분명히하기 위해 mini-batch 라는 용어를 사용할 수 있습니다 .


37
혼란 스러워요. 왜 모든 데이터에서 두 번 이상 신기원을 훈련해야합니까? 과적 합으로 이어지지 않습니까?
Soubriquet

29
@Soubriquet Neural 네트워크는 일반적으로 반복적 인 최적화 방법 (대부분의 경우 기울기 강하)을 사용하여 훈련되며, 종종 좋은 결과를 얻기 위해 훈련 세트에서 여러 패스를 수행해야합니다.
Franck Dernoncourt

6
그러나 많은 훈련 샘플이 있다면, $ 1 $ 백만이라고 말하면 하나의 에포크만으로 충분할까요? 훈련 세트가 매우 큰 경우 사람들은 일반적으로 무엇을합니까? 훈련 세트를 배치로 나누고 하나의 에포크를 수행하면됩니까?
pikachuchameleon

5
@pikachuchameleon 이것은 작업의 복잡성에 달려 있습니다. 어떤 경우에는 하나의 에포크만으로도 충분할 수 있습니다.
Franck Dernoncourt

9
@MaxPower-일반적으로 단계는 Franck Dernoncourt의 대답이 암시하는 것처럼 각 반복 후에 수행 됩니다. 그것이 우리가 뒤로 통과 한 정보로하는 것입니다. 에포크 당 m 반복 으로 미니 배치 그라디언트 하강에서 , 에포크 당 매개 변수를 m 번 업데이트합니다 .
dan mackinlay

142

에포크반복 은 다른 것들을 설명합니다.


시대

시대는 알고리즘이 보는 횟수에 대해 설명 전체 데이터 세트를. 따라서 알고리즘이 데이터 세트의 모든 샘플을 볼 때마다 에포크가 완료됩니다.

되풀이

반복일련 의 데이터가 알고리즘을 통과 한 횟수를 나타냅니다 . 신경망의 경우, 순방향 통과역방향 통과 를 의미합니다 . 따라서 NN을 통해 배치 데이터를 전달할 때마다 반복 을 완료했습니다 .


예를 들어 더 명확하게 만들 수 있습니다.

10 개의 예제 (또는 샘플)의 데이터 세트가 있다고 가정하십시오. 배치 크기가 2이고 알고리즘이 3 개의 에포크 (epoch)에 대해 실행되도록 지정했습니다.

따라서 각 시대에는 5 개의 배치가 있습니다 (10/2 = 5). 각 배치는 알고리즘을 통과하므로 에포크 당 5 개의 반복이 있습니다. 3 개의 에포크를 지정 했으므로 훈련에 대해 총 15 개의 반복 (5 * 3 = 15)이 있습니다.


15
모든 에포크 이후 또는 매 반복마다 가중치가 업데이트되는지 설명해 주시겠습니까?
Geek

7
@InheritedGeek 각 배치 후 에포크 또는 반복이 아닌 가중치가 업데이트됩니다.
thisisbhavin

2
@bhavindhedhi 1 배치 = 1 반복, 그렇지 않습니까?
Bee

2
@Bee 아니오, 예를 들어 배치 당 10000 개의 훈련 샘플과 1000 개의 샘플을 취하면 1 에포크를 완료하는 데 10 회의 반복이 필요합니다.
thisisbhavin

4
@ bhavindhedhi Bee가 요구 한 것은 배치 당 1000을 가진 10000 개의 총 샘플의 예에서 10 개의 총 배치를 효과적으로 가지고 있다는 것입니다. 이는 10 개의 반복과 같습니다. 나는 그것이 의미가 있다고 생각하지만 그것이 그것을 해석하는 적절한 방법인지 확실하지 않습니다.
Michael Du

24

많은 신경망 훈련 알고리즘은 신경망에 전체 데이터 세트를 여러 번 표현하는 것을 포함합니다. 종종 전체 데이터 세트의 단일 프리젠 테이션을 "에포크"라고합니다. 대조적으로, 일부 알고리즘은 한 번에 하나의 경우에 신경망에 데이터를 제공합니다.

"반복"은 훨씬 일반적인 용어이지만 "에포크 (epoch)"와 함께 그것에 대해 물었 기 때문에 소스가 신경망에 단일 사례를 제시한다고 가정합니다.


3
좋습니다, 자세한 내용이있는 출판물을 참조 할 수 있습니까?
Alex

17

이들의 차이점을 이해하려면 그라디언트 하강 알고리즘과 그 변형을 이해해야합니다 .

실제 답변을 시작하기 전에 몇 가지 배경을 만들고 싶습니다.

배치는 전체 데이터 세트입니다. 크기는 사용 가능한 데이터 세트의 총 교육 예제 수입니다.

미니 배치 크기 는 학습 알고리즘이 단일 패스 (정방향 및 역방향)로 처리하는 예제 수입니다.

미니 일괄 부여의 데이터 세트의 작은 부분 미니 배치 크기 .

반복 은 알고리즘에서 본 데이터 배치 수 (또는 단순히 알고리즘이 데이터 세트에서 수행 한 패스 수)입니다.

Epochs 는 학습 알고리즘이 전체 데이터 세트를 보는 횟수입니다. 이제는 데이터 집합을 미니 배치로 처리 할 수 ​​있으므로 반복 횟수와 같지 않을 수 있습니다 . 본질적 으로 단일 패스는 데이터 집합의 일부만 처리 할 수 ​​있습니다. 이러한 경우 반복 횟수에포크 횟수와 같지 않습니다 .

배치 그라디언트 디센트의 경우, 전체 배치는 각 트레이닝 패스에서 처리됩니다. 따라서 그래디언트 디센트 옵티마이 저는 미니 배치 그래디언트 디센트보다 부드러운 수렴을 제공하지만 시간이 더 걸립니다. 배치 구배 하강은 존재하는 경우 최적을 찾도록 보장됩니다.

확률 적 그라디언트 디센트는 미니 배치 크기1 인 미니 배치 그라디언트 디센트의 특별한 경우입니다 .

배치 그라디언트 디센트 vs 미니 배치 그라디언트 디센트

배치, 확률 및 미니 배치 구배 하강의 비교.


12

당신은 당신이 그것을 섞고 미니 배치를 선택 훈련 데이터가 있습니다. 하나의 미니 배치를 사용하여 가중치와 바이어스를 조정하면 하나의 반복을 완료 한 것입니다. 미니 배치가 부족하면 신기원을 완성했습니다. 그런 다음 훈련 데이터를 다시 섞고 미니 배치를 다시 선택한 다음 모든 데이터를 다시 반복하십시오. 그것은 두 번째 시대 일 것입니다.


교차 검증에 연결될 수 있습니까?
sk

8

일반적으로 테스트 세트를 네트워크에서 학습 할 수 있도록 작은 배치로 분할하고 여러 계층을 단계별로 학습하여 그라데이션 하강을 끝까지 적용합니다. 이러한 모든 작은 단계를 반복 이라고 할 수 있습니다 .

시대 전체 교육에 해당 한 번 전체 네트워크를 통과 설정합니다. 예를 들어 과적 합과의 싸움을 제한하는 것이 유용 할 수 있습니다.


7

신기원에는 몇 가지 반복이 포함되어 있습니다. 그것이 실제로이 '에포크 (epoch)'입니다. 신경망을 훈련시키기 위해 데이터 세트에 대한 반복 횟수로 '에포크'를 정의 해 봅시다.


4
신기원 은 숫자가 아닙니다 ... 이것은 비난으로 할 수 있습니다.
Nikana Reklawyks

이것이 잘못 되었기 때문에 하향 조정 됨 : 에포크 (epoch)는 모델이 모든 훈련 데이터를 한 번 보았을 때의 에피소드 또는 배치 수입니다.
JohnAllen

7

내 이해를 위해 NN을 교육해야 할 때 많은 데이터 항목이 포함 된 큰 데이터 집합이 필요합니다. NN이 훈련 될 때 데이터 항목은 하나씩 NN으로 이동합니다.이를 반복이라고합니다. 전체 데이터 세트가 통과 할 때이를 에포크 (epoch)라고합니다.


6

반복은 배치 SGD의 단일 배치 전달 + 백프로 프와 동일하다고 생각합니다. Epoch는 다른 사람이 언급 한 것처럼 전체 데이터 세트를 한 번 겪고 있습니다.


5

신경망 용어의 맥락에서 추측합니다.

  • Epoch : 네트워크가 전체 교육 세트 (즉, 각 교육 인스턴스 당 한 번)를 거치게 되면 하나의 에포크를 완료 합니다.

반복 (일명 단계 ) 을 정의 하려면 먼저 배치 크기 에 대해 알아야 합니다 .

  • 배치 크기 : 비효율적이며 많은 양의 메모리가 필요하기 때문에 전체 교육 인스턴스를 한 번의 순방향으로 처리하고 싶지 않을 것입니다. 따라서 일반적으로 수행되는 작업은 교육 인스턴스를 하위 세트 (예 : 배치)로 분할하고 선택한 하위 세트 (예 : 배치)를 한 번 통과 한 다음 역 전파를 통해 네트워크를 최적화하는 것입니다. 서브 세트 (즉, 배치) 내의 교육 인스턴스 수를 batch_size 라고 합니다 .

  • 반복 : (일명 교육 단계) 하나의 에포크를 완료하려면 네트워크가 모든 교육 인스턴스를 한 번에 통과해야한다는 것을 알고 있습니다. 하지만 기다려! 교육 인스턴스를 배치로 분할 할 때 하나의 정방향 패스에서 한 배치 (훈련 인스턴스의 하위 집합) 만 처리 할 수 ​​있습니다 . 그러면 다른 배치는 어떻습니까? 여기서 반복 이라는 용어 가 사용됩니다.

    • 정의 : 하나의 에포크를 완료하기 위해 (즉, 모든 교육 인스턴스를 처리하기 위해) 네트워크가 수행해야하는 전달 패스 수 (생성 한 배치 수)를 반복 이라고 합니다.

예를 들어, 1000 개의 교육 인스턴스가 있고 크기가 10 인 배치 를 수행하려는 경우 ; 하나의 에포크를 완료하려면 10000/10 = 1000 반복수행 해야합니다.

이것이 귀하의 질문에 대답 할 수 있기를 바랍니다!


3

에포크는 예를 들어 중립 네트워크의 기울기 하강 알고리즘과 같은 훈련을위한 샘플의 서브 세트 반복입니다. 좋은 참고 자료는 다음과 같습니다. http://neuralnetworksanddeeplearning.com/chap1.html

이 페이지에는 에포크 (epoch)를 사용하는 그래디언트 디센트 알고리즘에 대한 코드가 있습니다.

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)

코드를보십시오. 각 에포크에 대해, 그라디언트 디센트 알고리즘에 대한 입력의 서브셋을 무작위로 생성합니다. 에포크가 효과적인 이유는 페이지에 설명되어 있습니다. 좀 봐봐.


1

시대

각 예제를 한 번 볼 수 있도록 전체 데이터 세트에 대한 전체 교육 과정을 제공합니다. 따라서, 에포크 (epoch)는 N / 배치 크기 훈련 반복을 나타내며 , 여기서 N은 총 예제 수이다.

되풀이

훈련 중 모델 가중치의 단일 업데이트. 반복은 단일 데이터 배치 의 손실과 관련하여 매개 변수의 그라디언트를 계산하는 것으로 구성됩니다 .

보너스로 :

일괄

모델 학습 의 한 번의 반복 (즉, 하나의 그라디언트 업데이트)에 사용되는 예제 세트 .

배치 크기 도 참조하십시오 .

출처 : https://developers.google.com/machine-learning/glossary/


0

1. Epoch는 신경망이 자신의 모든 데이터를 볼 수있는 완전한주기입니다.
2. 모델을 훈련시키기 위해 100,000 개의 이미지가 있다고 말할 수 있지만, 메모리 공간이 모든 이미지를 한 번에 처리하기에 충분하지 않을 수 있습니다. 예를 들어 배치 크기는 100입니다.
3. 여러 배치를 사용하여 모든 이미지를 포함해야합니다. 따라서 100,000 개의 이미지를 모두 처리하려면 1000 회 반복이 필요합니다. (100 배치 크기 * 1000 회 반복)
4. 신경망이 전체 데이터를 보면 1 Epoch (포인트 1)라고합니다. 모델을 훈련시키기 위해 여러 시대가 필요할 수 있습니다. (10 개의 시대를 말해 보자).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.