Neural Network 구조

박재한·2022년 2월 10일
0

Deep Learning

목록 보기
4/22
post-custom-banner

참고1
참고2

1. 인공 신경망(Artificial Neural Network,ANN)

딥러닝에서 가장 기본이 되는 개념은 바로 신경망(Neural Network)이다.
신경망이란 인간의 뇌가 가지는 생물학적 특성 중 뉴런의 연결 구조를 가리키며, 이러한 신경망을 본떠 만든 네트워크 구조를 인공신경망(Artificial Neural Network, ANN)이라고 부른다.
인간의 뇌에는 약 1,000억 개의 수많은 뉴런 즉 신경세포가 존재하며, 하나의 뉴런은 다른 뉴런에게서 신호를 받고 또 다른 뉴런에게 신호를 전달하는 단순한 역할만을 수행한다. 하지만 인간의 뇌는 이러한 수많은 뉴런이 모여 만든 신호의 흐름을 기반으로 다양한 사고를 할 수 있게 되며, 이것을 컴퓨터로 구현하도록 노력한 것이 바로 인공 신경망이다.
Imgur

1.1 입력 계층(Input Layer)

  • 입력 계층은 아무런 연산도 일어나지 않는다.
  • 신경망의 입력을 받아서 다음 계층으로 넘기는 역할
  • 계층의 크기 = Node의 개수 = 입력 Scalar의 수 = 입력 Vector의 길이

1.2 은닉 계층(Hidden Layer)

  • 은닉 계층은 입력 계층과 연결된 전결합 계층이다.
  • 입출력 관점에서 볼 때 드러나지 않는다고 하여 은닉 계층이라 한다.
  • 복잡한 문제를 해결할 수 있게 하는 핵심적인 계층
  • 얕은 신경망의 경우 1개의 은닉 계층만을 사용

1.3 출력 계층(Output Layer)

  • 출력계층은 은닉 계층 다음에 오는 전결합 계층이다.
  • 신경망의 외부로 출력 신호를 전달하는 데에 사용된다.
  • 신경망의 기능은 출력 계층의 활성 함수에 의해 결정된다.
  • 출력 계층의 크기 = 출력의 Scalar 수 = 출력 벡터의 길이

2. Neural Network 동작 설명

다음과 같은 Neural Network를 예로 들어 설명하겠다.
Imgur
입력 계층에는 i1,i2,i3i_1, i_2, i_3 3개의 node가 있고, 은닉 계층에는 h1,h2,h3,h4h_1,h_2,h_3,h_4 4개의 node(neuran, 뉴런)가 있으며, 출력 계층에는 o1,o2o_1,o_2 2개의 node가 있다.
입력 계층의 각각의 node에는 입력 x1,x2,x3x_1,x_2,x_3 가 연결되어 있다.
모든 계층의 노드들이 서로 모두 edge로 연결된 fully connected layer(전결합 계층)이며 각각의 edge에는 가중치(weight) wkw_k가 있다.

입력 계층과 은닉 계층 사이의 edge들에 가중치를 표시하면 다음과 같다.
Imgur
입력 계층의 노드와 은닉 계층의 노드 사이의 가중치는 wikw_{ik}로 표시되는데, i는 h node로의 연결순서를 나타내고, k는 i node로의 연결순서를 나타낸다. 예를 들어 i2i_2h3h_3에 연결될 때의 가중치는 w32w_{32}가 된다.

입력 x1,x2,x3x_1,x_2,x_3가 가중치와의 합성곱이 은닉 계층의 노드 h1,h2,h3,h4h_1,h_2,h_3,h_4로 전달이 되고 은닉 계층의 노드에서 activation function Φ\Phi를 거쳐 나온 output이 출력 계층의 노드로 전달이 된다. 이를 그림으로 표시하면 다음과 같다.
Imgur

은닉 계층의 출력은 다시 가중치와의 합성곱으로 결합하여 출력 계층의 노드 o1,o2o_1,o_2으로 전달이 되고 출력 계층의 노드에서 activation function Φ\Phi를 거쳐 나온 output이 최종 출력이 된다. 이를 그림으로 표시하면 다음과 같다.
Imgur

3. 입력과 가중치의 합성곱을 vector 연산으로 표시

Imgur
입력 x1,x2,x3x_1,x_2,x_3와 가중치 wikw_{ik}와의 합성곱을 행렬 연산으로 표시하면 다음과 같다.

[y1y2y3y4]=[w11w12w13w21w22w23w31w32w33w41w42w43][x1x2x3]=[w11x1+w12x2+w13x3w21x1+w22x2+w23x3w31x1+w32x2+w33x3w41x1+w42x2+w43x3]\begin{bmatrix} y_1 \\ y_2 \\ y_3 \\ y_4 \end{bmatrix}= \begin{bmatrix} w_{11} &w_{12} &w_{13} \\ w_{21} &w_{22} &w_{23} \\ w_{31} &w_{32} &w_{33} \\ w_{41} &w_{42} &w_{43} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix}= \begin{bmatrix} w_{11}\cdot x_1+w_{12}\cdot x_2+w_{13}\cdot x_3 \\ w_{21}\cdot x_1+w_{22}\cdot x_2+w_{23}\cdot x_3 \\ w_{31}\cdot x_1+w_{32}\cdot x_2+w_{33}\cdot x_3 \\ w_{41}\cdot x_1+w_{42}\cdot x_2+w_{43}\cdot x_3 \end{bmatrix}

은닉계층의 노드 h1h_1의 입력인 y1y_1에 관련된 가중치는 w11,w12,w13w_{11},w_{12},w_{13}이고 이를 벡터로 표현하면,(기본적으로 열벡터로 표현한다)
w1=[w11w12w13]\mathbf{w_1}= \begin{bmatrix} w_{11} \\ w_{12} \\ w_{13} \\ \end{bmatrix}
같은 방식으로 y2,y3,y4y_2, y_3, y_4에 관련된 가중치는
w2=[w21w22w23]w3=[w31w32w33]w4=[w41w42w43]\mathbf{w_2}= \begin{bmatrix} w_{21} \\ w_{22} \\ w_{23} \\ \end{bmatrix}\quad \mathbf{w_3}= \begin{bmatrix} w_{31} \\ w_{32} \\ w_{33} \\ \end{bmatrix}\quad \mathbf{w_4}= \begin{bmatrix} w_{41} \\ w_{42} \\ w_{43} \\ \end{bmatrix}
모두 모아서 행렬로 표시하면,
W=[w1,w2,w3,w4]=[w11w21w31w41w12w22w32w42w13w23w33w43](1)W=\begin{bmatrix} \mathbf{w_1}, \mathbf{w_2}, \mathbf{w_3}, \mathbf{w_4} \end{bmatrix}= \begin{bmatrix} w_{11} &w_{21} &w_{31} &w_{41}\\ w_{12} &w_{22} &w_{32} &w_{42}\\ w_{13} &w_{23} &w_{33} &w_{43}\\ \end{bmatrix}\qquad \cdots(1)
WW3×43\times 4행렬이고 입력 x\mathbf{x}3×13\times 1행렬이라 바로 곱해지지가 않는다. 그리고 앞의 합성곱 형식에 맞게 곱하려면,
[w1Tw2Tw3Tw4T]=[w1T,w2T,w3T,w4T]T=WT\begin{bmatrix} \mathbf{w_1}^T \\ \mathbf{w_2}^T \\ \mathbf{w_3}^T \\ \mathbf{w_4}^T \end{bmatrix}= \begin{bmatrix} \mathbf{w_1}^T, \mathbf{w_2}^T, \mathbf{w_3}^T, \mathbf{w_4}^T \end{bmatrix}^T= W^T
즉 가중치 행렬 WW의 transpose 형태(WTW^T)로 곱해져야 한다.
보통 Neural network의 구현과 같은 작업할 때 가중치 행렬이 (1)과 같은 형태로 주어지기 때문에 행렬 연산으로 합성곱 구할 때에는 가중치 행렬의 transpose 형태로 곱해져야 한다.

profile
바쁘게 부지런하게 논리적으로 살자!!!
post-custom-banner

0개의 댓글