로지스틱 리그레션을 이해하면 뉴럴네트가 어떻게 동작하는 지 이해 어렵지 않다.
동작원리 살펴보자
뉴럴네트워크 보여주는 그림이다.
로지스틱에서도 이런것 봤었다.
하나의 노드만 봐보자
피처가 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 |