오늘은 행렬 연산을 이용한 간단한 신경망 구현에 대해서 살펴보게습니다.
이전 강의에서도 신경망에 대한 언급과 내용을 이야기 해왔습니다. 신경망 계산에 필요한 행렬의 곱과 간단한 신경망의 구현 코드를 살펴 보겠습니다.
출처 : http://blog.naver.com/PostView.nhn?blogId=htk1019&logNo=220980094465
위 그림은 간단한 신경망입니다. x1과 x2는 각각의 가중치를 거쳐서 출력 노드로
전달되고 있습니다. 신경망을 행렬의 곱으로 표현해 보면, X(2) * W(2*3) = Y(3)으로 나타낼 수 있습니다. 입력인 X는 x1, x2로 구성된 1 * 2의 행렬로 볼 수 있습니다. 가중치 W는 각각 ((1, 3, 5), (2, 4, 6))으로 된 2*3의 행렬로 표기할 수 있으며, 두 행렬의 곱인 출력 노드 Y는 y1, y2, y3로 구성된 3 * 1의 행렬곱 결과가 나타납니다. 이렇게 각각의 가중치를 행렬로 표기하면 신경망의 연산을 좀 더 쉽고, Hidden Layer가 많이 늘어나더라도 연산을 쉽게 수행할 수 있습니다. 신경망 연산을 코드로 보면 다음과 같습니다.
X = np.array([1, 2])
X.shape #출력결과 (2,)
W = np.array([[1, 3, 5], [2, 4, 6]])
print(W) #출력결과 [[1 3 5] / [2 4 6]]
W.shape #출력결과 (2, 3)
Y = np.dot(X, W)
print(Y) #출력결과 [5 11 17]
출처 : 위 내용 및 코드는 "밑바닥 부터 시작하는 딥러닝"을 참조하였습니다
==================================================
2017/09/21 - [ML & DL] - 혼자 해보는 머신러닝 (6) 활성화 함수 - ReLU
2017/09/21 - [ML & DL] - 혼자 해보는 머신러닝 (5) 활성화 함수 - Sigmoid
2017/09/20 - [ML & DL] - 혼자 해보는 머신러닝 (4) 퍼셉트론에서 신경망으로
'ML & DL' 카테고리의 다른 글
혼자 해 보는 머신러닝 딥러닝 (6) 활성화 함수 - ReLU (0) | 2017.09.21 |
---|---|
혼자 해 보는 머신러닝 딥러닝 (5) 활성화 함수 - Sigmoid (0) | 2017.09.21 |
혼자 해 보는 머신러닝 딥러닝 (4) 퍼셉트론에서 신경망으로 (0) | 2017.09.20 |
혼자 해 보는 머신러닝 딥러닝 (3) 다층 퍼셉트론과 XOR (0) | 2017.09.20 |
혼자 해 보는 머신러닝 딥러닝 (2) 단층 퍼셉트론의 구현 (0) | 2017.09.19 |