단층 퍼셉트론에서 Sigmoid의 Non-Linearity?

안준영·2021년 3월 3일
2
post-thumbnail

안녕하세요, Justin4AI입니다.
순수하게 저만을 위한 게시물이지만, 처음으로 써보는 개발자 블로그라 그런지...
기분이 조금 이상하네요. 떨리기도 하구요!

이번 글은 쉽게 생각하고 지나칠 수 있는 'single layer perceptron에서 XOR 문제와, 이와 관련하여 sigmoid function'도 다뤄보겠습니다. 이 주제에 관해 이뤄졌던 대화 리뷰 형식으로 진행될 예정이니 참고해주세요 :)

(글감 제공해주신 파이썬 방의 초보초보님 감사드립니다.)

ISSUE


친구들과 음주 뒤에 집에 와서 쉬려고 하고 있었는데, 재미있는 질문 하나가 올라와있었습니다.
간단히 말해서,

  1. "단층 퍼셉트론에서 sigmoid를 activation으로 사용하면 선형성을 잃지 못하나요?"
  2. "잃지 못한다면, 그것이 sigmoid의 모양때문인가요?"

이 질문에는 질문자님의 두 가지 전제(이전 대화에서 암시된)가 숨어있습니다. 바로

  1. "선형성을 잃지 못한다면, activation function은 의미가 없다."
  2. "sigmoid function의 형태는 x = 0 부근에서 선형인 것 처럼 보인다."

솔직히 sigmoid function이 gradient vanishing 외에 저렇게까지 문제가 되는지를 생각해본 적도 없고, shape에 대해서도 문제 의식을 가져본 적이 없는 저로서는 질문의 퀄리티와 관계 없이 무척 흥미로웠습니다.
정확하게 뭐가 궁금하신지 캐치하기 위해서 다시 여쭤보았더니,

XOR 문제 (위키독스)와 관련이 되어있었습니다.


결론적으로, 질문자님께서는 위키독스가 '단층 퍼셉트론이 XOR 문제를 풀 수 없는 것'과 'sigmoid 함수의 사용'이 관련있다고 서술했다고 착각하신 것 같습니다. 사실 이 두 문제는 별개로 설명하는 것이 나아보여서 따로 다루도록 하겠습니다.

단층 퍼셉트론은 왜 XOR을 풀 수 없는가?

여기서는 '왜'인지가 가장 중요할 것 같습니다.
우선, single layer perceptron (단층 퍼셉트론)은 아래와 같이 구성되어 있습니다.


Hidden layer가 없이 오로지 input layer와 output layer로만 구성되어 있는 구조입니다. 퍼셉트론은 다수의 신호를 입력 받아 하나의 신호를 출력하는데, 여기서 말하는 신호란 전류처럼 흐름이 있는것을 뜻하며, 흐름의 상태 정보를 앞으로 전달합니다. 위 그림은 x1, x2,,, xi라는 입력 신호에 w1, w2,,, wi라는 가중치를 부여하여 y라는 신호를 출력하게 되는 것입니다.


위와 같은 AND gate 또한 단층 퍼셉트론에 해당합니다.
예를들어 (w1, w2, θ)의 값을 (0.5, 0.5, 0.8)이라고 가정하였을때 계산입니다.
(0x0.5) + (0x0.5) = 0.0 < 0.8 -> 0
(0x0.5) + (1x0.5) = 0.5 < 0.8 -> 0
(0x0.5) + (0x0.5) = 0.5 < 0.8 -> 0
(1x0.5) + (1x0.5) = 1.0 > 0.8 -> 1

그러나 단층 퍼셉트론으로는 XOR gate 연산을 할 수 없습니다. XOR gate는 베타적 논리합 이라 불리는 회로로, 즉 한쪽이 1일 때만 1을 출력합니다.
퍼셉트론 이론은 선형 분류이데요, 직선을 이용한 분류는 가능하지만 XOR 게이트와 같은 경우 아래와 같이 곡선으로만 나눌 수 있기 때문에 비선형 분류이기 때문입니다.

Sigmoid는 부분 (x = 0부근) 선형인가?

Linearity와 Nonlinearity는 dichotomy (일명 흑백논리) 관계입니다. 부분 선형, 일부 선형, 선형이 조합된 비선형 등의 plain한 용어가 있으나, 이 글에선 activation function에 관한 이야기이기 때문에 관습대로 둘을 대립 관계에 두겠습니다.

두 가지 의논할 거리가 있네요.

  1. Sigmoid 함수는 아주 좁은 구간에서 선형함수인가?
  2. 0에서 진동하는 꼴의 value들이 x (variables)로 들어가면, 학습이 잘 되지 않을 수 있는가?

물론 중간에 시각적으로만 선형함수인 것처럼 보인다라는 말씀을 해주셨으나, 사실 이는 여러분도 아시다시피 전혀 중요하지 않은 부분입니다. 철저한 미분계수의 변화에 따라 판단해야하는 부분이기 때문에, 식을 통해서 확인해보겠습니다.

Sigmoid의 도함수 그래프는 이렇습니다.

보시다시피 어떤 구간에서도 x축과 평행한 직선이 보이지 않습니다 (도함수가 상수함수인 구간이 없네요).
x = 0 구간에서 이계도함수가 0이기는 하나, 이는 변곡점임을 지칭할 뿐입니다.

물론 그래프를 그리지 않아도 sigmoid(x)를 T로 둔 뒤
1)T는 0과 1사이의 값이며,
2)x의 전체 정의역에서 증가함수이며,
3)(0, 0.5) 기준으로 점대칭인 것을 생각해보았을 때,
도함수의 값이 닫힌 구간 [a, b] (a != b)에서 상수가 되도록 하는 a와 b가 없음을 알 수 있지만요.

어차피 구글에 "Is sigmoid nonlinear?"이라고 검색해보면 명쾌하게 nonlinear function임이 나오기는 합니다.

>0에서 진동하는 꼴의 value들이 x (variables)로 들어가면, 학습이 잘 되지 않을 수 있는가?

단층에 sigmoid function을 써버린다면 당연히 생길 수 있는 문제입니다. 이외에도 단층에 ReLU, softplus같은 activation function을 써버린다면 당연히 거의 비슷한 y값들로 나와버릴 수 있겠죠.
이래서 저희는 layer를 여러개 쌓죠? weight를 곱하고, activation을 계속 필터링시키고, bias를 더하고를 반복하다보면,, 상이한 수치로 나올 수 있겠습니다.

결론

아니죠. XOR gate 문제에서 논하는 선형 / 비선형은 activation function이 선형 / 비선형임에 영향받는 문제가 아닙니다 - 이와 독립적입니다.
단층 퍼셉트론이 hidden layer가 없는 선형 분류기이기 때문에 비선형성을 갖추지 못하는 것입니다.

Activation function의 목적이 '선형성을 잃게 하는 것' 이라는 점에 집중하시다 보니 두 용어의 교집합에서 헷갈리신 것 같습니다.


Referrence

https://computing.dcu.ie/~humphrys/Notes/Neural/single.neural.html#:~:text=A%20%22single%2Dlayer%22%20perceptron,%2C(1%2C0).

http://taewan.kim/post/sigmoid_diff/

https://stats.stackexchange.com/questions/263768/can-a-perceptron-with-sigmoid-activation-function-perform-nonlinear-classificati

https://blog.naver.com/jevida/221849155477

https://wikidocs.net/60848

profile
Dedicated my life to AI

2개의 댓글

comment-user-thumbnail
2022년 8월 15일

sigmoid는 비선형이 맞고, 그냥 하나의 퍼셉트론은 activation function과 관계없이 애초에 비선형성을 가질 수 없다는 것!

1개의 답글