1. Shallow Neural Networks (Quiz)
- X는 각 column별로 하나의 training example인 matrix이다.
- tanh를 activation function으로 사용하면 그 범위가 -1부터 1까지이므로 데이터를 0을 중심으로 모이게한다.
따라서 학습을 보다 간단하게 만들어버려서 제대로 학습이 이루어지지 않는다. - binary classification의 output layer activation function은 sigmoid가 적절하다.
- axis = 0을 기준으로 sum을 하면 행이 날아가고 열이 남는다.(행을 합쳐서 각 열별로 표시)
반대로 axis = 1을 기준으로 sum을 하면 열이 날아가고 행이 남는다.(열을 합쳐서 각 행별로 표시) - weight와 bias를 0으로 초기화하면 각 layer에 있는 node(neuron)들이 같은 function을 수행하므로 gradient descent를 반복적으로 수행해도 학습이 제대로 이뤄지지 않는다.
- sigmoid를 사용하는 single output & single layer NN은 logistic regression과 다르지 않다.
- tanh를 activation function으로 사용하는 경우, weight는 작은 값으로 initialize하는 것이 좋다.
값이 너무 크커가 작으면 gradient = 0으로 수렴하여 학습이 제대로 이뤄지지 않기 때문이다.
일반적으로 랜덤으로 초기화한 값에 0.01을 곱해준다. - W의 shape은 (출력,입력) 이고, b의 shape은 (출력,1)이다.
Z,A의 shape은 (출력,m) 이고, m은 example의 개수이다.
2. Planar Data Classification with One Hidden Layer
- Linear Regression
- input X, output Y의 size를 그대로 뽑아내면 된다.
- training set의 size m은 X size의 두 번째 원소에 해당한다.
- Neural Network
- input X, output Y의 0번째 원소가 각각 input, output size가 된다.
- hidden layer의 size는 문제에서 정해주는대로 설정해야 한다.
- W1 = (h,x), b1 = (h,1), W2 = (y,h), b2 = (y,1) size를 갖는다.
- 위 네 개의 변수들은 dictionary에 저장되어 key로 불러올 수 있다.
- Z1, A1, Z2, A2는 "가중치 @ 입력 + 편향" 을 계산하고 tanh, sigmoid를 적용한 값이 된다.
이진분류 문제이기 때문에 hidden layer에는 tanh를, output layer에는 sigmoid를 이용한다. - loss와 cost를 정의하기 위해 np.multiply, np.log 함수를 사용할 수 있다.
np.muliply는 두 인자를 곱해주는 함수고 np.log는 인자를 로그로 취해주는 함수다.
cost는 loss의 정의에 대해 -np.sum 을 취해주면 된다. - dZ2, dW2, db2, dZ1, dW1, db1 을 정의해야 한다.
np.sum(axis, keepdims)를 이용하여 db를 구할 수 있다.
g'Z 에서 g를 미분한 결과는 np.power를 통해 정의할 수 있다. - W1, b1, W2, b2는 learning rate에 미분계수를 곱한 값을 빼면서 update하면 된다.
- intergration: 위에서 사용된 함수와 parameter를 잘 보면서 갖다 붙이면 된다.
- prediction: y hat에 해당하는 A2의 값이 0.5보다 크면 1을, 그렇지 않으면 0을 반환한다.
이를 구현하기 위해 np.float32(A2 > 0.5) 를 사용할 수 있다.
출처: Coursera, Neural Networks and Deep Learning, DeepLearning.AI
'Neural Networks and Deep Learning > 3주차' 카테고리의 다른 글
Shallow Neural Network(3) (1) | 2022.10.08 |
---|---|
Shallow Neural Network(2) (1) | 2022.10.08 |
Shallow Neural Network(1) (1) | 2022.10.08 |