728x90
모델 구조와 Loss, Optimizer
Process
- 1. 각 단계(task)는
- 이전 단계의 Output을 Input으로 받아
- 처리한 후
- 다음 단계로 전달
- 2. 공통의 목표를 달성하기 위해서 동작
- 예 : 상품기획 - 디자인 - 생산 - 물류입고 - 매장 판매
딥러닝 구조
모데 구조 설계
- input : 3개의 feature
- 분석 단위에 대한 shape
- 1차원 : (feature 수, )
- 2차원 : (rows, columns)
- 분석 단위에 대한 shape
- output : 예측 결과가 1개 변수(y가 1개 변수)
Loss function
- Loss function
- 다양한 이름 : 오차함수, 손실함수, 목적함수 (Objective Function)
- 학습 목적을 결정 : 이 값을 최소화/최대화 하는 것이 목적
Optimizer
- Optimizer
- 오차를 최소화 하도록 가중치를 업데이트 하는 역할
- Adam
- 최근 딥러닝에서 가장 성능이 좋은 Optimizer 로 평가 됨.
- lr : learning_rate
- 업데이트 할 비율
- 기울기(gradient)에 곱해지는 조정 비율(걸음걸이의 '보폭'을 조정한다고 표현)
학습률 learning rate
- 가중치(w) 한 개의 업데이트 과정을 예로 들면
Batch Size, Epoch, 학습 곡선
batch_size
- 전체 데이터를 적절히 나눠서 (mini batch)
- 예 : train data 가 12행일 떄, batch_size = 4 fh wlwjdgkaus
- 배치 단위로 학습(가중치 업데이트)
- Data Loader 생성 시 batch_size 지정
- 기본값 32 : 특별한 경우가 아니라면 보통 32로 지정
- 학습 데이터 크기를 감안하여 지정 (데이터가 많으면 32보다 크게)
- shuffle : 데이터를 섞어서 배치 단위로 분할
Epoch
- 주어진 train set을 몇 번 반복 학습할 지 결정
- 만약 Epoch = 10
- Train set 을 10번 반복해서 학습하면서
- 최적의 가중치를 찾는다. (마치, 공부할 때 교과서를 10번 공부한다는 의미로 이해할 수 있음)
- Epoch의 수 찾기
- 최적의 값은 케이스마다 다름
- 하이퍼파라미터 (하이퍼 파라미터 : 모델 학습시, 사람이 정해 주어야 하는 옵션, 다양한 값으로 시도해보고, 검증 평가를 통해서 최적의 값을 찾는 과정을 '하이퍼파라미터 튜닝'이라고 함)
학습 곡선
- 학습 곡선이란
- 모델 학습이 잘 되어있는지 파악하기 위한 그래프
- 정답은 아니지만, 경향을 파악하는데 유용
- 각 Epoch 마다 train error와 val error가 어떻게 줄어들고 있는지 확인
- Epoch = 10 : train data를 10번 반복 학습
- 바람직한 학습 곡선
- 1. 초기 epoch에서는 오차가 크게 줄고
- 2. 오차 하락이 꺾이면서
- 3. 점차 완만해짐
- 그러나 학습곡선의 모양새는 다양함
- 모델 학습이 잘 되어있는지 파악하기 위한 그래프
학습 곡선
- 바람직하지 않은 학습 곡선
- Case 1 : 학습이 덜 됨
- 오차가 줄어들다가 학습이 끝남
- 조치
- epoch수를 늘리거나
- learning rate를 크게 한다.
- Case 1 : 학습이 덜 됨
- Case 2 : train_err가 들쑥날쑥
- 가중치 조정이 세밀하지 않음
- 조치
- learning rate를 작게
- Case 3 : 과적합
- Train_error는 계속 줄어드는데, val_error는 어느 순간부터 커지기 시작
- 너무 과도하게 학습이 된 경우
- 조치
- Epoch 수 줄이기
Hidden Layer 와 활성함수
딥러닝 구조 - 선형 회귀
딥러닝 구조 - Hidden Layer 추가
은닉층 Hidden Layer
- input : 12개의 feature
- 은닉층 :
- 노드 2개
- 은닉층은 활성함수가 필요!
- 출력층 : 노드 1개
- nn.Linear 함수 레이어를, 빽뺵하게 모두 연결되어 있다고 해서 Fully Connected Layer 혹은 Dense Layer 라고 부른다.
활성화 함수 Activation Function
- 활성화 함수는
- 현재 레이어(각 노드)의 결과값을 다음 레이어(연결된 각 노드)로 어떻게 전달할지 결정/변환해주는 함수입니다.
- 꼭 필요한가?
- 만약 활성화 함수가 없으면
- 그래서 활성화 함수는
- Hidden Layer에서는 이런 선형함수를 비선형 함수로 변환해 주는 역할
- Output Layer에서는 결과 값을 다른 값으로 변환해 주는 역할
- 분류 Classification 모델에서 필요
Hidden Layer의 노드 수
- 첫 은닉층에서 오른쪽 레이어로 갈수록 점차 줄여간다.( 여기에는 정답이 없다 )
- 늘렸다가 줄일 수도 있다. (다양한 시도는 사용자의 몫)
요약
- 모델 :
- 회귀모델 : 숫자를 예측하는 모델
- 분류모델 : 범주(Class)를 나누는(분류하는) 모델
- Layer
- Layer에는 input과 output을 지정 (output 수 = 노드수)
- Output layer의 node 수 : 1
- Activation Funcion
- Hidden layer 에 필요 : 비선형 모델로 만들려고 -> hidden layer 를 여러 층 쌓아서 성능을 높이려고
- 회귀 모델링에서 Output Layer 에는 활성화 함수 필요하지 않음
728x90