1. 딥러닝 개념 이해
1.1. 딥러닝이란?
- 인공 신경망(Artificial Neural Net)
- 신경망을 인공적으로 구현한 것
- 신경망을 깊이(Deep) 쌓아서 학습시키는 방식 ➔ Deep Learning
- 학습을 통해 연결의 강도를 조정 ➔ 가중치(Weight)
- Deep Learning으로 할 수 있는 것
- Universal Approximation Theorem (보편 근사 정리)
- 1989년 Cybenko가 작성한 논문
- “어떤 연속 함수든, 뉴럴넷으로 모두 구현할 수 있다.”
- Deep Learning으로 만들 수 있는 머신러닝 알고리즘
- 지도학습 : 선형회귀, 로지스틱 회귀, KNN, DT, SVM, 랜덤 포레 등
- 비지도학습 : 차원축소(PCA), k-means, 이상탐지용 알고리즘
- 그 외, Deep Learning으로 할 수 있는 것들
- 이미지 모델링, 언어 모델링, 시계열 모 등
- 현재 생성형 AI의 기본이 되는 Transformer 구조
1.2. 딥러닝 개념 - 가중치
- 가중치(Weight):
- 노드에 대한 중요도를 표현하는 것
- 입력 데이터에 노드 별 비중을 크거나 작게 둠으로써 곱해지는 값을 달리함
- 예시(아이스크림 판매량 예측)
- 1~3월의 판매량으로 4월 판매량을 예측
1월 판매량 | 2월 판매량 | 3월 판매량 | 4월 판매량 |
110 | 120 | 125 | ? |
- 4월 판매량 = 𝑤1 ∙ 1월 + 𝑤2 ∙ 2월 + 𝑤3 ∙ 3월
- 최적의 모델: 오차가 가장 적은 모델을 의미
- 가중치 조정
- 아래 단계를 반복
- 조금씩 가중치를 조정하며
- 오차가 줄어드는지 확인
- 언제까지?
- 지정한 횟수만큼
- 또는, 더이상 오차가 줄지 않을때까지
- 학습한다는 것은
- "오차를 최소화 하는 파라미터(가중치) 값을 찾는다." 는 의미!
➔ 모델링의 목표
- "오차를 최소화 하는 파라미터(가중치) 값을 찾는다." 는 의미!
1.3. 딥러닝 개념 - 학습 절차
- 실습 데이터: 보스턴 집값 데이터
- lstat(하위계층 비율)로 medv(집값) 예측
- 어떤 정보를 ○으로 표현
- ○을 node라고 부릅니다. 또 뉴런(Neuron)이라고 부르기도 합니다.
- 수식으로 적으면 아래와 같습니다.
- 𝑚𝑒𝑑𝑣 = 𝑤1 ∙ 𝑙𝑠𝑡𝑎𝑡 + 𝑤0
- model.fit(x_train, y_train) 하는 순간 일어나는 일
단계1 | 가중치에 (초기)값 할당 - 초기값은 랜덤으로 지정 |
단계2 | (예측) 결과 도출 |
단계3 | 오차 계산 (실젯값 - 예측값) |
단계4 | 오차를 줄이는 방향으로 가중치 조절 - Optimizer: GD, Adam 등 (조정 비율: learning rate) |
단계5 | 다니 단계1로 올라가 반복 - max iteration에 도달하면(오차 변동의 거의 없으면) 끝. |
- 파라미터(parameter): 가중치의 다른 용어
- 25번 조정하며 최적의 가중치를 찾는 과정
1.4. 요약: 딥러닝 개념 이해
- 딥러닝 학습 절차
- 가중치 초기값 할당(초기 모델 생성)
- (초기)모델로 예측
- 오차 계산 (loss function)
- 가중치 조절: 오차를 줄이는 방향으로 가중치를 적절히 조절(optimizer)
- 적절히 조절 → 얼마나 조절할 지 결정하는 하이퍼파라미터: learning rate (lr)
- 다시 처음으로 가서 반복
- 전체 데이터를 적절히 나눠서(mini batch) 반복: batch_size
- 전체 데이터를 몇 번 반복 학습할 지 결정: epoch
2. 딥러닝 모델링 ① Regression
2.1. 딥러닝 전처리: 스케일링
- 딥러닝은 스케일링이 필수
- 방법1: Normalization(정규화)
- 모든 값의 범위를 0 ~ 1로 변환
- 방법2 : Standardization(표준화)
- 모든 값을, 평균 = 0, 표준편차 = 1 로 변환
- 스케일링 코드
# 스케일러 선언
scaler = MinMaxScaler()
# train 셋으로 fitting & 적용
x_train = scaler.fit_transform(x_train)
# validation 셋은 적용만!
x_val = scaler.transform(x_val)
2.2. Process
① 각 단계(task)에서 하는 일
- 이전 단계의 Output을 Input으로 받아
- 처리한 후
- 다음 단계로 전달
② 공통의 목표 달성을 위해 동작
2.3. 딥러닝 구조
2.4. 딥러닝 코드
- Dense
- Input : Input(shape = ( , ))
- 분석단위에 대한 shape
- 1차원 : (feature 수, )
- 2차원 : (rows, columns)
- 분석단위에 대한 shape
- Output : Dense( )
- 예측 결과가 1개 변수(y가 1개 변수)
# 메모리 정리
clear_session()
# Sequential 타입
model = Sequential([Input(shape = (nfeatures,)),
Dense(1) ])
# 모델요약
model.summary()
'에이블스쿨 6기 DX 트랙 > 일일 복습' 카테고리의 다른 글
딥러닝 2일차 (0) | 2024.11.06 |
---|---|
딥러닝 4일차 (0) | 2024.11.04 |
머신러닝 - 비지도 학습 1일차 (0) | 2024.10.21 |
성능 평가 (0) | 2024.10.17 |
데이터 분석 - 이변량: 범주 vs 숫자 (0) | 2024.10.04 |