소프트맥스 레이어 사용

소프트맥스가 뭐야

분류 작업에서 모델을 통해 출력 벡터 vec = ( v 1 , v 2 , ⋯ , vn ) vec=(v_1, v_2, \cdots, v_n)을 얻습니다.v ec=( v1,V2,,V) , 종종 확률 분포가 아닙니다. 즉,∑ i = 1 nvi ≠ 1 \sum_{i=1}^nv_i \neq1나는 = 1V=1 . 이것은 우리 눈에 직관적이지 않은 결과입니다.이 문제를 해결하기 위해 지수 함수를 사용하여 새로운 벡터를 얻습니다:
distribution = ( exp ⁡ vi ∑ j = 1 n exp ⁡ vj ) i = 1 n distribution=(\ frac{ \exp{v_i}}{\sum_{j=1}^n\exp{v_j}})_{i=1}^n분배 _ _ _ _ _ _ _ _ _ _=(j = 1경험치Vj경험치V.)나는 = 1
이때 분포 벡터는 분명히 확률분포의 조건을 만족한다.

왜 이러는거야

그 이유 중 하나는 지수 함수가 매우 빠르게 성장하는 함수이고 가능한 한 "주요 요소"의 확률이 두드러지기를 원하기 때문이라고 생각합니다. 이 설계를 통해 원본 데이터의 더 큰 구성 요소에 주요 확률을 집중시킬 수 있습니다.즉, softmax를 통해 구성 요소 간의 간격을 넓힙니다.

혜택

직관적인
단일 분류가 선호하는 범주를 직접 잠글 수 있는 경우

결점

모델 학습을 수행할 때, 특히 범주 수가 매우 많은 경우(예: 200개 범주) 모델 매개 변수가 초기에 무작위로 설정되기 때문에 확률은 무작위 범주에 집중됩니다. 동시에 특정 구성 요소의 softmax 값이 0에 가까워지면 기울기도 0이 되어 매개 변수 업데이트가 어렵다는 것을 정의에서 알 수 있습니다.

제안

분류의 수가 적으면 분류 레이어 끝에 softmax를 추가할 수 있지만 많으면 추가하지 않는 것이 좋습니다. 또한 단점으로 인해 모델 끝에 softmax를 추가하면 모델의 학습 속도가 느려지는 경우가 많습니다.

추천

출처blog.csdn.net/Petersburg/article/details/126618654