대학원 일기

케라스 창시장에게 배우는 딥러닝 5장 본문

AI/인공지능 기초

케라스 창시장에게 배우는 딥러닝 5장

대학원생(노예) 2023. 12. 12. 11:05

5-1

  • 최적화(Optimization)는 가능한 훈련 데이터에서 최고의 성능을 얻으려고 모델을 조정하는 과정이다.
  • 일반화(Generalization)는 훈련된 모델이 이전에 본 적 없는 데이터에서 얼마나 잘 수행되는지 의미한다.

훈련 데이터의 손실이 낮아질수록 테스트 데이터의 손실도 낮아지며 이럴 때 모델이 과소적합(underfitting) 되었다고 한다. 모델의 성능이 계속 발전될 여지가 있으며 데이터에 있는 모든 관련 패턴을 아직 학습하지 못한 것이다.

훈련 데이터에서 훈련을 특정 횟수만큼 반복하고 난 후 일반화 성능이 더이상 높아지지 않으며 검증 세트의 성능이 멈추고 감소되기 시작하는데 이것을 모델이 과대적합(Overfitting) 되었다고 한다. 과대적합은 데이터에 잡음이 있거나 불확실성이 존재하거나 드문 특성이 포함되어 있을 때 특히 발생할 가능성이 높다.

 

불확실한 특성

객관적인 경계가 없기 때문에 문제에 불확실성과 모호성이 있다면 완벽하고 깔끔하게 레이블이 부여된 데이터라도 잡음이 있을 수 있다.

드문 특성과 가짜 상관관계

비슷하게 드문 특성값을 포함한 데이터셋에서 훈련한 머신러닝 모델은 과대적합 될 가능성이 매우 높다. 가짜 상관관계를 만들어 내는 데 특성 값이 몇 번만 등장할 필요가 없으며 모델 분류 작업에 이 특성을 활용할 가능성이 높다.

두 경우 모두 동일한 정보를 가진 데이터이지만 잡음이 섞인 데이터에서 훈련된 모델의 검증 정확도가 1퍼센트 포인트 정도 낮으며 이는 순전히 가짜 상관관계의 영향 때문이다. 잡음을 더 많이 섞을수록 정확도는 더 감소될것이다.

잡음 특성은 필연적으로 과대적합을 유발시키며 특성이 모델에 유익한지 또는 모델을 혼란스럽게 만드는지 확실하지 않다면 훈련 전에 특성 선택을 수행하는 것이 일반적이다. 특성 선택을 하는 일반적인 방법은 가용한 각 특성에 대해 어떤 유용성 점수를 계산하는 것이다. 즉 특성과 레이블 사이의 상호 의존 정보처럼 작업에 대해 특성이 얼마나 유익한지 측정하며 그 다음 일정 임계 값을 넘긴 특성만 사용하면 백색 잡음이 걸러질 수 있다.

매니폴드 가설

전처리하기 전의 MNIST 분류기 입력은 28x28 크기의 정수 배열이며 0~255 사이의 값을 가진다. 하지만 이런 입력 중 매우 적은 수만 유효한 MNIST 샘플이며 실제 손글씨 숫자는 그 배열 공간에서 아주 작은 부분만 차지하며 이 부분 공간은 부모 공간에 랜덤하게 뿌려진 포인트의 집합이 아니라 매우 구조적이다.

매니폴드는 국부적으로는 유클리드 공간과 비슷하게 보이는 부모 공간의 저차원 부분 공간이다.

  • 머신 러닝 모델은 가능한 입력 공간 안에서 비교적 간단하고, 저차원이며, 매우 구조적인 부분공간(잠재 매니폴드)만 학습하면 된다.
  • 이런 매니폴드 중 하나 안에서 두 입력 사이를 보간하는 것이 항상 가능하다. 즉 연속적인 경로를 따라 한 입력에서 다른 입력으로 변형할 때 모든 포인트가 이 매니폴드에 속한다.

근사적으로 학습된 데이터 매니폴드에서 보간을 통해 딥러닝의 일반화가 달성되지만 보간이 일반화의 전부라고 가정할 수 없으며 보간은 이전에 본 것과 매우 가까운 것을 이해하는데에 도움을 줄 뿐이며 이를 지역 일반화라고 한다.

사람은 보간 이외의 인지 매거니즘으로 궁극 일반화를 할 수 있다.

딥러닝 모델이 충분한 표현 능력을 가진다는 일반적인 사실 외에도 잠재 매니폴드를 학습하는 데 특히 잘 맞는 몇 가지 속성

  • 딥러닝 모델은 입력에서부터 출력으로 매끄럽고 연속적인 매핑을 구현한다. 필수적으로 미분 가능해야 하기 때문에 매끄럽고 연속적이여야 한다. 이것은 동일한 속성을 가진 잠재 매니폴드를 근사하는 데 도움이 된다.
  • 딥러닝 모델은 (모델 구조에 대한 가정을 바탕으로) 훈련 데이터에 있는 정보의 형태를 반영하는 식으로 구조화되는 경향이 있다. 더 일반적으로 심층 신경망은 학습한 표현을 계층적이고 모듈 방식으로 구조화되며 이는 자연적인 데이터가 구성되는 방식을 반영한 것이다.

가장 중요한 훈련 데이터

딥러닝이 실제로 매니폴드 학습에 잘 맞지만 일반화의 능력은 모델의 어떤 속성 때문이라기보다 데이터의 자연적인 구조로 인한 결과이다. 데이터가 보간할 수 있는 매니폴드를 형성하는 경우에만 일반화할 수 있으며 특성이 유익하고 잡음이 적을수록 입력 공간이 더 간단하고 구조적이기 때문에 더 잘 일반화할 수 있습니다. 데이터 큐레이션과 특성 공학은 일반화에 필수적이라고 볼 수 있다.

딥러닝이 곡선을 맞우는 것이기 때문에 모델이 이를 잘 수행하려면 입력 공간을 조밀하게 샘플링하여 훈련해야 한다. 충분히 조밀하게 샘플링하면 세상에 대한 외부 지식을 사용하지 않아도 훈련 입력 사이를 보간하여 새로운 입력을 이해할 수 있다.

딥러닝을 향상시키는 좋은 방법

더 좋고 더 많은 데이터에서 훈련하는 것이며(당연히 잡음이 크거나 부정확한 데이터를 추가하면 일반화에 해가 된다) 입력 데이터 매니폴드를 조밀하게 커버하면 일반화 성능이 더 좋은 모델을 만든다. 가능한 쉽게 보간하기 위해 할수 있는 것들을 해줘야 하며 특히 딥러닝 모델에서 찾게 될 것은 무엇을 모델에 넣었는지에 달려 있다. 바로 모델 구조에 인코딩된 가정과 훈련에 사용된 데이터이다. 데이터를 더 수집하는 것이 불가능하면 모델이 저장할 수 있는 정보량을 조정하거나 모델 곡선의 매끄러운 정도에 제약을 추가하는 것이다. 네트워크가 적은 개수의 패턴만 기억하거나 매우 규칙적인 패턴만 기억할 수 있다면 최적화 과정은 일반화 가능성이 높은 가장 눈에 띄는 패턴에만 모델의 초점을 맞추도록 할 것이며 이런 방식으로 과대적합과 싸우는 과정을 규제(regularization)이라고 부른다.

5-2 훈련, 검증, 테스트 세트

모델 평가의 핵심은 가용한 데이터를 항상 훈련, 검증, 테스트 3개의 세트로 나누는 것이다. 훈련 세트에서 모델을 훈련하고 검증 세트에서 모델을 평가한다.

모델을 개발할 때 항상 모델의 설정을 튜닝하는데 층이나 층의 유닛 개수를 선택하여(하이퍼파라미터) 검증 세트에서 모델의 성능을 평가하여 이런 튜닝을 수행한다. 이런 튜닝도 어떤 파라미터 공간에서 좋은 설정을 찾는 학습이다. 검증 세트의 성능을 기반으로 모델의 설정을 튜닝하면 검증 세트로 모델을 직접 훈련하지 않더라도 빠르게 검증 세트에 과대적합될 수 있다.

정보 누설 : 검증 세트의 모델 성능에 기반하여 모델의 하이퍼파라미터를 조정할때마다 검증 데이터에 관한 정보가 모델로 새게 된다. 하나의 파라미터에 대해 단 한번만 튜닝하면 아주 적은 정보가 누설되어 모델을 평가할만하지만 한번 튜닝하고 난 후 검증 세트에 평가한 결과를 가지고 다시 모델을 조정하는 과정을 여러번 반복하면 검증 세트에 관한 정보를 모델에 많이 노출시키게 된다. 테스트 세트 성능에 기초하여 튜닝한 모델의 모든 설정은 일반화 성능을 왜곡시킨다.

데이터를 훈련, 검증, 테스트 세트로 나누는 고급 기법 3가지

  • 단순 홀드아웃 검증 : 데이터의 일정량을 테스트 세트로 떼어 놓고 남은 데이터에서 훈련하고 테스트 세트로 평가한다. 정보 누설을 막기 위해 테스트 세트를 사용해서 모델을 튜닝해서는 안된다. 데이터가 적을 때는 검증 세트와 테스트 세트의 샘플이 너무 적어 주어진 전체 데이터를 통계적으로 대표하지 못할 수도 있다. 다른 난수 초깃값으로 셔플링해서 데이터를 나누었을 때 모델의 성능이 매우 달라지면 밑에 2개의 기법을 사용해 해결하면 된다.
  • K-겹 교차 검증 : 데이터를 동일한 크기를 가진 K개의 분할로 나눈다. 각 분할 i에 대해 남은 k-1개의 분할로 모델을 훈련하고 분할 i에서 모델을 평가한다음 최종 점수는 이렇게 얻은 k개의 점수를 평균한다. 이 방법은 모델의 성능이 데이터 분할에 따라 편차가 클 때 도움이 되며 홀드아웃 검증처럼 이 방법은 모델의 튜닝에 별개의 검증 세트를 사용하게 된다.
  • 셔플링을 사용한 반복 k-겹 교차 검증 : 이 방법은 비교적 가용 데이터가 적고 가능한 정확하게 모델을 평가하고자 할 때 사용합니다. 이 방법은 k-겹 교차 검증을 여러 번 적용하되 k개의 분할로 나누기 전에 매번 데이터를 무작위로 섞는다. 최종 점수는 모든 k-겹 교차 검증을 실행해서 얻은 점수의 평균이 되며 결국 p*k개(P는 반복 횟수)의 모델을 훈련하고 평가하므로 비용이 매우 많이 든다.

모델 평가에 대해 유념해야 할 점

  • 데표성 있는 데이터 : 훈련 세트와 테스트 세트가 주어진 데이터에 대한 대표성이 있어야 한다. 훈련 세트와 테스트 세트로 나누기 전에 데이터를 무작위로 섞는 것이 일반적이다.
  • 시간의 방향 : 과거로부터 미래를 예측하려고 한다면 미래의 정보가 누설되기에 데이터 분할 전에 무작위로 섞어서는 안된다. 훈련 세트에 있는 데이터보다 테스트 세트에 있는 모든 데이터가 미래의 것이어야 한다.
  • 데이터 중복 : 한 데이터셋에 어떤 데이터 포인트가 두번 등장하면 데이터 포인트가 중복될 있어서 확인해야 한다.

5-3 훈련 성능 향상하기

과대적합과 싸워 일반화 성능을 개선하는데에 일반적으로 세가지 문제가 발생한다.

  • 훈련이 되지 않습니다
  • 훈련은 잘 시작되었지만 모델이 의미 있는 일반화를 달성하지 못합니다
  • 시간이 지남에 따라 훈련과 검증 손실이 모두 줄어들고 기준점을 넘어설 수 있지만 과대적합되지 않고 과소적합 상태이다.

훈련이 시작되지 않거나 일찍 중단될 경우 손실이 멈추게 된다. 그럼 경사 하강법 과정에 대한 설정에 문제가 있다. 옵티마이저 선택, 모델 가중치의 초깃값 분포, 학습률, 배치크기이다. 이런 모든 파라미터는 상호의존적이며 일반적으로 나머지 파라미터는 고정하고 학습률과 배치 크기를 튜닝하는 것으로 충분하다.

만약 모델이 40~40퍼센트 정도의 훈련 정확도와 검증 정확도에 빠르게 도달하지만 이를 넘어서지 못한다면!

  • 학습률을 낮추거나 높입니다. 너무 높은 학습률은 최적적합을 크게 뛰어넘는 업데이트가 일어날 수 있다. 너무 낮은 학습률은 훈련을 너무 느리게 만들어 멈추어 있는 것처럼 보일 수 있다.
  • 배치 크기를 증가시킨다. 배치 샘플을 더 늘리면 유익하고 잡음이 적은(분산이 낮은) 그래디언트가 만들어진다.

모델이 훈련되지만 어떤 이유에서인지 검증 지표가 전혀 나아지지않고 랜덤 분류기가 달성할 수 있는 것보다 더 낫지 않아 모델이 훈련되지만 일반화가 되지않을 경우는?

  • 입력 데이터에 타깃 예측을 위한 정보가 충분하지 않을 수 있다.
  • 현재 사용하는 모델의 종류가 문제에 적합하지 않을 수 있다.

모델 용량 늘리기

모델이 훈련되고 검증 지표가 향상되며 최소한 어느 정도 일반화 능력을 달성한 것 같다면 다음은 모델을 과대적합시켜야 한다. 만약 과대적합할 수 없는 것처럼 보인다면 모델의 표현 능력이 부족한 것으로 용량이 더 큰 모델이 필요하며 층을 추가하거나, (더 많은 가중치를 가지도록) 층 크기를 늘리거나, 현재 문제에 더 적합한 종류의 층(구조에 대해 더 나은 가정)을 사용할 수 있다.

5-4 일반화 성능 향상하기

적절한 데이터셋으로 작업하고 있는 지 확인하는 것이 중요하다

  • 데이터가 충분한지 확인한다. 입력에서 출력을 매핑하는 공간을 조밀하게 샘플링해야 한다. 데이터가 많을 수록 좋은 모델이 만들어진다.
  • 레이블 할당 에러를 최소화한다. 입력을 시각화하여 이상치를 확인하고, 레이블을 교정한다.
  • 데이터를 정제하고 누락된 값을 처리한다.

특성 공학

데이터의 일반화 가능성을 향상시키는 매우 중요한 방법은 특성 공학이다. 특성 공학은 데이터와 머신 러닝 알고리즘에 관한 지식을 사용하는 단계로 모델에 데이터를 주입하기 전에(학습 전) 하드코딩된 변환을 적용하여 알고리즘이 더 잘 수행되도록 만들어준다.

*0x퀴즈 나올수도*

심층 신경망을 사용할 때에는 특성 공학에 대해 신경쓰지 않아도되나요? ㄴㄴ 안됨

  • 좋은 특성은 적은 자원을 사용하여 문제를 더 잘 풀어낼 수 있다.
  • 좋은 특성은 더 적은 데이터로 문제를 풀 수 있다. 딥러닝 모델이 스스로 특성을 학습하는 능력은 가용한 훈련 데이터가 많을 때 발휘되어 샘플 개수가 적다면 특성에 있는 정보가 매우 중요해진다.

조기 종료 사용하기

훈련 중 일반화 성능이 가장 높은 정확한 최적적합의 지점(과소적합과 과대적합 사이의 정확한 경계)을 찾는 것은 일반화 성능을 향상시킬 수 있는 가장 효과적인 방법 중 하나이다. 캐라스에서는 EarlyStopping 콜백을 사용한다.

모델 규제하기

규제기법은 훈련 데이터에 완벽하게 맞추려는 모델의 능력을 적극적으로 방해하는 일련의 모범 사례로 모델의 검증 점수를 향상시키는 것이 목적이다. 모델을 더 간단하고 더 평범하게 곡선을 부드럽고 더 일반적으로 만드는 경향을 가지고 있기 때문에 모델이 훈련 세트에 덜 특화되고 데이터의 잠재 매니폴드를 조금 더 가깝게 근사함으로써 일반화 능력을 높일 수 있다.

과대적합을 완화시키는 가장 간단한 방법

모델 크기(층의 수와 층에 있는 유닛 개수로 결정되는 학습 가능한 파라미터 개수)를 줄이는 것이다. 과소적합되지 않도록 충분한 파라미터를 가진 모델을 사용해야 한다. 데이터에 알맞는 모델 크기를 찾으려면 각기 다른 구조를 평가해보아야 한다.

비교적 적은 수의 층과 파라미터로 시작하여 검증 손실이 감소되기 시작할때까지 층이나 유닛 개수를 늘리는 것이다. 학습 대상에 대해 과도하게 많은 파라미터를 가진 모델을 만드는 것이 표준이지만 기억 용량이 너무 많을 수 있다. 모델이 바로 그럼 과대적합되고 검증 손실 곡선이 고르지 않고 분산이 커진다면 모델이 너무 큰 것이다.

용량이 큰 모델은 첫번째 에폭 이후에 거의 바로 과대적합이 시작되어 갈수록 더 심해지며 검증 손실도 매우 불안정하다. 훈련 손실은 매우 빠르게 0에 가까워진다. 용량이 많은 모델일수록 더 빠르게 훈련 데이터를 모델링할 수 있지만 더욱 과대적합에 민감해진다.

진짜 방법!!!

과대적합을 완화하기 위한 일반적인 방법은 모델의 복잡도에 제한을 두어 가중치가 작은 값을 가지도록 강제하는 것이다. 이를 가중치 규제라고 하며 모델 손실 함수에 큰 가중치에 연관된 비용을 추가한다.

  • L1 규제 : 가중치의 절댓값에 비례하는 비용이 추가된다
  • L2 규제 : 가중치의 제곱에 비례하는 비용이 추가된다. 이것은 신경망에서 가중치 감쇠라고도 불리운다.

두 모델이 동일한 파라미터 개수를 가지고 있더라도 L2규제를 사용한 모델이 기본 모델보다 훨씬 더 과대적합에 잘 견딘다.

드롭아웃

대규모 딥러닝 모델은 파라미터가 너무 많기 때문에 가중치 값을 제약하는 것이 모델 용량과 일반화에 큰 영향을 미치지 않는 경향이 있다. 이런 경우 드롭아웃이라는 다른 규제방법이 선호된다. 신경망을 위해 사용되는 규제 기법 중에서 가장 효과적이고 널리 사용되는 방법이다.

테스트 단계에서는 어떤 유닛도 드롭아웃되지 않지만 층의 출력을 드롭아웃 비율에 비례하여 줄여준다. 훈련할 때보다 더 많은 유닛이 활성화되기 때문이다. 테스트할 때에는 드롭아웃 비율로 출력을 낮추어 주어야 한다.

정리하면 신경망에서 일반화 성능을 극대화하고 과대적합을 방지하기 위해 가장 널리 사용하는 방법은 다음과 같습니다.

• 훈련 데이터를 더 모읍니다. 또는 더 나은 데이터를 모읍니다.

• 더 나은 특성을 개발합니다.

• 네트워크의 용량을 감소시킵니다.

• (작은 모델을 만들기 위해) 가중치 규제를 추가합니다.

• 드롭아웃을 추가합니다.

'AI > 인공지능 기초' 카테고리의 다른 글

케라스 창시장에게 배우는 딥러닝 3장  (0) 2023.12.08
케라스 창시자에게 배우는 딥러닝 2장  (1) 2023.12.06
모델 저장과 콜백  (1) 2023.12.06
딥러닝 모델 학습  (0) 2023.12.06
딥러닝 구조와 모델  (0) 2023.12.06
Comments