본문 바로가기

Do it! 딥러닝 교과서

Chapter03 신경망 학습

신경망 학습 : 경험 데이터로부터 데이터에 내제한 정보와 규칙을 찾아서 추론 능력을 만드는 과정

3.1 신경망 학습의 의미

신경망을 학습한다는 것은 규칙을 찾는 과정이다.

ex) 집값을 예측하는 경우 '방의 수, 면적, 집 종류, 역과의 거리'와 같은 입력 데이터와 모델이 예측해야 할 '집값' 데이터인 타깃 데이터가 제공될 뿐, 추론을 위한 규칙은 제공되지 않는다. 따라서 신경망은 스스로 이 규칙을 찾아야 한다.

 

■ 입출력의 매핑 규칙 

신경망에 입력 데이터가 들어왔을 때 어떤 출력 데이터를 만들어야 할지를 정하는 규칙은 함수적 매핑 관계로 표현된다.

함수적 매핑 관계 : 복잡한 신경망의 계층 구조 자체가 신경망의 함수적 매핑 관계를 표현

가중 합산과 활성 함수가 연결되어 뉴런 구성 -> 뉴런이 모여 계층 구성 -> 계층이 쌓여 신경망의 계층 구조 정의

 

신경망의 구조오와 관련된 것들은 학습 전에 미리 정해두고, 학습 과정에서는 모델 파라미터의 값을 찾는다.

  • 인공 뉴런의 구조는 사전에 결정하고 학습 과정에서 뉴런의 연결 강도를 포함한 모델 파라미터를 조절
  • 뉴런의 연결 강도를 결정하는 가중치와 편향은 모델 파라미터의 대부분을 차지
  • 활성함수와 모델 구조와 관련된 파라미터들, 정규화 기법과 관련된 파라미터들, 모델 학습과 관련된 파라미터들이 모델 파라미터에 포함될 수 있다.

■ 입출력의 매핑 규칙에서 학습해야 할 것들

신경망 학습에서 예측하는 규칙은 신경망을 구성하는 모든 뉴런의 가중치와 편향이 결정될 때 완성된다. 

신경망 학습이 모델의 파라미터 값을 찾는 과정이다. 최적의 파라미터를 찾기 위해 신경망 학습에서는 최적화기법을 사용한다.


3.2 신경망 학습과 최적화

3.2.1 최적화

최적화란 유한한 방식으로 정확한 해를 구할 수 없을 때 근사적으로 해를 구하는 방법으로, 다양한 제약 조건을 만족하면서 목적 함수를 최대화하거나 최소화하는 해를 반복하여 조금씩 접근하는 방식으로 찾아가는 방법

  • 최적화 문제의 표준 형태 : 목적 함수와 여러 제약 조건으로 이루어져 있으며, 제약 조건은 부동식 형태의 제약조건과 등식 형태의 제약조건으로 구분된다. 
    • 변수 x에 대한 등식과 부등식으로 표현되는 여러 제약 조건을 만족하면서 목적 함수인 f(x)를 최소화하는 x의 값을 찾는 문제
    • 최적화를 통해 찾은 x의 값 : 최적해, 최적해에 점점 가까이 가는 상태를 '수렴한다'라고 하고, 최적해를 찾으면 '수렴했다'라고 한다.
  • 최소화 문제와 최대화 문제의 관계 : 최소화 문제로 정의할지 최대화 문제로 정의할지는 문제를 잘 표현할 수 있는 방식으로 선택 & 최소화 문제와 최대화 문제는 동전의 양면과 같아서 하나가 정의되면 다른 하나는 쉽게 정의 내릴 수 있다.
    • 최소화 문제에서 목적 함수 : 비용함수(손실함수), 최대화 문제에서 목적함수 : 유틸리티함수

3.2.2 신경망 학습을 위한 최적화 문제 정의

  • 회귀 문제를 최적화 문제로 정의 : '타깃과 예측값의 오차를 최소화하는 파라미터를 찾으라'
    • 손실 함수 : 평균제곱오차(타깃과 예측값의 오차)
    • 기본 회귀 문제의 경우 제약 조건은 없지만, 정규화 기법이 적용되거나 문제가 확장되면 제약 조건이 추가될 수 있다.
  • 분류 문제를 최적화 문제로 정의 : '관측 확률분포와 예측 확률분포의 차이를 최소화하는 파라미터를 찾으라'
    • 손실 함수 : 크로스 엔트로피(타깃의 확률분포와 모델 예측 확률분포의 차이)
    • 기본 분류 문제의 경우 제약 조건은 없지만, 정규화 기법이 적용되거나 문제가 확장되면 제약 조건이 추가될 수 있다.

3.3.3 최적화를 통한 신경망 학습

최적화 과정 : 손실 함수의 임의의 위치에서 출발해서 최적해가 있는 최소 지점을 찾아가는 과정

최적화 알고리즘은 어느 위치에서 출발하든 손실 함수의 최소 지점으로 갈 수 있어야 한다. 


3.3 경사 하강법

신경망의 최적화 알고리즘은 대부분 경사 하강법에서 확장된 형태이다. 

 

3.3.1 신경망의 학습 목표

신경망의 손실 함수는 차원이 매우 높고 복잡한 모양을 하고 있어서 최적화가 어렵다.

손실 함수에는 하나의 전역최소와 함께 수많은 지역최소가 있다. 

- 전역 최소 : 함수 전체에서 가장 낮은 곳

- 지역 최소 : 함수에서 부분적으로 낮은 곳

  • 전역 최소를 찾으려면 곡면 전체 모양을 확인해야 하므로 계산 비용이 많이 든다. 
  • 문제가 크고 복잡할 경우 전역 최소를 찾기가 어렵고 때로는 불가능할 수 있다.
  • 따라서 최적화 알고리즘의 목표는 지역 최소를 찾는 것이다. 
  • 단, 지역 최소를 찾으려면 해를 여러 번 찾아서 그 중 가장 좋은 해를 선택하거나 동시에 여러 해를 찾아서 함께 고려하기도 함

 

3.3.2 신경망 학습을 위한 최적화 알고리즘

최적화 알고리즘은 손실 함수 곡면을 매번 근사하는데 이때 사용하는 미분의 차수에 따라 나뉜다.

  • 1차 미분 : 경사 하강법, 경사 하강법의 변형 알고리즘(SGD, SGD모델링, AdaGrad, RMSProp, Adam)
    • 상대적으로 수렴 속도는 느리지만, 손실 함수 곡면이 블록하지 않아도 최적해를 찾을 수 있어서 손실 함수 곡면이 매우 복잡한 신경망에서 안정적으로 사용하기 좋다.
    • 신경망에서는 주로 1차 미분 방식인 경사 하강법과 이를 개선한 알고리즘을 사용한다.
  • 1.5차 미분 : 준 뉴턴 방법, 켤레 경사 하강법, 레벤버그-마쿼트 방법
    • 1차 미분을 이용해서 2차 미분을 근사하는 방식으로 최적해를 빠르게 찾을 수 있다.
    • 신경망 학습과 별도로 2차 미분을 근사하는 알고리즘을 실행해야 하고 근사된 2차 미분값을 저장해야 하므로 메모리 사용량이 많다.
  • 2차 미분 : 뉴턴 방법, 내부점법
    • 곡률을 사용하므로 최적해를 빠르게 찾을 수 있다.
    • 손실 함수 곡면이 볼록해야만 최적해를 찾을 수 있으며 계산 비용과 메모리 사용량이 많기 때문에 신경망에서 사용하기 어렵다.

3.3.3 경사 하강법

: 손실 함수의 최소 지접을 찾기 위해 경사가 가장 가파른 곳을 찾아서 한 걸음씩 내려가는 방법

현재 위치에서 경사가 가장 가파른 곳을 찾기 위해 손실 함수의 기울기를 구하고 기울기의 반대방향으로 내려간다.

X는 신경망 모델의 파라미터, X(스탭 크기), df/dx (그레이디언트), a는 스탭 크기 또는 학습률로 이동 폭 결정, -df/dx는 이동방향으로 기울기의 음수 방향을 나타내므로 현재 지점에서 가장 ㄱ파른 내리막길로 내려가겟다는 의미이다.

경사 하강법에서는 파라미터 업데이트 과정을 반복하다가 x가 임계치 이하가 되면 최소 지점에 도달한 것으로 판단하고 이동을 멈춘다.


3.4 역전파 알고리즘

신경망의 역방향으로 실행했던 함수를 따라가며 미분을 계산해서 곱한 과정을 여러번 반복하는 것은 비효율성 문제를 발생시킬 수 있다. 이러한 문제를 해결하고자 제안된 방법이 역전파 알고리즘이다.

 

역전파 알고리즘 실행순서

1. 손실 함수 미분 (손실함수 미분, 출력 뉴런에 미분 전달)

2. 출력 뉴런 미분 (활성함수 공통 부분 계산, 가중치 업데이트, 은닉계층에 미분 전달)

3. 은닉 뉴런 미분 (활성함수 공통 부분 계산, 가중치 업데이트, 입력 계층에 미분 전달)

4. 알고리즘 종료

 


3.5 데이터셋 구서오가 훈련 데이터 단위

3.5.1 데이터셋 구성

  • 관측 데이터의 구성 :관측 데이터를 구성할 때 중요한 것
    • 범주성 데이터의 경우 클래스별로 비율을 맞추는 것.
    • 회귀성 데이터의 경우 입력 데이터가 근사하려는 함수 범위를 잘 지지하고 있는지 살펴봐야 한다.
  • 데이터셋 분리 : 훈련 데이터셋, 검증 데이터셋, 테스트 데이터셋으로 분리
    • 훈련 데이터셋 : 모델을 훈련할 때 사용
    • 검증 데이터셋 : 훈련된 모델의 성능을 평가해서 하이퍼파라미터를 튜닝하는데 사용
    • 테스트 데이터셋 : 훈련이 완료된 모델의 최종 성능을 평가할 때 사용
    • 세 종류의 데이터셋은 서로 중복되지 않도록 배타적으로 분리해야한다.
    • 데이터셋을 분리할 때 중요한 원칙 : 데이터셋의 분포가 원래의 데이터 분포를 따르도록 해야한다. 

3.5.2 훈련 데이터 단위

배치 방식 : 훈련 데이터셋을 한꺼번에 입력하는 방식

- 훈련 데이터셋이 작다면 배치 방식으로 학습 가능하지만, 신경망은 다른 머신러닝 알고리즘보다 많은 학습 데이터가 필요하고 그 만큼 훈련 데이터셋이 크기 때문에 배치 방식으로 학습하면 메모리 용량을 쉽게 초과한다.

- 온라인 학습과 같이 서비스와 학습을 동시에 해야 하는 경우 데이터가 점진적으로 추가되므로 애초에 배치 방식으로 훈련하기란 불가능

 

미니배치 방식 : 배치 방식의 한계를 극복하고자 데이터를 작은 단위로 묶어서 훈련하는 방식

확률적 방식 : 데이터 샘플 단위로 훈련하는 방식

 

■ 훈련 데이터 단위에 따른 경사 하강법의 분류

배치 경사 하강법 : 그레이디언트를 정확히 계산하므로 부드러운 경로를 만듦

미니배치 경사 하강법 : 작은 묶음의 샘플로 그레이디언트를 근사하므로 두 방식의 중간 정도 수준에서 진동

확률적 경사 하강법 : 확률적 방식은 하나의 샘플로 그레이디언트를 근사하므로 상당히 많이 진동

 

3.5.3 미니배치 훈련 방식

  • 미니배치 훈련 방식의 성능이 우수한 이유 : 배치 방식보다 학습이 더 빨라지고 모델의 성능이 좋아진다. 미니배치 방식은 데이터를 작은 단위로 묶어서 훈련하기 때문에 미니배치를 생성할 때 마다 매번 다른 데이터로 묶인다. 따라서 그때마다 조금씩 다른 통계량을 갖는 확률적 성질이 생긴다. 확률적 성질이 생기면 일반화 오류가 줄어들고 과적합이 방지되는 정규화 효과를 볼 수 있다.
  • 미니배치의 크기 : 일반적으로 2의 거듭제곱으로 정해야 GPU 메모리를 효율적으로 사용할 수 있다. 

3.6 손실 함수 정의

3.6.1 손실 함수를 정의하는 기준

손실 함수 : 모델이 표현하는 함수의 형태를 결정하는 것, 따라서 손실 함수는 모델이 관측 데이터를 잘 표현하도록 정의되어야 한다.

손실함수가 '최적해가 관측 데이터를 잘 설명할 수 있는 함수의 파라미터값이 되도록'하려면

1) 모델이 오차 최소화 되도록 정의

2) 모델이 추정하는 관측 데이터의 확률이 최대화되도록 최대우도추정 방식으로 정의

 

오차 최소화 관점

모델의 오차 : 모델의 예측과 관측 데이터의 타깃의 차이

어떤 방식으로 오차의 크기를 측정할지만 정하면 된다.

 

최대우도추정 관점

우도 : 모델이 추정하는 관측 데이터의 확률

손실 함수의 목표 : 관측 데이터의 확률이 최대화되는 확률분포 함수를 모델이 표현하도록 만드는 것

대부분의 신경망 모델은 확률 모델을 가정하므로 최대우도추정 방식으로 손실 함수를 유도할 수 있다.

 

-> 두 방식이 손실 함수를 정의하는 관점은 다르지만, 손실 함수를 유도해 보면 동일한 최적해를 갖는 함수가 된다는 것을 확인할 수 있다.

 

3.6.2 오차 최소화 관점에서 손실 함수 정의

  • 모델의 오차와 손실 함수
    • 오차 최소화 관점 : 손실함수는 오차의 크기를 나타내는 함수로 정의, 손실함수의 성질은 어떤 함수로 오차의 크기를 표현하는지에 따라 달라짐 
      • 오차의 크기를 나타내는 함수 : 노름(벡터의 크기)
  • 평균제곱오차(MSE) : 모델이 타깃의 평균을 예측하도록 만든다. 오차가 커질수록 손실이 제곱승으로 증가하므로 이상치에 민감하게 반응한다는 단점이 있다.
  • 평균절대오차(MAE) : 모델이 타깃의 중앙값을 예측하도록 만든다. 오차가 커질수록 손실이 선형적으로 증가하므로 이상치에 덜 민감하다. 하지만 미분가능 함수가 아니기 때문에 구간별로 미분을 처리해야 한다.

3.6.3 최대우도추정 관점에서 손실 함수 정의

  1. 관측 데이터의 우도와 손실 함수 : 신경망 모델로 추정한 관측 데이터의 확률이 우도이다. 샘플이 서로 독립이므로 관측 데이터의 우도는 N개의 샘플의 우도의 곱으로 표현할 수 있다.
  2. 최대우도추정 관점에서 최적화 문제 정의 : 우도를 최대화하는 확률 모델의 파라미터를 찾는 문제
  3. 최대우도추정 관점의 최적화 문제 개선 : 목적 함수를 개선된 형태로 만들기 위해 우도 대신 로그 우도를 사용, 최대화 문제를 최소화 문제로 변환하기 위해 목적 함수에 음의 로그 우도 사용
  4. 목적 함수를 로그 우도로 변환 : 우도에 로그를 취한 형태 
  5. 최대화 문제를 최소화 문제로 변환 : 로그 우도에 음수를 취한 음의 로그 우도
  6. 회귀 문제에서 최대우도추정을 위한 손실함수 정의 
  7. 이진 분류 문제에서 최대우도추정을 위한 손실함수 정의
  8. 다중 분류 문제에서 최대우도추정을 위한 손실함수 정의

3.6.4 신경망 학습을 위한 손실함수

오차를 최소화하거나 우도를 최대화하는 방법으로 손실함수를 유도

 

3.6.5 정보량, 엔트로피, 크로스 엔트로피

  • 정보량 : 확률을 표현하는 데 필요한 비트 수로 사건이 얼마나 자주 발생하는지를 나타낸다.
    • 놀라움의 정도에 비례
    • 확률에 반비례하면서 독립 사건들의 정보량은 더해져야 하므로, 정보량은 확률의 역수에 로그를 취한 값
  • 엔트로피 : 확률 변수가 얼마나 불확실한지
    • 분산이 작다 -> 엔트로피 낮음 ( 좁은 범위에서 사건이 발생하기 대문에 어떤 사건이 발생할지 확실)
    • 분산이 크다 -> 엔트로피 높음
    • 확률변수의 정보량의 기댓값으로 정의
    • p(x) = 0 or p(x)=1일 때 엔트로피 0, p(x) = 0.5일 때 엔트로피 가장 커진다.
  • 크로스 엔트로피 : 두 분포의 차이가 어느 정도인지 판단하는데 사용
    • 두 확률분포의 차이 또는 유사하지 않은 정도

'Do it! 딥러닝 교과서' 카테고리의 다른 글

Chapter08 순환 신경망  (0) 2023.06.02
Chapter05 초기화와 정규화  (0) 2023.05.19