딥러닝 (Deep Learning)/딥러닝 기초

신경망의 구성, 구조 with python

DS지니 2021. 4. 11. 18:35
728x90
반응형

1. 신경망의 구성

신경망은 input layers(입력층), hidden layers(은닉층),  output layers(출력층)으로 나뉩니다.

사실 은닉층의 수가 최소 2개 이상이어야 deep하다고 할 수 있습니다. 즉, layer(층)이 총 3개 이상인 것을 신경망(딥러닝)이라고 합니다. (층을 셀 때 입력층은 포함x) 

단일퍼셉트론

위의 그림은 단일 퍼셉트론으로 입력층과 활성화함수, 출력층으로만 이루어져 있습니다. 가운데 노드는 입력층에 가중치를 곱하고 Bias를 더한 선형결합 연산 후 활성함수를 거치면 출력값이 도출됩니다.

다층퍼셉트론(mutilayer perceptron)

그럼 위의 그림은 무엇일까요? 

가운데 hidden layer(은닉층)이 1층 있습니다. 은닉층이 1개 이상이면 다층 퍼셉트론 이라고 합니다. 하지만 딥러닝(신경망)이라고 할 수는 없습니다.

위의 그림은 hidden layer가 최소 2개인 딥러닝의 조건을 만족하고 있습니다. 

 

2. 신경망 구조 with python

퍼셉트론 수식

# 네트워크 구조 생성 함수 정의
def init_network():
  network = {}
  network['W1'] = np.array([[0.1, 0.2, 0.3, 0.4], [0.1, 0.3, 0.5, 0.7], [0.1, 0.4, 07, 1.0]]) # 3 x 4
  network['B1'] = np.array([0.2, 0.4, 0.6, 0.8])
  network['W2'] = np.array([[0.1, 0.2, 0.3, 0.4], [0.1, 0.3, 0.5, 0.7], [0.1, 0.4, 0.7, 1.0], [0.2, 0.4, 0.6, 1.0]]) # 4 x 4
  network['B2'] = np.array([0.3, 0.5, 0.7, 0.9])
  network['W3'] = np.array([[0.1], [0.2], [0.3], [0.20]]) # 4 x 1
  network['B3'] = np.array([0.3])

  return network
# 순전파 함수
def forward(network, x):
  W1, W2, W3 = network['W1'], network['W2'], network['W3']
  b1, b2, b3 = network['B1'], network['B2'], network['B3']

  a1 = np.dot(x, W1) + b1
  z1 = sigmoid(a1) 	#은닉층에서도 활성함수 사용 가능
  a2 = np.dot(z1, W2) + b2
  z2 = sigmoid(a2)
  a3 = np.dot(z2, W3) + b3
  z3 = sigmoid(a3)  #출력층 활성함수
  y = z3
  
  return y
# 네트워크 제작
network = init_network()
# 샘플 데이터
x = np.array([1, 0.5, 0.7]) #입력층 값
# 순전파 실행
y = forward(network, x)
print(y)

 

x = 입력값 = 데이터셋의 특성 개수

y = 출력값 = 데이터셋의 레이블 개수

 

Q) y의 값의 차원의 형태는?

728x90
반응형