Pytorch로 시작하는 딥러닝 입문(06-02. 인공신경망: 퍼셉트론)

2024. 3. 8. 22:29딥러닝 모델: 파이토치

인공신경망은 수많은 머신 러닝 방법 중 하나이지만, 인공신경망을 복잡하게 쌓아올린 딥 러닝이 다른 머신 러닝 방법들을 뛰어넘는 성능을 보여주는 사례가 늘면서 전통적인 머신 러닝과 딥러닝을 구분하기도 한다. 딥러닝을 이해하기 위해서는 인공신경망에 대한 이해가 필요하다. 

♣ 퍼셉트론(perceptron)

퍼셉트론은 초기의 인공신경망으로, 다수의 입력으로부터 하나의 결과를 내보내는 알고리즘이다. 

위의 그림에서 x는 입력값을 의미하며, W는 가중치(weight), y는 출력값이다. 원은 인공 뉴런에 해당된다. 

실제 신경세포 뉴런에서 신호를 전달하는 축삭돌기의 역할을 하는 것이 가중치이다. 각각의 입력값 x는 각각의 가중치 W와 함께 종착지인 인공뉴런에 전달되고 있다. 

 

각각의 입력값에는 각각의 가중치가 존재하는데, 가중치의 값이 크면 클수록 해당 입력값이 중요하다는 것을 의미한다. 

 

각 입력값이 가중치와 곱해져서 인공뉴런에 전달되고, 각 입력값과 그에 해당하는 가중치의 곱 전체 합이 임계치(threshold)를 넘으면 종착지인 인공뉴런은 출력 신호로서 1을 출력하고, 그렇지 않을 경우에는 0을 출력한다. 

이러한 함수를 계단 함수(step function)이라고 하며, 아래 그래프는 계단 함수의 예를 보여준다. 

임계값을 넘기 전에는 0, 입계값을 넘은 후에는 1이 출력된다.

 

계단 함수에 사용된 임계치값을 수식으로 표현할 때는 보통 세타로 표현한다. 이를 식으로 표현하면 다음과 같다. 

 

위의 식에서 임계치를 좌변으로 넘기고 편향 b로 표현할 수도 있다. 편향 b도 퍼셉트론의 입력으로 사용된다. 

 

 

이렇게 뉴런에서 출력값을 변경시키는 함수를 활성화 함수(activation function)라고 한다. 초기 인공신경망 모델인 퍼셉트론은 활성화 함수로 계단 함수를 사용했지만 그 뒤에 등장한 신경망들은 계단 함수 외에도 여러 다양한 활성화 함수를 사용하기 시작했다. 앞서 배운 시그모이드 함수, 소프트맥스 함수 또한 활성화 함수 중 하나이다. 

 

로지스틱 회귀 모델이 인공신경망에서는 하나의 인공 뉴런으로 볼 수 있다. 로지스틱 회귀를 수행하는 인공뉴런과 위에서 배운 퍼셉트론의 차이는 오직 활성화 함수이다. 

 

♣ 단층 퍼셉트론(Single-Layer Perceptron)

위에서 배운 퍼셉트론을 단층 퍼셉트론이라고 한다. 퍼셉트론은 단층 퍼셉트론과 다층 퍼셉트론으로 나뉘는데, 단층 퍼셉트론은 값을 보내는 단계와 값을 받아서 출력하는 두 단계로만 이뤄진다. 이때 각 단계를 보통 층(layer)라고 부르며, 이 두 개의 층을 입력층(input layer)과 출력층(output layer)라고 한다. 

 

두 개의 입력값과 한 개의 출력값을 가지는 단층 퍼셉트론의 식을 파이썬 코드로 간단하게 구현해보자. (두 가중치는 w1, w2이고 편향은 b임)

 

 

♣ 다층 퍼셉트론(MultiLayer Perceptron, MLP)

 

다층 퍼셉트론과 단층 퍼셉트론의 차이는 단층 퍼셉트론은 입력층과 출력층만 존재하지만 다충 퍼셉트론은 중간에 층을 더 추가했다는 점이다. 이렇게 입력층과 출력층 사이에 존재하는 층을 은닉층(hidden layer)라고 한다. 

 

위의 다층퍼셉트론에서는 은닉층이 1개이지만 더 복잡한 문제를 해결하기 위해서 더 많은 은닉층을 추가할 수 있다. 

 

위와 같이 은닉층이 2개 이상인 신경망을 심층 신경망(Deep Neural Network, DNN)이라고 한다. 심층신경망은 다층 퍼셉트론만 이야기하는 것이 아니라, 여러 변형된 다양한 신경망들도 은닉층이 2개 이상이 되면 심층 신경망이라고 한다.