반응형
Notice
Recent Posts
Recent Comments
Link
Today
Total
07-05 05:44
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
관리 메뉴

iOS 개발 기록 블로그

딥러닝 소프트맥스(softmax) 함수 공식 구현 과정 본문

Deep Learning

딥러닝 소프트맥스(softmax) 함수 공식 구현 과정

crazydeer 2022. 1. 5. 22:30
반응형

소프트맥스(softmax) 함수

분류를 위한 출력층 함수로 0~1 사이의 숫자를 출력하는 함수입니다.

공식은 다음과 같습니다.

 

소프트맥스 함수는 지수 함수를 사용하는데 이 지수함수가 쉽게 아주 큰 값을 반환합니다.

e(스위스 수학자 오일러가 발견한 무리수)의 10승은 20,000이 넘고

e의 100승은 40개가 넘고 e의 1000승은 무한대를 뜻하는 inf가 출력되어 돌아오므로

컴퓨터로 계산을 할 수가 없습니다.

 

예)

 

로그함수는 수를 작게 만들고 지수함수는 수를 크게 만듭니다.

 

 

소프트맥스 함수 공식에서 상수 C를 분모, 분자에 곱해주었습니다.

 

임의의 array를 하나 만들고 자연상수의 제곱으로 계산한 값은 아래와 같습니다.

 

리스트에서 가장 큰 값을 뽑는 함수는 numpy 라이브러리의 max라는 함수가 있습니다.

리스트의 각 요소에서 가장 큰 값을 빼보면 아래와 같습니다.

 

위의 결과에서 자연상수 e의 제곱으로 출력된 결과는 아래와 같습니다.

 

위에서 softmax function을 생성하기 위한 분자식을 구현해봅시다.

 

분모까지 포함해서 완전히 완성해봅시다.

 

참고로 신경망에서 학습 시에는 소프트맥스 함수를 사용하지만

테스트 시에는 어차피 결과가 같기 때문에 지수 함수 계산에 드는

자원 비용 낭비를 줄이기 위해 소프트맥스 함수를 사용하지 않습니다.

 

지난 게시글 마지막에 만들었던 3층 신경망 전체 코드에서 소프트맥스 함수를 추가해봅시다.

 

딥러닝 신경망의 내적, 3층 신경망 전체 코드

신경망의 내적 위에 신경망에서 x1과 x2가 각각 1과 2이면 y1과 y2의 값은 무엇일까? x1*1 + x2*2 = y1 x1*3 + x2*4 = y2 x1*5 + x2*6 = y3 그러면 위 신경망에서 만들어진 가중의 총합인 y값을 시그모이드 함수..

crazydeer.tistory.com

 

 

 

반응형