inflearn logo
강의

講義

知識共有

[PyTorch] 実戦人工知能へとつながるディープラーニング - 基礎から論文実装まで

住宅価格予測 - 多層パーセプトロン(MLP)

optimizer.zero_grad() 질문 드립니다.

1100

ZERO

投稿した質問数 8

0

안녕하세요. 딥러닝호형님 강의 유익하게 잘 보고 있습니다.

optimizer.zero_grad() 관련 질문 드립니다.

 

1. 각 epoch마다 gradient를 초기화하는게 아니라 각 iteration마다 gradient를 초기화해주는 이유는 무엇인가요? 전체 데이터를 한번 다 돌고 난 뒤에 gradient를 초기화하는 것이 아니라, 각 미니배치마다 gradient를 초기화해서 새롭게 학습해야 하는 것인가요? 

 

2. model.zero_grad()와 optimizer.zero_grad()의 차이는 무엇인가요? 

 

그럼 답변 기다리겠습니다. 감사합니다! 

pytorch 머신러닝 배워볼래요? 인공신경망 python 딥러닝

回答 2

1

dlbro

안녕하세요! 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

ZERO

자세한 답변 감사드립니다! 

그리고 강의 코드 내에는 model.zero_grad()란 표현이 없었지만 제가 optimizer.zero_grad()에 대해서 좀 더 검색해보다가 model.zero_grad()로 써놓은 코드들도 보게 되어서 두 코드의 차이가 뭔지 궁금해졌습니다! 이 두개를 같은 용도로 보아도 될까요?

0

dlbro

네 같은 용도입니다. 앞에 optimizer, model 이런건 사용자가 변수명을 어떻게 썼는냐의 차이입니다 :)

0

ZERO

아하 그렇군요. 답변 감사드립니다 ㅎㅎ 딥러닝호형님! 

0

dlbro

참고로 변수명의 차이가 아닌 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