열정/개인 공부

네트워크 구조

lime9 2024. 2. 20. 16:43

2024.02.20 - [열정/개인 공부] - 뉴런 모델

 

뉴런 모델

단일 입력 뉴런 (single-input neuron) 스칼라 입력 p가 스칼라 가중치 (weight) w와 곱해지고, 다른 스칼라 입력 1은 편향 (bias 또는 offset) b와 더해진다. 이 둘은 합산기 (summer)에 전달되어 합해진다. 합산

mydaydream.tistory.com

 

위의 포스팅을 통해 뉴런을 정의했다. 하지만 일반적으로 입력이 여러 개라도 하나의 뉴런으로는 충분치 않다. 계층 (layer)에서 병렬로 작동하는 뉴런이 5~10개 정도 필요할 수 있다.

 

 

뉴런 계층

S개 뉴런 단층 네트워크 (single-layer network)를 아래 그림에서 볼 수 있다. R개 입력은 각 뉴런에 연결되며, 가중치 행렬은 S개 행을 갖는다. 일반적으로 계층의 입력 개수는 뉴런 개수와 다르다(즉, $R \neq S$).

 

S개 뉴런 계층

 

하나의 계층에 있는 모든 뉴런이 같은 전달 함수를 가질 필요는 없다. 입력 벡터 요소는 가중치 행렬 $\mathbf{W}$를 통해 네트워크로 입력된다.

$$\mathbf{W}=\begin{bmatrix}
 w_{1, 1}& w_{1, 2} & \cdots & w_{1, R} \\
 w_{2, 1}& w_{2, 2} & \cdots & w_{2, R} \\
 \vdots &\vdots  & \ddots  & \vdots \\
 w_{S, 1}& w_{S, 2} & \cdots & w_{S, R} \\
\end{bmatrix}$$

 

 

S개의 뉴런, R개의 입력 단층 네트워크를 축약 표기법으로 그리면 다음과 같다.

 

S개 뉴런의 계층 (축약 표기법)

 

 

다층 뉴런

이제 계층이 여러 개인 네트워크를 살펴보자. 이때, 계층을 구분하기 위한 표기로 위첨자를 사용할 것이다.

 

3계층 네트워크

 

계층의 출력이 네트워크의 출력이라면 출력 계층 (output layer)이라고 부르며, 나머지는 은닉 계층 (hidden layer)이라고 부른다. 위의 네트워크는 출력 계층 하나와 은닉 계층 2개로 구성되어 있다. 이 3계층 네트워크도 축약 표기법으로 그릴 수 있다.

 

3계층 네트워크 (축약 표기법)

 

다층 네트워크는 단층 네트워크보다 강력하다. 예를 들어, 첫 번째 시그모이드 계층과 두 번째 선형 계층을 갖는 2계층 네트워크는 대부분의 함수를 임의로 잘 근사하도록 훈련될 수 있다. 단층 네트워크만으로는 임의의 함수를 근사할 수 없다.

 

네트워크의 입력과 출력 개수는 문제 명세 (problem specification)에 따라 정의된다. 따라서 입력으로 사용될 변수가 4개라면 네트워크 입력은 4개다. 마찬가지로, 네트워크의 출력이 7개라면 출력 층에 뉴런이 7개 있어야 한다. 출력이 -1이거나 1이라면 대칭 하드 리밋 전달 함수가 사용되어야 한다. 따라서 단층 네트워크의 구조는 거의 전적으로 문제 명세에 의해 결정되며, 입력 개수와 출력 개수, 출력 신호의 특성은 문제 명세에 기술되어 있다.

 

은닉 계층은 이와 다르게 필요한 뉴런 수가 문제 명세에 기술되어 있지 않다. 최적의 뉴런 수를 예측할 수 있는 문제도 거의 없기 때문에 활발히 연구가 진행되고 있다.

 

계층 개수의 경우 실제 신경망은 대부분 2개 또는 3개 정도의 계층을 갖는다. 4개 이상의 계층은 거의 사용되지 않는다.

 

뉴런은 편향을 선택적으로 사용할 수 있다. 편향은 네트워크에 추가 변수를 제공하므로 편향이 이는 네트워크는 편향이 없는 네트워크보다 강력할 것으로 기대할 수 있으며, 실제 그렇기도 하다. 어떤 경우에는 단순히 네트워크 파라미터 수를 줄이기 위해 편향을 제외시킨다.

 

 

순환망

순환망을 살펴보기 전에 간단한 빌딩 블록을 먼저 살펴보자. 첫 번째 블록은 지연 (delay) 블록이다.

 

지연 블록

 

지연 출력 $ \textbf{a}(t) $는 입력 $\textbf{u}(t)$로부터 다음과 같이 계산된다.

$$\textbf{a}(t)=\textbf{u}(t-1)$$

따라서 출력은 한 단계 지연된 입력이다. 연속 시간 순환망 (continuous-time recurrent network)에서 사용하는 또 다른 빌딩 블록으로는 적분기 (integrator)가 있다.

 

적분기

 

지연 출력 $ \textbf{a}(t) $는 입력 $\textbf{u}(t)$로부터 다음과 같이 계산된다.

$$\textbf{a}(t)=\int_{0}^{t} {\textbf{u}(\tau )}d\tau +\textbf{a}(0)$$

 

이제 순환망을 소개할 준비가 됐다. 순환망 (recurrent network)은 피드백 (feedback)이 있는 네트워크다. 출력의 일부가 입력으로 연결된다. 아래 그림은 이산 시간 (discrete-time) 순환망을 보여 준다. 네트워크 출력은 과거의 출력으로 계산된다.

 

순환망

 

순환망은 피드포워드 (feed-forward) 네트워크보다 잠재적으로 매우 강력하며, 시간적 행동을 보여줄 수 있다.

 

 

 

구조의 선택 방법

문제 명세는 다음의 방식으로 네트워크를 정의하도록 도와준다.

  1. 네트워크의 입력 개수 = 문제의 입력 개수
  2. 출력 계층의 뉴런 개수 = 문제의 출력 개수
  3. 출력 계층의 전달 함수 선택은 출력에 관한 문제 명세에 따라 어느 정도는 결정된다.