티스토리 뷰
2. Neural Networks / L1. Introduction to Neural Networks - Neural Network Architecture
chrisysl 2018. 7. 2. 22:54Neural Network Architecture
- 앞서 배운 내용을 토대로 Neural Networks(또는 Multi-layer Perceptrons)를 구현해보도록 하자.
- 먼저 두가지의 퍼셉트론을 어떻게 결합하는지에 대해 알아보도록 하자.
Combining Regions
- 비선형 모델을 그리기위해서는 간단하다. 약간의 트릭임
- 이와같이 두개의 선을 사용한 경계가 커브로 역할을 하는것과 같다.
- 우리가 알다시피 선형 모델(일차방정식)은 전체 확률 공간이다.
- 즉, 모든 점에 있어서 그 점이 파랑(또는 빨강)일 확률을 리턴할 수 있다는 것.
- 동일한 한 점에 대해 파랑일 확률을 첫번째 선형모델로는 0.7이라는 확률을, 두번째 선형모델로는 0.8을 얻었다 가정하면
- 우리는 이 두개의 점을 이용하기위해 두 확률을 합친다.
- 그다음 이를 다시 확률(0부터 1사이의 값)로 만들어주기위해 sigmoid function을 이용한다.
- 이렇게 모든 점의 값을 얻어낸다면 곡선에 대한 경계표현이 가능하다.
- 이 방법이 바로 두가지 모델을 합치는 방법이 되겠다.
- 각 모델로 얻은 확률에 대해 모두 더하고 sigmoid function을 취해 새로운 영역의 값을 얻어내는것.
- 근데 만약 하나의 모델에 대해 weights(가중치)를 주고싶다면?
- 물론 가능하다.
- Weight와 Bias를 결합하여 확률을 얻고 이를 sigmoid function에 대입하여 값을 얻어내는 방법.
- 가중치(weights)를 주고싶은 모델에 더 높은 수를 곱해주어 특정 모델이 더 많이 반영된 방향으로
- 네트워크를 설정 가능하다.
- 이 방식은 두가지 모델에 weights를 주고 bias를 결합하여 하나의 모델을 만든것이다.
- 앞으로 이 방식을 사용하여 네트워크를 만들어 갈 것이다.
- 두가지 선형(linear)모델을 더해 새로운 세번째 모델을 만들어 냈었는데,
- 각 모델에 스칼라값을 곱하고(weights) bias를 더해준 결과 비선형 모델을 만들어 낼 수 있었다.
- 이 비선형(Non-linear)모델은 퍼셉트론과 개념상 꽤나 유사한데(Weights와 bias를 이용한다는 점에서)
- 이는 Neural Network의 주요 개념이기 때문이다.
- 두 선형 모델을 결합하여 새로운 비선형 모델을 만든것은,
- 두 퍼셉트론의 output을 input으로 하는 세번쨰 퍼셉트론을 연결해 둔 개념과 동일하다.
- 따라서 좌측과 같은 결합 퍼셉트론(combined perceptron)의 형태를 봤을때 어떤 선경망 네트워크가 형성될지
- 생각할 수 있어야 한다.
- bias를 따로 노드로 빼서 표시할 수도 있다고 언급하였었는데, 우측의 그림이 그에 해당된다.
- 우측 표현도에선 sigmoid function과 퍼셉트론을 사용하는것을 쉽게 확인할 수 있다.
Multiple layers
- input, hidden, output 레이어에 더 많은 노드를 추가하거나
- 레이어 자체를 더 추가해야 할 경우 훨씬 더 복잡해질 수 있다.
- 이런경우 어떻게 해야할까?
- Neural networks는 레이어와 함께 특별한 구조를 띄고있다.
- Input layer : input을 담고있음
- Hidden layer : input 레이어를 바탕으로 만들어지는 선형 모델(linear models)을 만들어냄
- Output layer : 선형 모델이 비 선형모델(non-linear model)을 만들어 내기위해 혼합되는 레이어
- 위와같은 더 복잡한 구조를 가진 네트워크도 존재한다.
- output 레이어에서 삼각형의 경계를 얻어내기위해 세가지 선형모델을 혼합함
- 만약 input이 3개라면?? 3차원 공간상의 영역이 형성된다.
- 그리고 이 두 평면을 결합하여 비선형 영역을 output 레이어에서 얻어낼 수 있게 된다.
- 일반적으로 우리가 u개의 노드를 input레이어에 가지고 있다면, 우리는 그 데이터가 n차원공간에 존재함을 알 수 있다.
- 만약 output이 여러개라면??
- Multi-classification Models에서는 여러개의 output을 갖는다.
- 만약 output으로 고양이, 강아지, 새 가 있다면, 각 클래스에 맞는 숫자를 리턴해줌
- 만약 레이어가 여러개라면????
- 이것을 deep-neural network라 부른다.
- 비선형 모델(non-linear models)들이 합쳐져 더더욱 비선형인 모델을 창조해낸다.
- 이를 매우 여러번 시도하게되면 상당히 복잡한 hidden layers 와 모델을 얻게된다.
- 이것이 신경망 네트워크의 구성원리이다. (many hidden layers)
- 이러한 n차원 공간에 있는 값들이 위와같은 비선형 모델을 도출해낸다.
Multi-Class Classification
- 클래스가 두가지로 분류된다면(예를들어, 선물을 받았는지 받지 않았는지 와 같은)
- 매우 직관적이고 쉽게 이해하여 따라갈 만 하다.
- 그러나 만약 클래스가 여러개라면? 오리, 비버, 왈루스의 확률을 분석해야한다면??
- 오리인지를 판별하는 신경망 네트워크를 또 비버인지를, 왈루스인지를 분석하는 네트워크를 각각 만들어내고
- SoftMax 를 사용하던가, 가장 높은 확률을 나타내는 리턴값을 고르면 될 것 같다.
- 그런데 이보단, 첫번째 레이어에선 이미지에 대한 정보를 우리에게 말해주고
- 맨 마지막 레이어에선 어떤 동물인지를 리턴해주는 모델이 더 순서에 적합해보인다.
- 따라서 여기서 우리가 필요한것은 더 많은 노드를 output 레이어에 추가하고
- 각 노드들은 각 동물에 대한 확률을 리턴하게 된다.
- 그 다음, score를 SoftMax function에 대입하여 더 나은 확률값을 얻어내도록 한다.
- 이 방법이 다중클래스 분류(Multi-class classification)에서의 신경망 네트워크(Neural networks)를 얻는 방법이다.