티스토리 뷰

인공지능

[Machine Learning] Neural Networks:Representation

망나니개발자 2018. 1. 8. 17:54
반응형

본 내용은 Coursera에서 Andrew ng 의 Machine Learning(기계학습, 머신러닝)을 수강한 내용을 정리한 것입니다. 이번 장에서는 Neural Networks(뉴럴 네트워크, 신경망)에 대해서 알아보도록 하겠습니다.


1. Non-linear Hypothesis


[ Non-linear Classification ]


위와 같은 Classification 문제를 해결하기 위해서는 Non-linear Decision Boundary가 필요합니다. 물론 Logistic Regression을 이용해서 이 경계를 만들 수 있지만, Logistic Regression은 Feature의 개수가 많아질수록 식을 위해 필요한 1, 2, 3, .... n차원의 항이 기하급수적으로 늘어날 뿐만 아니라 Overfitting 문제가 발생할 가능성이 높아집니다. 




예를 들어 어떤 그림이 자동차인지 아닌지를 구분하는 알고리즘을 짠다고 할 때, +가 car -가 Non-car이라고 하면 초록색 선과 같은 Non-linear Decision Boundary를 만들 것입니다. 이때 우리는 차를 이미지로 보는 것과 달리 카메라는 이미지를 50*50 pixels와 같이 pixel들로 보게 되는데, 여기서 2차 요소만을 구해보아도 $_{50}\mathrm{ C }_{2} \approx 3000000$ 로 n이 클 때, Non-linear Hypothesis Function을 위해 Logistic Regression을 사용하는 것은 좋은 방법이 아닙니다. 그래서 Non-Linear Classification 문제를 위한 Decision Boundary를 구할 때 효율적인 Neural Networks가 등장하게 되었습니다.


2. Neurons and the brain


[ Neural Networks ]

  • Origins: Algorithms that try to mimic the brain

  • Was very widely used in 80s and early 90s; Popularity dimished in late 90s

  • Recent resurgence: State-of-the-art technique for many applications

Neural Networks는 뇌를 모방하는 알고리즘으로 80~ 90년대에 널리 사용되었습니다. 하지만 Neural Networks는 계산에 대한 비용(Cost)이 커서 90년대 후반에 인기가 시들었습니다. 하지만 최근에 컴퓨터의 성능이 좋아지면서 큰 Scale의 신경망도 돌릴 수 있게되었고, 최근에 State-of-the-art Technique 즉, 다방면에서 사용되는 최고의 기술로 다시 주목을 받고 있습니다.

[ The "one learning algorithm" hypothesis ]

뇌를 모방하는 것은 몇 천개의 여러가지 독립적인 프로그램이 존재하는 것이 아니라 하나의 학습 알고리즘을 사용하는 뇌를 모방하는 것입니다. 위의 빨간영역은 Auditory Cortex로 귀가 받은 소리신호가 Auditory Cortex로 전송되고 거기서 처리를 거치면 우리가 말을 듣고 이해하게 됩니다. 하지만 여기서 저 선을 끊고 다른 감각에 연결하면 그 감각을 인지하는 것을 배운다고 합니다. 즉, 우리의 뇌는 하나의 학습 알고리즘을 이용하여 여러가지 감각을 학습하는데, 우리가 배울 Neural Networks 는 이러한 뇌의 특성을 모방하였습니다.


[ Neuron in the brain ]



Neural Network는 뇌의 뉴런들 또는 네트워크에 자극을 주면서 발달합니다. 위와 같은 우리의 뉴런은 신호를 계산하는 단위로 Input Wire에 해당하는 Dendrite로 부터 신호를 수신하고 Cell Body에서 연산을 한 후 Output Wire에 해당하는 Axon을 통해 다른 노드 또는 뉴런으로 신호를 전송합니다.


위와 같은 뉴런집합들에서 뉴런들이 Communicate하는 방식은 pulse of electricity(전기 신호의 맥박)로 Spike라는 신호를 통해서 통신합니다. 만약 한 뉴런이 메세지를 전송하고 싶으면 전기 신호를 axon을 통해 먼저 전송하고 그 신호가 다른 뉴런들로 전송이 됩니다. 


[ Neuron model: Logistic Unit ]

Logistic Unit으로써 뉴런은 Model화 하면 아래와 같습니다.




여기서 노란색이 body of a neuron에 해당하며 상황에 따라서 항상 1을 유지하는 $x_0 $ 를 추가해주기도 합니다. 그리고 Neural Network는 Classification과 마찬가지로 $ h_\theta (x) = \frac{1}{1+e^{-\theta^T x}} $ 을 사용하는데, 이 함수를 Sigmoid(Logistic) activation function 이라고 합니다. 그리고 $\theta$ 는 weights라고  부르기도 합니다. 그리고 각각의 $x$ 와 $\theta$ 는 각각의 행렬을 나타냅니다.

[ Neural Network ]

  • $a_i^{(j)} = $ "Activation" of unit $i$ in layer $j$

  • $\theta^{(j)} = $ matrix of weights controlling function mapping from layer $j$ to layer $j+1$



첫번째 Layer는 Input Layer로 우리의 Feature들을 넣어주며 Layer3(마지막 Layer)는 Output Layer 또는 Final Layer로 불리며 Hypothesis에 의해 계산된 Final Value를 전송합니다. Layer2(Input Layer과 Output Layer 사이)는 Hidden Layer로 1개 이상의 Layer로 구성됩니다.$a_i^{(j)}$ 는 j번째 Layer에서 i번째 노드의 정보(계산된 값)이고 $\theta^{(j)}$ 는 Layer j에서 Layer j+1 까지 함수 매핑을 제어하는 가중치행렬입니다. j번째 Layer의 크기는 $s_{j}$ 로 표현을 하는데, $\theta^{(j)}$ 의 크기는 $s_{j+1}$ x $s_({j}+1)$ 인데, $s_({j}+1)$ 이 되는 이유는 Bias Unit이 있기 때문입니다. 이전에 Linear Regression과 Logistic Regression에서는 주어진 입력데이터를 통해 Hypothesis를 구했습니다. 하지만 Neural Networks에서는 각 데이터에 일종의 가중치를 곱하고 더해서 입력데이터를 조금 더 의미있는 값으로 변경한 후에 이를 Hypothesis로 나타냅니다. 그리고 Hidden Layer에서 우리의 입력데이터를 Weight를 통해 보정해줍니다.




3. Model Representation


[ Forward Propagation: Vectorized implementation ]

  • $a_1^{(2)} = g(\theta_{10}^{(1)}x_0 + \theta_{11}^{(1)}x_1 + \theta_{12}^{(1)}x_2 + \theta_{13}^{(1)}x_3 = g(z_1^{(2)}) $

  • $a_2^{(2)} = g(\theta_{20}^{(1)}x_0 + \theta_{21}^{(1)}x_1 + \theta_{22}^{(1)}x_2 + \theta_{23}^{(1)}x_3 = g(z_2^{(2)}) $

  • $a_3^{(2)} = g(\theta_{30}^{(1)}x_0 + \theta_{31}^{(1)}x_1 + \theta_{32}^{(1)}x_2 + \theta_{33}^{(1)}x_3 = g(z_3^{(2)}) $

  • $h_\theta(x) = g(\theta_{10}^{(2)}a_0^{(2)} + \theta_{11}^{(2)}a_1^{(2)} + \theta_{12}^{(1)}a_2^{(2)} + \theta_{13}^{(1)}a_3^{(2)} $

위의 식을 통해 볼 수 있듯이 g함수의 Parameter들을 각각 Z로 정의한다고 하고, $x = \begin{bmatrix} x_0 \\ x_1 \\ x_2 \\ x_3 \end{bmatrix} $ 로 그리고 $z^{(2)} = \begin{bmatrix} z_1{(2)} \\ z_2{(2)} \\ z_3{(2)} \end{bmatrix} $ 로 정의한다고 하면 아래와 같은 내용이 성립하게 된다.

  • $ z^{(2)} = \theta^{(1)} x = \theta^{(1)} a^{(1)} $

  • $ a^{(2)} = g(z^{(2)})$

  • $ z^{(3)} = \theta^{(2)} a^{(2)} $

  • $h_\theta(x) = a^{(3)} = g(z^{(3)})$

그리고 이렇게 $ h_\theta(x) $를 계산하는 과정을 Forward Propagation(전방 전파) 이라고 부릅니다.

[ Neural Network learning its own features ]



위와 같은 그림에서 Layer1이 없이 Layer2와 Layer3만 존재하는 경우라면 Logistic Regression과 같습니다. 하지만 $x_1, x_2, x_3$ 와 같은 raw features를 통해 그대로 학습하는 Logistic Regression과 달리, Neural Network는 고유한 Features들인 $a_1, a_2, a_3$ 를 학습하여 $h_\theta(x)$ 를 만들어냅니다.


[ Other network architectures ]



어떤 네트워크는 위와 같은 Architecture를 가질 수 있는데, 여기서 Architecture란 서로 다른 뉴런들이 연결되어있는 구조를 의미합니다. Layer1은 Input Layer, Layer4는 Output Layer이며 나머지 Layer는 Hidden Layer입니다. 


4. Examples and intuitions


[ Simple example: AND ]




$x_1, x_2$ 가 0 또는 1의 값을 지니며 y = $x_1 AND x_2 $ 인 Simple Classification 문제가 있다고 합시다. 이를 해결하기 위해서 Bias Unit과 Parameter의 값을 위의 그림과 같이 부여했다고 할 때, $h_\theta = g(-30 + 20x_1 + 20x_2 $ 가 됩니다. 그리고 각각의 경우에 대해서 결과 값을 구하면 오른쪽의 표와 같이 나오게 됩니다. 그리고 이것은 우리가 구하려고 했던 AND연산과 같음을 알 수 있습니다.


[ Example: OR function ]



OR function에 대한 예시는 위의 그림과 같고 그때의 가설함수는 $h_\theta = g(-10 + 20x_1 + 20x_2 $ 입니다.


[ Putting it together: $x_1 XNOR x_2 $ ]



위의 그림과 같은 예시에서 Binary Values 0 또는 1을 갖는 Input Features $x_1, x_2$ 와 $y= x_1 XNOR x_2$가 있다고 할 때, 이를 분류하기 위해서는 Non-linear Decision Boundary가 필요합니다. XNOR는 $x_1 = x_2$ 일 경우 1, 그렇지 않을 경우 0을 갖는데 XNOR에 대한 가설함수를 얻기 위해서는 아래의 3가지 연산을 이용할 수 있습니다.



+1(Bias Unit), $x_1, x_2$ 총 3개의 Input이 있다고 할 때, 1개의 Hidden Layer 에 첫번째, 두번째 Unit을 추가하면 Layer2까지 형성이 됩니다. 그리고 그렇게 생긴 Layer2에 Bias Unit을 추가하여 Output Layer로 OR의 Parameter를 추가하면 Truth Table이 XOR과 같으며 Non-linear Decision Boundary를 얻었음을 알 수 있습니다. 그리고 우리는 Hidden Layer를 계속해서 추가할수록 더 복잡한 함수를 계산할 수 있음을 직감할 수 있습니다.



5. Multi-class Classification


[ Multiple output units: One-vs-All ]




Neural Network를 사용하여 Multi-class Classification 문제를 해결하기 위해서는 One-vs-All 방식을 사용해야 합니다. 예를 들어 위의 그림과 같이 어떤 사진이 Pedestrian인지, Car인지, Motorcycle인지, Truck인지 분류하기 위하여 4개의 Category로 나눈다고 합시다. 4개의 카테고리로 분류하기 위해서는 4개의 Output Unit이 필요하며 그것은 각각 Binary Value를 갖는 4차원 벡터가 될 것입니다. 그리고 가설함수의 근사치를 갖는 y는 4개의 벡터 중 하나의 벡터를 갖게 될 것입니다.










관련 포스팅

  1. 기계학습이란? (1/11)
  2. 지도 학습과 비지도 학습 (2/11)
  3. Model and Cost Function (3/11)
  4. Gradient Descent (4/11)
  5. Multivariate Linear Regression (5/11)
  6. Logistic Regression (6/11)
  7. Regularization (7/11)
  8. Neural Networks: Representation (8/11)
  9. Neural Networks: Learning (9/11)
  10. Advice for Applying Machine Learning (10/11)
  11. Machine Learning System Design (11/11)


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함