에이블스쿨 6기 DX 트랙/일일 복습

딥러닝 1일차

d061120 2024. 10. 30. 19:26

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. 조금씩 가중치를 조정하며
    2. 오차가 줄어드는지 확인
  • 언제까지?
    • 지정한 횟수만큼
    • 또는, 더이상 오차가 줄지 않을때까지
  • 학습한다는 것은
    • "오차를 최소화 하는 파라미터(가중치) 값을 찾는다." 는 의미!
      ➔ 모델링의 목표

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)
  • 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