optimizer.zero_grad() 질문 드립니다.
1100
投稿した質問数 8
안녕하세요. 딥러닝호형님 강의 유익하게 잘 보고 있습니다.
optimizer.zero_grad() 관련 질문 드립니다.
1. 각 epoch마다 gradient를 초기화하는게 아니라 각 iteration마다 gradient를 초기화해주는 이유는 무엇인가요? 전체 데이터를 한번 다 돌고 난 뒤에 gradient를 초기화하는 것이 아니라, 각 미니배치마다 gradient를 초기화해서 새롭게 학습해야 하는 것인가요?
2. model.zero_grad()와 optimizer.zero_grad()의 차이는 무엇인가요?
그럼 답변 기다리겠습니다. 감사합니다!
回答 2
1
안녕하세요! Zero 님 :)
너무 좋은 질문 감사합니다!!
1. 일반적으로 모델을 최적화 하는 방법이 SGD기반 입니다. 따라서 데이터 일부를 받아 모델 파라메터를 업데이트 하는 것입니다. 즉, 이 말은 배치마다 업데이트 하겠다는 의미입니다. 왜 이렇게 하는지에 대해서는 이론편에서 언급 드렸는데 epoch이 1이라는 말은 데이터 전체를 한 번 사용했다는 의미이므로 epoch 기준으로 업데이트를 하면 데이터 전체에 대한 연산이 이뤄집니다. 결국 이는 완벽한 GD는 아니지만 GD와 유사하게 메모리 문제나 학습 시간이 길어지는 등의 문제를 야기할 수 있습니다. 게다가 SGD를 기반으로 하는 여러 방법론(ADAM, Momentum 등)들의 성능이 이미 검증 된 만큼 전체 데이터를 이용한 학습을 하지 않습니다.
다만, 학습 메카니즘 측면에서는 epoch for문을 기준으로 최적화하는 방법을 사용하지 않는 것이지 틀린 표현은 아닙니다 :)
2. zero_grad() 앞은 최적화로 정의 된 변수가 들어옵니다. 즉, optimizer = optim.Adam.... 이라고 정의 하시면 optimizer.zero_grad()로 사용하시면 됩니다. 매 학습 시 누적 된 그레디언트를 초기화 해주는 역할을 합니다 :) 혹시 강의 코드에 model.zero_grad()이라는 표현이 있던가요!!?
0
자세한 답변 감사드립니다!
그리고 강의 코드 내에는 model.zero_grad()란 표현이 없었지만 제가 optimizer.zero_grad()에 대해서 좀 더 검색해보다가 model.zero_grad()로 써놓은 코드들도 보게 되어서 두 코드의 차이가 뭔지 궁금해졌습니다! 이 두개를 같은 용도로 보아도 될까요?
0
참고로 변수명의 차이가 아닌 model이 실제 모델명인 경우에도 일반적으로 같은 이유가model.parameters를 optimizer에 넣기 때문입니다. 만약 optimizer에 model의 전체 변수를 넣지 않거나 다른 모델 변수가 주어지면 초기화 범위는 달라질 수 있겠네요 :)
수업자료 제공 부탁드립니다.
0
95
2
코드가 어디에 있는지 모르겠습니다.
0
93
2
논문 구현
0
184
2
overfitting이 나는 이유가 궁금합니다.
1
169
2
분류 성능이 잘 안 나오는 이유
0
217
1
AutoEncoder 차원 질문
1
250
2
사전 학습 모델에서의 layer 변경에 대한 질문
1
218
1
7강 폴더 만들
0
259
1
4-3강 cross-validation에서의 best model 선정 기준
0
447
1
regression 문제에 대한 결과 시각화
0
213
1
Loss function 관련하여 질문드립니다.
0
954
1
early stopping 코드 문의
0
325
1
예측 그래프
0
353
1
데이터 불균형
1
364
1
8강 전이 학습 질문
0
395
2
data의 gpu처리 질문
0
240
1
nn.Linear(1024, 10) 관련 질문드립니다.
0
287
1
학습과 평가시 Loss 함수가 다른 이유
0
249
1
전처리 관련해서 질문 있습니다.
0
224
1
데이터 엔지니어의 역량을 기르려면 어떻게 해야할까요?
0
933
2
역전파 내용 중 미분 관련 질문 드립니다
1
281
1
8강 전이학습에서 kernel size 관련 질문 드립니다.
1
956
1
이미지분류-합성곱신경망(CNN) 피쳐맵 질문입니다.
1
585
1
14강 데이터 불균형 RandomRotation
1
481
1

