[kakao x goorm] 퍼셉트론에서 신경망으로 넘어가기
오늘은 퍼셉트론이 어떻게 신경망으로 확장되었는지, 그리고 그 과정에서 등장한 다양한 활성화 함수에 대해 정리했다. 특히, 퍼셉트론이 갖는 한계와 신경망이 이를 어떻게 극복했는지를 이해하는 데 중점을 두었다.
퍼셉트론의 장단점
퍼셉트론은 기본적으로 간단한 논리 연산을 수행할 수 있는 모델이다.
하지만 복잡한 연산이나 다양한 패턴을 표현하는 데에는 한계가 존재했다.
- 장점 : 복잡한 함수의 표현이 가능하며, 이론적으로 컴퓨터가 수행하는 처리까지 가능하다.
- 단점 : 가중치를 사람이 일일이 설정해야 해서 수동 작업이 필요했다.
결국 퍼셉트론은 강력한 가능성을 지녔지만, 학습을 통한 자동화가 어렵다는 문제를 안고 있었다.
신경망의 등장
신경망은 퍼셉트론의 한계를 극복하기 위해 등장했다.
가장 큰 차이는 가중치 매개변수를 데이터로부터 자동으로 학습할 수 있다는 점이다.
'학습'이라는 과정을 통해 신경망은 스스로 최적의 가중치 값을 찾아가며, 복잡한 문제를 해결할 수 있다.
신호 전달 방식
신경망에서는 입력 데이터가 여러 뉴런을 거치면서 처리되고, 각 뉴런은 자신의 입력값에 대해 특정 함수를 적용해 출력을 계산한다. 이 과정은 매우 단순하지만, 뉴런이 여러 층으로 쌓이면서 복잡한 표현이 가능해진다.
활성화 함수 (Activation Function)
활성화 함수는 입력 신호의 총합을 출력 신호로 변환하는 함수이다. 즉, 뉴런의 '반응'을 결정하는 역할을 한다.
활성화 함수 기본 수식
$$
y = h(b + w_1x_1 + w_2x_2)
$$
$$
a = b + w_1x_1 + w_2x_2
$$
최종 출력은 $$ y = h(a) $$
퍼셉트론과 신경망에서 사용하는 활성화 함수
퍼셉트론: Step Function
퍼셉트론은 활성화 함수로 계단 함수(Step Function) 를 사용한다.
$$
h(x) =
\begin{cases}
0 & (x \leq 0) \\
1 & (x > 0)
\end{cases}
$$
- 입력값이 0보다 작거나 같으면 0을 출력하고,
- 입력값이 0보다 크면 1을 출력하는 아주 단순한 형태다.
신경망: Sigmoid Function
신경망에서는 퍼셉트론과 달리 Sigmoid Function 같은 매끄러운 활성화 함수를 사용한다.
$$
h(x) = \frac{1}{1 + \exp(-x)}
$$
$$
\exp(-x) = e^{-x}
$$
$$
e \approx 2.7182\ldots
$$
- 입력값에 따라 부드럽게 0과 1 사이를 오가며 값을 출력한다.
또한 Sigmoid 이외에도 Tanh Function이나 ReLU Function 등 다양한 함수들이 등장하게 되었다.
Sigmoid Function vs Step Function
차이점
- 계단 함수 (Step Function): 출력이 0을 기준으로 급격하게 변한다.
- 시그모이드 함수 (Sigmoid Function): 입력값에 따라 연속적으로 부드럽게 출력이 변화한다.
공통점
- 입력이 작으면 출력은 0에 가깝고, 입력이 크면 출력은 1에 가까운 형태를 가진다.
- 출력 범위가 모두 0~1 사이에 존재한다.
- 모두 비선형 함수이다.
ReLU (Rectified Linear Unit)
최근 신경망에서는 Sigmoid보다 ReLU를 훨씬 많이 사용한다.
ReLU는 간단하지만 매우 강력한 성질을 가지고 있다.
ReLU 함수 정의
$$
h(x) =
\begin{cases}
x & (x > 0) \\
0 & (x \leq 0)
\end{cases}
$$
- 입력이 0을 넘으면 그 값을 그대로 출력하고,
- 입력이 0 이하이면 0을 출력한다.
덕분에 계산이 간단해지고, 학습 속도도 빨라지는 장점이 있다.
또한 기울기 소실 문제(vanishing gradient problem)를 어느 정도 완화하는 데도 효과적이다.
오늘의 회고
퍼셉트론은 '가능성'을 보여준 모델이었다.
하지만 실제 복잡한 문제를 풀기에는 학습 과정이 수동적이고 비효율적이었다.
신경망은 이 한계를 데이터 기반 학습으로 극복했고, 다양한 활성화 함수를 활용해 더욱 강력하고 복잡한 문제 해결이 가능해졌다.
특히, ReLU 같은 단순하지만 효율적인 활성화 함수가 신경망을 실용적인 수준으로 끌어올리는 데 큰 기여를 했다는 점이 인상 깊었다.