티스토리 뷰

Neural 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)를 얻는 방법이다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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 31
글 보관함