본문 바로가기

Deep Learning/Keras & Tensorflow

Loss weight, Class weight, Sample weight

320x100
320x100

 

 

 케라스로 모델을 설계한 다음, 학습시키는 과정에서 적용할 수 있는 weight의 종류는 크게 3개이다.

  • Loss weight
    model.compile( )에서 "loss_weights" 파라미터를 통해 넣어줄 수 있다.
    모델에 2개 이상의 loss functin이 걸리는 경우 사용할 수 있는 파라미터이다.
    (EX) model.compile(optimizer='adam', loss=['binary_crossentropy', 'mse'], loss_weights=[2, 1])

  • Class weight
    클래스 불균형을 해결하기 위한 방법으로 샘플 수가 상대적으로 적은 Class 쪽에 가중치를 부여하는 방식이 있다.
    model.fit( )이나 model.fit_generator( )의 "class_weight" 파라미터를 사용하면 된다.
    클래스 별 가중치 값을 dictionary 형태로 저장해서 넘겨주면 된다.
    (EX) model.fit_generator(... , class_weight={0:1, 1:2}, ...)

  • Sample weight
    클래스와는 상관없이 mini batch 내의 sample에 weight를 걸어줘야하는 경우에 사용하면 된다.
    Sample weight은 보통 규칙적이지 않고 batch의 상태에 따라 동적으로 넣어줘야 하는 경우가 많아서
    모델 학습에 fit( )이나 fit_generator( ) 말고
    train_on_batch( ) 함수를 사용하면서 "sample_weight" 파라미터를 통해 넣어주면 편리하다.

 

 

[ 참고 사이트 ]

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=wideeyed&logNo=221614402443 

https://keras.io/ko/models/model/

https://github.com/keras-team/keras/issues/10507

https://blog.ggaman.com/m/1011