목차:
(1) 궁금증: 소프트맥스??
(2) 아날로그와 디지털의 차이
(3) 선형모델 vs 비선형모델: 로지스틱 함수부터 시작해보자면...
(4) 로짓이란??
(5) 선형과 비선형을 결합시키는 딥러닝
(6) 로지스틱 -> 시그모이드 -> 소프트맥스 함수, 다시 소프트맥스 함수로
(1) 궁금증: 소프트맥스??
수업을 듣는 도중에 선생님께서 이런 말씀을 하신다.
" 신경망 모델은 기본적으로 비선형 모델이지만 수학적으로 분해를 해보면 선형모델이 그 안에 숨겨져 있고, 비선형 모델과 선형 모델의 결합으로 이뤄져있습니다. "
이 말이 너무 추상적이어서 softmax에 대해 공부해보게 되었다.
(2) 아날로그와 디지털의 차이
아날로그와 디지털의 차이가 무엇이냐하면,
아날로그는 연속적인 값들을 말하고 디지털은 분리된 값을 말한다.
A digital signal is a signal that is being used to represent data as a sequence of discrete values; at any given time it can only take on, at most, one of a finite number of values. This contrasts with an analog signal, which represents continuous values; at any given time it represents a real number within a continuous range of values. (디지털 신호는 데이터를 일련의 불연속 값으로 표현하는 데 사용되는 신호입니다. 주어진 시간에 한정된 수의 값 중 하나만 가질 수 있습니다. 이것은 연속적인 값을 나타내는 아날로그 신호와 대조됩니다. 주어진 시간에 연속적인 값 범위 내의 실수를 나타냅니다.)
(wikipedia)
시계로 생각해보면 쉬운데 아날로그 시계는 초침 분침 시침이 이동하는 모든 과정이 연속적인반면
디지털 시계는 0, 1, 2, 3으로 discrete하게 변한다.
딥러닝은 컴퓨터도 사람과 같이 이 세상을 인식하고 이해하기 위해서 그 과정을 모델로 만들는 것이다.
그러기 위해서 이 세상을 아날로그적으로 이해하는 것과 디지털적으로 이해하는 과정이 필요한데
이와 짝지어 딥러닝에서 사용하는 개념 중 하나가 로짓과 로지스틱 함수이다.
사람도 아날로그적인 세상에서 연속적인 삶을 살지만 이 세상을 이해하고 받아들이기 위해서 세상을 나눠서 본다. 심리학적 개념으로 이걸 분절화라고 부른다. 대표적인 예로 시간을 이해하기 위해 1년이라는 개념을 만들고 다시 봄 여름 가을 겨울을 만들고 하루는 24시간을, 달과 해를 보며 연속적인 무엇인가를 나눠서 받아들인다. 이렇게 세상을 나눠 이해를 한 후에는 다시 그 분류 선을 지워 전체를 이해하는 이해력을 가지게 된다. 일명 통찰 또는 경계를 넘어 생각하는 창의력이 여기에서 나온다.
이해하려다 힘들어서 헥헥대고 겔겔댄다는 헤겔의 정반합이 생각나는 대목이다. 서로 다른 개념인 아날로그와 디지털을 반복하면서 세상에 대해서 더 깊은 이해와 창의성이 나오는 것이다. 딥러닝을 공부하면서 컴퓨터 또한 이런 과정을 거치는 것이 아닐까 하는 생각을 하게 되었다. 딥러닝의 모델이 꼭 방금 설명한 아날로그와 디지털을 오가는 과정이 있기 때문이다.
(3) 선형모델 vs 비선형모델: 로지스틱 함수부터 시작해보자면...
세상을 아날로그에서 디지털로 바꾸기 위해서는 분류체계를 가져야 한다.
분류를 하기 위해서는 기준이 있어야한다. 어떤 것을 봤을 때 어떻게 분류를 하는지.
대표적인 예시는 다음과 같다.
대부분의 동물들은 자연스러운 학습을 하지만 컴퓨터에게는 수학적으로 만든 공식을 알려줘야한다.
비선형 모델이 필요해지는 지점이 바로 여기이다.
예를 들어 50점을 기준으로 합불합을 나누고 싶은 상황이다.
50점이 들어오면 0.5가 나오는 직선 함수를 만들어서 y 값이 0.5를 넘으면 1로보내서 합격을 주고 반대의 경우 0을 줘서 불합격으로 분류하려고 한다. 아주 심플하게 그림을 그릴 수 있다.
그런데 여기서 어마어마한 녀석이 나타나서 점수가 2000점이 되버린 것이다.
그래서 우리 공식에 넣어보니 점수가 1을 훨씬 넘어서 우리 분류기로는 분류를 할 수없게 된다.
여기에 오기가 생겨서 2000점이 들어오든 2억점이 들어오든 분류를 해버리고 싶어서 고민고민해 이런 그래프를 그리게 되었다. 이 함수의 결과값은 절대결코네버 1을 넘지 않으며 무려 마이너스값이 들어와도 0이하로 내려가지 않는다.
이 시그모이드 모양의 함수를 사용하면 위와같이 아주 큰 값이든 아주 작은 값이든 상관없이 0~1사이의 값이 나오므로 0.5 기준으로 이 세상에 있는 모든 값(analog 적인 값을) 0 또는 1로(digital 하게) 분류 할 수 있게 된다. 즉 비선형 모델은 아날로그적인( 연속한 ) X 값에 대해서 우리가 원하는 값 사이로 결과를 출력하기 때문에 continuous 한 변수에서 discrete 한 변수로 대응시키는 함수를 만들 수 있게 된다.
analog한 변수를 discrete한 종속변수로 바꾸는 대표적인 함수들이 있는데, 그 중 하나가 softmax이다. (그리고 대부분의 activation function들이 이런 역할은 한다.) 다음은 practical convolutional neural networks에 나오는 softmax의 정의이다. 이 설명을 보면 로짓이라는 값을 softmax에 넣어 분류를 한다라고 쓰여있다. 그렇기 때문에 analog한 변수가 로짓이겠거니 추론 가능한 지점이다. 아래에서는 왜 analog가 logit으로 불릴 수 있는지를 설명하려고 한다.
*사실 나는 소프트맥스 함수가 갑자기 튀어나와 이게 뭔지 찾아보면서 위의 질문에 대한 답인 '로짓'에 대해서 알게 되었다. (그리고 이게 이 글을 쓰게 된 시작이다.)
The softmax function converts its inputs, known as logit or logit scores, to be between 0 and 1, and also normalizes the outputs so that they all sum up to 1
( oreilly : practical convolutional neural networks )
(4) 로짓이란??
로짓은 로그+오즈의 합성어이다. 로그를 씌운 오즈라는 말인데 그럼 오즈는 뭘까?
*What's the odds? 영어권에서는 이 오즈라는 낯선 말을 자주 사용한다.
대략 뜻은 '그래서 그게 일어날 확률이 어느정도인건데?...' 또는 '그래서 너가 말하는 그 상황이 진짜로 일어날것 같애? '하고 묻는 말인데 재밌는건 이 odds를 정확히 수식으로 쓸 수 있다는 것이다.
이 odds에서 중요한 값은 1이다. 1보다 크다면 일어날 확률이 더 크고 1보다 작으면 안일어날 가능성이 더 크다.
여기에 자연로그를 씌운 로그오즈 (=로짓)은 0을 기준으로 일어날지 안일어날지를 결정한다.
이 로짓을 확률(0~1사이값)로 다시 표현하면 다음과 같이 로지스틱 함수가 된다.
로지스틱 함수와 로짓함수는 이렇게 서로 역행렬의 관계가 있다.
수식적인 측면 뿐만 아니라 의미적으로 접근해도 둘은 밀접한 관계가 있다.
로짓은 0~1사이의 값을 (-inf, inf)로 표현하고로지스틱 함수는 (-inf, inf)값을 0~1사이의 값으로표현한다.
결과적으로 우리가 처음 이야기를 시작한 것과 연결된다.
선형모델은 이렇게 모든 데이터에 가중치를 곱해서 표현하는데 그 결과값은 (-inf, inf)로 어디에서든지 나올 수 있다. == logit
로짓과 로지스틱의 관계에 집중하자면
로짓은 digital을 analog로 만들어서 세상의 모든 값을 표현할 수 있게 만들고 (activation func -> next layer linear func)
로지스틱 함수는 analog를 digital로 제한한다. 로지스틱 함수가 activation function으로 사용될 수 있는 이유도 여기에 있다. (linear -> activation func )
로짓이 무슨 값을 넣든 상관 없이 0(off) 1(on)으로 만들 수 있기 때문이다.
Question 추가. ReLU 함수는 양수에 대해 무한대로 커지는 데 어떻게 activation function으로 사용할 수 있을까?
* 시그모이드는 로지스틱 함수의 한 종류이다.
(5) 선형과 비선형을 결합시키는 딥러닝
딥러닝은 선형모델과 비선형 모델을 반복적으로 사용한다.
선형모델은 앞에서 생각해본 것처럼 (-inf, inf)의 범위에서 종속 변수가 연속적으로 나올 수 있고, 비선형모델은 특정 범위 내로 모든 값을 넣을 수 있다. 선형과 비선형을 반복한다는 것은 (-inf, inf == 세상의 모든 값)으로 표현된 정보 중 필요한 정보를 가려내고 필요한 정보는 또 다시 analog한 값으로 표현해서 그 중 필요한 값을 가려내는 과정이라고 볼 수 있다. 사람들이 선택적 집중을 하는 것처럼 analog한 세상의 표현을 가려내는 과정이라고 할 수 있다. 학습이 깊어지면 이러한 선택과 집중이 반복되면서 해당 데이터가 필요한 값인지 아닌지 여러번 판단하면서 판단능력이 올라가는 것이 아닐까?
강의에서 나온 수식으로 표현하면 이와 같다. softmax함수에 선형모델을 넣는다. 이 말은 우리가 데이터 x를 중요도에 따라 가중치와 잔차 계산을 마친 logit값을 softmax에 넣는 다는 것을 의미한다.
(6) 로지스틱 -> 시그모이드 -> 소프트맥스 함수, 다시 소프트맥스 함수로
돌고 돌아 이 질문의 시작점인 softmax 함수로 돌아오는데 softmax 함수 또한 input으로 analog 값인 logit이 들어온다. 다만 시그모이드(로지스틱 함수의 한 종류)는 하나의 라벨에 대해 판단하는 반면(합불합) 소프트맥스는 여러 종류로 classification 할 수 있으므로(학점 ABCD) 시그모이드를 일반화 했다고 생각할 수 있다. 시그모이드에서 소프트맥스 함수로 일반화하는 과정은 다음과 같다.
이런 논리적인 추론을 바탕으로 다시 강의를 보면 왜 softmax가 지수함수(exponential)을 사용하는 지도 알 수 있다.
( 이 식을 자세히보면 지금 우리가 p shape의 vector를 사용하고 있구나 == 즉, p 개의 label로 분류하고 있구나 하는 것도 알 수 있다. 이는 수식으로 R^p라고 쓰는 것 같다. )
또한 여기에서 선생님도 잠깐 언급을 하시는데 , 아주 큰 값이 들어올 수 있다는 것을 감안해서 max 값을 빼는 연산을 한다. 이부분을 조금 더 자세히 살펴보면 다음과 같다.
numpy를 이용해 softmax함수를 작성하면 다음과 같다.
deepai.org/machine-learning-glossary-and-terms/softmax-layer
www.edwith.org/bcaitech1/lecture/339605
댓글