ML

행렬곱으로 이해하는 신경망

지미닝 2024. 6. 5. 16:07

순전파 : 인공 신경망에서 입력층에서 출력층 방향으로 연산을 수행하는 과정
주어진 입력이 입력층으로 들어가서 은닉층을 지나 출력층에서 예측값을 얻는 과정 ➡️ 결정적으로 행렬의 곱셈으로 이해할 수 있다. 다층 퍼셉트론 내의 가중치와 편향의 개수를 추정하는 방법에 대해서 학습힌다.

1. 순전파(Forward Propagation)

활성화 함수, 은닉층의 수, 각 은닉층의 뉴런 수 등 딥 러닝 모델을 설계하고나면 입력값은 입력층, 은닉층을 지나면서 각 층에서의 가중치와 함께 연산되며 출력층으로 향한다. 출력층에서 모든 연산을 마친 예측값이 나온다.

순전파 : 입력층 ➡️ 출력층

2. 행렬곱으로 순전파 이해하기


위와 같은 인공신경망이 있다고 할 때, 입력의 차원은 3, 출력의 차원이 2인 위 인공신경망을 구현한다면 아래와 같다.

소프트맥스 회귀를 한다고 가정하고 활성화 함수는 소프트맥스 함수를 임의로 기재한 것이다. (소프트맥스 회귀 모델을 만들었다!라고 생각)
출력 벡터의 차원을 2로 두면 이진 분류를 수행하는 모델이 된다. 즉, 소프트맥스 회귀로도 이진 분류는 된다.

케라스에서는 .summary()를 사용하면 해당 모델에 존재하는 모든 매개변수를 확인할 수 있다.

매개변수의 수가 8개라고 나온다. (학습가능한 매개변수 w,b가 총 합해서 8개다)

외 모델은 입력의 차원이 3, 출력의 차원이 2이다. 신경망의 용어로서 표현하면, 입력층의 뉴런이 3개, 출력층의 뉴런이 2개라고 할 수 있다.총 6개의 화살표가 존재하는데, 이는 위 신경망에서 가중치가 6개임을 의미한다.

행렬곱 관점에서는 3차원 벡터에서 2차원 벡터가 되기 위해서 3x2 행렬을 곱했다고 이해할 수 있다. 행렬의 각각의 원소가 각각의 가중치가 되는 것이다. 각각 연결되는 원소를 각각 색깔로 표현학고 있다.

위의 그림에서 각각의 h를 구하는 식은 아래와 같다.

좀 더 간단히 식을 표현하기 위해 입력 x1,x2,x3을 벡터 X f로 명명한다.

이와 같이 각각의 가중치, 편향 벡터, 출력 벡터를 행렬로 표현하면 아래와 같다.

3. 행렬곱으로 병렬 연산 이해하기

인공 신경망을 행렬곱으로 구현할 때 행렬곱을 사용하면 병렬 연산도 가능하다.

인공 신경망의 4개의 샘픙르 동시에 처리하고 있지만, 여기서 학습가능한 매개변수의 수는 여전이 8개이다.
➡️ 배치연산 : 이렇게 인공 신경망이 다수의 샘플을 동시에 처리하는 것

4. 행렬곱으로 다층 퍼셉트론의 순전파 이해하기.


위와 같은 인공신경망을 케라스로 구현해본다면 아래와 같이 구현할 수 있다.

1) 코드로 구현하기

케라스를 사용하면 이렇게 간단하게 층을 딥하게 쌓은 딥러닝 모델을 구현할 수 있다.

()괄호 안의 값은 각 층에서의 뉴런의 수를 의미하며, 입력층부터 출력층까지 순차적으로 인공 신경망의 층을 한 층식 추가하였다.

2) 행렬의 크기 추정해보기

  • 입력층: 4개의 입력과 8개의 출력
  • 은닉층1: 8개의 입력과 8개의 출력
  • 은닉층2: 8개의 입력과 3개의 출력
  • 출력층: 3개의 입력과 3개의 출력

각 층마다 생기는 가중치와 편향 행렬 크기를 추정해보자. (단 배치 크기는 1을 가정한다.)

1. 입력층 ➡️ 은닉층1

위에서 벡터와 행렬 연산을 배운 바에 따르면, 입력 행렬, 가중치 행렬, 편향 행렬, 출력 행렬은 다음과 같은 크기 관계를 가진다.

입력층1의 입력 행렬 크기는 1x4이다. 출력 행렬 크기는 8개이므로 그에 따라 출력 행렬의 크기는 1x8이 된다.

가중치 행렬의 행은 입력 행렬의 열과 같아야 하므로 아래와 같다.

편향 행렬은 출력 행렬의 크기에 영향을 주지 않으므로 편향 행렬의 크기는 출력 행렬의 크기와 같다.

가중치 행렬의 열은 출력 행렬의 열과 동일해야 한다.

입력층과 은닉층1 사이의 가중치 행렬과 편향 행렬의 크기를 구했다.

2. 은닉층1 ➡️ 은닉층2

3. 은닉층2 ➡️ 은닉층3

relu와 softmax가 존재하지만, 활성화 함수는 행렬에 영향을 주지 않는다.

위의 단계는 행렬의 크기를 주정한 것이었고, 이 다음으로 해야할 일은 예측값과 실제값으로부터 오차를 계산하고, 오차로부터 가중치와 편향을 업데이트해야한다.
인공 신경망은 순전파와는 반대 방향으로 연산을 진행하며 가중치를 업데이트하는데, 이 과정을 역전파라고 한다.