[Day6] Boostcamp AI-Tech

donggunseo·2021년 8월 9일
0

Boostcamp AI-Tech

목록 보기
6/34

2021년 8월 9일
2주차 DL Basics
강의 수강 : 1강~2강

1. 학습내용 정리

1강에서는 딥러닝의 역사, 2강에서는 일반적인 Multi-Layer Perceptron에 대해 다루었는데, 사실 내용이 Day4와 많이 겹친다. 따라서 이론적인 부분은 더 이상 언급하지 않겠다. 대신 Pytorch로 직접 실습해보는 과정이 추가되었는데, 평소 Pytorch를 잘 다뤄보지 않아서 코드를 이해하는데 조금 어려움이 있었다. 기본적인 베이스가 keras다보니 원래 쓰던 Tensorflow2와 메커니즘은 비슷한데 처음보는 코드가 하나 있어 가져와봤다.

nn.init.kaiming_normal_(self.lin_1.weight)

가중치 파라미터를 initialization하는 함수인데 탐색을 통해 He initialization하는 함수임을 알았다. He initialization은 activation function으로 ReLU계열을 쓸 때 사용한다. 일반적으로는 Xavier initailization을 사용하지만 ReLU에 Xavier를 사용할 경우 성능이 좋지 못해 He를 사용하게 된다고 한다. 참고로 Xavier와 He의 차이는 앞 layer의 뉴런 수를 n이라고 할때, 랜덤한 가중치 파라미터 행렬을 생성하고 이에 1n\sqrt{\frac{1}{n}}를 곱하느냐 2n\sqrt{\frac{2}{n}}를 곱하느냐 차이이다. (정확히는 저 값의 표준편차를 가진 분포를 사용한다는 것이다).

2. 과제

필수과제1은 사실 파이토치 실습강의를 보고 따라하는 것과 같아서 정리할 내용이 없다. 다만 선택과제들이 있는데 이건 아무래도 이번주 내용을 다 듣고 해야되지 않나 싶다.

3. 피어세션

파이토치강의가 더 우선되어야 하지 않았나라는 의견이 공유되었다. 또 Optimizer에 대해 SGD가 이상적으로 더 좋은데 Adam이 더 일반적으로 많이 사용되는 이유에 대한 질문에서 SGD가 충분한 컴퓨팅 자원과 양질의 데이터가 있다면 제일 좋지만 그렇지 않은 경우가 많아 최선의 방법으로 최적화하기 위해 Adam을 사용한다고 답이 나왔다. 또 학습 정리에서 언급한 코드에 대해 물어 생각을 공유하였다.

1주차 선택과제에 대한 피드백에서 재빈님의 Multi-variable linear regression 코드에서 element-wise하게 코드를 짜셨는데 에폭을 지정된 값보다 훨씬 늘려야 학습이 되는 문제가 있었고, 내가(!!) 그 윗 코드에서 사용하던 변수 ndata = 1000으로 그레디언트들을 나눠주는 실수를 발견하여 해결해드렸다. 또 선택과제2번 RNN back-propagation에서 WxW_x WRecW_{Rec}이 일반적인 행렬이 아닌 스칼라값으로 식이 표현되어 헷갈렸다는 의견을 공유하였다. 마지막으로 선택과제3에서 유진님이 정규분포의 모수를 추정하는 과정에서 표본데이터로 x0=1x_0=1이라는 값이 주어졌을 때, 이를 확률밀도함수 pdf에 넣는 것이 가능도로 해석될 수 있는지에 대해 질문을 남기셨다. 해결하지 못해 질의응답게시판을 활용하기로 하였다.

내일부터 통계학 스터디와 시각화 강의 수강까지 같이 하기로 하여 굉장히 빡빡한 하루가 될 것 같다.

4. 마무리

슬슬 내용들이 전문화되어간다. 무섭다...

0개의 댓글