1. 순방향 전파의 파이썬 구현
- 신경망의 각 계층은 입력값을 받아 가중치와 곱하고 편향을 더한 뒤, 비선형 활성화 함수를 적용하여 다음 계층으로 전달
순방향 전파(Forward Propagation)는 입력에서 출력까지 데이터를 전달하며 예측값을 계산하는 과정
Python 코드 예시:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def dense(a_in, W, b):
z = np.matmul(a_in, W) + b
a_out = sigmoid(z)
return a_out
np.matmul은 벡터 또는 행렬 곱셈을 수행하여 효율적인 연산이 가능
- 반복문보다 벡터화를 통해 학습 및 예측 속도를 획기적으로 향상시킬 수 있음
2. 텐서와 행렬 연산의 이해
Tensor는 다차원 배열로, TensorFlow에서 데이터는 일반적으로 2D 행렬로 표현됨
- 예:
(1, 2) 입력은 1x2 행렬로 처리되어 배치 학습에 유리함
- 행렬 곱셈의 조건: A (m×n) 와 B (n×p) → AB는 (m×p) 크기의 행렬
- 내적(dot product)을 통해 각 뉴런의 출력값을 계산할 수 있음
행렬 곱셈 예시:
- 입력 A: 2x3, 가중치 W: 3x4 → 출력 Z: 2x4
- Z의 각 원소는 A의 한 행과 W의 한 열의 내적 결과
3. 인공 일반 지능(AGI)에 대한 고찰
4. 신경망의 벡터화 구현
- 신경망을 벡터화(Vectorization)하면 GPU의 병렬 연산을 활용하여 연산 속도를 크게 향상시킬 수 있음
- for-loop 기반 코드 대신
matmul, broadcast 등을 활용해 효율적으로 구현
Z = np.matmul(A_in, W) + b
A_out = sigmoid(Z)
- 입력 X가 여러 샘플을 포함하는 경우에도 병렬로 처리 가능
- 신경망 학습과 추론의 핵심 연산은 대부분
행렬 곱셈에 기반함