머신러닝

[딥러닝] 딥러닝 1단계: 신경망과 딥러닝 - 4. 얕은 신경망 네트워크 (1/2)

sa_woll 2024. 3. 25. 14:23

신경망 네트워크 개요

뉴런 열 하나하나마다 z와 a값을 계산한다.

 

로지스틱 회귀에선 z와 a를 한 번 계산했지만 신경망에서는 여러번 계산한다.

 

신경망에서도 역방향 계산을 하여 w와 b를 갱신한다.

신경망 네트워크의 구성 알아보기

input layer / hidden layer / output layer(최종 y햇 값을 계산.)

입력값과 출력값은 알 수 있지만 은닉층의 값은 알 수 없다. 

a: 이전 단계에서의 입력값을 다음 layer로 전달해주는 값. 활성값.

a^[1]는 (4,1) 벡터.

최종적으로 y햇의 값은 곧 a^[2]가 된다.(이전 층에서 넘어온 값들을 활성함수에 적용한 결과값) 로지스틱 회귀에서 a가 곧 y햇이 되는 것과 비슷하다.

이 신경망은 2층 신경망.(입력층은 세지 않는다.)

 

신경망 네트워크 출력의 계산

각 노드마다 두 개의 단계를 거친다.

1: z값 계산

2: 시그모이(z)값 계산.

 

[n]은 레이어 번호

아래첨자는 노드번호이다.

 

각 노드에 대한 z값과 a값을 계산하는 과정 또한 벡터화할 수 있다.

다음과 같이 z는 (4,3)의 벡터가 되고,(각 세 개의 x에 대해 4개의 값) b는 (4,1)의 벡터가 된다.(b는 x에 상관없이 노드마다 각각 x1 x2 x3에 대 같은 값을 가진다)

 

[1](레이어 1) 에 대해 다음과 같이 벡터화가 가능.

w에 대해 W[1], b에 대해 b[1], a에 대해 노드 1부터 4까지 a[1]

 

정리하여 벡터로 나타내면

 

이 네줄의 코드만 있으면 신경망의 출력값을 계산할 수 있다.

 

이때, x는 a[0]이고 y햇은 a[2]라는 것을 기억하자.

 

지금까지 한 것은 하나의 훈련 샘플에 관한 것이다.

많은 샘플에 대한 벡터화

다수의 훈련 샘플에 대해 벡터화하는 방법을 알아본다.

위와 같은 코드를 벡터화한다.

 

A에 대해 각각의 열이 한 훈련 샘플에 대한 활성값이다. 행은 각각의 은닉 유닛.

 

벡터화 구현에 대한 설명

앞 강의에서 벡터화한 것이 왜 올바른 식인지, 왜 그랬는지를 알아본다.

 

x와 W벡터를 곱하면 열벡터가 된다.

Z[1]는 W[1]와 X를 곱한 것을 가로로 쌓은 벡터다.

X에는 훈련세트가 가로로 쌓여 있다.