매직코드
article thumbnail

 

심층 신경망은 무엇인가?

우리는 로지스틱 회귀를 매우 얕은 모델(1층 신경망)이라고 하고 은닉층이 2개 이상 있는 경우 상대적으로 깊은 신경망이 있다고 한다. 이것이 심층 신경망이다. 지난 몇년동안, 기계학습 커뮤니티의 인공지능이 얕은 모델로는 할 수 없는 학습을 심층 신경망으로 가능하게 하는 함수가 있다는 것을 발견했다. 하지만 얼마나 깊은 신경망을 사용해야 하는지 미리 정확하게 예측하기는 어렵다.

 

 

심층 신경망을 바로 사용하기 보다는 보통 로지스틱회귀를 먼저 시도하고 결과값이 별로이면 두개의 은닉층을 가진 모델을 사용한다.

개발 설정 과정에서 은닉층을 또 다른 파라미터로 생각하고 다양한 값을 시도해 검증데이터에서 평가한다.

 

심층 신경망 표기법

4층의 신경망을 예시로 표기법을 알아본다.

L : 네트워크의 층 수 --> L = 4

n[l] : l층에 있는 유닛 개수

    n[0] = nx = 3 = 입력층

    n[1] = 5

    n[2] = 4

    n[3] = 3

    n[4] = n[L] = 1 = 출력층

a[0] : 입력특장 X

a[L] : 예측된 출력값 y

 

 

 


정방향전파와 역방향전파

수식설명이 많아서 동영상으로 보는게 이해하는 데 도움이 될 것 같다.

 


행렬의 차원을 알맞게 만들기

심층 신경망을 만들 때 행렬의 차원을 맞추는 것이 중요하다.

5층 신경망의 경우 각 층에 유닛이 몇개 있는지를 확인한다. 각 층마다 Z = Wx +b 라는 수식에 맞춰 각 행렬을 구해주면 되는데, 가장 직관적으로 확인할 수 있는 행렬은 Z에 해당하는 행렬이다. Z행렬은 (해당 은닉층의 유닛, 1) 이라는 행렬공식이 있기 때문에 Z에 대한 행렬을 먼저 구해주고 X행렬을 구해준다. X행렬도 어렵지 않은게 (앞에서 받은 유닛 수, 1)이라는 행렬공식이 있다. 행렬을 구할 때 b는 덧셈으로 연결되기 때문에 행렬의 모양은 Wx와 같은 모양이 된다.

 

1층에 대한 행렬을 계산하려는 경우 Z(1층 유닛수, 1) = W(?, ?) x(0층 입력층의 특성 수, 1)로  먼저 Z와 X 행렬을 구한 이후 계산식에 맞게 W행렬을 찾아주면 된다. 아래는 심층 신경망의 행렬을 구하는 예시다.

 

0층 : 입력층 2특성

1층 : 은닉층 3유닛 --> Z(3, 1) = W(3, 2) x(2, 1) + b(3, 1)

2층 : 은닉층 5유닛 --> Z(5, 1) = W(5, 3) x(3, 1) + b(5, 1)

3층 : 은닉층 4유닛 --> Z(4, 1) = W(4, 5) x(5, 1) + b(4, 1)

4층 : 은닉층 2유닛 --> Z(2, 1) = W(2, 4) x(4, 1) + b(2, 1)

5층 : 출력층 --> Z(1, 1) = W(1, 2) x(2, 1)

 


 

01. Intro - 앤드류 응(Andrew Ng)교수님 머신러닝/딥러닝 한글자막 공부하기

02. 경사하강법 Gradient Descent - 앤드류 응(Andrew Ng)교수님 머신러닝/딥러닝 한글자막 공부하기

03. 얕은 신경망 네트워크 - 앤드류응(Andrew Ng)교수님 머신러닝/딥러닝 한글자막 공부하기

04. 심층 신경망 네트워크 - 앤드류응(Andrew Ng)교수님 머신러닝/딥러닝 한글자막 공부하기

 

 

 

 

profile

매직코드

@개발법사

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!