인공신경망Artificial Neural Network

계층Layer

노드와 층의 관점에서의 입출력

인공 신경망에서 노드는 벡터를 입력받고 상수를 출력한다고 보면 된다. 예컨대 이미지를 보고 자동차인지 사람인지 분간하는 신경망이 있다고 하면, 입력층의 노드는 이미지의 화소의 수와 같다. 만약 이미지가 64*64라고 한다면, 입력 노드의 수는 64x64x3 (3은 RGB) = 12288이다. 이때, 각각의 입력노드의 입력은 상수이고, 출력도 상수이다. 즉 1x1이다.

이러한 입력층의 출력은 모두 모아서, 은닉층의 첫번째 층에 입력으로 들어간다. 좀 더 자세히 말하자면, 첫 번째 은닉층의 각 노드들은 12288차원의 벡터(12288x1 보통 입력은 열벡터임)를 받으며, 출력은 상수이다. 그것을 각 층의 노드 수(N)만큼 쌓아서 다시 열벡터의 형식으로 N차원(Nx1)벡터를 다음 층 노드에 전달한다. 이것을 반복하여, 마지막 출력층에서는 2x1의 벡터를 결론으로 내뱉게 된다. 각 노드는 자동차일 확률과 사람일 확률을 표현한다.

이를 노드 입장이 아니라 층 입장에서 설명하면, 각 층은 입력으로 Nx1을 받고, Mx1(M은 본인 층의 노드 수)을 출력한다. 이것은 다음 층의 입력이 되고 그 다음 층은 Px1(본인 층의 노드 수 P)을 출력한다.

그런데, 노드에서 입출력은 어떻게 처리되는 것일까? 입출력을 위해 곱해주는 것을 가중치라고 한다. y = Wx + b 꼴로 곱해지며, 가중치는 입력이 Nx1일 때, 1xN이다. 층의 입장에서 가중치는 입력이 Nx1일 때, MxN이다. (M은 현재 층의 노드 수)

그래서 층의 입장에서 입출력은 y = Wx + b 으로 계산되는 셈이다.

배치Batch

한정된 메모리 내에서 학습을 빠르게 할 수 있도록 도와줌

활성화함수Activation Function

ex) Sigmoid, ReLU, Softmax 등 다양한 목적을 위한 함수들이 있다.

이러한 비선형 함수는 모델의 복잡성을 키우기 위해 필수적이라고 할 수 있다.

Softmax

소프트맥스함수의 soft는 작은 값은 여전히 작게, max는 큰 값은 크게 만드는 것을 의미한다.

신경망 학습

데이터 전처리

(1) Feature Scaling (2) 정규화Normalization

단위 등을 고려하여 데이터 스케일을 적절하게 통일하고 조정한다.

ANN은 용도에 따라 CNNRNN 으로 변용된다.