이번에 활성화함수가 다양하게 업데이트 되었다.


이참에 하이퍼네트워크에 잘 먹히는 활성화함수를 한번 찾아보는것도 재밌을것 같아, 퇴근하고 잠깐 끄적여봤다.





시드값 원본 - 특별한 의미는 없고 아무거나 뽑았음.



 

학습대상의 화풍. 누구 그림인지는 언급 자제부탁.. 아무래도 당사자의 동의도 없는데다,

혼자 연구용으로 써먹는거라 알려져봐야 좋을 것도 없을테니. 연구 후 전체 학습데이터는 삭제 예정.



데이터 학습은 똑같은 프리셋으로 진행.

학습률 : 5e-5, 

스탭은 작게 2000 steps로 진행. (수렴속도를 보기 위함도 있고, 학습률이 높아 스탭을 작게 진행함)


단, LeRU 모델은 학습률 : 2e-7, 스탭은 100000 steps로 진행.






활성화 함수 ReLU


일반적으로 많이 쓰는 함수지만, dying ReLU 문제가 있다.


ReLU의 가장 큰 약점이자 장점은 양수부에서 가중치가 무한정 증가한다는 점이 있다. 

따라서 강렬한 특성은 잘 캐치해내지만, 세부특성은 상대적으로 약해지는 단점이 존재.


실제로 특징적인 화풍은 어느정도 캐치를 해냈으나, 세부적인 특성에 대해서는 약한것을 알 수 있다.

머리카락쪽의 펜선 쓰는 방식 같은거는 어느정도 특성을 잘 캐치해낸 것을 확인할 수 있음.




활성화함수 tanh


하이퍼볼릭 탄젠트는 함수의 평균출력이 1으로 수렴하므로, 학습이 굉장히 빠르다는 장점이 있다.


기존에 하이퍼네트워크 아키텍처를 건드려봤을 때, 심층네트워크 학습이 어렵다는 문제가 있다는 점,

어지간해서는 Loss가 크게 줄지 않는다는 점을 고려해보면 학습속도가 상당한 문제를 일으킨다는 점이 예상이 되는 상황.

그래서 학습이 빠르다는 tanh를 사용해보았다.


결과는 학습은 빨랐지만 특성캐치에는 확실히 약한 것이 느껴졌다.

그렇다면 이건 가중치가 굉장히 작은 경우가 아닐까 하고 가정을 했다.





 


활성화 함수 hardtanh




하드 탄젠트 하이퍼볼릭의 장점은 가중치가 작은 값 범위 안에 있을 때 아주 잘 작동한다는 점이다.


가만 생각해보면 화풍이란 무엇일까?

똑같은 물체를 그릴 때 세부적인 표현의 차이가 아닐까 싶다.

그렇다면 가중치 또한 마찬가지로 미세한 값에서 놀지 않을까? 하는 생각이 문득 들어서 테스트해본 활성화 함수다.


결과는 대만족.

생각보다 표현형을 학습하는데 굉장히 빠른 시간이 걸렸다.

ReLU가 학습에만 14시간을 소모한데 반해, 꼴랑 12분 학습한 hardtanh 도 상당히 우수한 표현형을 뽑아내고 있다.


실제로 화풍을 결정하는데는 가중치가 작은 값에서 노는게 아닌가 하는 의구심이 드는 영역.





그렇다면 추후 예상은,


GeLU



swish



이 둘의 성능도 상당히 우수할 것으로 추정되며,




hardshrink


logsigmoid


와 같은 sparse coding 과 같은데 사용되거나 손실함수 코딩에 사용되는 활성화 함수는 

상대적으로 성능이 약하지 않을까? 하는 추측이 있다.



이상의 연구는 1시간 정도안에 깔짝 해본거니, 혹시 잘못된 부분이 있거나 다른 결과가 나오면 알려주십셔.