TensorFlow를 사용한 딥 러닝의 모델 검증 및 정규화 실습 소개

게시 됨: 2020-10-28

목차

소개

지도 학습 알고리즘의 패러다임을 통해 정보를 동화하는 기계의 실행은 시퀀스 생성, 자연어 처리 및 컴퓨터 비전과 같은 여러 작업에 혁명을 일으켰습니다. 이 접근 방식은 입력 기능 집합과 해당 레이블 집합이 있는 데이터 집합을 활용하는 것을 기반으로 합니다. 그런 다음 기계는 기능 및 레이블 형태로 존재하는 이 정보를 사용하여 데이터의 분포와 패턴을 학습하여 보이지 않는 입력에 대한 통계적 예측을 수행합니다.

딥 러닝 모델 설계에서 가장 중요한 단계는 특히 새롭고 보이지 않는 데이터 포인트에서 모델 성능을 평가하는 것입니다. 주요 목표는 훈련된 데이터 이상으로 일반화하는 모델을 개발하는 것입니다. 우리는 현실 세계에서 훌륭하고 신뢰할 수 있는 예측을 할 수 있는 모델을 원합니다. 이를 도와주는 중요한 개념은 오늘 다룰 모델 검증과 정규화입니다.

모델 검증

머신 러닝 모델을 구축하는 것은 항상 사용 가능한 데이터를 학습, 검증 및 테스트 세트의 세 가지 세트로 나누는 것으로 요약됩니다. 훈련 데이터는 모델에서 분포의 특징과 특성을 학습하는 데 사용됩니다.

여기서 알아야 할 초점은 훈련 세트에 대한 모델의 만족스러운 성능이 모델이 유사한 성능을 가진 새 데이터에서도 일반화된다는 것을 의미하지 않는다는 것입니다. 이는 모델이 훈련 세트에 편향 되었기 때문 입니다. 따라서 검증 및 테스트 세트의 개념은 모델이 새 데이터 포인트에 대해 얼마나 잘 일반화되는지 보고하는 데 사용됩니다.

표준 절차는 훈련 데이터를 사용하여 모델에 맞추고, 검증 데이터를 사용하여 모델 성능을 평가하고, 마지막으로 테스트 데이터를 사용하여 완전히 새로운 예제에서 모델이 얼마나 잘 수행되는지 평가하는 것입니다.

검증 세트는 모델이 잘 일반화될 수 있도록 하이퍼파라미터 (은닉층의 수, 학습률, 탈락률 등) 를 조정하는 데 사용됩니다. 기계 학습 초보자가 직면하는 일반적인 문제는 별도의 검증 및 테스트 세트의 필요성을 이해하는 것입니다.

두 개의 별개 세트의 필요성은 다음과 같은 직관으로 이해할 수 있습니다. 설계해야 하는 모든 심층 신경망에는 만족스러운 성능을 위해 조정해야 하는 하이퍼파라미터가 여러 개 있습니다.

하이퍼파라미터 중 하나를 사용하여 여러 모델을 훈련할 수 있으며 검증 세트에서 해당 모델의 성능을 기반으로 최고의 성능 메트릭을 가진 모델을 선택할 수 있습니다. 이제 검증 세트에서 더 나은 성능을 위해 하이퍼파라미터가 조정될 때마다 일부 정보가 모델에 누출/공급 되므로 신경망의 최종 가중치가 검증 세트 쪽으로 편향 될 수 있습니다.

하이퍼파라미터를 조정할 때마다 모델이 최적화된 검증 세트이기 때문에 모델은 계속해서 검증 세트에서 잘 수행됩니다. 이것이 검증 테스트가 모델의 일반화 능력을 정확하게 나타내지 못하는 이유입니다. 이 단점을 극복하기 위해 테스트 세트가 작동합니다.

모델의 일반화 능력에 대한 가장 정확한 표현은 이 세트에서 더 나은 성능을 위해 모델을 최적화하지 않았기 때문에 테스트 세트에 대한 성능에 의해 제공되며, 따라서 이는 모델 능력의 가장 실용적인 추정치를 나타냅니다.

반드시 읽어야 할 것: 당신이 알아야 할 최고의 딥 러닝 기술

TensorFlow 2.0을 사용하여 검증 전략 구현

TensorFlow 2.0은 별도의 보류 검증 테스트에서 우리 모델의 성능을 추적하는 매우 쉬운 솔루션을 제공합니다. model.fit() 메서드 에서 validation_split 키워드 인수를 전달할 수 있습니다 .

validation_split 키워드 유효성 검사 데이터로 사용할 훈련 데이터의 비율을 나타내는 0과 1 사이의 부동 숫자로 입력을 받습니다 . 따라서 키워드에0.1 을 전달한다는 것은 검증을 위해 훈련 데이터의 10% 를 예약한다는 의미입니다.

검증 분할의 실제 구현은 sklearnDiabetes Dataset사용하여 쉽게 시연할 수 있습니다 . 데이터 세트에는 10개의 기준 변수(나이, 성별, BMI 등)가 훈련 기능으로 포함된 442개의 인스턴스가 있고 레이블로 1년 후 질병 진행 측정값이 있습니다.

TensorFlow 및 sklearn을 사용하여 데이터 세트를 가져옵니다.

데이터 사전 처리 후의 기본 단계는 고밀도 레이어로 순차 피드포워드 신경망을 구축하는 것입니다.

여기에 relu 활성화가 있는 6개의 은닉 레이어와 선형 활성화 가 있는 하나의 출력 레이어 가 있는 신경망이 있습니다 .

그런 다음 Adam 옵티마이저와 평균 제곱 오차 손실 함수 로 모델을 컴파일합니다 .

model.fit () 메서드는 validation_split 이 15%인 100 Epoch 동안 모델을 훈련하는 데 사용됩니다.

훈련 데이터와 검증 데이터 모두에 대해 관찰된 대로 모델의 손실을 플롯할 수도 있습니다.

위에 표시된 플롯은 훈련 손실이 계속 감소하는 동안 유효성 검사 손실이 10 에포크 이후에 지속적으로 급증하는 것을 보여줍니다. 이러한 경향은 과적합( overfitting )이라고 하는 기계 학습에서 엄청나게 중요한 문제의 교과서적인 예입니다 .

이 문제를 극복하기 위해 많은 획기적인 연구가 수행되었으며 이러한 솔루션을 집합 적으로 정규화 기술 이라고 합니다 . 다음 섹션에서는 정규화의 측면과 모든 딥 러닝 모델을 정규화하는 절차를 다룹니다.

모델 정규화

이전 섹션에서 우리는 후자 세트의 비용 함수 플롯이 상승하고 전자 세트의 비용 함수 플롯이 계속 감소하여 격차( 일반화 격차 )를 생성하는 훈련 및 검증 세트의 손실 플롯에서 반대 경향을 관찰했습니다. 기계 학습의 정규화에 대해 자세히 알아보세요.

두 손실 플롯 사이에 이러한 간격이 있다는 사실은 모델이 검증 세트( 보이지 않는 데이터) 에 대해 잘 일반화할 수 없으므로 해당 데이터 세트에서 발생하는 비용/손실 값도 불가피하게 높을 수 있음을 상징합니다.

이 특성은 훈련된 모델의 가중치와 편향이 훈련 데이터의 분포를 너무 잘 학습하도록 공동 적응되어 새롭고 보이지 않는 기능의 레이블을 예측하지 못하여 검증 손실이 증가하기 때문에 발생합니다.

이론적 근거는 모델 매개변수가 훈련 데이터에 대해 매우 강력해지기 때문에 복잡한 모델을 구성하면 이러한 이상 현상이 발생한다는 것입니다. 따라서 모델 용량/복잡도를 단순화하거나 줄이면 과적합 효과가 줄어듭니다. 이를 달성하는 한 가지 방법은 다음 섹션에서 다룰 딥 러닝 모델에서 드롭아웃을 사용하는 것입니다.

TensorFlow에서 드롭아웃 이해 및 구현

드롭아웃을 사용하는 이면의 주요 인식은 모델의 매개변수가 증가하는 것을 제한하는 덜 복잡한 모델을 얻기 위해 숨겨진 유닛과 가시적 유닛을 무작위로 삭제하여 일반화된 데이터세트에서 성능을 위해 모델을 더욱 견고하게 만드는 것입니다.

최근에 승인된 이 방법은 머신 러닝 실무자가 모든 딥 러닝 모델에서 정규화 효과를 유도하기 위해 사용하는 강력한 접근 방식입니다. 드롭아웃은 드롭아웃 레이어를 가져오고 드롭아웃 레이어에 rate 인수를 전달하여 드롭 해야 하는 단위의 비율을 지정하여 TensorFlow를 통해 Keras API를 사용하여 손쉽게 구현할 수 있습니다 .

이러한 드롭아웃 레이어는 일반적으로 밀집 드롭아웃 레이어 아키텍처 의 교대 조수를 생성하기 위해밀집 레이어 바로 뒤에 쌓 입니다.

이전에 정의한 피드포워드 신경망을 수정 하여 각 히든 레이어에 하나씩 6개의 드롭아웃 레이어를 포함할 수 있습니다.

여기서 dropout _ rate 는 0.2로 설정되었으며 이는 모델을 훈련하는 동안 노드의 20%가 삭제됨을 의미합니다. 공정한 비교를 위해 동일한 옵티마이저, 손실 함수, 메트릭 및 에포크 수를 사용하여 모델을 컴파일하고 훈련합니다.

드롭아웃을 사용하여 모델을 정규화하는 주요 영향은 훈련 및 검증 세트에서 얻은 모델의 손실 곡선을 다시 플로팅하여 해석할 수 있습니다.

위의 플롯에서 모델을 정규화한 후 얻은 일반화 간격이 훨씬 작아서 모델이 훈련 데이터에 과적합될 가능성이 적다는 것이 분명합니다.

더 읽어보기: 딥 러닝 프로젝트 아이디어

결론

모델 유효성 검사 및 정규화 측면은 기계 학습 솔루션을 구축하는 워크플로를 설계하는 데 필수적인 부분입니다. 지도 학습을 즉흥적으로 수행하기 위해 많은 연구가 수행되고 있으며 이 실습 자습서는 학습 알고리즘을 조립하는 동안 가장 널리 사용되는 몇 가지 사례 및 기술에 대한 간략한 통찰력을 제공합니다.

딥 러닝 기술 , 머신 러닝에 대해 자세히 알아보려면 작업 전문가를 위해 설계되었으며 240시간 이상의 엄격한 교육, 5개 이상의 사례 연구를 제공하는 IIIT-B & upGrad의 머신 러닝 및 딥 러닝 PG 인증을 확인하십시오. 및 과제, IIIT-B 동문 상태 및 최고의 기업에 대한 취업 지원.

AI 주도 기술 혁명 주도

기계 학습 및 인공 지능 PG 디플로마
더 알아보기