본문 바로가기
Python/deep learning

신경망의 가중치를 행렬로 표현하기

by 철이88 2023. 3. 28.
반응형

신경망에서는 입력 신호가 뉴런에 보내질 때 가중치를 곱하게 됩니다. 가중치가 곱해진 입력 신호는 다시 활성화 함수에 의해 출력값으로 나오게 되는 것인데요. 여기서 가중치들은 행렬로 표현될 수 있습니다. 이것이 deep learning에 선형대수가 이용되는 부분인데요. 이번 포스팅에서는 간단한 신경망 시스템을 예로 가중치를 행렬로 표현하는 것을 알아보겠습니다.

 

1. 퍼셉트론의 구조

먼저 간단한 퍼셉트론의 구조를 보겠습니다.

여기서 x는 입력 신호, w는 가중치, y는 출력을 의미합니다.

이 퍼셉트론의 동작 원리는 간단합니다.

 

예를 들어, 활성화 함수가 계단 함수이면,

$y$ =  $\left\{\begin{matrix} 1 \ (b + x_{1}w_{1} + x_{2}w_{2} > 0) \\ 0 \ (b + x_{1}w_{1} + x_{2}w_{2} \leq 0) \end{matrix}\right.$

와 같이 출력 값을 주는 것입니다. 

 

여기서 b는 편향이라고 하며, 가중치가 곱해진 입력 신호가 -b(임계치) 보다 크면 1, 작으면 0을 주는 원리입니다.

 

2. 신경망에서 가중치를 행렬로 표현하기

위에서 본 퍼셉트론들로 아래와 같이 좀 더 복잡한 신경망을 구축할 수 있습니다. 

입력 신호에 가중치를 곱하는 과정은 행렬을 이용하면 간단해지게 됩니다.

위의 예는 매우 간단한 경우이고, 만약 입력과 출력이 상당히 많다면 가중치를 곱하는 것도 많은 연산을 필요로 합니다.

여기서 가중치를 행렬로 만들면, 행렬의 곱 한 번의 연산으로 표현이 됩니다.

 

그러면 가중치들을 행렬로 표현해 보겠습니다.

위 그림의 예에서 1번 입력에서 1번 출력으로 가는 화살표의 가중치를 $w_{11}$으로, 2번 입력에서 3번 출력으로 가는 화살표는 $w_{23}$으로 썼습니다.

 

그러면 가중치의 행렬 $W$는

$W$ = $\begin{pmatrix} w_{11} & w_{12} & w_{13} \\ w_{21} & w_{22} & w_{23} \end{pmatrix}$

으로 쓸 수 있습니다.

 

 

반응형

댓글