딥러닝을 이용한 자연어처리 입문 # 8-2. (3). 행렬곱으로 이해하는 신경망
1. 순전파
- 입력값 → 입력층, 은닉층 지나며 각 층에서의 가중치로 연산돼 출력층으로 향해 → 예측값 추출.
2. 행렬곱으로 순전파 이해하기
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()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 2) 8
=================================================================
Total params: 8
Trainable params: 8
Non-trainable params: 0
_________________________________________________________________
#8개의 params가 예측되어졌다고 생각할 수 있다.
- 3*2의 행렬이 곱해졌다고 생각할 수 있고, + 2개의 절편 → 총 8개의 param이 추정되었다고 볼 수 있다.
Y = XW + B
3. 행렬곱으로 병렬 연산 이해하기
ex) 4개의 샘플을 한 번에 계산한다고 생각. 4개의 샘플을 하나의 행렬 X로 정의
4. 행렬곱으로 다층 퍼셉트론의 순전파 이해하기
- 코드로 구현
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential()
# 4개의 입력과 8개의 출력
model.add(Dense(8, input_dim=4, init='uniform', 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
- layer1에서 입력 행렬 X의 크기 = 14, 출력 행렬 크기 = 18.
이후 Y1*8을 통해 m,j,n 모두 추정 가능
2. 은닉층1 ⇒ 은닉층2
- 같은 방식으로 X에 다시 들어간다고 생각하면 W행렬의 크기 구할 수 있음
3. 은닉층2 ⇒ 은닉층3
- 입력층 → 은닉층 → 출력층에 대해서 연산을 가정하고 행렬 크기를 추정하고,
- 앞으로 돌아가 오차를 줄일 수 있도록 가중치와 편향을 업데이트 하는 작업을 계속해서 반복화해주는 것
(BackPropagation)
'공부하는 습관을 들이자 > Deep Learning (NLP,LLM)' 카테고리의 다른 글
[딥러닝 자연어처리] 8-4. (4.) 역전파 이해하기 - (5) 과적합을 막는 방법들 (0) | 2023.12.19 |
---|---|
[딥러닝 자연어처리] 8-3. (4) 딥러닝의 학습 방법 (0) | 2023.12.18 |
[딥러닝 자연어처리] 8. 1) 퍼셉트론 ~ 2) 2. 인공 신경망 훑어보기 (0) | 2023.12.14 |
[딥러닝 자연어처리] 7. 머신 러닝 개요 7) ~ 9) (0) | 2023.12.13 |
[딥러닝 자연어처리] 7. 머신 러닝 개요 4) ~ 6) (0) | 2023.12.12 |