본문 바로가기
Tensorflow

[ANN] 03. Basic of Neural Network

by 청양호박이 2020. 5. 8.

이번 글부터 몇회가 될지 모르게 여러 회 동안 인공신경망(Artificial Neural Network)에 대해서 알아보려 합니다. 인공신경망은 기계학습(Machine Learning)과 딥러닝(Deep Learning)에서 인간의 중추신경계 중 뇌에서 뉴런을 통해 발전된 알고리즘입니다. 그 논리적인 내용에 대해서는 기존 퍼셉트론을 통해서 인공신경망(ANN)의 개별 Node대해서 그 형태 및 동작방식에 대해서 알아보았습니다.

 

2020/05/06 - [Tensorflow] - [ANN] 01. Single Layer Perceptron

 

[ANN] 01. Single Layer Perceptron

그 동안 일이 있어서... 진짜 오랫만에 새로운 글을 쓰게 되었습니다. 어느정도 상황이 정리되어서 마음을 다잡고 또 글을 작성해 보겠습니다. 이번에는 주제를 인공신경망(artificial neural network, A

ayoteralab.tistory.com

앞으로의 진행 목차는 아래와 같습니다.

 

  • 인공신경망(ANN)의 개요 및 퍼셉트론과의 차이점
  • 인공신경망(ANN)의 활성화함수(AF, Activation Function)
  • 인공신경망(ANN)의 출력층 설계 및 순전파(Forward Propagation)
  • 인공신경망(ANN)의 손실함수(Loss) 구현
  • 수치미분 및 편미분, 그리고 GDA
  • 인공신경망(ANN)의 역전파(Back Propagation) 개념
  • 인공신경망(ANN)의 역전파(Back Propagation) 구현

 

그럼 인공신경망의 세계로 한번 떠나보겠습니다. 

 

 

1. 인공신경망 이란


이 단어에 대해서 가장 잘 설명한 부분은 위에 기술한 내용이라고 생각됩니다. 인간의 중추신경계 중 뇌에서 뉴런을 통해서 발전된 알고리즘!! 뭔가 추상적으로 보이겠지만 이 단어는 퍼셉트론에서도 보셨습니다. 결국 퍼셉트론에서 인공신경망으로 발전되었다고 볼 수 있습니다. 

 

다수의 Input이 존재하고 이 Input에 가중치를 곱하고 모두 더한 다음에 임계치를 기준으로 판단하여 output을 내어주는 node... 이게 단일퍼셉트론(SLP)의 개념이였습니다. 신경망은 퍼셉트론의 node를 그대로 차용하여 구성되며, 둘간의 차이가 있는데 내용은 아래와 같습니다. 

 

[변수지정]

각 node는 Input에 대한 weight와 임계치인 bias가 존재합니다. 이 변수에 대한 지정방법이 다릅니다. 그 내용에 대해서는 아래와 같이 요약할 수 있습니다.

   - 기존 퍼셉트론(Perceptron)은 weight와 bias를 사람이 원하는 결과를 도출하기위해서 수동으로 구해서 정해줍니다.

     이는 기존에 논리게이트를 구현할 때 확인했었습니다.

   - 반면에 인공신경망(ANN)은 해당 변수를 random하게 대충 설정을 합니다. 그리고 이를 자동으로 학습시켜 최적값을

     찾아내서 자동으로 설정합니다. 

 

위의 자동으로 변수를 학습하는 방법은 역전파(Back Propagation)를 통해서 가능하게 됩니다. 이 알고리즘은 인공신경망 및 딥러닝의 핵심 알고리즘으로 이후에 자세하게 다뤄보겠습니다.

 

[구조화]

개별 노드로 기존에 알아본 퍼셉트론은 인공신경망으로 오면서 Layer라는 개념으로 좀더 구조화 됩니다. 물론 MLP에서 그 구조가 생겼지만... 인공신경망에서 그것이 완성되었다고 생각할 수 있습니다.

 

 

2. 인공신경망 구조


인공신경망은 node의 집합이며, node의 체계적인 계층구조라고 말할 수 있습니다. 따라서 그 체계내에는 단일 node에 대한 구조, Layer에 대한 구조, 그리고 그 구조에서 개별 노드 및 변수에 대한 명명규칙이 있습니다. 해당 내용을 차례로 알아보면...

 

[단일 node에 대한 구조]

 

퍼셉트론에서 봤던 그림입니다. Input이 존재하고 각 input에는 weight(가중치)가 붙습니다. 그리고 output이 존재하는데... 기존 그림과 차이는 임계치에 대해서 처음부터 input으로 지정한 것입니다. 실제 output 에 대해서 y = X*W + b이고 0을 기준으로 판단했기 때문에 처음부터 b를 입력으로 한 것입니다. 또한, bias는 상수이기 때문에 1의 실수배로 표현이 가능하고 input에는 x가 아닌 1로 표현했습니다. 

 

[Layer에 대한 구조]

위의 그림이 인공신경망의 Layer개념을 잘 표현하는 그림입니다. 

 

Input - Hidden(여러개 가능) - Output

 

전체 Layer의 시작과 끝은 전체 인공신경망내 Input과 output을 나타냅니다. Input은 최초 시작으로 들어오는 입력의 개수, output은 해당 신경망을 통해 결과를 보고자 하는 output의 개수입니다. 

Hidden은 해당 Input으로 output이 나오게하는 실질적인 인공신경망의 본체라고 할 수 있습니다. Hidden은 단일로 구성할 수도, 여러개의 Layer로 구성할 수도 있습니다. 

마지막으로 각 원모양은 node를 나타내며, 각 Layer는 node의 집합으로 구성됩니다. 화살표는 시작이 한 node의 출력이고, 끝이 한 node의 입력이 됩니다. 그리고 Full Connected Network가 가장 기본적인 인공신경망의 네트워크 입니다.

 

[명명규칙]

간단하게 예를 들어보겠습니다. 

 

해당 그림은 input layer에서 입력이 2개, hidden layer에서 node가 3개, 마지막으로 output layer에서 출력이 1개 입니다. 명명은 역전파를 기준으로 지정되는데, 지금은 일단 위에서부터 앞의 노드를 기준으로 이름을 붙인다고 생각하면 되겠습니다. 

X1 - X의 경우는 input layer에 해당하며 상위에 배치된 노드를 순서로 1부터 할당함
w 2 / 11

- text로 표기하기가 힘들어서 위에 그림으로 보면 w 옆에 위쪽에 2는 현재 Layer의 순번임

  하단에 숫자 2개 중 왼쪽은 오른쪽 Layer의 노드 순서, 오른쪽은 왼쪽 Layer의 노드 순서

 

  (헷갈릴 수가 있으나, 역전파에 대한 개념으로 뒤에서 앞으로 오는게 정방향이다 생각하면 좀 쉽습니다.)

Z 2 / 3 - Summation에 대한 결과를 나타내며, 위쪽에 2는 현재 Layer의 순번이고 아래의 3은 현재 노드 순서
b 2 / 2 - bias에 대한 내용을 나타내며, 위쪽에 2는 현재 Layer의 순번이고 아래의 2은 현재 노드 순서
a 3 / 2

- Activation Function에 대한 output을 나타내며, 위쪽에 3는 현재 Layer의 순번이고 아래의 2은

  현재 노드 순서

이렇게 해석이 가능합니다. 다음에는 인공신경망 각 노드에서 사용되는 활성화함수(Activation Function)에 대해서 알아보겠습니다.

 

- Ayotera Lab -

댓글