항등 함수와 소프트맥스 함수

yoon·2021년 10월 17일
0

(*이 시리즈의 내용은 모두 '인공지능 100점을 위한 파이썬 수학' 서적의 내용을 정리한 것입니다. 사진과 같은 자료들 또한 출처가 위 책임을 밝힙니다.)

입력을 그대로 출력으로 내보내는 것을 항등함수라고 부른다. 따라서 수식은 f(x) = x이고, 입력으로 들어온 신호가 신경망에서 맨 끝부분까지 계산되어 나오는 출력을 y로 놓는다.

  • 입력값과 은닉층, 은닉층과 출력층 사이의 w와 b의 네트워크 변수들의 곱과 합으로 얻어진 결과를 그대로 y에 저장할 수도 있다.

이때 마지막 출력을 y로 연결할 때 별도의 변환 없이 그대로 들어온 값을 나가는 출력값 y로 보내기 때문에 항등함수라고 부른다.

# 항등함수(identity function)
def identity_function(x):
	return x

(1) 비례확률함수

  • 신경망에서 실제로 사용되지는 않는다.
  • 일정한 값들이 들어왔을 때 그 값들을 크기의 비율로 쓴 것으로, 총합이 1이 되게 만든 함수이다.
# 비례확률함수
import numpy as np
def mean_probability(x):
	x = x.T
    	return (x / np.sum(x, axis=0)).T

다음의 코드를 넣어서 실행해보면,

y = np.array([[1,1,3,0,0,0,1,0,0,4],[2,2,5,1,0,0,5,0,1,4]])
print(mean_probability(y))
[실행결과]

[[0.1 0.1 0.3 0.  0.  0.  0.1 0.  0.  0.4]
[0.1 0.1 0.25 0.05 0.  0.  0.25 0.  0.05 0.2 ]]

10개의 결괏값을 비례해서 총합이 1이 되고, 10개 요소 개별값은 확률값이 된다.

  • np.sum(x, axis=0)은 행렬 x의 열방향 값들의 합을 계산한다. axis = 1로 바꾸면 행방향 값의 합이 나온다.

(2) 소프트맥스 함수

  • 신경망에서 분류에 주로 사용되는 함수이며, 출력의 합은 1이된다.
  • 큰 값의 비중은 더 크게, 작은 값의 비중은 더 작게 만들어주는 특징을 가진다.
  • 신경망에서 나오는 출력값을 보다 확실하게 하기 위해 원래의 값을 보정해서 확률로 만든 값.
  • 작은 것은 더 작게, 큰 것을 더 크게 만들어 최종값의 합이 1이 되게 만든다.
  • 비례확률과는 다르기 때문에 확률값이라고 말하는 것에 무리가 있다.
  • 유사확률로 인식하고 이 값을 이용하여 학습에 적용한다.
  • 비례확률값보다 크기 때문에 학습 효율이 일반적으로 더 좋아진다.
profile
공부하자

0개의 댓글