본문 바로가기

Research

Labeling Smoothing: 딥러닝 성능향상 기법

1. 개요

- 딥러닝할 때 사용하는 데이터셋은 레이블링이 잘못되는 경우도 많고, 답 자체가 모호할 수 있음.

- 기존 label은 one-hot-representation으로서, 단순히 맞냐 아니냐 또는 클래스 인덱스를 값으로 가짐.

- 이것을 완화하는 작업으로 model generalization 을 하는데 도움을 주는 기법 중 하나가 Labeling Smoothing

- 쉽게 생각해서, 잘못 레이블링 되거나 모호할 수 있는 정답 영역의 일부를 노이즈로 보고 이것을 제거하기 위해 스무딩 알고리즘을 적용 (2016년도 논문[2]에 의해 제안됨)

= Hard target-> Soft target으로 바꾸는 것.

- 더 자세한건 다른 사이트 및 참고 사이트 확인

 

2. 왜 필요하나?

주어진 정답 레이블 벡터가 hard target형태로써 Y_label = [1,0,0,0... 0]와 같을 때,

Softmax를 통과한 결과 Y_out = [0.87, 0.001, 0.04, 0.,... 0.03]와 같은 형태를 보일 것이다. 이 값은 예를 든 것이다. 다만 우리는 알고 있다. Softmax를 이용한 Maximum likelihood와 hard target(one-hot-representation) 과는 실제적으로 수렴하기 어렵다는 것을.... softmax는 정확히 0과 1에 대해 예측하지 않으므로 점점 더 큰 weight들을 학습하고 극단적인 예측을 찾으려고 할 것이다.

 

3. 사용 예시

hard target label로부터 smoothing label을 얻는 식은 soft_target = hard_label * (1-alpha) + (alpha/class_num)

alpha는 hyperparameter로 스무딩의 정도랄까?

식의 의도를 보면 smoothing 정도 alpha에 따라 기존 정답 값(hard_label)을 줄이고(scaling) shift한 느낌

alpha=0.1, class=10 이라고 치면, 

hard_target=[0,1,2,3,4,5,6,7,8,9]

smoothing 후 soft_target= [0 + 0.01, 0.9+0.01, 1.8+0.01, 2.7+0.01, 3.6+0.01, 4.5+0.01, 5.4+0.01, 6.3+0.01, 7.2+0.01, 8.1+0.01] = [0.01, 0.91, 1.81, 2.71, 3.61, 4.51, 5.41, 6.31, 7.21, 8.11]

 

아래와 같이 비교하면 보기 편함

 

4. 사용 후기

별로 안 좋다....

 

 

참고[1] - 정리가 잘된 블로그 : 3months.tistory.com/465

참고[2] - 최초 제안한 논문 : arxiv.org/pdf/1512.00567.pdf

참고[3] - 참고 자료: wavelab.uwaterloo.ca/wp-content/uploads/2017/04/Lecture_3.pdf

참고[4] - 왜좋은지에대한 설명 논문 : arxiv.org/abs/1906.02629

참고[5] - 정리잘한 유튜브 강력추천: www.youtube.com/watch?v=I5eTHiN2GRA&ab_channel=%ED%87%B4%EA%B7%BC%ED%9B%84%EB%94%B4%EC%A7%93