본문 바로가기
Deep learning

2-4.Neural Network

by 괴로운데이빗 2020. 8. 6.

로지스틱 리그레션을 이해하면 뉴럴네트가 어떻게 동작하는 지 이해 어렵지 않다.

동작원리 살펴보자

 

 

뉴럴네트워크 보여주는 그림이다.

로지스틱에서도 이런것 봤었다.

하나의 노드만 봐보자

피처가 3개 x1, x2,x3

여기에 바이어스텀이 추가될 수 있다. x0또는 b

각 피처마다 파라미터 w1, w2,w3

이것을 계산하여 로지스틱리 펑션에 넣게 되고

로지스틱 리그레션에서는 그 자체가 프레딕션h가 된다.

이 계산한 값을 a라고 하자.

첫번째 노드의 값이니까 a1이라고 하자.

동그라미 : 레이어

첫번째 레이어의 첫번째 값이니까 a1[1]

 

같은 작업을 두번째 노드할 수 있다.

다른 W, b값 필요하다. b', w4,w5,w6

이걸로 계산한 값이 1레이어 2번째 값이니 a2[1]

 

파리미터의 개수는

4(노드마다 다른 b,w)*4(노드개수) = 16개

3개피처 노드4개

바이어스텀으로 1피처에 1더해줘서

4*4=16

 

여기까지는 첫번재 레이어였고

이제 두번째 레이어를 살펴보자

첫번째 레이어를 잊어보자.

두번째만 봐보면 로지스틱과 같은 구조이다.

a1[1]*w1[2] + a2[1]*w2[2]+ ... + a4[1][w4[2]+b[2]

이런식으로 표현이 가능하고

이것을 시그모이드평션, 로지스틱 평선에 넣어줄 수 있다.

그 결과값을 a1[2]라고 볼 수 있다.

이것이 두번재 레이어의 노드이다.

 

이후 계산이 없으므로 이 값이 y햇 즉 hypothesis값이 된다.

 

이 구한 값과 y랑 비교를 해서 에러값을 구한다.

이 에러값을 구하면 그레디언트 디센트를 써줄 수 있고

코슽, w[2]들에 대한 데리버티브 값들을 구해줄 수 있다.

이 데리버티브 값으로 그레디언트 디센트를 쓸 수 있다.

w=w-알파*w에대한J미분

체인룰에 의해서 첫번째 레이어의 역방향으로 데리버티브 값들을 구해줄수있고
이 데리버티브값들을 바탕으로 앞부분 파라미터에 대해서도 그래디언트 디센트 할 수 있다.

 

뒷부분의 파라미터수를 보면

노드4개, 1개이므로

5*1개의 파라미터가 생기고

이 뉴럴네트워크에는 총 21개의 파라미터가 생기게 된다.

 

로지스틱 리스레션에서는 피처가 3개일때 파라미터 수가 4개밖에 없었다.

이해비해 뉴럴네트워크는 파라미터 개수가 크다.

 

<정의>

training데이터를 넣어준다.

x1, x2, x3 피처들을 바탕으로 이니셜라이즈 된 파라미터에 대해서 a[1]값들이 구해진다.

구해진 a[1]을 바탕으로 a[2]가 계산이 된다.

이 과정을 포워트 프로퍼게이션이라고 한다.

즉, 피처로부터 prediction값이 계산되는 과정

 

이 에러를 바탕으로 체인룰에 의해서 그레디언트 디센트 해주면서 파라미터 업데이트 해주는 과정

반대로 가기에 백워드 프로퍼게이션이라고 부른다.

 

첫번째 train데이터 넣어주는 부분을 input layer

그 다음 부분(a[1]부분)은 어떤값이 있는지 처음에 잘 알수없다.

여기는 포워드프로퍼게이션에 의해 계산되는 값들인데, hidden layer라고 한다.

마지막(a[2]부분)은 output layer라고 한다.

 

다음 슬라이드는 정리하는 슬라이드.

포워드 프로퍼게이션이 어떻게 이루어지는지 보여지는 식.

w들이 많은데, 매트릭스로 표현W하겠다.

 

x가 여러개면 벡터, 매트릭스가 되겠다.

z[1]값을 시그모이드펑션,로지스틱펑션에 넣게 되면 0~1사이 값을 얻을 것이고

이것이 다시 인풋이 되어 이것에 대한 파라미터 학습이 되면

z[2] 두번재레이어를 얻을수있다.

이것을 다시 시그모이드에 넣어주면 최종값인 a[2]값을 얻을 수 있다.

이것이 prediction 값이 되는 것이다.

 

뉴럴네트워크에서 나아가서 이 깊이를 더 깊게 만들 수 있다.

레이어들이 딥하게 쌓여있기에 딥 뉴럴 네트워크라고 부른다.

 

실제로 딥 뉴럴네트워크 썼을때 결과가 상당히 좋아지는 경우가 많다.

메디컬분야에서도 이를 썼을때 기존 로지스틱, 뉴럴네트워크보다 성능 좋을때가 많다.

 

 

Activation Function에 대해 살펴보자.

이전 슬라이드에서는 시그모이드 값을 사용했었는데 이는 0~1사이 값으로 나오게하는 시그모이드펑션을 많이 이용한다.

이것 대신에 tanh펑션쓰기도 한다.

reLU, leakly ReLU쓰기도 한다.

 

네트워크 지나쳐서 마지막레이어에서는 프레딕션값이 0~1사이로 나와야한다.

이경우에는 보통 시그모이드를 사용한다.

 

하지만 중간단계에서 시그모이드 사용하게되면 미분했을때 0이 되는 경우가 많아서

백프로퍼게이션이 잘 안되는 문제가 있다.

 

이를 해결하기 위해 다른 방식의 non linear activation function이 제안되고 있고,

그 중에서도 ReLU가 잘 동작한다.

그래서 보통 뉴럴네트워크, 딥뉴럴네트워크 만들때 중간의 activation function은 ReLU많이 사용한다.

 

간단한 예시로 파라미터 2개만으로 계산을 해보자

g(wx+b) 렐루펑션에 넣음

0보다 작으면 0값이 되고, 0보다 크면 그 값을 그냥 이용

 

다음시간에서는 이를 영상분류에서 어떻게 사용하는지 살펴보자

'Deep learning' 카테고리의 다른 글

2-7. Classification with demographic scores  (0) 2020.08.09
2-6.Medical image classification  (0) 2020.08.08
2-5.Image Classification  (0) 2020.08.08
2-3. Logistic Regression  (0) 2020.07.28
2-2.Linear Regression  (0) 2020.07.06
1-1.Introduction to medical image classification  (0) 2020.07.01
1-7. Magnetic Resonance Imaging (MRI)  (0) 2020.06.15