DataScience/MachineLearning

딥러닝에서 leaning rate, validation, EarlyStopping 을 사용하는 이유에 대해 지난 내용에 대한 추가설명

leopard4 2022. 12. 28. 16:10

leaning rate 을 설정 하는 이유

leaning rate이 크게되면 보폭이 커져서 오차의 최소점을 넘어가는 오류를 범하게되고 (마지막차트)

leaning rate이 작으면 오래걸리는 문제가 발생(시스템자원낭비) 하기때문에 (첫번째차트)

차트 중앙과 같이 적절한 leaning rate 을 설정 하는게 중요하다.

 

validation(밸리데이션) 이란 무엇인가( 파라미터 validation_split=0.2 )

Epoch가 한번 끝날때 마다, 학습에 사용하지 않은 데이터로 시험을 보는 것을 말한다.

그럼 학습에 사용하지 않은 데이터는 어디서 얻을수 있느냐, 
기존에 있던 X_trian, y_train 에서 validation_split=0.2 ,

즉 학습할 데이터를 20퍼로 다시 나눠서 사용하는 방법이다.

 

이것을 사용하지 않고 

인공지능이 완전이 학습이 다 끝난 상태에서 평가하는것을 '테스트' 라고 하고,
'validation'은, 학습 중에, 에포크 끝날때 마다 평가하는 것을 말한다.(딥러닝에서만 있는것.)
일종의 중간시험이라고 볼수있다.
왜 이렇게 해야하느냐?

결과물이 정상적으로 나오는지 확인하기 위함, 완성된 후에 확인하면 잘못될 가능성도 있기때문이다.

 

3. EarlyStopping를 사용하는 이유

밸리데이션을 확인했을때, 점수가 향상되지 않으면, 자동으로 훈련을 멈추게 하기위함이다 .

자동으로 훈련을 멈춘다는것은 내가 지정한 함수가 자동으로 실행된다는 의미고.

그것을 'callbacks' 이라고 한다 즉 프레임워크가 자동으로 실행해주는 함수를 의미한다.

 

보통 이렇게 사용하는데

tensorflow.keras.callbacks.EarlyStopping(monitor='val_loss', patience=10 )

이것의 파라미터를 해석하자면

val_loss가 Epoch 10번 지났는데도 향상이 되지않으면 멈추라는 의미이다