[Deep Learning Specialization]Neural Networks and Deep Learning-Deep Neural Networks

Carvin·2020년 11월 4일
1
post-thumbnail

1st course: Neural Networks and Deep Learning

🗂 목차

  • 1장: Introduction to Deep Learning

  • 2장: Neural Networks Basics

  • 3장: Shallow neural networks

  • 4장: Deep Neural Networks

4. Deep Neural Networks

Deep Neural Networks는 앞서 다뤘던 shallow neural networks에서 발전된, 보다 깊은 인공신견망을 의미한다.

이번 강의에서는 shallow neural network에서 다뤘던 내용들을 기반으로 2개의 hidden layer와 output layer로 이루어져 있는 3-layer neural network가 어떻게 학습과 업데이트가 진행되는지 알아본다.

그리고 deep neural network의 성능 향상에 대한 강의인 2nd Course를 위한 준비를 함께한다.

1. Deep L-layer neural network

  • shallow neural network에서는 hidden layer가 1개이며, 노드와 층에서 이뤄지는 logistic regression의 계산 과정에 대해서 알아봄

  • hidden layer가 여러개 존재하는 모델을 deep neural network라고 하며, 간단한 표기법(notation)을 다시 한번 소개함

    • L: 전체 layer의 수 (input layer 제외)
    • n[l]n^{[l]}: ll 번째 layer의 노드(neuron) 개수
    • ala^{l}: ll 번째 layer의 activation 값

2. Forward Propagation in a Deep Network

  • deep neural network에서도 forward propagation은 shallow할 때와 동일한 과정을 거침

  • shallow에서 2번 진행되었던 과정이 deep에서는 layer의 개수만큼 계산 과정이 반복되며, vectorization을 통해 xx를 logistic regression과 activation 과정을 적용해줌

  • 이 때, layer의 개수만큼 계산 과정이 반복되는 경우는 layer와 layer가 순차적으로 영향을 미치기 때문에 어쩔 수 없이 for loop과정을 거칠 수 밖에 없음

3. Getting your matrix dimensions right

  • deep neural network는 많은 layer가 존재함으로, 그에 따라 많은 parameter들이 존재하게 됨

    • neural network의 정확한 구현을 위해서는 각 layer의 정확한 표기법과 parameter의 차원을 기억함으로써 직접 디버깅 과정을 이해할 수 있음

  • 각 층에 존재하는 w[i],b[i]w^{[i]}, b^{[i]} parameter는 previous layer와 present layer의 노드(neuron)의 개수로 차원이 결정되는 것을 알 수 있음

  • 강의에 나온 neural network의 parameter를 지정해주는 방식을 간단하게 코드로 구현하게 되면 다음과 같음

    • 각 층의 parameter는 (해당 층의 노드 개수, 이전 층의 노드 개수)라는 차원을 가지게 되는데, 이는 행렬의 내적인 vectorization가 가능하게 되는 이유이기도 함
L = 5 # layer 개수
layer_dims[3, 5, 4, 2] # 각 layer의 노드 개수

for l in range(1, L):
        parameters['W' + str(l)] = np.random.randn(layer_dims[l], layer_dims[l-1]) * 0.01
        parameters['b' + str(l)] = np.zeros(shape = (layer_dims[l], 1))
        
# W1.shape = (3,2), b1.shape = (3,1) -> Z1.shape = (3,m) 
# W2.shape = (5,3), b1.shape = (5,1)
# W3.shape = (4,5), b2.shape = (4,1)
# W4.shape = (2,4), b3.shape = (2,1)
# W5.shape = (1,2), b4.shape = (1,1)

4. Why deep representations?

  • 그렇다면 shallow neural network보다 deep neural network가 보다 성능이 좋은 이유에 대해서 알아볼 수 있음

  • 결정적으로 hidden layer 개수의 차이를 보이고 있는 shallow와 deep neural network의 차이를 얼굴 인식 또는 얼굴 감지 시스템 과정에서 간단하게 확인해 볼 수 잇음

    • 3개의 hidden layer로 구성되어 있는 얼굴 인식 인공신경망 시스템에서 첫번째 hidden layer는 이미지의 모서리를 파악하는 feature detector 또는 edge detector 역할을 할 수 있음

    • 두번째 hidden layer에서는 눈, 코, 입과 같은 얼굴의 부위를 파악해 나감

    • 마지막인 세번째 hidden layer에서는 최종적으로 얼굴 부위를 조합하여 output layer에서 얼굴 인식 결과를 보여주게 됨

  • hidden layer의 역할이 위와 같이 명시적으로 혹은 단계별로 명확한게 정해진 것은 아니지만 hidden layer가 deep해질 수록 input 데이터에 대한 특징 파악을 구체적으로 할 수 있는 것을 말함

  • 각 hidden layer는 기본적으로 이전 layer의 결과를 종합하여 계산이 이루어지는 이 때, 데이터가 hidden layer를 통과할수록 보다 집적적이고 유의미한 정보를 뽑아낼 수 있는 가능성이 높아짐을 의미함

5. Building blocks of deep neural networks

  • 각 hidden layer를 하나의 block으로 생각하게 되면, forward와 backward 단계를 이해하기 보다 수월함

  • 각 hidden layer의 output은 activation function이 적용된 Z[l]=W[l]al1+b[l]Z^{[l]} = W^{[l]}a^{l-1} + b^{[l]} 의 parameter들이 반환되는데, 값들을 캐싱해두면 backward 단계에서 유용하게 사용 가능함

6. Forward and Backward Propagation

  • backward 과정에서는 실제값과 y hat과 차이를 시작으로 캐싱되어 있던 각 층의 ZZ값을 통해 loss를 줄여나갈 수 있음

  • 거꾸로 계산되는 과정에서 각 층의 da[l1]da^{[l-1]}를 구하는게 backward 과정의 핵심이며, 이 때 발생되는 dW,dbdW, db 값을 기반으로 W,bW, b 가 반복적으로 업데이트됨

7. Parameters vs Hyperparameters

  • deep neural network에서는 parameter뿐만 아니라 hyperparameter가 존재하며, 이 둘 모두를 잘 조정해주어야 좋은 성능과 결과를 이끌어 낼 수 있음

  • 다음과 같은 hyperparameter가 존재함

    • learninglearning raterate: 학습속도
    • iterationsiterations: 반복 횟수
    • numbernumber ofof hiddenhidden layerslayers: hidden layer의 개수
    • numbernumber ofof hiddenhidden unitunit n[l]n^{[l]}: 각 hidden layeer의 unit 개수
    • activationactivation functionfunction: 활성화함수
    • minimini batchbatch sizesize
    • regularizationregularization
  • 이러한 hyperparameter들은 W,bW, b를 조정해주는 역할을 하게 되며 절대적인 최적의 값이 존재하지 않음

  • 데이터, 목표, 환경 등에 따라 해당 모델의 최적 hyperparameter는 달라지기 때문에 다양한 시도를 통해 최적의 결과를 이끌어내야 함

0개의 댓글