본문 바로가기

연구/deep learning

[딥러닝 개념] softargmax란?

반응형

딥러닝 신경망을 공부하다보면 softargmax라는 개념이 종종 등장하기도 하고, 그냥 넘겨 지나갈 수 있으나 막상 이 논문을 구현하고자 한다면 가볍게 넘어갈 수 없다. 심지어는 어떤 논문에서는 softargmax에 대한 언급을 꽤 많이 하는 경우도 더러 있기 때문에 이번 기회에 확실히 이해하고자 한다.

 

softargmax를 알기 전에 argmax를 이해하자.

argmax는 input집합중에서 가장 큰 값의 index를 output으로 내보내는 함수라고 보면 된다.

그게 1차원일수도 있고, 2차원 이미지일 수도 있다. 만약 2차원 이미지를 argmax에 넣는다면 이미지에서 가장 pixel값이 큰 좌표가 나올 것이다.(pixel이 아니라 좌표가 나온다는 점에 주의해야 한다.)

 

여기서 중요한 점은 index가 나온다는 점이다. 이게 곧 단점이 되기도 하는데 단점으로는 다음과 같이 2가지를 뽑을 수 있다.

 

1. output이 항상 정수이다. 

당연히 index가 나오기 때문에 정수만 나온다.

 

2. 미분불가능(un differentiable)하다 !!!

미분 불가능한 점은 딥러닝에서 꽤나 큰 단점이 된다. 왜냐하면 미분불가능하기 때문에 argmax() layer를 네트워크 중간에 위치시킬 수 없다. 미분불가능하다는 말은 곧 파라미터 업데이트를 불가능하게 한다는 말이기 때문. 

 

따라서 네트워크 중간에 argmax layer가 오면 그 모델은 end-to-end로 학습시킬 수 없고 argmax layer를 기준으로 앞 뒤 모델을 모듈로써 각각 학습해야하는 참사가 발생한다......

 

softargmax는 이러한 단점을 보완하고자 나온 function이자 layer라고 볼 수 있다.

인덱스 x에 대해서 p(x)의 값을 가지는 다음과 같은 집합이 있다고 가정하자.

임의의 data

이 때, p(x)가 확률모델이라는 가정하에 p(x)의 가장 큰 값은 다음과 같이 정의내릴 수 있다.

이 때 softargmax는 저 실수값을 반환하는데 이 때 장점은 softargmax값이 연속하고 부드럽기 때문에 미분이 가능하다는 점이다.

이 점을 이용해서 종종 중간 layer에 softargmax layer를 추가한 논문들이 나오기도 하는데 pose estimation 계열에서는 다음과 같은 논문이 있다.

CVPR_Integral Human Pose Regression - Xiao Sun, et al. 

 

논문의 내용을 보면 heatmap을 softargmax에 넣어서 다음과 같은 값을 얻었다.

softargmax 결과값

위에서도 말했지만 이런 가정은 함수가 확률함수라는 가정하에 가능하다고 했기 때문에 heatmap은 다음과 같은 과정을 거쳤다.

간단하게 말해서 확률함수는 실수전체범위에서 적분하면 그 값이 1이어야 하기 때문에 다음의 과정을 거친것이다. 모양은 softmax를 취한것과 같다.

 

 

 

참고논문 : Integral Human Pose Regression(2017) - Xiao Sun, et al. 

 

반응형