본문 바로가기
TIL _Today I Learned/2024.09

[DAY 38] 딥러닝 모델의 최적화 및 평가

by gamdong2 2024. 9. 4.
[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기
학습일 : 2024.09.04

📕 학습 목록

  • 퍼셉트론
  • 비용 함수
  • 활성화 함수
  • 경사하강법

 

📗 기억할 내용

1. 퍼셉트론 (Perceptron)

1) 논리 게이트

① 정의

  • 주어진 입력에 대해 특정 논리 연산(AND, OR, NOT 등)을 수행하는 디지털 회로
  • ex : AND 게이트_두 입력이 모두 참(True)일 때만 참을 출력 /  OR 게이트_하나라도 참이면 참을 출력
  • 퍼셉트론이 수행할 수 있는 가장 기본적인 연산의 예
  • 논리 게이트 구현
- AND(곱셈 연산) : 두 입력값 A와 B가 모두 1일 때만 출력값 F=1
- OR(덧셈 연산) :  A 또는 B 중 하나라도 1이면 출력값 F=1
- NAND(부정 AND) : A와 B가 모두 1인 경우를 제외하고 출력값 F=1(AND 연산의 결과를 뒤집은 것)
- XOR(배타적 OR) : A와 B가 서로 다를 때만 출력값 F=1
- NOT(부정 연산) : 입력값을 뒤집음
- XNOR : XOR의 반대, A와 B가 같을 때 출력값 F=1

논리 게이트와 논리식

 
2) 단층 퍼셉트론

① 정의

  • 퍼셉트론 : 입력에 가중치를 적용해 활성화 함수를 통과시켜 이진 출력을 내는 인공 신경망의 기본 단위
  • 퍼셉트론 학습 원리 : 가중치&활성화 함수를 사용하여 학습을 수행 → 결과를 바탕으로 모델을 개선
  • 단층 퍼셉트론(Single-Layer Perceptron) : 입력층과 출력층으로만 구성된 신경망으로, 선형 분류 문제를 해결할 수 있는 모델

단층 퍼셉트론으로 분류 가능한 연산 : AND, OR, NAND

 
② 한계 : XOR와 같은 비선형 분류 문제는 해결 불가

단층 퍼셉트론으로 분류 불가능한 연산 : XOR

 
3) 다층 퍼셉트론

① 정의

  • 다층 퍼셉트론(Multi-Layer Perceptron) : 입력층, 은닉층, 출력층으로 이루어진 신경망으로, 비선형 문제까지 해결 가능한 복잡한 모델

다층 퍼셉트론으로 분류 성공 : XOR

  논리 게이트 단층 퍼셉트론 다층 퍼셉트론
정의 AND, OR, NOT 등 논리 연산을 수행하는 디지털 회로 단일 계층으로 이루어진 인공 신경망의 기본 단위 여러 개의 퍼셉트론이 계층적으로 연결된 인공 신경망 (MLP)
구조 고정된 논리 회로로 이루어짐 입력층과 출력층으로 구성, 은닉층은 없음 입력층, 은닉층(하나 이상), 출력층으로 구성됨
대표
이미지
입력과
출력
이진 값(0, 1) 이진 값 또는 실수 값 이진 값 또는 실수 값
계산 방식 논리 연산 (AND, OR, NOT 등) 가중치와 바이어스를 이용해 선형 분류 여러 계층을 통해 비선형 분류 가능
구현 가능 연산 선형적으로 구분 가능한 논리 연산만 수행 (AND, OR, NOT 등) 선형적으로 구분 가능한 문제 해결 가능 (AND, OR, NOT) 비선형적으로 구분 가능한 문제 해결 가능 (XOR 포함)
학습 능력 고정된 연산, 학습 불가 학습 가능 (가중치와 바이어스 업데이트) 더 복잡한 학습 가능 (역전파 알고리즘을 통해 다층 학습)
복잡성 매우 단순 단순한 모델 복잡한 모델
대표적
사용 예시
간단한 디지털 회로 (CPU, 메모리 등) 단순한 분류 문제, 논리 게이트 구현 이미지 인식, 음성 인식, 자연어 처리 등 복잡한 문제 해결
한계 비선형 문제(XOR 등)는 해결할 수 없음 XOR와 같은 비선형 문제는 해결할 수 없음 -

 

2. 비용 함수 (Loss Function)

1) 비용 vs 오차

  비용(= 손실, Loss) 오차(Error)
정의 모델의 예측값과 실제값 사이의 평균적인 오차를 측정하는 값 모델의 예측값과 실제값 사이의 차이
수식적 의미 비용 함수에 의해 계산된 평균적인 오차 단일 예측에 대한 실제값과 예측값 간의 차이
사용 목적 모델 학습 중 가중치를 최적화하기 위해 사용하는 평가 기준 개별 데이터 포인트에서의 예측 성능을 평가하기 위해 사용
계산 방식 비용 함수(MSE, MAE 등)를 사용해 모든 데이터 포인트에서 평균 계산 단일 예측값과 실제값 간의 차이를 사용
범위 주로 여러 데이터 포인트에서 평균적인 성능 평가 단일 예측 또는 하나의 데이터 포인트에서의 차이를 평가
예시 MAE,  MSE, RMSE,  Cross-Entropy 등 다양한 비용 함수 사용
 
즉, 오차 값 자체
종류  MAE, MSE, RMSE, Cross-Entropy 등 절대 오차, 제곱 오차 등 여러 형태로 표현 가능
모델 학습
에서의 역할
비용은 여러 데이터 포인트에서의 오차를 종합하여 학습 중 최적화 대상이 됨 오차는 개별 데이터 포인트에 대해 평가하며 비 계산에 사용됨
예시 상황 모델 학습 중 비용 값을 줄여가며 성능을 최적화함 특정 데이터 포인트에서 예측이 얼마나 잘 되었는지를 확인할 때 사용

 
2) 비용 함수

① 정의

  • 모델의 예측값과 실제값의 차이를 계산하는 함수; 모델의 성능을 평가하는 데 사용됨

② 종류

비용 함수
  MAE MSE RMSE Cross Entropy
정의 예측값과 실제값 간의 절대 오차의 평균 예측값과 실제값 간의 제곱 오차의 평균 평균 제곱 오차(MSE)의 제곱근 예측 확률과 실제 레이블 간의 차이를 측정
설명 절대 오차이므로 오차의 크기를 동일하게 처리 오차를 제곱하여 큰 오차에 더 큰 패널티 부여 오차를 제곱한 후 다시 제곱근을 구하여 원래 단위로 복원 실제 확률 분포 p(xi) 와 예측 확률 분포 q(xi) 의 차이를 측정
특징 모든 오차를 동일하게 취급하며 큰 오차에 덜 민감함 큰 오차에 매우 민감함 큰 오차에 민감하면서도, 실제 오차 크기와 같은 단위를 유지 확률이 크게 벗어난 예측에 큰 페널티 부여; 확률적 예측의 성능을 평가
오차 처리 큰 오차와 작은 오차를 동일하게 처리 큰 오차에 더 큰 패널티(가중치)를 부여 큰 오차에 민감하지만 실제 데이터 단위로 처리 확률이 크게 벗어난 경우 큰 페널티를 줌
사용 예시 회귀 분석에서 많이 사용되며, 쉽게 해석 가능 회귀 분석에서 주로 사용, 큰 오차를 더 크게 처리하고 싶을 때 유용 MSE의 단위 문제를 해결하며 해석 가능성 높임 분류 문제에서 주로 사용, 이진/다중 클래스 분류에 적합
수식

 

3. 활성화 함수 (= 비선형 변환 함수, Activation Function)

① 정의

  • 인공 신경망에서 입력 신호를 처리하고, 그 결과를 다음 층으로 전달할지 여부를 결정하는 함수
  • 입력 신호를 비선형적으로 변환하여 신경망이 복잡한 패턴을 학습할 수 있도록 도와줌
  • 학습 과정에서 신경망의 성능에 큰 영향을 미침

② 종류

활성화 함수
  ReLU Leaky ReLU Sigmoid Tanh Softmax ELU GELU
정의 입력값이 0보다 크면 그대로 출력하고, 작으면 0을 출력 ReLU의 변형, 음수 값에 대해 일정한 기울기를 가짐 모든 실수 입력값을 0과 1 사이로 압축 Sigmoid와 유사하지만, 출력값의 범위가 -1에서 1 사이 다중 클래스 분류에서 각 클래스에 속할 확률을 출력 ReLU와 비슷하지만 0 이하 값에 대해 음의 값을 허용 입력값을 가우시안 분포를 기반으로 비선형적으로 변환
수식
특징 - 계산이 매우 간단하고 효율적
- 비선형성을 제공하지만, 죽은 ReLU 문제 발생 가능
ReLU의 장점을 유지하면서도, 음수 입력에서도 작은 기울기를 가져 가중치가 업데이트 가능 출력값이 확률로 해석 가능하지만, 기울기 소실 문제 발생 가능 - 음의 값을 허용하며, 출력값이 0에 가까울 때 기울기가 큼 - 하지만 기울기 소실 문제 발생 가능 각 클래스에 대한 확률 분포를 출력하여 모든 확률값의 합이 1이 되도록 만듦 - 음의 값에서도 기울기를 유지해 '죽은 ReLU' 문제 방지
- 학습이 더 안정적이고 빠름
ReLU보다 부드러운 함수로 자연어 처리(NLP) 분야에서 많이 사용
주요 사용처 대부분의 은닉층에서 널리 사용 ReLU의 대안으로 사용, 죽은 ReLU 문제 방지 이진 분류 문제에서 주로 사용 (출력층) 은닉층에서 가끔 사용, 출력값이 -1에서 1 사이일 때 유리 다중 클래스 분류 문제의 출력층 ReLU의 개선된 버전으로, 성능이 더 나은 경우 사용 트랜스포머 모델과 같은 최신 아키텍처에서 주로 사용

 

4. 경사하강법 (Gradient Descent)

1) 정의

  • 비용 함수의 기울기를 계산하여, 기울기가 가리키는 방향으로 점진적으로 이동함으로써 손실을 최소화하는 방식
  • 기계 학습 및 최적화 알고리즘에서 매우 중요한 방법으로, 주어진 함수의 최소값을 찾기 위해 사용됨

2) 작동 과정

 
손실 함수(Loss Function) : 주어진 문제에서 목표는 모델이 예측한 값과 실제 값의 차이를 최소화하는 것. 이 차이는 손실 함수로 계산됨
 
기울기(Gradient) 계산 : 경사하강법에서는 손실 함수의 기울기를 계산하여, 이 기울기가 가리키는 방향으로 손실을 줄이기 위한 움직임을 결정
 

  • 기울기가 양수이면, 가중치(파라미터)를 감소시킴
  • 기울기가 음수이면, 가중치를 증가시켜 손실을 줄임

학습률(Learning Rate) : 경사하강법에서 매번 기울기 방향으로 이동할 때, 얼마나 많이 이동할지를 결정하는 파라미터. 학습률이 너무 크면 최적해를 넘어서 버릴 수 있고, 너무 작으면 학습이 매우 느려질 수 있음
 
④ 업데이트 : 매 반복마다 가중치를 다음과 같이 업데이트함

반복 : 손실 함수가 충분히 줄어들 때까지, 즉 기울기가 0에 가까워질 때까지 이 과정을 반복
 
 

3) 종류

경사하강법
  배치 경사하강법
(Batch Gradient Descent)
확률적 경사하강법
(Stochastic Gradient Descent, SGD)
미니배치 경사하강법
(Mini-Batch Gradient Descent)
정의 전체 데이터셋을 사용하여 기울기를 계산하는 방법 데이터셋에서 무작위로 하나의 데이터 포인트만을 사용해 기울기를 계산 데이터셋을 작은 배치로 나누어 각 배치에 대해 기울기를 계산하는 방법
장점 기울기 계산이 정확함 계산 속도가 매우 빠름 배치와 확률적 경사하강법의 장점을 결합해 안정성과 속도를 동시에 제공
단점 대규모 데이터셋에서는 계산 비용이 많이 듬 기울기의 변동이 커서 최적화 경로가 불안정할 수 있음 배치 크기 설정이 필요하며, 적절한 배치 크기를 찾지 않으면 성능 저하 가능
학습 속도 느림 빠름 배치 크기에 따라 다름
메모리 요구량 작음 중간
최적화 경로의 안정성 매우 안정적 불안정할 수 있음 안정적이나 일부 변동 존재
사용 예 데이터셋이 작거나 계산 비용을 감수할 수 있는 경우 대규모 데이터셋에서 빠른 학습이 필요할 때 딥러닝 모델 학습에서 일반적으로 사용됨

 

4) 문제점 및 해결방법

 

  • 학습률 설정의 어려움 : 학습률이 너무 크면 발산하고, 너무 작으면 수렴 속도가 느려짐
    • Sol) 모멘텀(Momentum) or 적응형 학습률(Adam) 같은 최적화 기법을 사용
  • 지역 최솟값(Local Minima) : 손실 함수의 전역 최솟값이 아닌 지역 최솟값에 빠질 수 있음
    • Sol) 모멘텀 기법을 사용하면 경사가 급격하게 바뀌는 부분에서 부드럽게 최솟값을 찾아가도록 할 수 있음
  • 기울기 소실 문제 : 신경망이 깊어질수록 기울기가 점점 작아져, 가중치가 거의 업데이트되지 않는 현상
    • Sol) ReLU 같은 활성화 함수를 사용 or 배치 정규화(Batch Normalization)를 사용해 기울기 소실 문제를 완화

 

 
5) 경사하강법 최적화 기법
 

  • 모멘텀 (Momentum) : 기존 경사하강법에 관성을 추가하여, 기울기가 0에 가까워질수록 점진적으로 움직임을 줄이는 방식. 학습률을 개선하고, 지역 최솟값에 빠지지 않도록 도와줌
  • Adam (Adaptive Moment Estimation) : 학습률을 자동으로 조정해주는 알고리즘으로, 각 파라미터에 대해 적응적으로 학습률을 조정하여 빠른 수렴을 유도
  • RMSprop : 각 변수에 대해 학습률을 다르게 조정해, 경사가 급한 방향과 완만한 방향에서 학습률을 다르게 적용하는 방법

 
 

📙 내일 일정

  • 딥러닝 기본 개념

 
 

 

 

 

 

 

'TIL _Today I Learned > 2024.09' 카테고리의 다른 글

[DAY 41] Deep Learning 실습  (0) 2024.09.09
[DAY 40] Deep Learning 실습  (0) 2024.09.06
[DAY 39] Deep Learning 실습  (0) 2024.09.05
[DAY 37] 딥러닝 프레임워크  (5) 2024.09.03
[DAY 36] Machine Learning 실습  (0) 2024.09.02