본문 바로가기
파이썬 프로그래밍/Numpy 딥러닝

16. 다층 퍼셉트론(MPL)의 등장-2.비선형 회귀식(기초이론)

by Majestyblue 2022. 1. 20.

이전 시간에 XOR 문제를 다층 퍼셉트론을 이용하여 해결하였다. 이번에는 '

12. 단층 퍼셉트론의 한계-2.선형 회귀식의 한계' 에서 해결하지 못한 회귀식을 비선형 회귀식으로 어떻게 해결할 수 있는지 이론적 바탕을 알아보겠다.

 

해결 아이디어는 앞서 활용했던 다층 퍼셉트론을 이용하는 것이다. XOR에서 사용했던 방법을 떠올려 보면

 

선형 연산, 시그모이드 함수

 

 

순방향 출력, 마지막 출력에 Sigmoid가 없는 이유는 0과 1이 아닌 값을 예측해야 하기 때문이다.

 

 

 

1. 기울기 손실 문제

간단한 데이터에서는 큰 문제가 없는데 데이터가 많아지고 복잡해 질 수록 활성화 함수로 사용되는 시그모이드가 문제를 일으킨다. 가중치를 업데이트 할 때 역전파를 실시하는데 시그모이드 함수와 도함수를 그래프로 살펴보자.

 

시그모이드 함수, 시그모이드 도함수, 0에서의 시그모이드 도함수의 값

 

초록색은 시그모이드 함수, 파란색은 시그모이드의 도함수, a값은 0에서의 시그모이드 도함수 값이다.

시그모이드 도함수의 값이 최대 1/4 밖에 되지 않는다! 

어떤 값에 0< x < 1 인 x값을 계속 곱하다 보면 0에 수렴하는 것 처럼 활성화 함수가 시그모이드인 복잡한 다층 퍼셉트론에서는 도함수 값이 점점 0을 향해 간다. 

 

 

예를 들어 위의 순방향 출력의 역전파에서 G3의 가중치 W3, B3는 기울기가 명확히 존재할 것이다.

 

 

 

그러나 G1의 가중치 W1, B1을 구하는 과정에서 0 < x < 1 인 값들이 계속 곱해졌기 때문에 W1의 기울기는 W3보다 0에 가까울 것이다.

 

 

 

0<x<1 값이 계속 곱해지면서 W1 도함수 값은 0에 가까워진다

 

 

이렇게 되면 입력에 가까운 레이어의 가중치 값은 업데이트가 잘 되지 않는, 존재감이 없어지는 일이 발생하는데 이를 '기울기 손실(Gradient Vanishing)' 문제라고 한다. 이런 일이 발생하면 데이터에 대한 모델을 만들 수가 없다!

 

https://www.kaggle.com/getting-started/118228

 

 

 

 

 

 

 

 

2. 활성화 함수를 없애버리면?

선형 연산의 출력을 활성화 함수에 넣지 말고 그대로 다른 선형 연산의 입력으로 활용해 보면 어떨까? 

이것도 역시 올바르지 않은 방법이다. 왜냐하면 선형 연산의 합성함수로 선형 연산을 하면 비선형 회귀식이 되지 않기 때문이다. (비선형 회귀식을 만드는 이유는 보다 복잡한 데이터에 대한 모델을 만들기 위함임을 기억하자)

 

https://stackoverflow.com/questions/9782071/why-must-a-nonlinear-activation-function-be-used-in-a-backpropagation-neural-net

 

위의 예시처럼 3개의 층이 있는 다층 퍼셉트론을 생각해 보자. 위 구조는 어떤 퍼셉트론에서의 출력이 다음 퍼셉트론의 입력으로 그대로 진행되는 과정이다. 

 

 

 

예를 들어 h2의 출력이 마지막 퍼셉트론의 입력이 되는 연산을 살펴보자. 아래와 같다.

 

https://stackoverflow.com/questions/9782071/why-must-a-nonlinear-activation-function-be-used-in-a-backpropagation-neural-net

 

마지막 결과를 보면 알 수 있듯이 그냥 선형 회귀식이다. 우리는 비선형회귀식을 만들려고 하는데 선형 회귀의 출력을 그대로 입력으로 사용하면 단일 퍼셉트론식과 다를 바가 없는 것이다.

 

일상생활의 다양한 문제들은 비선형에 가깝다. 따라서 비선형 활성화 함수를 사용해야 한다는 것이다. 

 

그럼 무엇이 있을까? 시그모이드를 사용하자니 가중치가 잘 업데이트 되지 않고, 사용하지 않자니 비선형이 되지 않고... 

 

 

 

3. ReLU 함수

Nair & Hinton(2010)이 제시한 방법이 많은 관심을 불러일으켰는데 Rectified Linear Unit(정류된 선형 단위)을 활성화 함수로 이용하는 방법이다. 함수와 그래프는 아래와 같다.

 

 

 

 

이 식은 기울기가 1로 일정해 기울기가 감소하는 경우가 없어 학습이 용이하며 실제로 기존 방법보다 학습성능이 좋다고 알려져 있다. 

 

이 식이 왜 비선형인지 예시를 통해 알아보자. 만약 선형이라면 아래의 식을 만족한다.

 

 

 

 

ReLU 함수를 R(x)로 표기하겠다. 첫 번째 조건으로 확인해 보자. 선형이라면 R(-2 + 1, 2 + 1) = R(-2, 2) + R(1)이 성립해야 한다.

 

 

 

 

 

 

 

즉, ReLU 함수는 비선형함수이다. ReLU 함수를 이용한 다층 퍼셉트론의 표현을 아래와 같다.

 

 

 

다음 시간에는 위 함수의 출력과 도함수를 수학으로 어떻게 표현하는지 알아보겠다.