딥러닝 (Deep Learning)/tensorflow, keras

[tensorflow, keras] 딥러닝 기본 코드(2-3,4) 모델 컴파일(손실함수, 최적화, 지표), 모델 학습 평가 예측

DS지니 2021. 10. 15. 15:53
728x90
반응형
[youtube] Deep Learning Full Tutorial Course using TensorFlow and Keras - 이수안컴퓨터연구소 참고

 

🧡목차

딥러닝 구조 및 학습

 

2. 모델(Model)

 

3) 모델 컴파일

- 손실함수(loss function)

- 최적화(optimization)

- 지표(metrics)

 

4) 모델 학습, 평가 및 예측

- fit()

- evaluate()

- predict()

 


 

딥러닝 구조 및 학습

  • 딥러닝 구조와 학습에 필요한 요소
    • 모델(네트워크)를 구성하는 레이어(layer)
    • 입력 데이터와 그에 대한 목적(결과)
    • 학습시에 사용할 피드백을 정의하는 손실 함수(loss function)
    • 학습 진행 방식을 결정하는 옵티마이저(optimizer)

 

2. 모델(Model)

  • 딥러닝 모델은 레이어로 만들어진 비순환 유향 그래프(Directed Acyclic Graph, DAG) 구조

 

2) 모델 컴파일(compile)

  • 모델을 구성한 후, 사용할 손실 함수(loss function), 옵티마이저(optimizer)를 지정
# 기본 코드
model.compile(loss='sparse_categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])

 

1. 손실 함수(Loss Function)

  • 학습이 진행되면서 해당 과정이 얼마나 잘 되고 있는지 나타내는 지표
  • 모델이 훈련되는 동안 최소화될 값으로 주어진 문제에 대한 성공 지표
  • 손실 함수에 따른 결과를 통해 학습 파라미터를 조정
  • 최적화 이론에서 최소화 하고자 하는 함수
  • 미분 가능한 함수 사용
  • Keras에서 주요 손실 함수 제공
    • sparse_categorical_crossentropy: 클래스가 배타적 방식으로 구분, 즉 (0, 1, 2, ..., 9)와 같은 방식으로 구분되어 있을 때 사용
    • categorical_cross_entropy: 클래스가 원-핫 인코딩 방식으로 되어 있을 때 사용
    • binary_crossentropy: 이진 분류를 수행할 때 사용

 

평균절대오차(Mean Absolute Error, MAE)

  • 오차가 커져도 손실함수가 일정하게 증가
  • 이상치(Outlier)에 강건함(Robust)
    • 데이터에서 [입력 - 정답] 관계가 적절하지 않은 것이 있을 경우에, 좋은 추정을 하더라도 오차가 발생하는 경우가 발생
    • 해당 이상치에 해당하는 지점에서 손실 함수의 최소값으로 가는 정도의 영향력이 크지 않음
  • 회귀 (Regression)에 많이 사용

 

평균제곱오차(Mean Squared Error, MSE)

  • 가장 많이 쓰이는 손실 함수 중 하나
  • 오차가 커질수록 손실함수가 빠르게 증가
    • 정답과 예측한 값의 차이가 클수록 더 많은 페널티를 부여
  • 회귀 (Regression)에 쓰임

 

MAE와 RMSE 비교 및 각각의 사용처

https://thedatascientist.com/performance-measures-rmse-mae/

 

Performance measures: RMSE and MAE - The Data Scientist

Wanna know more about data science? Make sure to check out my events and my webinar What it's like to be a data scientist and What’s the best way to become a data scientist ! In Read more…

thedatascientist.com

https://mizykk.tistory.com/102

 

[Python] 성능 측정 지표 :: MAE, MSE, RMSE, MAPE, MPE, MSLE

1. MAE (Mean Absolute Error) - 실제 값과 예측 값의 차이(Error)를 절대값으로 변환해 평균화 - MAE는 에러에 절대값을 취하기 때문에 에러의 크기 그대로 반영된다. 그러므로 예측 결과물의 에러가 10이

mizykk.tistory.com

 

 

원-핫 인코딩(One-Hot Encoding)

  • 범주형 변수를 표현할 때 사용
  • 가변수(Dummy Variable)이라고도 함
  • 정답인 레이블을 제외하고 0으로 처리

 

 

교차 엔트로피 오차(Cross Entropy Error, CEE)

  • 이진 분류(Binary Classification), 다중 클래스 분류(Multi Class Classification)
  • 소프트맥스(softmax)와 원-핫 인코딩(ont-hot encoding) 사이의 출력 간 거리를 비교
  • 정답인 클래스에 대해서만 오차를 계산
  • 정답을 맞추면 오차가 0, 틀리면 그 차이가 클수록 오차가 무한히 커짐
  • y=log(x)
    • x가 1에 가까울수록 0에 가까워짐
    • x가 0에 가까울수록 y값은 무한히 커짐

  • 정답 레이블(yi)은 원-핫 인코딩으로 정답인 인덱스에만 1이고, 나머지는 모두 0이라서 다음과 같이 나타낼 수 있음
    • 소프트맥스를 통해 나온 신경망 출력이 0.6이라면  log0.60.51 이 되고, 신경망 출력이 0.3이라면  log0.31.2 이 됨
    • 정답에 가까워질수록 오차값은 작아짐
    • 학습시, 원-핫 인코딩에 의해 정답 인덱스만 살아 남아 비교하지만, 정답이 아닌 인덱스들도 학습에 영향을 미침. 왜냐하면 다중 클래스 분류는 소프트맥스(softmax) 함수를 통해 전체 항들을 모두 다루기 때문

 

▶이진 분류 문제의 교차 크로스 엔트로피(BInary Cross Entropy, BCE)

 

 

2. 옵티마이저(Optimizer)

  • 손실 함수를 기반으로 모델이 어떻게 업데이트되어야 하는지 결정 (특정 종류의 확률적 경사 하강법 구현)
  • Keras에서 여러 옵티마이저 제공
    • keras.optimizer.SGD(): 기본적인 확률적 경사 하강법
    • keras.optimizer.Adam(): 자주 사용되는 옵티마이저
    • Keras에서 사용되는 옵티마이저 종류: https://keras.io/ko/optimizers/
  • 보통 옵티마이저의 튜닝을 위해 따로 객체를 생성하여 컴파일

 

 

볼록함수(Convex Function)와 비볼록함수(Non-Convex Function)

  • 볼록함수(Convex Function)
    • 어떤 지점에서 시작하더라도 최적값(손실함수가 최소로하는 점)에 도달할 수 있음
  • 비볼록함수(Non-Convex Function)
    • 비볼록 함수는 시작점 위치에 따라 다른 최적값에 도달할 수 있음

 

 

경사하강법(Gradient Decent)

  • 미분과 기울기
    • 스칼라를 벡터로 미분한 것

  • 변화가 있는 지점에서는 미분값이 존재하고, 변화가 없는 지점은 미분값이 0
  • 미분값이 클수록 변화량이 크다는 의미
  • 즉, 미분값이 0인 지점을 찾는 방법

 

 

학습률(learning rate)

  • 적절한 학습률을 지정해야 최저점에 잘 도달할 수 있음
  • 학습률이 너무 크면 발산하고, 너무 작으면 학습이 오래 걸리거나 최저점에 도달하지 않음

 

 

안장점(Saddle Point)

  • 기울기가 0이지만 극값이 되지 않음
  • 경사하강법은 안장점에서 벗어나지 못함

 

 

 

3. 지표(Metrics)

  • 모니터링할 지표
  • mae나 accuracy 사용
  • 줄여서 acc로도 사용 가능
  • Keras에서 사용되는 지표 종류: https://keras.io/ko/metrics/

 

 

 

4. 오차역전파 (Backpropagation)

  • 오차역전파 알고리즘
    • 학습 데이터로 정방향(forward) 연산을 통해 손실함수 값(loss)을 구함
    • 각 layer별로 역전파학습을 위해 중간값을 저장
    • 손실함수를 학습 파라미터(가중치, 편향)로 미분하여 마지막 layer로부터 앞으로 하나씩 연쇄법칙을 이용하여 미분
    • 각 layer를 통과할 때마다 저장된 값을 이용
    • 오류(error)를 전달하면서 학습 파라미터를 조금씩 갱신
  • 오차역전파 학습의 특징
    • 손실함수를 통한 평가를 한 번만 하고, 연쇄법칙을 이용한 미분을 활용하기 때문에 학습 소요시간이 매우 단축
    • 미분을 위한 중간값을 모두 저장하기 때문에 메모리를 많이 사용
  • 신경망 학습에 있어서 미분가능의 중요성
    • 경사하강법(Gradient Descent)에서 손실 함수(cost function)의 최소값, 즉, 최적값을 찾기 위한 방법으로 미분을 활용
    • 미분을 통해 손실 함수의 학습 매개변수(trainable parameter)를 갱신하여 모델의 가중치의 최적값을 찾는 과정
  • 오차역전파의 직관적 이해
    • 학습을 진행하면서, 즉 손실함수의 최소값(minimum)을 찾아가는 과정에서 가중치 또는 편향의 변화에 따라 얼마나 영향을 받는지 알 수 있음

 

 

 

3) 모델 학습, 평가, 예측

 

  • fit()
    • x: 학습 데이터
    • y: 학습 데이터 정답 레이블
    • epochs: 학습 회수
    • batch_size: 단일 배치에 있는 학습 데이터의 크기
    • validation_data: 검증을 위한 데이터
  • evaluate()
    • 테스트 데이터를 이용한 평가
  • predict()
    • 임의의 데이터를 사용해 예측

 

 

728x90
반응형