과대적합과 과소적합
- 과대적합
- 모델이 훈련 데이터에서는 우수하게 예측하지만, 새로운 데이터에서는 제대로 예측하지 못해 오차가 크게 발생하는 것
- 모델이 훈련 데이터에만 적합하게 학습되어 새로운 데이터에 대해서는 성능이 저하되는 경우
- 과소적합
- 훈련 데이터에서도 성능이 좋지 않고 새로운 데이터에서도 성능지 좋지 않은 데이터를 잘 예측할 수 없는 상태
과대적합 & 과소적합 공통점
- 성능 저하
- 과대적합
- 훈련 데이터에서는 잘 수행되는 것처럼 보이더라도 새로운 데이터에서는 제대로 값을 예측 못함
- 과소적합
- 새로운 데이터에 대해 예측을 수행할 수 없으며, 전반적으로 모델의 성능이 좋지 못할 때 발생
- 과대적합
- 모델 선택 실패
- 모델을 변경해 문제 완화 가능
- 과대적합
- 모델의 구조가 너무 복잡해 훈련 데이터에만 의존하게 되어 성능 저하
- 과소적합
- 모델의 구조가 너무 단순해 데이터의 특징을 제대로 학습하지 못한 경우
- 편향-분산 트레이드오프
- 모델이 훈련 데이터와 새로운 데이터에 대해서도 우수한 성능을 보이려면 낮은 편향과 낮은 분산을 가져야함
- 분산
- 분산이 높으면 추정치에 대한 변동 폭이 커지며, 데이터가 갖고 있는 노이즈까지 학습 과정에 포함돼 과대적합 문제 발생
- 편향
- 편향이 높으면 추정치가 항상 일정한 값을 갖게 될 확률이 높아져 데이터의 특징을 제대로 학습하지 못해 과소적합 문제 발생
- 모델의 성능을 높이기 위해 편향과 분산을 절충해 높은 성능 끌어내기
- 모델 복잡 ⇒ 분산은 커지고 편향은 작아짐
- 모델 단순 ⇒ 분산은 작아지고 편향은 커짐
- → 분산과 편향의 균형 맞추기
과대적합과 과소적합 문제 해결
과대적합
→ 모델의 일반화 능력을 저하해 문제 발생
과소적합
→ 모델이 데이터의 특징을 제대로 학습할 수 없을 때 발생
⇒ 두 문제 모두 모델에 새로운 데이터를 예측했을 때 우수한 결과를 얻을 수 없음
과대적합 & 과소적합 피하는 방법
- 데이터 수집
- 과대적합, 과소적합 둘 다 훈련 데이터를 제대로 학습하지 못하는 경우
- 과대적합 → 훈련 데이터를 너무 적합하게 학습
- 과소적합 → 훈련 데이터를 제대로 학습하지 못함
- 훈련 데이터에서 노이즈를 학습하지 않으면서 일반적인 규칙을 찾을 수 있게 학습 데이터의 수 늘리기
- 과대적합, 과소적합 둘 다 훈련 데이터를 제대로 학습하지 못하는 경우
- 피처 엔지니어링
- 신규 데이터 수집이 어려운 경우라면 기존 훈련 데이터에서 변수나 특징을 추출하거나 피처를 더 작은 차원으로 축소
- → 모델이 더 학습하기 쉬운 형태로 데이터를 변환하면 노이즈에 더 강건한 모델 구축 가능
- 모델 변경
- 과대적합&과소적합 발생하는 주요한 이유?
- ⇒ 훈련 데이터세트에 비해 너무 강력한 모델을 사용하거나 너무 간단한 모델을 사용하기 때문
- 과대적합
- 학습 데이터에 비해 강력한 모델을 사용하는 경우 발생
- → 강력한 모델의 경우 깊은 구조의 모델일 가능성 ↑
- 모델의 매개변수가 많기 때문에 적은 양의 데이터로 학습한다면 효과적으로 모델 학습 불가능
- 과소적합
- 학습 데이터에 비해 간단한 모델을 사용할 때 발생
- → 모델의 구조가 간단하면 데이터의 특징을 제대로 학습할 수 없음
- 조기 중단
- 모델 학습 시 검증 데이터세트로 성능을 지속적으로 평가해 모델의 성능이 저하되기 전에 모델 학습을 조기 중단하는 방법
- ⇒ 과대적합이 발생하기 전에 모델 학습을 중단하는 방법
- 배치 정규화
- 모델에 배치 정규화를 적용해 모델 성능과 모델 안정성 향상
- 모델의 계층마다 평균과 분산을 조정해 내부 공변량 변화를 줄여 과대적합 방비
- 가중치 초기화
- 모델의 매개변수를 최적화하기 전에 가중치 초깃값을 설정하는 프로세스
- 학습 시 기울기가 매우 작아지거나 커지는 문제 발생 가능⇒ 적절한 초기 가중치를 설정해 과대적합 방지 가능
- → 학습을 어렵게 만들거나 불가능하게 만듦
- 정착화
- 모델에 정착화를 적용해 목적 함수에 페널티를 부여하는 방법
- 모델을 일부 제한해 과대적합 방지 가능
- 학습 조기 중간, L1 정착화, L2 정착화, 드롭아웃, 가중치 감쇠 등이 있음
배치 정규화
배치 정규화란?
⇒ 내부 공변량 변화를 줄여 과대적합을 방지하는 기술
일반적으로 인공 신경망을 학습할 때 입력값을 배치 단위로 나눠 학습 진행
배치 단위로 나눠 학습하는 경우 상위 계층의 매개변수가 갱신될 때마다 현재 계층에 전달되는 데이터의 분포도 변경됨
각 계층은 배치 단위의 데이터로 인해 계속 변화되는 입력 분포를 학습해야 하기 때문에 인공 신경망의 성능과 안전성이 낮아져 학습 속도 느려짐
⇒ 내부 공변량 변화란 계층마다 입력 분포가 변경되는 현상
내부 공변량 변화가 발생하는 경우
→ 은닉층에서 다음 은닉층으로 전달될 때 입력값이 균일해지지 않아 가중치가 제대로 갱신되지 않을 수 있음
⇒ 학습이 불안정해지고 느려져 가중치가 일정한 값으로 수렴하기 어려워짐
→ 초기 가중치 값에 민감해져 일반화하기가 어려워져 더 많은 학습 데이터 요구
⇒ 문제를 해결하기 위해 각 계층에 배치 정규화 적용
배치 정규화 동작
→ 미니 배치의 입력을 정규화
ex. 미니 배치에 전달되는 입력값이 [ 100, 1, 1 ] 이거나 [ 1, 0.01, 0.01 ]
⇒ 두 배열의 값 모두 [ 1.4142, -0.7071, -0.7071 ]로 정규화
배치 정규화 적용
→ 각 계층에 대한 입력이 일반화되고 독립적으로 정규화 수행
⇒ 더 빠르게 값 수렴
⇒ 입력이 정규화되므로 초기 가중치에 대한 영향 줄일 수 있음
정규화 종류
배치 정규화
→ 이미지 분류 모델에서 배치 정규화 적용 시 14배 더 적은 학습으로도 동일한 정확도 달성 가능
→ 더 높은 학습률을 적용해 학습 시간 최소화 가능
⇒ 계층 정규화, 인스턴스 정규화, 그룹 정규화
정규화 수행 방식
- 차원 : 이미지 데이터의 크기(너비, 높이)나 어휘 사전의 크기
- 채널 : 이미지 데이터의 채널이나 시간 간격
- ⇒ 데이터 종류에 따라 축의 의미는 달라질 수 있으나, 정규화 처리 방식은 동일
정규화 종류
- 배치 정규화
- 미니 배치에서 계산된 평균 및 분산을 기반으로 계층의 입력을 정규화
- 컴퓨터비전과 관련된 모델 중 합성곱 신경망(CNN)이나 다층 퍼셉트론(MLP)과 같은 순방향 신경망에서 주로 사용
- 계층 정규화
- 이미지 데이터 전체를 대상으로 정규화 수행 X
- 각각의 이미지 데이터에 채널별로 정규화 수행
- 채널 축으로 계산되기 때문에 미니 배치 샘플 간의 의존 관계 X
- → 샘플이 서로 다른 길이를 가지더라도 정규화 수행 가능
- 신경망 모델 중 자연어 처리에서 주로 사용됨
- 순환 신경망(RNN)이나 트랜스포머 기반 모델에서 주로 사용
- 인스턴스 정규화
- 채널과 샘플을 기준으로 정규화 수행
- 정규화가 각 샘플에 대해 개별적으로 수행되므로 입력이 다른 분포를 갖는 작업에 적합
- 생성적 적대 신경망(GAN)이나 이미지의 스타일을 변환하는 스타일 변환(Style Transfer) 모델에서 주로 사용
- 그룹 정규화
- 채널을 N개의 그룹으로 나누고 각 그룹 내에서 정규화 수행
- 그룹을 하나로 설정하면 인스턴스 정규화와 동일
- 그룹의 개수를 채널의 개수와 동일하게 설정하면 계층 정규화와 동일
- 배치 크기가 작거나 채널 수가 매우 많은 경우에 주로 사용
- 합성곱 신경망(CNN)의 배치 크기가 작으면 배치 정규화가 배치의 평균과 분산이 데이터세트를 대표한다고 보기 어렵기 때문에 배치 정규화의 대안으로 사용
가중치 초기화
가중치 초기화란❓
→ 모델의 초기 가중치 값을 설정하는 것
⇒ 모델 매개변수에 적절한 초깃값을 설정한다면 기울기 폭주나 기울기 소실 문제 완화 가능
⇒ 모델의 수렴 속도를 향상시켜 전반적인 학습 프로세스 개선 가능
상수 초기화
⇒ 초기 가중치 값을 모두 같은 값으로 초기화
ex. 0이나 0.1과 같은 매우 작은 양의 상숫값으로 모든 가중치 동일하게 할당
→ 0, 1, 특정 값, 단위행렬, 디랙 델타 함수 값 등
구현이 간단하고 계산 비용이 거의 들지 않음
But, 일반적으로 사용되지 않는 초기화 방법
→ 모든 가중치 초깃값을 같은 값으로 초기화하면 배열 구조의 가중치에서 문제 발생
⇒ 대칭 파괴 현상으로 인해 모델을 학습하기 어렵거나 학습이 불가능하게 만듦
📢
대칭 파괴 현상? 신경망의 초기 가중치가 동일한 상숫값으로 설정되어 네트워크의 모든 노드가 동일한 출력을 생성해 네트워크가 어려워지는 현상
⇒ 모든 노드가 동일한 출력을 생성하여 모델이 학습되지 않음
스칼라값을 입력으로 받는 매우 작은 모델이나 퍼셉트론 등에 적용하거나 편향을 초기화하는 경우 0이나 0.01 등의 형태로 초기화하는 데 사용
무작위 초기화
⇒ 초기 가중치의 값을 무작위 값이나 특정 분포 형태로 초기화
ex. 정규 분포의 형태로 가중치의 값 초기화
대표적으로 무작위, 균등 분포, 정규 분포, 잘린 정규 분포, 희소 정규 분포 초기화 등
노드의 가중치와 편향을 무작위로 할당해 네트워크가 학습할 수 있게 함
→ 대칭 파괴 문제 방지
⇒ 간단하고 많이 사용되는 초기화 방법
계층이 적거나 하나만 있는 경우에는 보편적으로 적용 가능
But, 계층이 많아지고 깊어질수록 활성화 값이 양 끝단에 치우치게 되어 기울기 소실 현상 발생
⇒ 상수 초기화와 동일한 문제 발생 가능
제이비어 & 글로럿 초기화
⇒ 균등 분포나 정규 분포를 사용해 가중치 초기화
각 노드의 출력 분산이 입력 분산과 동일하도록 가중치 초기화
동일한 표준 편차를 사용하지 않고 은닉층의 노드 수에 따라 다른 표준 편차 할당
평균이 0인 정규 분포와 현재 계층의 입력 및 출력 노드 수를 기반으로 계산되는 표준편차
→ 가중치를 초기화하여 수행
⇒ 이전 계층의 노드 수와 다음 계층의 노드 수에 따라 표준 편차가 계산됨
입력 데이터의 분산이 출력 데이터에서 유지되도록 가중치를 초기화
⇒ 시그모이드나 하이퍼볼릭 탄젠트를 활성화 함수로 사용하는 네트워크에서 효과적
카이밍 & 허 초기화
⇒ 균등 분포나 정규 분포를 사용해 가중치를 초기화
순방향 신경망 네트워크에서 가중치를 초기화할 때 효과적
각 노드의 출력 분산이 입력 분산과 동일하도록 가중치를 초기화
But, 현재 계층의 입력 뉴런 수를 기반으로만 가중치 초기화
제이비어 초기화에서 발생한 문제점을 보완한 방법
⇒ 각 노드의 출력 분산이 입력 분산과 동일하게 만들어 ReLU 함수의 죽은 뉴런 문제 최소화 가능
⇒ ReLU를 활성화 함수로 사용한 네트워크에서 효과적
직교 초기화
⇒ 특잇값 분해를 활용해 자기 자신을 제외한 나머지 모든 열, 행 벡터들과 직교이면서 동시에 단위 벡터인 행렬을 만드는 방법
장단기 메모리 및 게이트 순환 유닛과 같은 순환 신경망(RNN)에서 주로 사용
직교 행렬의 고윳값의 절댓값은 1
⇒ 행렬 곱을 여러 번 수행하더라도 기울기 폭주나 기울기 소실 발생 X
⇒ 가중치 행렬의 고윳값이 1에 가까워지도록 해 RNN에서 기울기가 사라지는 문제를 방지하는 데 사용
모델이 특정 초기화 값에 지나치게 민감해지므로 순방향 신경망에서는 사용 X
정칙화
정칙화란❓
⇒ 모델 학습 시 발생하는 과대적합 문제를 방지하기 위해 사용되는 기술
모델이 암기가 아니라 일반화할 수 있도록 손실 함수에 규제를 가하는 방식
- 암기
- 모델이 데이터의 특성이나 패턴을 학습하는 것이 아니라 훈련 데이터의 노이즈를 학습했을 때 발생
- 모델이 훈련 데이터에서는 잘 수행되지만, 새로운 데이터에서는 제대로 수행되지 못하는 경우
- ⇒ 모델이 데이터의 일반적인 패턴을 학습한 것이 아니라 학습 데이터의 노이즈나 특정 패턴 학습
- 일반화
- 모델이 새로운 데이터에서도 정확한 예측을 할 수 있음을 의미
- 특정 데이터가 갖고 있는 노이즈를 학습하는 것이 아니라 데이터의 일반적인 패턴을 학습했을 때 일반화된 모델이라 부름
- ⇒ 일반화된 모델은 학습에 사용한 데이터와 약간 다르더라도 정확한 예측 가능
- 정칙화
- 노이즈에 강건하고 일반화된 모델을 구축하기 위해 사용하는 방법
- 모델이 특정 피처나 특정 패턴에 너무 많은 비중을 할당하지 않도록 손실 함수에 규제를 가해 모델의 일반화 성능 향상
- 일반화 성능❓
- 모델이 학습할 때 경험하지 못했던 상황에 대한 성능
- 모델이 비교적 복잡하고 학습에 사용되는 데이터의 수가 적을 때 활용⇒ 데이터의 수가 많거나 데이터가 잘 정제되어 노이즈가 거의 없는 경우에도 사용 X
- ⇒ 모델이 단순하다면 모델 매개변수의 수가 적어 정칙화 필요 X
- 이미 정규화되어 있는 경우에는 사용 X
- L1 정칙화, 가중치 감쇠, 드롭아웃 등
L1 정칙화 (라쏘 정칙화)
⇒ L1 노름 방식을 사용해 규제하는 방법
- L1 노름은 벡터 또는 행렬값의 절댓값 합계를 계산
- 손실 함수에 가중치 절댓값의 합을 추가해 과대적합 방지
- 모델 학습은 비용이 0이 되는 방향으로 진행
- 모델은 가중치 절댓값의 합도 최소가 되는 방향으로 학습 진행⇒ 예측에 필요한 특징의 수가 줄어듦
- ⇒ 불필요한 가중치가 0이 되므로 L1 정칙화를 적용한 모델은 특징 선택 효과 얻음
- → 모델 학습 시 값이 크지 않은 가중치들은 0으로 수렴
- 모델의 가중치를 정확히 0으로 만드는 경우가 있으므로 희소한 모델 될 수 있음But, 예측에 사용되는 특징의 수가 줄어들게 되므로 정보의 손실로 이어질 가능성
- ⇒ 불필요한 특징을 처리하지 않으므로 모델의 성능이 올라갈 수 있음
- 모델의 가중치 절댓값의 합 사용
- ⇒ 모델의 가중치를 모두 계산해 모델을 갱신해야 하므로 계산 복잡도 높아짐
- 미분 불가능
- ⇒ 역전파를 계산하는 데 더 많은 리소스 소모
- 하이퍼파라미터인 _lambda의 값이 적절하지 않으면?
- ⇒ 가중치 값들이 너무 작아져 모델을 해석하기 더 어렵게 만들 수 있으므로 여러 번 반복해 최적의 _lambda 값 찾기
- 주로 선형 모델에 적용
- ⇒ 선형 회귀 모델에서 사용하는 경우 라쏘 회귀
L2 정칙화 (릿지 정칙화)
⇒ L2 노름 방식을 사용해 규제하는 방법
- L2 노름은 벡터 또는 행렬 값의 크기를 계산
- 손실 함수에 가중치 제곱의 합을 추가해 과대적합을 방지하도록 규제
- 하나의 특징이 너무 중요한 요소가 되지 않도록 규제를 가하는 것에 의미를 둠
- 가중치 값들이 비교적 균일하게 분포
- 가중치를 0으로 만들지 않고 0에 가깝게 만듦
- 모델 학습 시 오차를 최소화하면서 가중치를 작게 유지하고 골고루 분포
- ⇒ 모델의 복잡도가 일부 조정
- 가중치 제곱으로 계산되므로 비선형적인 구조
- ⇒ 가중치가 0에 가까워질수록 규젯값이 줄어듦
- L1 정칙화에서 발생하는 계산 복잡도 문제 발생
- → 모델 매개변수의 제곱 값을 계산하고 저장해야 하므로
- 최적의 _lambda 값 찾기
- 과대적합을 효과적으로 방지하기 위해서 조기 중지 or 드롭아웃 함께 사용
- 주로 심층 신경망 모델에서 사용
- ⇒ 선형 회귀 모델에서 사용하는 경우 릿지 회귀
L1 정칙화 & L2 정칙화 비교
L1 정칙화 L2 정칙화
계산 방식 | 가중치 절댓값의 합 | 가중치 제곱의 합 |
모델링 | 희소함 | 희소하지 않음 |
특징 선택 | 있음 | 없음 |
이상치 | 강함 | 약함 |
가중치 | 0이 될 수 있음 | 0에 가깝게 됨 |
학습 | 비교적 복잡한 데이터 패턴을 학습할 수 없음 | 비교적 복잡한 데이터 패턴을 학습할 수 있음 |
가중치 감쇠
⇒ 모델이 더 작은 가중치를 갖도록 손실 함수에 규제를 가하는 방식
- 손실 함수에 규제 항을 추가하는 기술 자체를 의미
- 파이토치나 텐서플로 같은 딥러닝 라이브러리에서는 최적화 함수에 적용하는 L2 정규화 의미로 사용최적화 함수에서 weight_decay 하이퍼파라미터를 설정해 구현 가능
- ⇒ 파이토치의 가중치 감쇠는 L2 정규화와 동일
모멘텀
⇒ 경사 하강법 알고리즘의 변형 중 하나로 이전에 이동했던 방향과 기울기의 크기를 고려해 가중치 갱신
- 지수 가중 이동평균 사용
- 이전 기울기 값의 일부를 현재 기울기 값에 추가해 가중치 갱신
- 이전 기울기 값에 의해 설정된 방향으로 더 빠르게 이동
- ⇒ 일종의 관성 효과 얻을 수 있음
- 파이토치의 모멘텀은 가중치 감쇠 적용 방법처럼 최적화 함수의 momentum 하이퍼파라미터를 설정해 구현 가능
엘라스팃 넷
⇒ L1 정칙화와 L2 정칙화를 결합해 사용하는 방식
- 두 정칙화 방식을 결합함으로써 희소성과 작은 가중치의 균형 맞춤
- 두 정칙화 방식의 선형 조합으로 사용하며 혼합 비율을 설정해 가중치 규제
- 혼합 비율은 α로 어떤 정칙화를 더 많이 반영할지 설정하게 됨⇒ 1로 사용하면 L1 정칙화⇒ 트레이드오프 문제 더 유연하게 대처 가능
- ⇒ 0으로 사용하면 L2 정칙화
- → 0에서 1 사이의 값을 사용
- 특징의 수가 샘플의 수보다 더 많을 때 유의미한 결과
- → 상관관계가 있는 특징을 더 잘 처리 가능
- 균형적인 규제를 가하기 위해 새로운 하이퍼파라미터인 혼합 비유도 조정해야함
- ⇒ 더 많은 튜닝 필요
- 두 정칙화 모두 계산 복잡도 문제를 갖고 있음
- ⇒ 더 많은 리소스 소모
드롭아웃
⇒ 모델의 훈련 과정에서 일부 노드를 일정 비율로 제거하거나 0으로 설정해 과대적합을 방지하는 간단하고 효율적인 방법
- 과대적합을 발생시키는 이유❓
- 모델 학습 시 발생하는 노드 간 동조화 현상
- 동조화❓⇒ 학습 과정에서 일부 노드를 제거해 노드 간 의존성을 억제해야함투표 효과를 얻을 수 있어 모델 평균화
- 모델 평균화❓=> 여러 모델의 예측을 결합해 모델의 성능을 향상시키는 데 사용되는 기술
- ⇒ 동조화 현상 방지 가능
- → 특정 노드에 의존성이 생겨 학습 속도가 느려지고 새로운 데이터를 예측하지 못해 성능을 저하시킬 수 있음
- 모델 학습 중 특정 노드의 가중치나 편향이 큰 값을 갖게 되면 다른 노드가 큰 값을 갖는 노드에 의존하는 것
- 모델 학습 시 발생하는 노드 간 동조화 현상
- 모델 평균화 효과를 얻기 위해 다른 드롭아웃 마스크를 사용하면❓
- 모델을 여러 번 훈련해야 하므로 훈련 시간 늘어남
- 모든 노드를 사용해 학습하지 않으므로 데이터세트가 많지 않다면 효과를 얻기 힘듦
- 충분한 데이터세트와 학습이 없다면 모든 노드가 균일하게 학습될 수 없으므로 성능 저하될 수 있음
- ⇒ 드롭아웃을 적용할 때는 충분한 데이터세트와 비교적 깊은 모델에 적용
- 드롭아웃과 배치 정규화는 서로의 정칙화 효과 방해
- 배치 정규화 → 내부 공변량 변화 줄여 과대적합 방지
- 드롭아웃 → 일부 노드 제거⇒ 훈련 과정에서 성능이 저하되거나 불안정해짐
- ⇒ 따라서 드롭아웃, 배치 정규화 순으로 적용
- → 모델은 순방향 과정에서 다른 활성화 분포 사용하게 됨
그레이디언트 클리핑
⇒ 모델을 학습할 때 기울기가 너무 커지는 현상을 방지하는 데 사용하는 기술
- 과대적합 모델은 특정 노드의 가중치가 너무 큼⇒ 가중치 최댓값을 규제해 최대 임곗값을 초과하지 않도록 기울기를 잘라 설정한 임곗값으로 변경
- → 높은 가중치는 높은 분산 값을 갖게 하여 모델의 성능 저하
- 순환 신경망(RNN)이나 LSTM 모델을 학습하는 데 주로 사용⇒ 그레이디언트 클리핑이 최댓값을 억제하므로 많이 활용
- → 기울기 폭주에 취약한 두 모델
- 가중치 값에 대한 엄격한 제약 조건을 요구하는 상황이거나 모델이 큰 기울기에 민감한 상황에서 유용하게 활용 가능
데이터 증강 및 변환
- 데이터 증강
- 데이터가 가진 고유한 특징을 유지한 채 변형하거나 노이즈를 추가해 데이터세트의 크기를 인위적으로 늘리는 방법
- 모델의 과대적합을 줄이고 일반화 능력 향상
- 기존 데이터의 형질이 유지되므로 모델의 분산과 편향을 줄일 수 있음
- 특정 클래스의 데이터 수가 적은 경우 데이터 증강을 통해 데이터 불균형 완화 가능
- 너무 많은 변형이나 노이즈를 추가한다면 기존 데이터가 가진 특징이 파괴될 수 있음
- → 데이터의 일관성 사라짐
텍스트 데이터
⇒ 문서 분류 및 요약, 문장 번역과 같은 자연어 처리 모델을 구성할 때 데이터세트의 크기를 쉽게 늘리기 위해 사용
- 삽입, 삭제, 교체, 대체, 생성, 반의어, 맞춤법 교정, 역번역 등
- 삽입 및 삭제
- 삽입
- 의미 없는 문자나 단어, 또는 문장 의미에 영향을 끼치지 않는 수식어 등을 추가
- 삭제
- 단어나 문자를 삭제해 데이터의 특징을 유지
- 너무 적은 양을 삽입하거나 삭제한다면 과대적합 문제 발생
- 너무 많은 양을 삽입하거나 삭제한다면 데이터 품질 저하
- 교체 및 대체
- 교체⇒ 무의미하거나 의미상 잘못된 문장을 생성할 수 있으므로 데이터의 특성에 따라 주의
- 단어나 문자의 위치를 교환
- 대체⇒ 비교적 데이터의 정합성이 어긋나지 않아 효율적으로 데이터 증강 가능
- But, 조사(Postposition)가 어색해질 수도 . .
- 단어나 문자를 임의의 단어나 문자로 바꾸거나 동의어로 변경
- 역번역
- 입력 텍스트를 특정 언어로 번역한 다음 다시 본래의 언어로 번역
- 패러프레이징 효과 얻을 수 있음
- 패러프레이징 ❓
- 앞에서 사용한 단어 중 뜻이 같거나 유사한 어휘를 사용해 문장을 바꿔 표현
- 번역 모델의 성능에 크게 좌우됨
- 기계 번역의 품질을 평가하는 데 사용하기도 함
이미지 데이터
⇒ 객체 검출 및 인식, 이미지 분류와 같은 이미지 처리 모델을 구성할 때 데이터세트의 크기를 쉽게 늘리기 위해 사용됨
- 회전, 대칭, 이동, 크기 조정 등
- 회전 및 대칭
- 변형된 이미지가 들어오더라도 더 강건한 모델 구축 가능
- → 일반화된 성능
- 과도하게 증강하면 본래의 특징 소실될 수 있음
- 실제 데이터에 존재하지 않는 데이터 생성 가능
- ex. 표지판
- 자르기 및 패딩
- 객체가 존재하는 위치로 이미지를 잘라 불필요한 특징을 감소시키거나 패딩을 주어 이미지 크기를 동일한 크기로 맞출 수 있음
- 이미지를 과도하게 잘라 검출하려는 객체가 포함되지 않거나 너무 많은 패딩을 주어 특징의 영향 감소할 수도 있음
- 크기 조정
- 학습 데이터에 사용되는 이미지의 크기가 모두 일정해야 함⇒ 증강 클래스에서 이미지 크기 변환
- But, 데이터 자체를 수정하면 향후 모델이 입력받는 이미지 크기가 달라졌을 때 데이터 관리에 어려움 생김
- 보통 시퀀스 형태로 입력해 명시적으로 크기 설정
- 변형
- 기하학적 변환을 통해 이미지 변경
- 기하학적 변환 ❓
- 인위적으로 확대, 축소, 위치 변경, 회전, 왜곡하는 등 이미지의 형태를 변환하는 것→ 아핀 변환, 원근 변환
- 아핀 변환각도, 이동, 척도, 전단을 입력해 이미지 변형
- 2x3 행렬을 사용하며 행렬 곱셈에 벡터 합을 활용해 표현할 수 있는 변환
- 원근 변환
- 3x3 행렬을 사용하며 호모그래피로 모델링할 수 있는 변환
- 색상 변환
- 주로 색상의 위치나 패턴이 변경될 뿐 주 색상 값은 유지
- ⇒ 모델이 이미지를 분석할 때 특정 색상에 편향되지 않도록 픽셀값을 변환하거나 정규화하면 모델을 더 일반화해 분석 성능을 향상시키고 학습 시간 단축 가능
- 이미지의 밝기, 대비, 채도, 색상 변환
- 노이즈
- 특정 픽셀값에 편향되지 않도록 임의의 노이즈를 추가해 모델의 일반화 능력을 높임
- 학습에 직접 포함되지 않더라도 테스트 데이터에 노이즈를 추가해 일반화 능력이나 강건성을 평가하는 데 사용
- 컷아웃 및 무작위 지우기
- 컷아웃동영상에서 폐색 영역에 대해 모델이 더 강건하게 해줌
- 폐색 영역 ❓
- 특정 프레임에는 존재하지만 다른 프레임에는 존재하지 않는 영역
- 이미지에서 임의의 사각형 영역을 삭제하고 0의 픽셀값으로 채우는 방법
- 무작위 지우기일부 영역이 누락되거나 잘렸을 때 더 강건한 모델 만들 수 있음
- 임의의 사각형 영역을 삭제하고 무작위 픽셀값으로 채우는 방법
- 혼합 및 컷믹스
- 혼합⇒ 다중 레이블 문제에 대해서도 더 견고한 모델 구성 가능
- 다중 레이블 문제 ❓
- 하나의 객체가 두 개 이상의 클래스에 포함되는 것
- 두 개 이상의 이미지를 혼합해 새로운 이미지를 생성하는 방법
- 컷믹스이미지 영역을 잘라내고 붙여넣기하는 방법모델이 이미지의 특정 영역을 기억해 인식하는 문제 완화
- ⇒ 이미지 전체를 보고 판단할 수 있게 일반화
- 패치 위에 새로운 패치를 덮어씌워 비교적 자연스러운 이미지 구성
- 이미지 패치 영역에 다른 이미지를 덮어씌우는 방법
사전 학습된 모델
⇒ 대규모 데이터세트로 학습된 딥러닝 모델로 이미 학습이 완료된 모델을 의미
- 이미 학습된 모델의 일부를 활용하거나 추가 학습을 통해 모델의 성능 끌어낼 수 있음
- 안정되고 우수한 성능 기대 가능
- 대규모 데이터세트에서 데이터의 특징을 학습했으므로 유사한 작업에 대해서도 우수한 성능 기대
- 전이 학습과 같은 작업뿐만 아니라 백본 네트워크로 사용
백본
⇒ 입력 데이터에서 특징을 추출해 최종 분류기에 전달하는 딥러닝 모델이나 딥러닝 모델의 일부
- 입력 데이터에서 특징을 추출하므로 노이즈와 불필요한 특성을 제거하고 가장 중요한 특징 추출
- → 추출된 특징을 활용해 새로운 모델이나 기능의 입력으로 사용
- 학습 데이터에 따라 쉽게 과대적합될 수 있음
- → 정규화 또는 정칙화와 같은 기술 적용 권장
전이 학습
⇒ 어떤 작업을 수행하기 위해 이미 사전 학습된 모델을 재사용해 새로운 작업이나 관련 도메인의 성능을 향상시킬 수 있는 기술
- 특정 영역의 대규모 데이터세트에서 사전 학습된 모델은 다른 영역의 작은 데이터세트로 미세 조정해 활용
- 소스 도메인에서 학습한 지식을 활용해 타깃 도메인에서 모델의 성능 향상
- 타깃 도메인 ❓
- 목적 영역이라고도 하며, 전이 학습에 사용할 도메인
- 소스 도메인 ❓
- 원천 영역이라고도 하며, 사전 학습된 모델이 학습에 사용한 도메인
- 사전 학습된 모델을 활용하므로 과대적합 문제 최소화
- 업스트림과 다운스트림 영역으로 구별
- 업스트림대규모 특정 도메인의 데이터세트에서 학습한 모델전이 학습 파이프라인 중 시작 부분에 위치
- 해당 도메인에 대한 특징과 특성이 학습돼야 함
- 전이 학습을 수행하기 위해 사전 학습된 모델
- 다운스트림업스트림 모델에서 학습한 지식을 활용해 작은 규모의 타깃 도메인 데이터세트에서 학습한 모델사전 학습된 모델의 계층을 하나 이상 사용하며 타깃 도메인에 적응하기 위해 소규모 데이터세트에서 미세 조정됨
- 전이 학습 파이프라인 중 마지막 부분
- 미세 조정된 모델
- 귀납적 전이 학습
- 기존에 학습한 모델의 지식을 활용해 새로운 작업을 수행하기 위한 방법 중 하나
- 이전 작업에서 학습한 지식을 새로운 작업에 활용
- → 모델의 일반화 능력 향상
- 자기주도적 학습
- 비지도 전이 학습의 유형 중 하나
- 소스 도메인의 데이터세트에서 데이터의 양은 많으나 레이블링된 데이터의 수가 매우 적거나 없을 때 사용
- 레이블이 지정된 데이터를 수집하는 데 리소스 소모가 큰 경우 유용하게 사용
- 다중 작업 학습
- 레이블이 지정된 소스 도메인과 타깃 도메인 데이터를 기반으로 모델에 여러 작업을 동시에 가르치는 방법
- 공유 계층
- 소스 도메인과 타킷 도메인의 데이터세트에서 모델을 사전 학습한 다음 단일 작업을 위해 작업별 계층마다 타깃 도메인 데이터세트로 미세 조정하는 방법으로 모델 구성
- 작업마다 서로 다른 학습 데이터세트를 사용해 모델 미세 조정
- 서로 다른 작업의 특징을 맞추기 위해 동시에 학습되므로 하나의 작업에 과대적합 되지 않음 → 일반화된 모델 얻을 수 있음
- 서로의 작업이 동일한 도메인을 사용하므로 성능 향상에 기여
- 작업별 계층
- 변환적 전이 학습
- 소스 도메인과 타깃 도메인이 유사하지만 완전히 동일하지 않은 경우
- 학습에 사용되는 소스 도메인은 레이블이 존재하며, 타깃 도메인에는 레이블이 존재하지 않은 경우 사용
- 레이블이 지정된 소스 도메인으로 사전 학습된 모델 구축
- 레이블이 지정되지 않은 타깃 도메인으로 모델을 미세 조정해 특정 작업에 대한 성능 향상
- 도메인 적응
- 소스 도메인과 타깃 도메인의 특징 분포를 전이시키는 방법
- 소스 도메인과 타깃 도메인은 유사하지만 다름⇒ 서로 다른 도메인들의 특징 분포를 고려해 학습하므로 도메인 변화를 확인해 전이
- → 두 도메인의 특징 공간과 분포는 서로 다름
- 타깃 도메인에서 모델의 성능 향상 목적
- → 소스 도메인 조정할 있음
- 표본 선택 편향/공변량 이동
- 소스 도메인과 타깃 도메인의 분산과 편향이 크게 다를 때 표본을 선택해 편향이나 공변량을 이동시키는 방법
- 무작위/비무작위 샘플링 방법이나 도메인 적응을 통해 해당 학습치만 전이
- 비지도 전이 학습
- 소스 도메인과 타깃 도메인 모두 레이블이 지정된 데이터가 없는 전이 학습 방법
- 레이블이 없는 전체 데이터로 학습해 데이터가 가진 특징과 특성을 구분할 수 있게 사전 학습된 모델을 구축하고 소규모의 레이블이 지정된 데이터를 활용해 미세 조정
- 레이블의 영향을 받지 않고 데이터가 가진 특징을 학습했으므로 미세 조정 시 더 효과적으로 타깃 도메인에 대해 예측 수행 가능
- 대표적인 방법으로 생성적 적대 신경망, 군집화
- 제로-샷 전이 학습
- 사전 학습된 모델을 이용해 다른 도메인에서도 적용할 수 있는 전이 학습 기법
- ⇒ 새로운 도메인에서 일반화된 성능 가질 수 있음
- 새로운 도메인에서 학습할 데이터가 부족한 경우에 유용하게 사용
- 다양한 도메인 간의 지식을 전이할 수 있기 때문에 일반화된 성능 높일 수 있음
- 원-샷 전이 학습
- 제로-샷 학습과 유사하지만, 한 번에 하나의 샘플만 사용해 모델을 학습하는 방법
- 매우 적은 양의 데이터를 이용해 분류 문제를 해결
- 서포트 셋과 쿼리 셋을 가정
- 서포트 셋
- 학습에 사용될 클래스의 대표 샘플
- 각 클래스당 하나 이상의 대표 샘플로 이뤄짐
- 쿼리 셋
- 새로운 클래스를 분류하기 위한 입력 데이터
- 분류 대상 데이터로, 서포트 셋에서 수집한 샘플과는 다른 샘플이어야함
- 서포트 셋에 있는 대표 샘플과 쿼리 셋 간의 거리를 측정
- ⇒ 쿼리 셋과 가장 가까운 서포트 셋의 대표 샘플의 클래스로 분류
특징 추출 및 미세 조정
⇒ 대규모 데이터세트로 사전 학습된 모델을 작은 데이터세트로 추가 학습해 가중치나 편향 수정
→ 재학습된 모델은 대규모 데이터세트에서 배운 지식을 적용해 새로운 데이터세트에 맞는 지식 제공 가능
- 특징 추출
- 타킷 도메인이 소스 도메인과 유사하고 타깃 도메인의 데이터세트가 적을 때 사용
- 특징 추출 계층은 동결해 학습하지 않고 기존에 학습된 모델의 가중치 사용
- 예측 모델마다 요구하는 출력 노드의 수가 다르므로 모델의 분류기만 재구성해 습
- 미세 조정
- 특징 추출 계층을 일부만 동결하거나 동결하지 않고 타깃 도메인에 대한 학습 진행
- 데이터의 개수와 유사성에 따라 미세 조정 전략 달라짐
- 데이터 ↓ 유사도↑
- 적은 데이터를 최대한 활용하기 위해 분류기만 학습
- 데이터 ↑ 유사도↓
- 데이터가 가진 특징이 다르기 때문에 분류기를 포함한 모델 매개변수를 다시 학습
- 데이터↓ 유사도↓
- 초기 계층의 저수준 특징 추출 기능을 동결하고 나머지 계층과 분류기를 학습
- 데이터↑ 유사도↑
- 분류기에 가장 큰 영향을 미치는 상위 계층과 분류기를 학습
'AI.ML' 카테고리의 다른 글
[AI/ML 스터디] 8주차 - 08. 이미지 분류 (1) | 2024.11.20 |
---|---|
[AI/ML 스터디] 4주차 - 05. 토큰화 (2) | 2024.11.01 |
[AI/ML 스터디] 1주차 - 03. 파이토치기초(~최적화) (1) | 2024.10.07 |
[AI/ML스터디] 2주차- 03. 파이토치기초(~퍼셉트론) (0) | 2024.10.05 |
[NLP 스터디] 6주차 퀴즈 (0) | 2023.11.07 |