본문 바로가기
딥러닝

[딥러닝] 퍼셉트론(perceptron) / MLP(Multi Layer Perceptron) / 경사하강법

by 배써니 2024. 2. 29.

01. 퍼셉트론

퍼셉트론(Perceptron)은 뉴런이 정보를 받아서 문제를 처리하는 원리를 따라한 인공 신경망의 한 종류로,

이진 분류 문제를 해결하는 데에 사용되며

프랑크 로젠블라트(Frank Rosenblatt)에 의해 1957년에 개발되었다.

 

이는 생물학적 신경계의 기본단위인 뉴런의 구조에서 본따온 구조를 지니고 있으며

인접해있는 다른 뉴련과 다양한 신호를 주고 받으며 정보를 주고받는다.

https://smartstuartkim.wordpress.com/2019/01/27/history-of-neural-networks-1-perceptron/

▶ 양쪽의 구조가 비슷함을 확인할 수 있다.

 

 

퍼셉트론은 입력값을 받아서 가중치와의 곱을 계산하고, 이를 활성화 함수를 통해 처리하여 출력값을 생성한다.

이러한 퍼셉트론은 간단한 선형 분류 모형의 형태를 띄고 있기에 단일로는 잘 사용하지 않지만,

딥러닝의 강력한 모델들이 퍼셉트론의 변형된 형태를 사용하기에 그 개념을 명확히 해둘 필요가 있다.

 

 

퍼셉트론의 구조부터 자세히 알아보자.

 

퍼셉트론은 input과 Weight가 선형결합의 형태를 띠고

이에 활성화 함수를 적용해서 출력값을 내보내는 구조이다.

 

 

하지만 이러한 구조의 가장 큰 단점은,

선형 분류 모형을 띠기 때문에 선형 문제밖에 해결하지 못한다는 것이다.

 

그래서 이를 극복하기 위해 여러 Layer를 쌓아올린 형태가 MLP(Multi Layer Perceptron)이다.


02. MLP(Multi Layer Perceptron)

다층 퍼셉트론(MLP)은 Input layer와 Output layer 사이에

1개 이상의 Hidden layer(은닉층)를 넣은 형태이다.

편의상 각 연결별로 곱해지는 가중치는 표기하지 않았다.

 

다층 퍼셉트론에 들어가있는 활성화함수가 비선형함수일 경우,

은닉층을 통해 입력 데이터의 비선형 특성을 학습할 수 있기에 퍼셉트론의 단점을 보완한다.

 

다층 퍼셉트론에서 사용되는 중요한 알고리즘으로는 경사하강법역전파 알고리즘이 있다.

이 두가지 알고리즘은 딥러닝에서 아주 중요한 개념 중 하나이다.

그럼 각각에 대해 더 자세히 알아보도록 하겠다.


03.  경사하강법(Gradient Descent)

경사하강법은 쉽게 말해 오류식(실제값과 예측값의 차이)을 최소화할 수 있도록

가중치의 업데이트 값을 도출하는 기법이다.

 

그렇다면 그 가중치의 업데이트 값은 어떻게 도출하느냐가 경사하강법의 핵심인데,

그 대답은 '경사하강법'이라는 이름에서도 찾아볼 수 있다.

함수의 기울기(경사)가 낮은 곳으로 이동하며 오차가 가장 작은 지점을 찾는 방식이다.

 

기울기가 음수인 경우 / 기울기가 양수인 경우

위의 두 예시 사진이 잘 나타내고 있듯이, 

현재 지점에서 x값이 증가할 때 y값도 증가한다면 (== 기울기가 양수라면) x를 음의 방향으로 옮겨야 하고

반대로 x값이 증가할 때 y값이 감소한다면 (==기울기가 음수라면) x를 양의 방향으로 옮겨야 한다.

 

다시말해, 기울기의 부호와 x값의 이동 방향은 반대가 되어야

손실함수의 최솟값을 찾을 수 있는 것이다.


 

이러한 경사하강법으로 최적화를 진행할 때 중요하게 작용하는 파라미터가 바로 '학습률(Learning Rate)'이다.

학습률은 0에서 1사이의 값을 갖는 하이퍼 파라마미터(hyper-parameter)로

학습률이 작을수록 이동 보폭이 작으며, 학습률이 클수록 큰 보폭으로 이동한다.

 

이 학습률이 중요한 이유는 

학습률을 어떻게 설정하느냐에 따라 마주하는 문제가 달라지기 때문이다.

 

학습률을 너무 크게 설정하면 최적값에 수렴하지 못하고 다른 곳으로 발산할 가능성이 있고,

학습률이 너무 작으면 이동 거리(보폭)가 작아져서

최적값에 수렴하는 시간도 오래걸리고 local minimum에 안착해버릴 수 있다.

 

각각의 케이스를 이해하기 쉽게 그림으로 나타내보았다. 

 

그림에서도 확인할 수 있듯, learning rate를 잘못 설정하면

매우 비효율적인 방법으로 최적값을 찾아가거나, 아예 최적값을 찾지 못하고 지나칠 수 있다.

 

그럼 Learning Rate가 최적일 때는 어떤 모습일까?

가장 이상적이고 효율적인 방법으로 최적값을 찾아가는 걸 확인할 수 있다. 

 


 

 

그럼 이제 앞서 공부한 (기울기를 반영한) 이동 방향과 학습률을 반영하여

경사하강법의 최종 수식을 분석해보겠다.

 

경사하강법의 수식은 아래와 같다.

 

https://velog.io/@woooa/TIL-경사-하강법과-옵티마이저

 

한 마디로 정리하면 '기울기의 반대 방향으로 [Learning rate]배 만큼 이동'한다.

기울기의 반대 방향으로 이동하는 이유는, 앞서 보았듯 최적값을 찾기 위해선 기울기의 반대 방향으로 이동해나가야 하기 때문이고

learning rate를 곱해주는 이유는, 해당 학습률 속도를 반영하기 위함이다.