혁펜하임의 AI DEEP DIVE Chapter 3. 가중치 초기화 기법에 해당하는 내용을 듣고 새롭게 배운 내용들을 정리해보겠습니다.
정리에 앞서, 제가 생각하기에 본 강의를 100% 활용하는 공부 방식을 추천해보겠습니다.
(1) 새로운 개념이 나온다.
(2) 설명을 듣는다.
(3) 정지하고 질문들을 생각해본다.
(4) 강의를 들으며 질문들에 대한 답을 찾아본다.
딥러닝 / 머신러닝 분야는 인터넷 상에 공부해볼 자료가 바다처럼 넘쳐나지만 오히려 그렇기 때문에 제대로 소화하기가 어렵고, 안다고 착각하는 때가 많은 것 같습니다. 자주 봐서 안다고 착각하는 것인지, 정말 제대로 알고 있는지 파악하는 게 중요한 것 같습니다.
혁펜하임님도 강의 OT에서 파고들며 꼬치꼬치 물어보는 성격이 있다고 하셨는데, 저도 시간이 걸리더라도 이런 태도를 유지하며 강의를 듣고자 노력했습니다.
학부 과목으로 딥러닝 수업을 들은 이후에 거의 기억 속에서 잊어가던 내용이었습니다. 캐글이나 Github에서 Pytorch
코드를 자주 보는 편인데, 가중치 초기화 기법들이 명시적으로 나온 부분이 없었기 때문입니다.
이번 기회에 새로 정리해보았습니다.
(1) LeCun Initialization
(2) Xavier Initialization (Sigmoid, Tanh 신경망 사용)
(3) He Initialization (ReLU 신경망 사용)
이 내용을 보고 다음과 같은 질문들을 생각해볼 수 있었습니다. 본 포스트에서는 다음 질문들에 대해 부분적으로만 답변이 되어 있는 상태입니다. 다른 포스트로 점진적으로 추가해나가려고 합니다.
PyTorch에서 초기화 기법을 명시해놓은 코드를 많이 보지 못한 것 같습니다. 아마 내부적으로 구현이 되어 있는 것 같은데, PyTorch는 어떤 초기화 기법을 사용할까요?
Linear layer 클래스의 생성자 __init__
을 살펴보겠습니다.
마지막 줄의 self.reset_hyperparameters()
에 초기화 기법이 구현되어 있을 것 같습니다.
Kaiming uniform, 즉 He initialization을 사용하는 것을 확인했습니다. 자세한 내용은 torch.init
공식문서에서 확인할 수 있습니다. 공식 문서
본 게시글은 패스트캠퍼스 [혁펜하임의 AI DEEP DIVE] 체험단 활동을 위해 작성되었습니다.
강의 링크 : https://bit.ly/3GV73FN