본문 바로가기

ML & DL

혼자 해 보는 머신러닝 딥러닝 (7) 신경망의 구현

오늘은 행렬 연산을 이용한 간단한 신경망 구현에 대해서 살펴보게습니다. 

이전 강의에서도 신경망에 대한 언급과 내용을 이야기 해왔습니다. 신경망 계산에 필요한 행렬의 곱과 간단한 신경망의 구현 코드를 살펴 보겠습니다.


출처 : 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) 퍼셉트론에서 신경망으로