먼저 3주차의 과제를 리뷰해본다.주어진 이미지 데이터들이 고양이인지 아닌지를 판별하는 모델링 과정을 코딩하는 과제가 주어졌었다.이미지 데이터는 64 x 64를 3채널(RGB)로써 * 3 이되어 12288의 shape을 가지게 되었고이를 고양이인지 아닌지를 판별하니 결과를 0과 1로 도출하는 Sigmoid함수를 Activate Function으로 하여 모델링 하였다train accuracy : 99%test accuracy : 82%를 얻었지만 우리 집 강아지 사진을 넣어본 결과 고양이란다..ㅜ
activation의 접선 기울기가 0에 가까워지면 -> dw의 감소 -> gradient descent가 잘 일어나지 않게 된다.
vanishing gradient (학습이 일어나지 않음)
이러한 현상이 sigmoid를 사용했을 때에 일어날 수 있다.
요즈음은 Relu함수를 activation function으로 사용.
장점 : binary classification의 output layer라는 특수한 상황에 적합
단점 : gradient descent 속도 저하
장점 : sigmoid보다는 vanishing gradient가 덜하다. ( g'(z)의 최댓값이 1 )
단점 : gradient descent 속도 저하
장점 : sigmoid, tanh의 vanishing gradient 문제 해결
단점 : 그래도 절반이 gradient가 0 ( dying ReLU 현상 )
장점 : dying ReLU 현상을 해결
단점 : ReLU 보다는 비선형성이 덜하다
딥러닝은 거대한 합성함수이다.
구분을 위한 왜곡된 함수가 필요 -> 일차함수가 아니어야 한다 -> non-linear
그림자료 -> 다양한 모양의 함수를 만들 수 있다.
w,b가 gradient descent에 따라 변하면서 최적의 딥러닝 함수를 찾는다.
대책
w[l] = 0.01 * np.random.randn(shape)