본문 바로가기
기타/TIL

[TIL] SGD 에 대한 제대로 된 이해

by 혜 림 2021. 10. 14.

 

 오피스 갔다와서 또 물어본 이야기

 

 부끄러운 말이지만 논문을 그렇게 읽었지만 아직도 SGD를 이해를 못했다. 이번에 물어보면 너무너무 좋을 기회일 것 같아서 같이 물어봤다. 

 

 일단 SGD란 확률적 경사하강법인데, 난 여기서 '확률적'이라는 말을 이해할 수 없었다. 

 

 SGD에서는 batch size가 1인 배치를 이용해서 총 샘플 수 만큼 iteration을 한다. 그러면 결국 계산하는 순서만 랜덤인거라는 생각이 들었다. 그래서 모든 데이터 셋을 한꺼번에 이용하느냐, 하나씩 하느냐가 다른거 아닌가 싶어서 왜 '확률적'이라는 말을 쓰는지 의아했다. 

 

 일단 내가 이해한 건 맞다. batch size가 1인 배치를 이용하는 것도 맞고, 샘플 수만큼 iteration 하고 가중치를 업데이트 하는 것도 맞다. 하지만 '확률적'이라는 단어가 붙는 이유는 하나의 gradient로 가중치를 변경해주는 과정을 샘플 수 만큼 하는 것과 데이터 전체의 gradient로 가중치를 변경해주는 과정을 한 번 하는 것의 결과값이 다르기 때문이다. 

 

 매번 하나의 gradient로 업데이트 하기 때문에 한꺼번에 여러개 쓰는 것과는 결과가 다르고 그렇게 때문에 하나의 gradient가 튀는 방향이 되게 중요해지는 것이다. 그래서 최종적으로 얻는 결과값이 되게 다르기에 '확률적'이라는 용어를 쓴다고 생각하면 된다. 

 

 또 덧붙여서 내가 궁금한 건 이렇게 데이터를 sampling할 때 replace를 허용하는 가였다. 교수님이 좋은 질문이라고 해주셨지만 실은 많은 코멘트를 달아주시지는 않아서 좀 아쉽.. 하여튼 결론은 replace는 이용하지 않는다는 것이다. replace를 이용하면 전체 데이터의 6~70%만 이용하기 때문에 그냥 전체를 랜덤하게 shuffle해서 replace없이 데이터를 다 이용한다고 한다. 흥미로운 세계! 

 

 

너무 일기같지만 교수님이 열심히 한다고 해주셔서 기분이 좋았다~ 나 자신 파이팅~ 

'기타 > TIL' 카테고리의 다른 글

[TIL] feature map은 대체 뭘 나타내는가?  (0) 2021.10.14
[TIL] 파이토치 error 2건  (0) 2021.09.01

댓글