koos808

딥러닝 제대로 시작하기(책) - 2장 요약 및 Quiz 본문

Deep Learning/딥러닝 제대로 시작하기

딥러닝 제대로 시작하기(책) - 2장 요약 및 Quiz

koos808 2020. 7. 5. 02:11
728x90
반응형

※ STEP 2 : 앞먹임 신경망(feedforward neural network)

  • 앞먹임 신경망은 층 모양으로 늘어선 유닛이 인접한 층(layer)들과만 결합하는 구조를 가지며, 정보가 입력 측에서 출력 측으로 한 방향으로만 흐르는 신경망입니다. 앞먹임 신경망은 다층 퍼셉트론(multi-layer) 이라 부르기도 합니다.

  • 바이어스는 의미 그대로 어떤 '편견'을 학습 결과에 반영시키는 역할을 합니다.

    • 신경망의 유닛 내에서 활성화 함수를 왼쪽 혹은 오른쪽으로 이동시켜 변화시키는 것과 같은 결과를 얻게 됩니다.
    • 이와 달리 가중치는 활성화 함수의 곡선을 좌우로 늘리거나 줄이는 것과 같은 결과를 얻습니다.
  • 즉, 가중치(weight) 는 입력신호가 결과 출력에 주는 영향도를 조절하는 파라미터(매개변수) 이고, 편향(bias) 은 뉴런(또는 노드; x를 의미)이 얼마나 쉽게 활성화(1로 출력; activation)되느냐를 조정하는(adjust) 파라미터(매개변수) 이다.

  • 활성화함수(Activation Function) 는 말 그대로, 출력값을 활성화 여부를 결정하고, 그 값을 부여하는 함수라 할 수 있다.

    • 활성화 함수를 사용하는 이유는 무엇일까?
    • 정답을 바로 말하자면 활성화 함수 사용의 이유는 Data를 비선형으로 바꾸기 위해서이다.
    • 일반적으로 선형 시스템을 사용해야 예측이 가능하고 장점도 많다고 알고 있다. 하지만 선형시스템을 망에 적용시, 망이 깊어지지 않는다.
    • 선형 시스템의 경우 망이 아무리 깊어지더라도, 1층의 은닉층으로 구현이 가능하다.
    • 망이 깊어지지 않는게 왜 문제가 될까? [ 망이 깊어질 수록 장점이 많아진다는 것이다. ]
      • 망이 깊어진다는 것은 은닉층의 수가 많아진다는 것이다.
      • ● 망이 깊어질때의 장점
        1. 매개 변수가 줄어든다. : 망이 깊어지면 같은 수준의 정확도의 망을 구현하더라도 파라미터(매개변수)가 더 적게 필요하다.
        1. 필요한 연산의 수가 줄어든다. : 예를들어 은닉층에 Filter를 Convolution할 때 필터의 크기를 줄이고,
          망을 깊게 만들면(은닉층의 수를 많게 만들면) 연산 횟수가 줄어들면서도 정확도를 유지하는 결과를 내는것을 확인할 수 있다.
      • ※이처럼 망이 깊어질수록 효과를 내기 때문에 Deep-Learning이라고도 한다고 들었다.
      • 선형시스템의 경우에는 망이 깊어지지 않으므로, 망이 깊어지는것에 대한 장점을 활용할 수 없다.
      • 이때, 활성화 함수를 사용하면 입력이 들어갈때, 출력값이 선형으로 나오지 않으므로, 망을 깊게 만들 수 있다.
    • 참고 : https://m.blog.naver.com/PostView.nhn?blogId=worb1605&logNo=221187949828&proxyReferer=https%3A%2F%2Fwww.google.com%2F
  • 활성화 함수의 종류

    • 1.시그모이드 함수(Sigmoid Function)=로지스틱 함수 : h(x) = 1/(1+e^-x)
      • x값이 작아질수록 0에 수렴하고, 커질수록 1에 수렴한다.
      • 쌍곡선 정접함수 tanh(x)도 로지스틱 함수와 비슷한 성질을 갖고 있어 사용가능하나 함수의 치역은 (-1,1)로 달라집니다.
    • 2.계단 함수(Step Function) : y = 1 (when x≥0), 0 (when x<0)
      • Step Function은 말 그대로 계단모양 함수로, 특정값 이하는 0, 이상은 1로 출력하도록 만들어진 함수이다.
    • 3.ReLU Function(Rectified Linear Unit)==램프 함수 : y = x (when x≥0), 0(when x<0)
      • ReLU 함수는 입력이 특정값을 넘으면 입력이 그대로 출력으로 나오고, 0을 넘지 않을시 0을 반환하는 함수이다.
      • 장점1 : 단순하고 계산량이 적으며, 학습이 빠르다. 최종 결과 또한 더 좋은 경우가 많다.
      • 장점2 : 시그모이드 함수를 사용할 때는 입력값의 변동 폭에 주의할 필요가 있지만(너무 커질 경우 출력 대부분이 0이나 1 둘 중 하나가 됨.),
        ReLU 함수를 사용하면 그런 일이 일어나지 않는다.
    • 4.맥스아웃(maxout) 함수
      • 이 활성화 함수를 갖는 유닛 하나는 K개의 유닛을 하나로 합친 것과 같은 구조를 갖습니다.
      • K개 하나하나가 서로 다른 가중치와 바이어스를 가지므로 각각의 총 입력을 따로 계산하고 그중 최대값을 이 유닛의 출력으로 합니다.
      • 성능은 좋지만, 파라미터 수가 일반적인 유닛의 K배이기 때문에 그리 많이 쓰진 않습니다.
  • 활성화 함수 책내용

    • 유닛의 활성화 함수로는 통상적으로 단조증가(monotone increasing)하는 비선형함수 가 사용됩니다.
    • 위의 활성화 함수말고도 선형사상(linear mapping) 혹은 항등사상(identity mapping) 이 있습니다.
    • 신경망에서는 각 유닛의 활성화 함수가 비선형성을 갖는 것이 중요하지만, 부분적으로 선형사상을 사용하는 경우가 있습니다.
      • 예를 들어, 회귀 문제(regression problem) 를 위한 신경망에서는 출력층에서 항등사상을 사용하고,
      • 클래스 분류를 목적*으로 하는 신경망에서는 출력층의 활성화 함수로 대게 소프트맥스 함수를 사용합니다.
  • 퍼셉트론(Perceptron)이란

    • 퍼셉트론은 다수의 신호(Input)을 입력받아서 하나의 신호(Output)을 출력하는 인공신공망 모델입니다.
    • 퍼셉트론의 한계는 선형으로 분류를 할 수 있지만 XOR와 같이 선형 분류만 가능하며 비선형 분류는 불가능하다는 점이다. 그래서 이후 다층 퍼셉트론이 등장한다.
  • 훈련 샘플(training samples)과 훈련 데이터(training data)

    • 입출력 쌍 (x,d) 하나하나를 훈련 샘프이라 부르고, 그 집합을 훈련 데이터라고 합니다.
  • 오차함수(error function) == 손실함수(loss function) 와 학습

    • 모든 입출력 쌍의 입력 x_n에 대한 신경망의 출력(y)이 최대한 d_n과 가까워지도록 w를 조정하는 것이 학습입니다.
    • 또한, 신경망이 나타내는 함수와 훈련 데이터와의 가까운 정도를 나타내는 거리의 척도는 오차함수손실함수라고 부릅니다.
    • 중요! : 문제의 유형에 따라 사용되는 활성화 함수 및 오차함수의 종류
      • 문제 유형 | 출력층에 쓰이는 활성화 함수 | 오차함수
      • 회귀 - tanh(x) [치역이 -1 ~ 1인 경우] or 항등사상 (목표함수의 치역이 임의의 실수일 경우) - 제곱오차
      • 이진 분류 - 시그모이드(로지스틱) 함수 - 최대우도법을 사용한 음의 로그우도 : 우도를 가장 크게 하는 w를 선택(+우도의 로그화를 통해 부호를 바꿈)
      • 다클래스 분류 - 소프트맥스 함수 - 교차 엔트로피(=음의 로그우도)
  • 교차 엔트로피란?

    • Cross-entropy는 틀릴 수 있는 정보 양을 고려한 최적으로 인코딩할 수 있게 해주는 정보량으로 생각할 수 있습니다.
    • 사후확률를 활용해 훈련 데이터에 대한 w의 우도를 구하고 로그를 취하여 부호를 반전한 것이 교차 엔트로피입니다.
    • cross entropy는 label의 값이 one_hot encoding (원핫 인코딩) 일 때만 사용이 가능하다는 것을 염두해두자.
    • MSE와의 차이점
      • MSE는 틀린 샘플에 대해 더 집중하는 특성을 가진다. 맞은 것과 틀린 것에 똑같이 집중해야 하는데 그렇지 않아 오차 정의로는 적절하지 않다.
      • 중요한건, weight update를 해야하는데 MSE를 cost function으로 쓰니까 업데이트 되는 양이 너무 적더라..... 해서 생긴 새로운 cost function이 Cross function입니다.
    • 교차 엔트로피의 장점
      • 크로스 엔트로피를 쓰면 딥러닝 역전파시 그래디언트가 죽는 문제를 어느 정도 해결할 수 있고, 그래디언트를 구하는 과정 역시 비교적 간단하다고 합니다.
  • 소프트맥스 함수(Softmax)

    • 소프트맥스는 입력받은 값을 출력으로 0~1사이의 값으로 모두 정규화하며 출력 값들의 총합은 항상 1이 되는 특성을 가진 함수이다.
    • 소프트맥스 층은 클래스에 속할 확률을 수치 p로 표현합니다.[총합은 1]
    • 다른 활성화 함수와의 차이점
      • 그 외의 활성화 함수에서 유닛 k의 출력 z_k는 해당 유닛으로 들어오는 총 입력 u_k로부터만 결정되는 것과 대조적으로,
        소프트맥스 함수에서는 이 층 모든 유닛의 총 입력 u1,...,uk으로부터 결정되는 점이 다른 함수들과 다르다.
    • 소프트맥스 함수의 잉여성으로 인해 가중치를 학습할 때 출력층의 가중치가 잘 수렴하지 않고 학습이 느리게 진행된다는 단점이 있지만,
      이를 출력층에 가중치 감쇠 등의 제약을 추가해 해결하면 됩니다.
  • Q. 기본적인 신경망 계산 과정을 간단하게 설명해주세요

    • 훈련 샘플을 입력하는 feed-forward(앞먹임) 계산을 하고 오차를 구한 뒤, 이어 역전파 계산을 하고 오차의 기울기를 구하여 가중치를 업데이트합니다.
728x90
반응형
Comments