본문 바로가기
Deep Learning/Hands On Machine Learning

10.4 연습문제

by 대소기 2021. 9. 24.

2번. 초창기 인공 뉴런을 사용해 A xor B 를 계산하는 인공 신경망을 그려보세요.

출처 : https://itwiki.kr/w/XOR_%eb%ac%b8%ec%a0%9c

  • 10.1 에서 말했다시피 인공뉴런 1개로는 xor문제를 풀 수 없다.

출처 : https://m.blog.naver.com/qbxlvnf11/221860706494

  • 하지만 위와 같이 세 개의 뉴런을 통해서는 xor문제를 풀 수 있다. 하나의 뉴런은 or 연산을 시행하고, 다른 하나의 뉴런은 NAND(Not and) 연산을 수행한다. output 뉴런은 AND연산을 시행한다. 이를 표로 나타내면 다음과 같다.
x1 x2 OR NAND AND
0 0 0 1 0
1 0 1 1 1
0 1 1 1 1
1 1 1 0 0

3번. 고전적인 퍼셉트론(즉, 퍼셉트론 훈련 알고리즘으로 훈련된 단일 TLU)보다 로지스틱 회귀 분류기를 일반적으로 선호하는 이유는? 퍼셉트론을 로지스틱 회귀 분류기와 동등하게 만들기 위한 방법은?

  • 분류문제에서 고전적인 퍼셉트론은 10.1에서 살펴본 것과 같이 선형적인 분류만이 가능하다. 하지만, 로지스틱 회귀를 사용하여 분류를 시행한다면 비선형적인 분류 또한 가능하기 때문에 고전적인 퍼셉트론보다 복잡한 문제를 해결할 수 있다. 만약 퍼셉트론을 로지스틱 회귀 분류기와 같이 만드려고 한다면, activation function에 로지스틱 함수를 사용하면 된다.

4번. 초창기의 다층 퍼셉트론을 훈련할 때 로지스틱 활성화 함수가 핵심 요소였던 이유는?

  • 다층 퍼셉트론의 weight를 update하기 위해서는 backpropagation 과정을 거치게 된다. 이 때 activation function을 미분하여 기울기를 활용하게 된다. 로지스틱 함수는 모든 점에서 기울기가 존재하기(0이 아니고) 때문에 backpropagation 과정에서 기울기를 활용할 수 있다는 점에서 acitvation function으로 적합하다. 반면 10.1 단층 퍼셉트론에서 살펴보았던 step function은 x=0이 아닌 점에서 기울기가 모두 0이므로 활용할 기울기가 존재하지 않는다. 이러한 측면에서 로지스틱 함수가 핵심 요소였다.

6번. 통과 뉴런 10개로 구성된 입력층, 뉴런 50개로 구성된 은닉층, 뉴런 3개로 구성된 출력층으로 이뤄진 다층 퍼셉트론이 있다고 가정하자. 모든 뉴런은 ReLU 활성화 함수를 사용한다.

1) 입력 행렬 X의 크기는?

  • 입력 행렬의 행 개수는 임의의 batch size m이다. 행은 데이터의 개수를 나타내고, 한 번에 들어오는 데이터는 1개의 배치를 나타내므로 입력 행렬에 있는 데이터의 개수는 batch size이다.
  • 입력 행렬의 열 개수는 입력 뉴런의 개수 10이다.

2) 은닉층의 가중치 행렬 $W_h$와 편향 벡터 $b_h$의 크기는?

  • 입력 행렬의 행 개수는 가중치 행렬의 열 개수와 같다. 입력 행렬이 $X_{m\times10}$ 이기 때문에 가중치 행렬의 크기는 $W_{10\times j}$ 꼴이 된다.
  • 열의 개수 j는 은닉층의 뉴런 개수 50개와 같다.
  • 편향 벡터 $b_h$의 길이는 50이다.

3) 출력층의 가중치 행렬 $W_o$와 편향 벡터 $b_o$의 크기는?

  • 출력층의 가중치 행렬은 $W_{50 \times 3}$이다. 편향 벡터의 길이는 3이다.

4) 네트워크의 출력 행렬 Y의 크기는?

  • 출력 행렬 $Y$는 배치크기 m을 행으로 하고, 출력 뉴런의 개수인 3가 열이 된다. 즉 $Y_{m\times3}$이 된다.

5) $X, W_h, b_h, W_o, b_o$의 함수로 네트워크 출력 행렬 Y를 계산하는 식을 써 보아라.

$Y = ReLU(W_o \times ReLU(X \times W_h + b_h) + b_o) $

7번. 스팸 메일을 분류하기 위해서 출력층에는 몇 개의 뉴런이 필요한가? 출력층에는 어떤 활성화 함수를 사용해야 하는가? MNIST 문제라면 출력층에 어떤 활성화 함수를 사용하고 뉴런은 몇 개가 필요한가?

  • 스팸메일의 경우 : 스팸메일인지(1) 아닌지(0)를 분류하는 binary classification문제이다. 때문에 뉴런은 1개가 필요하고 활성화 함수로는 로지스틱 함수, ReLU함수를 사용한다.

  • MNIST문제의 경우 : 데이터가 0~9번의 각 class 중 어떤 class에 속하는지를 확인하는 문제이다. 즉, Multi-class classification문제이다. 이 경우 출력층의 뉴런은 1개가 필요하고 활성화 함수로는 softmax 함수를 사용하여 각 class에 속할 확률을 통해 최종적으로 어느 class에 속할 확률이 가장 큰지 확인해야 한다.

8번. 역전파란 무엇이고 어떻게 작동하나요? 역전파와 후진 모드 자동 미분의 차이점은 무엇인가요?

  • 먼저 역전파와 후진 모드 자동 미분은 동등한 관계가 아닌 포함 관계를 이루고 있다. 역전파의 과정 중에 후진 모드 자동 미분이 포함되는 것이다. 역전파는 신경망 모델의 가중치를 update하는 기법으로 초기 가중치 및 편향을 가지고 cost를 계산한다. 계산이 끝나면 chain rule을 이용하여 역방향으로 가중치를 update시킨다. 이렇게 역방향으로 가중치를 update시키는 과정에서 후진 모드 자동 미분이 사용된다.

9번. 다층 퍼셉트론에서 조정할 수 있는 하이퍼파라미터를 모두 나열해 보아라. 훈련 데이터에 다층 퍼셉트론이 과적합되었다면 이를 해결하기 위하여 하이퍼 파라미터를 어떻게 조정해야 할까?

  • epcoh, batch size, optimizer, node 개수, hidden layer 개수, activation function 등이 있다.
  • 과적합을 해결하기 위한 방법은 다음과 같다.
  • epoch : epoch수를 줄인다.
  • optimzier : l1, l2 등의 규제화 방법들을 적용한다.
  • node 개수, hidden layer 개수 : 개수를 줄인다.
  • 등이 있다.