SparataCodingClub_/[Machine Learning]

3주차 개발일지

Jieon_ 2021. 7. 24. 17:05

3.1 Deep Neural Networks 구성 방법

1. Layer(층) 쌓기

  • Input layer(입력층): 네트워크의 입력 부분 (우리가 학습시키고 싶은 x 값)
  • Output layer(출력층): 네트워크의 출력 부분 (우리가 예측한 값, 즉 y 값)
  • Hidden layers(은닉층): 입력층과 출력층을 제외한 중간층, 완전연결 계층 (Fully connected layer = Dense layer)로 이루어져 있음

   보통 은닉층은 노드의 개수가 점점 늘어나다가 줄어드는 방식으로 구성되고, 마름모꼴 형태를 지닌다. 
   이때, 활성화 함수는 보편적으로 모든 은닉층 바로 뒤에 위치한다.

2. 네트워크의 Width(너비)와 Depth(깊이)

1. 네트워크의 너비를 늘리는 방법
   : 은닉층의 개수를 그대로 두고 은닉층의 노드 개수를 늘리는 방법

2. 네트워크의 깊이를 늘리는 방법
   : 네트워크의 은닉층의 개수를 늘리는 방법

3.2 딥러닝의 주요 개념

1. Batch size, Epoch (배치 사이즈, 에폭)

  • batch : 데이터셋을 작은 단위로 쪼개서 학습을 시키는데 쪼개는 단위
  • iteration : 쪼개는 것을 반복하는 과정
  • epoch : batch를 몇 개로 나눠놓았냐에 상관 없이 전체 데이터셋을 한번 돌 때 한 epoch가 끝

2. Activation functions (활성화 함수)
  : 비선형 함수로 다음 회귀를 활성화시킬 지를 결정

3. Overfitting, Underfitting (과적합, 과소적합)

  • Overfitting (과적합) : 문제의 난이도에 비해 모델의 복잡도(Complexity)가 클 경우 가장 많이 발생하는 현상
  • Underfitting (과소적합) : 문제의 난이도에 비해 모델의 복잡도가 낮을 경우 문제를 제대로 풀지 못하는 현상

3.3 딥러닝의 주요 스킬

1. Data augmentation (데이터 증강기법)
: 과적합을 해결하기 위해서는 데이터 개수를 늘리는 방법이 더 좋지만, 실무에서는 데이터가 부족한 경우가 많다. 이때, 부족한 데이터를 보충하기 위해 한 이미지를 여러 가지 방법으로 복사하여 학습시키는데, 이를 데이터 증강기법이라고 한다.

2. Dropout (드랍아웃)
: 노드의 연결을 끊어버려 랜덤하게 출력을 0으로 만들어 버린다. 과적합이 발생했을 때 적당한 노드들을 탈락시켜서 더 좋은 효과를 낼 수 있다.

3. Ensemble (앙상블)
: 여러 개의 딥러닝 모델을 만들어 각각 학습시킨 후 각각의 모델에서 나온 출력을 기반으로 투표를 한다.

4. Learning rate decay (Learning rate schedules)
: 실무에서도 많이 쓰는 기법으로 Local minimum에 빠르게 도달하고 싶을 때 사용한다. 

3.4 XOR 실습

https://colab.research.google.com/drive/1U0rXun1Z-ooNx4h01G_0vKFNrca8oB_M#scrollTo=MCKDXGjJbD1X

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

3.5 딥러닝 실습

https://colab.research.google.com/drive/1rcmauwGDE0psGkuzzdF6WOFxVJd-vUmn

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

3.6 3주차 과제

https://colab.research.google.com/drive/19pzRDIWdo4jlM3KDUrHSB2oi9C3tY5zN#scrollTo=DbCjpMHRrKA-

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

 

'SparataCodingClub_ > [Machine Learning]' 카테고리의 다른 글

4주차 개발일지  (0) 2021.07.26
2주차 개발일지  (0) 2021.07.24
1주차 개발일지.  (0) 2021.07.17