[강화시스터즈 1기] 딥러닝 연산, 학습 평가, 파이토치
3주차 추가 세션
요약
추가 세션 : 딥러닝 두 번째 세션을 진행했습니다.
이 세션은 자발적인 스터디로 운영진의 지도 하에 진행됩니다.
이론 스터디는 묵빠 내기로 조가 정해졌습니다! 승연-정연 벗, 은나-주현 벗이 조를 이루어 공부한 내용을 공유했습니다. 공통적으로 feed-forward와 back propagation을 편미분으로 계산하는 문제에서 고전하는 모습을 보였습니다. 이 부분은 마지막 추가 세션에서 다시 공부하기로 했습니다.
추가적인 구현은 진행하지 않았지만, 파이토치와 매직 매소드(빌트인 함수)를 엮어 구현 장벽을 낮췄습니다.
딥러닝 이론
- feed-forward & back-propagation
- loss와 acc
- 그라디언트 : 소실 / 폭파 문제와 직접 계산하기
그라디언트 소실 및 폭파 문제 상황을 인지하고, 소실 폭파 문제를 해결할 수 있는 방법론에 대해 이야기를 나눴습니다. 그라디언트 소실 문제를 해결하기 위해 발전한 활성화 함수 계보, 배치 정규화의 문제 해결과정을 이야기 했습니다. loss와 acc가 왜 학습 지표로써 의미가 있는지 명확한 정의와 함께 설명했고, loss와 acc가 같이 올라가거나, 내려갈 때 학습이 잘 된 모델을 고르기 위해서 어떤 지표에 집중해야 하는가에 대해 이야기 했습니다.
pytorch
- Dataset, DataLoader, Net
- Dataset class에 정의되어야 하는 매직 매소드 : init, len, getitem
- DataLoader의 기능과 반환값
- Net의 forward는 왜 매직 매소드가 아님에도 일반적인 매소드처럼 call하지 않는가?
저번 코드 구현 시간에 가장 어려웠던 구현이 무엇인지 이야기를 나눴습니다. 아무래도 pytorch가 아직 익숙하지 않다보니, Dataset class를 상속받아 만드는 커스텀 Dataset class에서 공통적으로 어려움이 있었습니다. 이 부분을 보완하기 위해 매직 매소드 개념을 설명했고, getitem와 더불어 iterable한 성질에 대해 추가적으로 언급했습니다. Dataset과 DataLoader 클래스는 파이토치를 이용한 딥러닝 구현에 무조건 필요한 구성인가에 대해 설명했습니다. 이 기능은 그저 pytorch에서 제공하는 유틸성 기능일 뿐이며, 가장 중요한 것은 Dataset과 DataLoader의 속성과 반환값의 형태임을 강조했습니다. 공부한 매직 매소드를 바탕으로 Net에서 forward 매소드가 어떻게 코드상에서 call되지 않아도 굴러가는지에 대해 공부해오기로 했습니다.
핵심 내용
- 그래디언트 소실 문제는 input layer쪽으로 갈수록 심화된다.