딥러닝에서 Epoch의 중요성

상념 2016. 9. 29. 08:40

 

 

 

 

epoch는 전체 데이터에 대한 한번의 학습(forward 와 backward 포함)을 의미. 네트웍의 웨이트는 학습 시작시 초기값이 무엇이냐에 따라 학습 결과가 다르므로 매 epoch시마다 weight값이 수정되도록 한다면 매번 학습을 수행할때마다 전체 네트웍의 포텐셜이 달라짐. 그러나 항상 포지티브하게 달라짐을 보장할 수는 없으므로 매번 sum of loss 곡선을 확인 하면서 적당한 epoch의 수를 결정하는 것이 좋겠음.

batch size 한번의 학습시 사용되는 데이터의 수로 전체 데이터의 수보다 작거나 같음. batch size가 학습 효율에 어떤 영향을 끼칠지는 연구해봐야 하지만 큰 영향이 없을 것 같음(citation needed). 단지 사용하는 메모리의 문제일듯(?) [수정] 학습되는 모델의 성능으로의 영향보다는 학습 속도와 학습 효율에 영향을 줌. 한번의 batch 내에서의 학습된 내용은 batch 종료시까지 네트워크에 반영이 되지 않기 때문임. 따라서 학습 초기에는 적은 batch size로 빈번히 업데이트 해주고 학습 후기로 갈 수록 batch size를 크게 잡아주는 것이 효율적이지 않을까 생각됨. [여기까지 수정]

iteration은 정해진 batch size를 이용하여 학습(forward + backward)를 반복하는 횟수로 epoch와는 다른 의미. 한번의 epoch를 위해 수번의 iteration이 필요.

 

epoch는 학습 결과가 포지티브한 방향성이 관찰된다면 높은수를 정해줄 수록 좋은 결과를 얻을 수 있기 때문에 딥러닝에 좋은 하드웨어가 필요한 이유임. 그러나 높은 epoch는 데이터 자체를 머신에 학습시키는 것이므로 오버피팅의 문제가 있음. 적절한 epoch와 overfitting을 피하기 위한 기술 적용 필요.

posted by Dr.Deeeep