딥러닝

딥러닝 (Deep Learning) 개요

ynzify 2023. 7. 8. 17:02

인공신경망

  • 소프트웨어적으로 인간의 뉴런 구조를 본떠 마든 기계학습 모델
  • 인공지능을 구현하기 위한 기술 중 한 형태
  • 뉴런을 모방하는 기초단위 노드 (Node)
    • 각각의 신경 단위에서 많은 입력들을 조합해서 하나의 출력값으로 배출
    • 비선형 변환(활성함수)을 통해 다음 노드에 전달
  • 피드 포워드(Feed-Forward) 신경망
    • 입력에서 출력으로 이어지는 과정이 한방향으로 흘러 순환이 없는 신경망

인공 뉴런 (퍼셉트론)

  • w: weight (가중치)
  • b: bias (편향)
  • h(): activation funciton

 

 

딥러닝 (Deep Learning)

  • 딥러닝은 머신러닝 알고리즘 중 하나인 인공신경망을 다양하게 쌓은 것
  • 인공신경망을 여러 겹으로 쌓으면 딥러닝이다
  • 머신러닝이 처리하기 어려워하는 비정형 데이터를 더 잘 처리한다

 

여러개의 히든 레이어

 

 

딥러닝의 단점

  • 학습을 위해 상당히 만은 양의 데이터를 필요로 함
  • 계산이 복자바고 수행시간이 오래걸림
  • 이론적 기반이 없어 결과에 대한 장담이 어려움
  • 블랙 박스 접근 방식

 

딥러닝의 활용

 

 

경사 하강법 (Gradient Descent)

  • 모델이 잘 학습할 수 있도록 기울기(변화율)을 사용하여 모델의 파라미터를 조정하는 방법
    • 과정
      1. 예측과 실제값을 비교하여 손실을 구함
      2. 손실이 작아지는 방향으로 파라미터 수정
      3. 반복
    • 경사(기울기) -  파라미터에 대한 오차의 변화
      • 기울기 +: 파라미터 ↓
      • 기울기 - : 파라미터 ↑

 

매개변수(媒介變數), 파라미터(parameter), 모수(母數) 

수학과 통계학에서 어떠한 시스템이나 함수의 특정한 성질을 나타내는 변수를 말함

 

 

학습률 (Learning Rate)

파라미터를 업데이트 하는 정도를 조절하기 위한 값

 

  • 학습률이 너무 큰 경우

 

  • 학습률이 너무 작은 경우

 

 

순전파 (Forward Propagation)

  • forward pass
  • 입력 데이터를 기반으로 신경망을 따라 입력층(Input Layer)부터 출력층(Output Layer)까지  각 뉴런들이 자신만의 출력을 하는 과정

 

 

역전파 (Back-propagation)

  • backward pass
  • 효율적인 계산을 위해 역전파 알고리즘 사용
  • 딥러닝은 역전파 알고리즘을 이용해 모든 가중치를 구함
  • 손실값을 구해 이 손실에 관여하는 가중치들을 손실이 작아지는 방향으로 수정하는 알고리즘
  • 파라미터를 업데이트할 때 필요한 손실에 대한 기울기를 역방향으로 업데이트
  • 쉽게 역순으로, 거꾸로 곱해준다고 생각하기

 

 

기울기 소실 문제와 활성화 함수

  • 층이 깊어지면서 역전파 과정에서 가중치를 수정하려는 기울기가 중간에 0이 되거나 0에 매우 가깝게 작아지는 경사 소실(vanishing gradient) 문제가 발생한다

 

기울기 소실(Vanishing Gradient)

  • 딥러닝이 복잡해 질수록 기울기 소실이 발생

소실되는, 0에 수렴하는 그림

 

 

예시

출력값이 0에 수렴해버림

 

 

해결 방법 -> ReLU

 

좌: 음수면 0으로 양수값이면 그대로 출력           우:(미분 함수 그래프) 양수값을 그대로 내보내니까 기울기는 1

 

ReLU(Rectified Linear Unit) 함수
  • 입력값이 음수이면 0을 출력하고 양수 값이면 그대로 흘려보내는 활성화 함수
  • Sigmoid 함수의 기울기 소실 문제를 해결해준 함수 (시그모이드보다 효율적)
  • 연산이 간편하고 Layer를 깊게 쌓을 수 있다는 장점
  • 모든 뉴런을 전부 동시에 활성화 시키지 않는다

 

손실 함수 (Loss function)

  • 모델의 출력값(output)과 정답과의 차이(오차 error)를 의미
  • 신경망이 학습할 수 있도록 해주는 지표
  • 손실 값이 최소화 되도록 하는 가중치(weight)와 편향(bias)를 찾는 것이 학습 목표

 

회귀(Regression)에서의 손실함수

  • MSE (Mean Squared Error)
    • L2 loss
    • 이상치에 민감
  • MAE (Mean Absolute Error)
    • L1 loss
    • 이상치에 강건

어떤게 점수가 잘 나올지 모르므로 두개 다 해보기

 

 

다중 분류(Multi-class Classification)에서의 손실 함수

  • CE(Cross Entropy)
  • 예측 확률이 실제값과 얼마나 비슷한가를 측정

 

이진 분류(Multi-class Classification)에서의 손실 함수

  • BCE(Binary Cross Entropy)

 

 

배치(Batch)

  • 일을 모아서 한번에 처리하는 단위
  • Batch Gradient Descent
    • 장점: 전체 데이터에 대해 error gradient를 계산하기 때문에 optimal로 수렴이 안정적
    • 단점: local optimal 상태가 되면 빠져나오기 힘듦
  • Stochastic Gradient Descent
    • 장점: shooting이 일어나기 때문에 local optimal에 빠질 위험이 적음
    • 단점:global optimal을 찾지 못 할 가능성이 있다
  • Mini-Batch Gradient Descent (요즘 사용중)
    • 장점: BGD보다 local optimal에 빠질 리스크가 적다. (그래도 빠질 리스크는 있다)
    • 단점: batch size(mini-batch size)를 설정해야 함

 

 

 

 

Optimizer

미니배치 경사 하강법의 방식을 보완하고, 학습 속도를 높이기 위한 알고리즘

 

  • SGD(확률적 경사 하강법)
    • 랜덤하게 추출한 일부 데이터를 사용해 더 빨리 업데이트 하게 하는 것
    • 효과: 속도 개선
  • Momentum
    • 기존 업데이트에 사용했던 경사의 일정 비율을 남겨서 현재의 경사와 더하여 업데이트 함
    • 효과: 정확도 개선
  • Adagrad
    • 각 파라미터의 update 정도에 따라 학습률의 크기를 다르게 해줌
    • 효과: 보폭 크기 개선
  • RMSProp
    • Adagradd의 경우 update가 지속됨에 따라 학습률이 점점 0에 가까워지는 문제 발생
    • 이전 update 맥락을 보면서 학습률을 조정하여 최신 기울기를 더 크게 반영함
    • 효과: 보폭 크기 개선
  • Adam
    • Momentum과 RMSProp 장점을 함께 사용
    • 가장 많이 사용하는 optimizer
    • 효과: 정확도와 보폭 크기 개선

 

정리
  • 미니배치학습을 위한 데이터셋을 구성
  • 딥러닝 모델인 인공신경망을 구현
  • 우리가 풀고자하는 문제에 맞는 손실함수(L2, CE, BCE) 사용
  • 경사하강법에 문제를 보완하기 위해 적절한 옵티마이저를 선택 (그냥 닥 Adam)
  • 학습 과정
    • 데이터셋을 딥러닝 모델에 넣는다
    • 예측 결과에 대한 손실을 구함
    • 역전파를 통해 모델 가중치의 기울기를 구하기
    • 옵티마이저를 이용하여 모델 가중치를 업데이트