[목차]
5-1 ) 일반화: 머신 러닝의 목표
5-2 ) 머신 러닝 모델 평가
5-3 ) 훈련 성능 향상하기
5-4 ) 일반화 성능 향상하기
5-1 ) 일반화: 머신 러닝의 목표
최적화: 훈련 데이터에서 최고의 성능을 얻으려고 모델을 조정하는 과정
> 목표: 훈련 데이터에서 높은 성능
일반화: 훈련한 모델이 이전에 본 적 없는 데이터에서 얼마나 잘 수행되는지를 의미
> 목표: 테스트 데이터에서 높은 성능
[과대적합과 과소적합]
>> 확인 위해서는 손실, 혹은 정확도의 훈련 반복에 따른 증감을 테스트 데이터 훈련 데이터에 대해 그래프로 나타내는 것이 좋음 ( 두 그래프를 비교해 과대적합/과소적합 일어나는 지점 찾음)
과소적합: 훈련 데이터의 손실이 낮아질수록 테스트 데이터의 손실도 낮아짐
과대적합: 훈련 데이터 손실이 낮아질 때 테스트 데이터의 손실 증가함
[잡음 섞인 데이터셋]
부정확성으로 인한 잡음: 잘못된 입력이 있는 경우/ 정상적인 데이터의 레이블이 잘못된 경우
> 이상치에 맞추려고 할 시 일반화 성능이 감소 (과대적합)
해당 그림처럼 이상치를 모델링 과정에서 모두 포함할 경우 과도하게 복잡한 모델이 생기고, 일반화 성능이 떨어짐
불확실성/ 모호성으로 인한 잡음: 객관적인 경계가 없는 범주 혹은 동일한 측정값에도 다른 결과가 발생할 가능성이 있는 경우
드문 특성으로 인한 가짜 상관관계: 레이블 당 샘플 수 적을수록 과대적합될 확률 올라감
ex) 1개의 샘플에 포함된 단어가 부정 레이블을 지녔을 때, 해당 단어가 부정적인 단어라는 근거가 충분하지 않음 > 해당 레이블의 특성을 대변할 수 없는 샘플
노이즈가 학습에 미치는 영향을 보기 위해 두 개의 모델을 훈련시킴.
첫 번째는 랜덤하게 생성한 노이즈를 정상 데이터셋의 크기만큼 생성하여 두 데이터를 합친 결과, 두 번째는 0으로 채워진 데이터셋을 크기만큼 생성하여 데이터에 합친 데이터임.
이 둘에 동일한 하이퍼 파리미터를 주고 학습시킨다.
각 모델의 에포크에 따른 정확도의 변화를 시각화한다.
두 그래프의 예측 정확도 차이에서 노이즈가 섞인 데이터셋이 0이 섞인 데이터셋보다 떨어지는 모습을 볼 수 있음.
따라서,
1) 잡음 특성은 과대적합을 유발한다는 점
2) 각 특성이 학습에 유익한 영향을 주기 위해서는 훈련 전에 특성 선택이 필요함을 확인할 수 있음.
이렇게 랜덤하게 레이블을 섞은 데이터셋에서도 딥러닝 모델 훈련 가능
> 모델의 성능을 가르는 것은 일반화! (실제 세상의 정보 구조 반영)
[매니폴드 가설]
> 각 레이블의 구조적 특성을 파악하여 이를 바탕으로 분류 가능
매니폴드: 선형 공간과 비슷하게 보이는 부모 공간의 저차원 부분 공간
매니폴드 가설: 실제 세상의 모든 데이터가 (이 데이터가 인코딩된) 고차원 공간 안에 있는 저차원 매니폴드에 놓여 있다고 가정
(숫자, 사람 얼굴, 나무 형태, 음성, 자연어 등 해당)
의미
1) 모델은 가능한 입력 공간 안에서 비교적 간단하고 저차원적이며, 매우 구조적인 부분 공간(잠재 매니폴드)만 학습하면 됨
2) 매니폴드 중 하나 안에서 두 입력 사이를 보간하는 것이 가능함
>> 보간으로 부족한 데이터 안 영역을 채워서 일반화 성능을 높일 수 있음!
지역 일반화: 보간처럼 이전에 본 것과 매우 가까운 것을 이해하는 데에 도움
궁극 일반화: 보간 이외의 인지 매커니즘 (추상화, 세상의 상징적 모델, 추론 등)
딥러닝 모델의 작동 과정
1) 저차원 매니폴드 형성
2) 경사 하강법으로 파라미터를 점진적으로 조정하며 데이터에 맞게 피팅
3) 모델이 데이터의 매니폴드를 근사하는 중간 지점을 찾음
4) 훈련 입력 사이를 모델이 보간해서 이전에 본 적 없는 입력 이해함
잠재 매니폴드 학습에 잘 맞는 딥러닝 모델의 특성
1) 입력으로부터 출력으로 매끄럽고 연속적인 매핑 구현함
2) 훈련 데이터에 있는 정보를 계층적이고 모듈 방식으로 구조화 > 자연적 데이터의 구성 반영
보간할 수 있을 만큼 조밀한 매니폴드를 형성해야 함 > 훈련 데이터 셋의 크기와 상태 중요!!
규제 필요: 적은 개수의 패턴/ 매우 규칙적인 패턴만 기억하도록 하는 것 (오버피팅 막음)
5-2 ) 머신 러닝 모델 평가
하이퍼 파라미터: 최적의 성능을 내기 위해 모델의 설정 튜닝
정보 누설: 모델 성능에 기반하여 모델의 하이퍼파라미터를 조정할 때마다 검증 데이터에 관한 정보가 모델로 새는 것
단순 홀드아웃 검증
: 데이터를 훈련 데이터와 테스트 데이터로 분리/ 훈련 데이터를 훈련용과 검증용 데이터로 분리
> 검증 데이터 샘플 수가 적어 전체 데이터를 대표하지 못할 가능성이 있음
K- 폴드 교차검증
: 동일하게 훈련/ 테스트 데이터셋으로 분할 , 그 중 훈련 데이터셋을 K 개의 동일한 크기의 폴드로 분할함
K 개의 폴드에 대하여 각각을 검증 셋으로 선정하여 모델 평가 진행, 각 폴드에 대한 검증 점수를 평균내어 최종 점수 산출
셔플링을 사용한 반복 K- 겹 교차 검증
: k 개의 폴드로 분할하기 전 매번 셔플링 진행
>> 비용이 너무 많이 드는 단점
모델 평가에 대해 유념해야 할 점
1) 대표성 있는 데이터
2) 시간의 방향: 시간의 흐름에 따른 데이터는 섞어서는 안됨
3) 데이터 중복: 훈련 데이터와 테스트 데이터 안의 데이터가 중복되지 않도록 주의
5-3 ) 훈련 성능 향상하기
모델 성능 향상 전 3가지 문제
1) 시간에 따라 훈련 손실이 개선되지 않음
2) 훈련은 잘 되었으나 일반화 달성 못함
3) 과소적합 지속(과대적합 x)
경사 하강법의 핵심 파라미터 튜닝하기
파라미터: 옵티마이저, 모델 가중치의 초깃값 분포, 학습률, 배치 크기 등
> 파라미터는 상호 의존적
> 일반적으로 나머지 파라미터를 고정하고 학습률과 배치 크기를 튜닝하는 것으로 충분
학습률을 1로 설정하고 훈련시킨 모델
*학습률: 인공 신경망 모델이 학습을 진행할 때 각각의 가중치(weight)를 얼마나 업데이트할지 결정하는 하이퍼 파라미터, 매개변수 업데이트 시의 크기를 조절하여 모델이 적절한 방향으로 수렴할 수 있도록 도와줌
>> 30~40%의 훈련 정확도와 검증 정확도를 넘지 못함
동일한 모델에서 학습률을 0.01로 조정함
>> 검증 정확도 약 97%로 상승함
따라서, 훈련 셋에 대해 정확도가 낮다면
1) 학습률이 너무 높거나 낮진 않은지 확인. (너무 높을 시 최적적합을 크게 뛰어넘음, 너무 낮을 시 훈련 속도 너무 느려짐)
2) 배치 크기 증가
모델 용량 늘리기
입력층 이외에 층을 출력층 하나만 둔 채 모델링 진행
검증 손실이 지속적으로 감소함 (최적적합의 지점을 찾기 위해서는 감소하였다 증가해야 함)
모델에 96개의 유닛을 각각 지닌 중간층 2개를 넣고 다시 훈련시킴
8번째 에포크 이후 과대적합이 일어난다는 것을 찾을 수 있음
따라서 과소적합이 지속되는 경우 모델의 용량을 늘리는 것으로 해결할 수 있음
5-4 ) 일반화 성능 향상하기
데이터셋 큐레이션
1) 데이터가 충분한 지 확인
2) 레이블 할당 에러 최소화: 입력을 시각화하여 이상치를 확인하고, 레이블을 교정
3) 데이터를 정제하고 누락된 값을 처리
4) 특성 선택 수행 > 특성 공학
특성 공학
: 모델에 데이터가 주입되기 전 하드코딩된 변환을 적용하여 모델이 수월하게 작업할 수 있는 어떤 방식으로 데이터 표현
ex) 시계 데이터
이미지 (2차원 픽셀 데이터) > 시계 바늘의 좌표(각도+위치) > 시계 바늘의 각도(각도)
표현하려는 내용을 최대한 간결한 데이터로 변환함
심층 신경망에서 특성 공학의 필요성
1) 적은 자원을 사용하여 더 정확도 있게 문제 해결 가능
2) 더 적은 데이터로 문제를 해결할 수 있음
조기 종료 사용하기
: 모델의 훈련 손실이 최소값이면 과대적합 발생, 그 전에 훈련 종료
> 검증 지표가 일정 정도 이상 향상되지 않을 시 과대적합이 일어났다고 보고 훈련을 종료함
모델 규제하기
: 훈련 데이터에 모델의 능력을 완벽하게 맞추려는 것을 막음
> 훈련 데이터셋에 덜 특화되고, 데이터의 잠재 매니폴드를 조금 더 가깝게 근사하여 일반화 능력 높임
> 알맞는 층의 수나 각 층의 유닛 수 결정
2개의 중간층을 가지고 각 중간층이 가진 유닛의 개수가 16개인 모델 생성
작은 용량의 모델: 2개의 중간층을 가지고 각 중간층이 가진 유닛의 개수가 4개인 모델 생성
큰 용량의 모델: 2개의 중간층을 가지고 각 중간층이 가진 유닛의 개수가 512개인 모델 생성
>> 시각화하였을 때 작은 모델은 과대적합이 더 나중에 일어나고, 손실도 천천히 증가하고, 큰 모델은 과대적합이 일찍 일어나고 손실도 급격하게 증가하는 것을 확인할 수 있다.
가중치 규제 추가
: 모델의 복잡도에 제한을 두어 가중치가 작은 값을 가지도록(모델이 일정 수준 이상 복잡해지지 않도록) 강제하는 것
L1 규제: 가중치의 절댓값에 비례하는 비용 추가
L2 규제: 가중치의 제곱에 비례하는 비용 추가
L2 규제를 추가하여 모델을 훈련시킨 코드
'케라스 창시자에게 배우는 딥러닝(DACOS)' 카테고리의 다른 글
7. 케라스 완전 정복 (0) | 2024.05.12 |
---|---|
6. 일반적인 머신러닝 워크플로 (0) | 2024.05.07 |
4. 신경망 시작하기: 분류와 회귀 (0) | 2024.03.31 |
3. 케라스와 텐서플로 소개 (2) | 2024.03.22 |
2. 신경망의 수학적 구성 요소 (1) | 2024.03.19 |