StoneSeller 2022. 9. 23. 18:59

DAY02 피어세션

Q. SGD가 GD보다 더 나은이유?
  • 극소점을 탈출할 수 있다 (local minimum이 아니라 global minimum에 수렴할 가능성이 높아진다
  • 현실적인 문제로는 메모리 문제, 시간 = 돈 이기때문에 보다 빠른 학습이 가능한 mini batch를 사용한다.

 

Q. SGD는 말 그대로 확률적으로 랜덤하게 미니배치를 뽑는데 만약에 뽑은 미니배치가 한쪽으로 쏠릴 수도 있지 않을까?

 

학습 epochs수를 늘린다면 결국 뽑은 미니배치는 정규분포에 수렴할 것 같다.

 

SGD는 아래 그림과 같이 심하게 굽이진 움직임을 보여준다.  즉, SGD의 단점은 비등방성(anisotropy) 함수(방향에 따라 성질, 즉 여기에서는 기울기가 달라지는 함수)에서는 탐색 경로가 비효율적이라고 할 수 있다.

→ 이러한 단점을 개선한 방법이 모멘텀, AdaGrad, Adam이다.

 

Q. map, apply, applymap 함수의 차이점은?
map: 매핑할 pair들을 dictionary꼴로 넣어주거나 함수 또는 또다른 series로 넣어줄 수 있다.

apply: series에 적용가능한 map과 달리, apply는 series/dataframe 둘 다 사용가능한 메소드이다. 또한 map과 달리 지정해주는 axis에 따라 주어진 함수를 적용할 수 있다.

applymap: dataframe에만 사용가능한 메소드이다. apply와 다르게 모든 element에 같은 함수를 적용하기때문에 axis를 지정할 필요가 없다.

 

 

Q. 데코레이터 함수, 딥러닝에서는 어디서 사용할까?

A. @staticmethod 좀 더 찾아보기!

 


그 밖의 의논사항
다음주부터 Kaggle 진행해보기

 

개인회고
팀원분들이랑 진행할 Kaggle 주제를 주말에 찾아보자

 

 


 

DAY03 피어세션

Q. 경사하강법 미분 공식 유도

 

Q. Likelihood와 Probability의 차이

원재님의 영상 추천 링크

 

입력 데이터는 변하지만 분포는 고정되어 있는 상황을 "확률"이라고 할 수 있다.

$$ p(data|distribution) = probability $$

 

입력 데이터는 고정되어있지만 분포가 변하는 상황을 "가능도(likelihood)"라고 할 수 있다.

$$ L(distribution|data) = likelihood $$

 


그 밖의 의논사항
금요일에는 기본과제/심화과제 서로 코드리뷰하기

→ github 레포에 각자 브랜치 파서 코드 커밋

 

개인 회고
팀원들에게 내가 아는 것을 매끄럽게 설명하는 것에 대한 연습이 필요하다.

 

 


 

DAY04

피어세션

Q. 딥러닝 학습방법 이해하기 강의에서 층이 깊어질수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어서 효율적이라는 부분이 이해가 가지 않는다.

같은 갯수의 노드 수를 가지고 있는 레이어를 깊게 쌓으면  목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들지 않는데 효율적이라고 할 수 있을까라는 생각이 들었습니다.

아니면 레이어를 쌓을 때 노드의 개수를 줄여가면서 쌓을 수도 있기 때문에 효율적이라고 하는 것인지 헷갈려서 질문드립니다!

 

조교님의 답변

이론적으로 1개의 hidden layer만 있어도 모든 함수를 근사할 수 있지만, 이 때는 무한개의 노드 개수를 가정한다.

그런데, 레이어를 다층구조로 가져가면 node 개수를 적게 할 수 있어서 결국 모델의 전체 파라미터를 줄일 수 있다는 뜻이다.

 

레이어를 쌓을 때 노드의 개수를 줄여가면서 쌓을 수도 있기 때문에 효율적이라고 생각하는 것이 맞다.

 

행렬이 연산자가 될 수 있다고 배웠고 이를 통해 n차원 행렬을 m차원 행렬로 변환을 할 수 있다.

이를 응용해본다면, w라는 가중치는 연산자로서의 행렬로 생각해 볼 수 있고, 우리는 이  w라는 가중치를 표현하는 연산자로서의 행렬을 통해 기존의 행렬을 더 적은 차원의 행렬로 변환시킬 수가 있다.

그렇기 때문에 w를 반복해서 사용해가며 층을 깊게 만들어나간다면 이론적으로는 차원을 계속해서 줄여나갈 수 있다.

 


그 밖의 의논사항

 

개인 회고

팀원분들의 질문을 들어보면 나는 왜 그런생각을 못했을까 라는 생각이 들 때가 많다.

강의를 들으면서 아 그렇구나 하고 그냥 넘어갈 떄가 많은데 이건 어디에 사용되는지, 왜 사용되는지를 생각해보는 습관을 가져야겠다.

 

 


 

DAY05

피어세션

한 주간의 팀 회고를 진행하였다.팀 적으로 좋았던 것, 잘못했던것(아쉬웠던것), 도전할것, 알게된것을 정리하는 시간을 가졌다.
팀 노션 페이지 1주차 회고 링크:

 

개인적인 한 주 회고

좋았던 것

  • 수요일, 금요일..빼고 8시 30분에 일어나서 40분간 걷기운동을 성공한 것

잘못했던것, 아쉬운것, 부족한것

  • 강의를 들으면서 아 그렇구나 하고 그냥 넘어갈 떄가 많음 →이건 어디에 사용되는지, 왜 사용되는지를 생각해보기
  • 심화과제: 수식을 구현하는 능력도 부족함 → 여러번 복습
  • 조리있게 설명할 수 있도록 노력하기

도전할 것, 시도할 것

  • 다음주부터 진행하는 kaggle 시간 잘 분배해서 도전해보기(시간 분배 잘하기)
  • 주말동안
    • 정리한거 다시 읽기
    • 데코레이터를 어디서 왜 사용하는지 찾아보기

키워드(공부한 것,알게된 것, 느낀 점)

  • -GD보다 미니배치SGD를 사용하는 이유
    현실적으로는 non-convex한 문제들이 많음, SGD는 non-convex한 목적식을 최적화할 수 있다. 
    미니배치를 사용하기 때문에 학습속도가 빠르다(시간==돈!)
  • 마스터클래스(임성빈 교수님)의 말씀 중 ‘문제를 해결하려면 그 문제를 잘 정의해야한다.’

 

 

728x90