-
04.Overfitting,Dropout,Weight Decay,Batch Normalizationpractice_인공지능,머신러닝 2024. 10. 16. 06:49
Summary
Dropout : 학습중에 일부 가중치를 확률적으로 0으로 만드는것
Dropout 쓰는이유: overfitting 막는데 도움
Overfitting: 학습데이터를 모델이 거의 외워버린 상태 => 새로운 테스트 데이터 대해 모델이 성능 낮음
Overfitting 막는 방법: 데이터 늘리기, Early stopping(validation data), Weight Decay(가중치 감쇠), Dropout, Batch Normalization
아래그림) dropout
인공지능은 여러가지 입력값 (feature 들)을 받아서 예측을 한다. 이때, 모델이 특정한 입력값에 과하게 의존하게 되면, 이후 예측에 문제가 생길 수 있다. 예를 들어서, 오렌지와 레몬을 분류하는 인공지능을 만들었다고 하자. 사진이 주어졌을 때, 둘중 하나로 예측하는 것이다.
인공지능은 여러가지 입력값 (feature 들)을 받아서 예측을 한다. 이때, 모델이 특정한 입력값에 과하게 의존하게 되면, 이후 예측에 문제가 생길 수 있다.
드롭아웃(Dropout)은 인공신경망(Artificial Neural Networks)에서 과적합(overfitting)을 방지하고 모델의 일반화 성능을 향상시키기 위해 사용되는 정규화 기법입니다. 드롭아웃은 훈련 과정에서 무작위로 뉴런(neuron)을 비활성화(즉, 값을 0으로 설정)하는 방법을 사용합니다. 이렇게 하면 모델이 일부 뉴런에 지나치게 의존하는 것을 방지하고, 다양한 뉴런 조합을 통해 학습하게 되어 더욱 강건한 모델이 됩니다.드롭아웃의 주요 개념:
- 과적합 방지: 모델이 훈련 데이터에 과도하게 맞춰지면 새로운 데이터에 대해 일반화 능력이 떨어질 수 있습니다. 드롭아웃은 뉴런 일부를 무작위로 꺼서 각 뉴런이 모든 입력에 대해 독립적으로 작동하도록 유도하여 과적합을 방지합니다.
- 훈련 시 적용: 드롭아웃은 훈련 시에만 적용되며, 테스트나 추론 단계에서는 모든 뉴런이 활성화된 상태로 작동합니다. 이를 통해 테스트 시에는 완전한 모델을 사용하여 추론 성능을 극대화합니다.
- 드롭아웃 비율: 드롭아웃 비율은 보통 0.5로 설정되며, 이는 각 학습 단계에서 절반의 뉴런을 무작위로 비활성화한다는 의미입니다. 하지만 특정 문제에 따라 비율을 조정할 수 있습니다.
- 앙상블 효과: 드롭아웃은 여러 모델을 앙상블(ensemble)하는 것과 유사한 효과를 냅니다. 모델이 훈련될 때 매번 다른 조합의 뉴런을 사용하게 되므로, 여러 모델이 동시에 학습되는 것처럼 작동합니다. 이는 모델의 일반화 성능을 높이는 데 기여합니다.
특정 뉴런에 과도하게 의존하게 되는 데이터의 예시로, 매우 단순하고 패턴이 명확한 데이터셋을 생각해 볼 수 있습니다. 특히, 이미지 분류 문제에서 특정한 패턴에 지나치게 의존하는 경우가 자주 발생합니다.
예시: 고양이와 강아지 이미지 분류
고양이와 강아지를 분류하는 신경망을 훈련시킨다고 가정해 봅시다. 훈련 데이터셋에서 고양이 이미지는 대부분 배경에 나무가 있고, 강아지 이미지는 대부분 배경에 실내 환경(예: 카펫)이 있는 경우가 있다고 하겠습니다.
이 경우, 신경망은 실제로 고양이나 강아지 자체의 특성이 아니라 배경 정보에 지나치게 의존하여 학습할 수 있습니다. 신경망의 특정 뉴런들은 고양이를 분류할 때 나무 배경에 주로 반응하고, 강아지를 분류할 때 실내 배경에 주로 반응하게 됩니다. 결국, 이 뉴런들은 고양이와 강아지를 구분하는 데 중요한 주요 특징보다는 배경 정보에 과도하게 의존하게 됩니다.이로 인한 문제
이 모델이 테스트 데이터셋에서 배경이 다른 고양이와 강아지 이미지를 만나면, 모델이 제대로 분류하지 못할 가능성이 커집니다. 예를 들어, 고양이가 실내에서 찍힌 이미지를 입력하면, 모델은 배경에 익숙한 강아지 이미지라고 잘못 예측할 수 있습니다.
해결 방법으로서의 드롭아웃
이러한 과도한 의존을 방지하기 위해 드롭아웃을 적용하면, 훈련 중 일부 뉴런들이 무작위로 비활성화되므로, 특정 뉴런(예: 배경을 인식하는 뉴런)만으로 의존하지 않고 다양한 뉴런이 고루 학습하게 됩니다. 이는 모델이 고양이와 강아지를 분류할 때 배경이 아닌 중요한 시각적 특징(예: 귀 모양, 털 패턴 등)을 학습하도록 유도합니다.
실제 상황 예시:
- 자율주행: 자율주행차가 도로의 환경을 인식하는 모델이 있다면, 모델이 신호등이나 보행자 대신 특정 도로 배경(예: 도로 옆의 나무나 건물)에 지나치게 의존하는 경우가 있을 수 있습니다. 이 경우 배경 정보만 바뀌어도 모델의 성능이 급격히 떨어질 수 있습니다.
- 의료 영상: 질병 진단을 위한 의료 영상 데이터에서, 특정 기계의 레이블이나 촬영 조건(조명, 배경)을 모델이 학습한다면, 실제 병변보다는 주변의 불필요한 정보에 의존할 가능성이 있습니다. 이는 진단의 정확도에 문제를 일으킬 수 있습니다.
드롭아웃은 이러한 특정 패턴에 과도하게 의존하지 않고, 중요한 특징을 골고루 학습하게 해주는 방법입니다.
아래그림)
Overfitting: 학습데이터를 모델이 거의 외워버린 상태(불필요한내용까지도) => 새로운 테스트 데이터 대해 모델이 성능 낮음
Overfitting 된 모델은 train(학습) 데이터에서는 매우 좋은 성과를 보이지만 (데이터들과 예측선 사이의 거리 0), 실제 새로운 (test, validation) 데이터(예측)에서는 빨간색 선 (선형회귀 모델)보다 쓸모가 없다. 이는 Overfitting 된 모델이 train 데이터에서 불필요한 오차 등을 모두 학습했기 때문이다.
아래그림)
train data, validation data, test data
train data만 있으면 언제 멈출지 모르기때문에 validation loss 함수가 꺾이는 지점에서 모델을 선정
test data는 최종적으로 성능평가.아래그림)
데이터 늘리기 - overfitting 방지
기존 overfitting 일때는 loss가 0인 보라색 그래프인데,
데이터를 늘리고 학습을 더 진행하면, train loss가 증가함
그러면 train loss 가 감소되는 방향으로 학습이 일어나서 초록색 그래프처럼 loss가 줄어드는 방향으로 그래프가 변해짐
진짜 함수인 파란색 함수랑 비슷해짐
(ex. 수학문제를 외우면 새로운 문제 못품)
이미지에서 보여주는 그래프는 **과적합(overfitting)**의 개념을 설명하는 것 같고, 제가 설명한 **데이터 증강(data augmentation)**은 과적합을 방지하는 방법 중 하나입니다. 그림과 데이터 증강을 통한 과적합 방지의 관계를 좀 더 명확하게 설명해드리겠습니다.1. 과적합이란?
- **과적합(overfitting)**은 모델이 훈련 데이터에 너무 집중하여, 새로운 데이터(테스트 데이터)에 대해서는 좋은 성능을 발휘하지 못하는 문제를 의미합니다. 훈련 데이터의 세부적인 패턴과 노이즈를 지나치게 학습하는 것이 원인입니다.
- 그림에서 보라색 그래프는 복잡한 모델이 훈련 데이터의 모든 작은 변동성까지 맞추려는 모습을 보여줍니다. 이 경우 **Train Loss(훈련 손실)**는 0에 가까워지지만, 테스트 데이터에서는 오히려 성능이 떨어질 수 있습니다.
2. 데이터 증강의 역할
- **데이터 증강(data augmentation)**은 인위적으로 데이터를 늘려 훈련 데이터를 다양화하는 방법입니다. 이미지나 텍스트 데이터를 약간 변형해 모델이 더 많은 패턴을 학습하도록 도와줍니다.
- 예를 들어, 이미지 회전, 확대, 색상 변화 등으로 새로운 이미지를 만들어 데이터셋을 확장할 수 있습니다.
- 데이터 증강을 통해 훈련 데이터의 양과 다양성이 증가하면, 모델이 특정 데이터에만 과도하게 의존하는 경향을 줄일 수 있습니다. 즉, 모델이 다양한 변형된 데이터를 학습하게 되므로 일반화 성능이 향상됩니다.
3. 그림과 데이터 증강의 연관성
- 그림에서 보여지는 보라색 곡선은 과적합된 모델을 나타냅니다. 이 모델은 훈련 데이터의 세부적인 노이즈까지 학습하여, 새로운 데이터에 대해 좋은 성능을 발휘하지 못할 가능성이 큽니다.
- 초록색 곡선은 데이터를 더 일반화하여 학습한 결과로, 모델이 더 단순한 패턴을 학습하고 과적합이 줄어든 모습을 보여줍니다.
- 데이터를 증강하면 모델이 다양한 패턴을 학습하게 되어, 초록색 그래프처럼 더 일반화된 모델을 만들 수 있습니다. 데이터 증강은 모델이 훈련 데이터에 과도하게 의존하지 않도록 하여 과적합을 방지하는 데 효과적입니다.
요약
- 그림은 훈련 데이터에 너무 맞춰진 모델(과적합된 모델)이 어떻게 손실을 줄이는지 보여주고, 일반화 성능이 부족한 상태에서 발생할 수 있는 문제를 설명합니다.
- 데이터 증강은 데이터를 다양화하여 모델이 더 많은 변형된 데이터를 학습하게 만들고, 그 결과 과적합을 방지하여 새로운 데이터에 대한 예측 성능을 향상시키는 방법입니다
-------------------------------------------------------------------------------------------
Weight Decay (L1,L2)
weight 크기 줄여야
출처:https://sooho-kim.tistory.com/85l1-norm과 l2-norm에 대하여
해당 포스팅은 Dive into Deep Learning과 Mathematics for Machine Learning을 참고하여 정리한 글입니다. 이 영화를 알고 계시다면 저와 비슷한 세대임은 분명하겠군요. (학생 때 영화관에서 봤던 기억이 있었
sooho-kim.tistory.com
아래그림) 가중치 크기가 적어지면 함수가 복잡해지지 않아서 overfitting이 줄어든다.
L는 새로운 L'으로 커지지만 loss를 줄어드는 방향으로 가서 overfitting이 줄어든다.
아래그림) L1(Lasso Regularization ) ,L2( Ridge Regularization)
모델이 학습과정에서 불필요한 특징, 입력값에 의존하는것이 문제가됨
L1(Lasso Regularization ) ,L2( Ridge Regularization)를 적용하게 되면 모델이 정말 중요한 가중치만 남기고
나머지는 0으로 유지하게 된다. 가중치를 필터링. 결과적으로 모델이 단순화된다.이미지에서 보여주는 L1 노름과 L2 노름은 정규화(regularization) 기법으로, 과적합을 방지하는 데 매우 중요한 역할을 합니다. 이 두 가지 방법은 모델이 너무 복잡해지는 것을 막아, 훈련 데이터에 지나치게 맞춰지는 **과적합(overfitting)**을 방지합니다.
1. L1 노름 (L1 Norm)
- **L1 정규화(라쏘 정규화, Lasso Regularization)**라고도 불립니다.
- 수식:
- L1 정규화는 모델의 파라미터(가중치)의 절댓값을 합한 값에 페널티를 부과하는 방식입니다. 즉, 모델의 파라미터 값이 0에 가까워지도록 유도합니다.
- 효과: L1 노름은 **희소성(sparsity)**을 만들어냅니다. 이는 일부 불필요한 가중치들을 0으로 만들어, 모델이 불필요한 특성에 의존하지 않게 합니다. 이로 인해 모델이 단순해지며, 과적합이 방지됩니다.
- L1 정규화는 특히 데이터에서 중요한 특성만 남기고 나머지 특성의 영향을 줄이는 효과가 있어, 특징 선택(feature selection)에 자주 사용됩니다.
2. L2 노름 (L2 Norm)
- **L2 정규화(릿지 정규화, Ridge Regularization)**라고도 불립니다.
- 수식:
- L2 정규화는 모델의 파라미터(가중치)의 제곱을 합한 값에 페널티를 부과합니다. L2 정규화는 가중치들이 지나치게 크거나 작아지지 않도록 제어하여, 모델이 너무 복잡해지지 않도록 합니다.
- 효과: L2 노름은 가중치의 크기를 제한하여 모델이 모든 특성에 대해 고르게 학습하도록 돕습니다. 모델이 과도하게 특정 특성에 의존하지 않게 하여, 과적합을 방지합니다.
- L2 정규화는 파라미터 값이 0으로 수렴하지 않지만, 각 파라미터가 작은 값을 가지도록 만들어 모델이 더 일반화됩니다.
과적합 방지와 L1, L2 노름
- 과적합은 모델이 훈련 데이터의 모든 세부사항과 노이즈까지 학습할 때 발생합니다. L1 또는 L2 노름을 사용한 정규화는 모델이 불필요하게 복잡해지는 것을 막아, 모델이 새로운 데이터에 대해 더 잘 일반화될 수 있도록 합니다.
- L1 정규화는 불필요한 특성을 아예 제거하는 경향이 있고, L2 정규화는 가중치를 고르게 작게 만들어 모델을 단순화하는 효과가 있습니다. 이로 인해 두 정규화 방법 모두 과적합을 줄이는 데 효과적입니다.
따라서, L1 및 L2 정규화는 모델의 복잡성을 줄이고, 과적합을 방지하는 주요 기법입니다. 두 노름 모두 모델이 특정한 데이터 포인트나 특성에 지나치게 의존하지 않도록 하여, 모델이 더 일반화될 수 있게 도와줍니다.
아래그림)
초기상태는 underfitting,
너무 overfitting(학습이 많이해서 거의 외운상태) 하면 train loss가 거의 0 됨(loss가 적다고 좋은게 아님)
파란색선은 학습이 잘된상태-------------------------------------------------------------------------------------------------------------------------------
Batch Normalization
----------------------------------------------------------------------------------------------normalization
m(평균)= 0 , 표준편차=1로 만들어준다.(원래 표준편차는 1이 같거나 아니었는데 1로만듬)
batch normalization
------------------------------
batch normalization
- 데이터의 batch를 normalization한다.
- 정리를 하니 overfitting 이 된다.분산 = 편차의 ^2 의 평균
루트 -> 편차의 평균 -> 표준적인 평균 = 평균편차 = 표준편차
m(평균)= 0 , 표준편차=1m(평균)= 0 , 표준편차=1
-----------------------------------------------------------------------
Code SUMMARY
성씨를 보고 국적을 맞추는 Multi class classification (class 는 국가종류)
mlp모델을 학습시켜서 해결초기화
#Data 다운받는것# 만약 코랩에서 실행하는 경우 아래 코드를 실행하여 전처리된 라이트 버전의 데이터를 다운로드하세요. !mkdir data #Data 다운받는것 !wget https://git.io/JtaFp -O data/download.py !wget https://git.io/Jtabe -O data/get-all-data.sh !chmod 755 data/get-all-data.sh %cd data !./get-all-data.sh %cd ..
vectorize는 단어를 vector화
참고로 one hot vector는 하나만 1이고,
multil hot vector는 여러개가 1원본 코드
https://colab.research.google.com/drive/13lckS_OU47911ewNURTMU9pTrm88MH6a#scrollTo=gGifMv5ONhSw
출처 파이토치로 배우는 자연어 처리'practice_인공지능,머신러닝' 카테고리의 다른 글
RNN (1) 2024.10.16 CNN (1) 2024.10.16 05.CNN (0) 2024.10.14 감독학습 vs 비지도학습 (Supervised vs Unsupervised): 분류, 군집화 (0) 2024.10.13 01.데이터 전처리 (Data Pre-processing) (0) 2024.10.13