티스토리 뷰

입력층에서 출력층으로 연산을 진행하는 과정을 순전파라고 한다. 단순히 입력데이터가 출력층으로 출력되는 과정이다. 

입력층이 3개, 출력층이 2개인 신경망에서 6개의 가중치가 나온다.

 

이를 행렬곱 관점에서 3차원 벡터에서 2차원 벡터가 되기 위해서 3*2 행렬을 곱했다고 생각하면 된다. 

y1에 연결되는 그래프는 주황색, y2에 연결되는 그래프는 초록색으로 표현했다.

 

여기서 편향 b는 생략되는 경우가 많다. 편향의 개수는 출력 차원의 개수와 동일하다.

가중치 6개와 편향의 개수 2개로 학습가능한 매개변수가 8개이다.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

model = Sequential()

# 3개의 입력과 2개의 출력
model.add(Dense(2, input_dim=3, activation='softmax'))
model.summary()

y1과 y2를 구하는 과정을 수식으로 표현하면 다음과 같다.

여기까지는 데이터 중 한개의 샘플만을 처리한다고 가정했다. 이번엔 4개의 샘플을 동시에 병렬적으로 처리한다고 생각해본다.

4개의 샘플을 하나의 행렬  X로 정의하고 순전파를 행렬곱으로 표현한다.

샘플은 늘어났지만 여전해 학습가능한 매개변수의 수는 8개이다.

 

이번엔 은닉층이 있는 경우를 본다.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

model = Sequential()

# 4개의 입력과 8개의 출력
model.add(Dense(8, input_dim=4, activation='relu'))

# 이어서 8개의 출력
model.add(Dense(8, activation='relu'))

# 이어서 3개의 출력
model.add(Dense(3, activation='softmax'))

입력층 : 4개의 입력 8개의 출력

은닉층1 : 8개의 입력 8개의 출력

은닉층2 : 8개의 입력 3개의 출력

출력층 : 3개의 입력 3개의 출력

 

1.입력층 -> 은닉층1

입력층에서 은닉층1로의 연결은 다음과 같이 표현이 가능하다.

4개의 입력 데이터를 1행4열로 표현하고 이를 4행8열의 가중치와 곱한다. 여기에 8개의 편향을 더해 1행8열의 출력값을 얻는다.

2.은닉층1 -> 은닉층2

3.은닉층2 -> 출력층

이렇게 순전파를 통해 예측값을 구하고 다음에 인공 신경망은 예측값과 실제값으로 오차를 계산하고 오차로부터 가중치와 편향(학습가능한 매개변수)을 업데이트한다. 이 과정이 학습 단계이다.

'머신러닝 > 딥러닝' 카테고리의 다른 글

케라스 훑어보기  (1) 2022.09.16
과적합을 막는 방법  (0) 2022.09.16
손실 함수, 옵티마이저, 에포크  (1) 2022.09.15
인공 신경망  (0) 2022.09.15
퍼셉트론  (0) 2022.09.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함