반응형
선택 분류 문제의 신경망 처리
- 선택 분류 문제는 몇 가지 정해진 후보 가운데 하나를 골라 답하는 문제이다.
- 선택 분류는 후보 항목이 여러개이기 때문에 처리 방법이 조금 다르지만, 이진 판단과 비슷한 점이 많다. 이진 판단과 유사하게 각 후보 항목에 대해 로짓값을 추정하도록 구성된다.
- 퍼셉트론 하나가 후보 하나에 대한 로짓값을 출력하기 때문에, 선택 분류를 수행하려면 후보 수만큼의 퍼셉트론이 존재한다.
- 이진 판단과 달리 로짓값을 0으로 간주하던 암묵적 요소는 없다.
- 이진 판단에서 배웠던 교차 엔트로피 개념이 선택 분류에도 적용된다. '소프트맥스' 함수와 그를 통해 도출된 확률값을 기반으로 '소프트맥스 교차 엔트로피'를 구하고 이를 활용해 학습을 진행한다.
소프트맥스 함수
- 소프트맥스 함수는 로짓값 벡터를 확률 분포 벡터로 변환해주는 비선형 함수이다.
- 로짓값들은 후보 항들에 대한 선택 확률을 로그 척도로 표현한 것이므로 굳이 다시 로그 계산을 하지 않아도 최대항이 어느 것인지만 확인하면 된다.
- 손실 함숫값도 '소프트맥스 교차 엔트로피'를 사용해 로짓값으로 바로 계산할 수 있다.
- 그럼에도 로짓값을 확률값으로 바꿔줘야하는데, 두가지 이유가 있다.
- 첫번째, 사용자가 시각 분포를 눈으로 확인하고 싶을 수 있다.
- 두번째, 손실 함수에 대한 편미분을 구해 역전파를 진행할 때 이러한 확률 분포가 필요하다.
- 따라서 로짓값을 확률값으로 바꿔주는 소프트맥스 함수가 필요하다. 소프트맥스 함수의 입력은 로짓값 벡터이며 출력은 확률값 벡터가 될 것이다.
- 소프트맥스 함수의 일반식은 다음과 같다.
- $y_i = {e^{x_i} \over e^{x_1} + ... + e^{x_n}}$
- 하지만 해당 식은 오버플로우 문제 및 분모가 0이 되는 문제를 발생시킬 수 있기 때문에 최대차항으로 식을 아래와 같이 변형해 사용한다. ($x_k$ 는 $x_i$ 중 최댓값이다.)
- $y_i = {e^{x_i - x_k} \over e^{x_1 - x_k} + ... + e^{x_n - x_k}}$
소프트맥스 함수의 편미분
- 소프트맥스 함수는 로짓값 벡터를 입력받아 확률값 벡터를 출력하는 구조이다.
- 이 때문에 벡터 성분 간 편미분이 다대다 관계가 되면서 계산과정이 매우 복잡하다.
- 하지만 이러한 소프트맥스 함수의 편미분은 신경망 학습에 직접적으로 사용되지 않는다.
- 따라서 스킵한다.
소프트맥스 교차 엔트로피
- 교차 엔트로피의 정의는 다음과 같다.
- $ H(P,Q) = -\sum p_ilogq_i$
- 정답 벡터의 값을 확률 분포 P로 삼고, 로짓 벡터에 소프트맥스 함수를 적용해 얻은 확률 분포를 Q로 삼아 계산하면 된다.
- 하지만 여기서 문제가 발생할 수 있다. 만약 로짓 벡터로 매우 작은 값이 주어지면 소프트맥스 적용 결과로 도출되는 확률값도 매우 작아져 0에 가까워진다. 컴퓨터를 이를 0으로 인식하고 로그값이 더해지면 -무한대로 값이 폭주하게 된다.
- 따라서 컴퓨터가 인식할 수 있지만 계산에는 거의 영향을 주지 않는 작은 양수값 $\epsilon$을 로그값안에 더해 이용한다.
- $H(P,Q) = -\sum p_ilog(q_i + \epsilon )$
소프트맥스 교차 엔트로피의 편미분
- 과정은 매우 복잡하여 생략했다.
- 결국 핵심은 시그모이드 교차 엔트로피의 편미분과 다르지 않다.
- 결과는 아래와 같다.
- $\delta H \over \delta x_i$ $= q_i - p_i$
시그모이드 함수와 소프트맥스 함수의 관계
- 시그모이드 함수는 두 후보 항목을 갖는 소프트맥스 함수의 입력 벡터 $x_1, x_2$에서 $x_2 = 0$로 설정해 입력 변수를 하나로 줄인 함수와 같다.
- 소프트맥스 함수 대신 시그모이드 함수를 선택 분류에 사용할 수도 있다.
- 시그모이드 함수를 사용하게 되면 각 항목의 답이 선택될 확률이 따로 구해지고 그 합이 1이 아니지만 개별적 확률을 구할 수 있다.
- 그 중 가장 큰 확률을 보이는 항목을 답으로 선택할 수 있다.
- 학습을 성공적으로 마치면 시그모이드 함수를 이용해도 답이라 여겨지는 항목의 값이 1로 수렴하고 나머지는 0에 가까워지기는 한다.
반응형
'🛠 기타 > Data & AI' 카테고리의 다른 글
[scikit-learn 라이브러리] PCA를 사용한 차원축소 (0) | 2020.07.31 |
---|---|
단층 퍼셉트론 - 선택 분류 구현 (0) | 2020.07.30 |
순환신경망 - LSTM 기초 (0) | 2020.07.29 |
[scikit-learn 라이브러리] LogisticRegression (로지스틱 회귀) (0) | 2020.07.29 |
[scikit-learn 라이브러리] SGDClassifier (선형분류) (0) | 2020.07.28 |