본문 바로가기
Artificial Intelligence/Deep Learning

coursera_week1_1_Waht is a neural network?

by dohk325 2017. 10. 4.
반응형
Deep Learning이라는 용어는 Neural Networks를 의미하는데, 종종 매우 큰 사이즈의 Neural Networks를 의미한다. 그럼 Neural Network라는 건 정확히 무엇을 말하는걸까? 
이 강의에서 여러분은 기초적인 통찰 몇 가지를 얻게 될 것이다. 

집값 예측 예시로 시작해보자. 
당신은 현재 6개의 집에 대한 data set들을 갖고 있으며 그 집의 크기와 가격 또한 알고 있을 때, (집 값을 예측하는) 집의 크기에 대한 집 값을 함수로 만들고 싶다고 해보자.

선형회귀에 대해 좀 알고 있다면, 데이터들 위에 이런 식으로 직선을 놓을 수 있을 거라고 생각할 수 있다. 

하지만 우리는 집 값은 절대로 음수가 나올 수 없다는 걸 알고 있기 때문에 직선 대신에 선을 조금 구부려서 이렇게 놓을 수 있다. 이 직선은 0에서 끝난다.

결과적으로 이 파란색 선은 집의 크기에 대한 집 값을 예측하는 함수가 된다. 선은 0에서 시작한 다음, 직선이 오른쪽으로 뻗어나간다.
따라서 당신은 이 함수를 집 값을 예측하는 아주 단순한 neural network라고 생각할 수 있다. (그러니까 뉴럴넷은 그냥 단순히 함수다.)

우리는 이 단순한 neural network에 input으로 줄 데이터로 '집 값’데이터를 갖고 있다. 현재 이 데이터를 x라고 칭하고 있다. 이 데이터는 작은 원으로 표현되는 node에 들어간다. 그 후 집의 가격을 output으로 낸다. 이 output을 y라고 칭한다. 그러니까 이 작은 동그라미가 하나의 single neuron을 나타낸다, 그래프 상에 그린 파란색 선으로 표현된 함수가 곧 이 neuron이 구현해내고 있다고 할 수 있다. 혹은 그 반대의 표현도 가능할 것.

이와 같이 모든 뉴런은 집의 크기를 input으로 갖고, 선형 함수를 거쳐서 계산되어, 집 값을 output으로 내게 된다.

1:53
여러 neural network 문헌에서 이런 함수를 굉장히 많이 마주치게 될텐데, 위의 그림은 ReLU라는 함수의 개형을 그린 것이다. 특정 구간에서는 값들이 0이 되게 하기 때문에 Rectified(정류된)라는 표현을 쓴다. 그 외의 구간에서는 들어오는 값을 선형으로(즉 그대로) 출력한다. ReLU는 (Rectified Linear Unit;정제된 선형 개체)함수의 약자이다. 정제한다는 말은 다시 말하면, 최소의 값이 0이 되게 필터링하는 것이다.
 

2:23
하나의 거대한 neural network는 여러 개의 단일한 neuron들(함수들)이 여러 겹으로 쌓여서 구성된다.(그러니까 뉴럴넷이라는 것은 하나의 거대하고 복잡한 함수를 만드는 것인데, 그것이 마치 개별적인 거점 네트워크들이 서로 연결되어 하나의 거대한 인터넷을 이루는 네트워크같아서 뉴럴 네트워크라고 부르는 것 같다. 단일한 함수들(거점 네트워크들)이 모이고 모여서 하나의 거대한 인터넷(네트워크 혹은 뉴럴넷)을 이루는 것.) 그림에서 보는 바와 같은 single neuron을 레고 조각으로 생각할 수 있다면, 마치 레고 조각을 조립하듯이 조각들을 쌓아나가면서 neural network를 구성하는 것이다. 

2:57

예를 들어보자. 집의 크기로 집 값을 예측하는 대신에, 집의 크기 이외의 다른 feature들도 갖고 있다고 해보자. 이젠 침실의 개수 같은 정보도 알고 있다. 이런 정보는 가족이 몇 명이냐에 대한 정보를 결정한다.  
침실의 개수 feature외에도 알 수 있는 정보는 우편정보(zipcode 또는 postal code)다. 이 정보는 walkability(접근성)를 결정한다. 즉 근처의 다른 지역이나 주요 거점(grocery store, 학교, )으로 걸어서 접근할 수 있는지에 대한 정보를 말한다. 
이 외에 wealth(부유한 정도) feature도 있다. 이 feature는 근처 학교의 수준을 가늠하게 한다. 

침실의 개수와 집의 크기를 통해 가족의 규모를 추정할 수 있으며, 접근성 정보를 담고 있는 zip code와 wealth정보를 통해 학교의 수준을 추정할 수 있다. 최종적으로 집 값이 어느 정도가 될지를 생각해야 한다. 각각의 feature들을 얼마나 중요하게 여기는지에 따라 가격이 달라질텐데, 이번 예시에서는 family size, walkability, school quality가 실제로 집의 가격을 결정하는데에 도움을 주는 정보가 된다. 위에 그린 작은 원들은 ReLU함수가 될 수도 있고, 일부는 비선형함수가 될 수도 있다.(뉴런을 구현하는 함수로는 여러 개가 있다.)


따라서 이제 x는 이 네 개의 input들 전부를 가리키며, y는 여전히 예측하고자 하는 집의 가격을 의미한다.

4:57
이제, single neurons 또는 simple predictors 몇 개를 한 묶음으로 쌓아나감으로써, 조금 더 큰 규모의 neural network를 갖게 된다. neural network를 구현할 때, neural network에 몇 개의 data를 training set으로 두어서 x를 input으로 주고, y를 output으로 주어야 하며 가운데 있는 family size, walability, school quality등의 정보들도 뉴럴넷에게 알려주어야 한다. 

5:25
당신이 실제로 구현하는 뉴럴넷은 이런 모습이다. 네 개의 인풋을 가진 걸 볼 수 있다. 네 개 각각은 size, number of bedrooms, the zip code or postal code, and the wealth of the neighborhood를 의미한다. 뉴럴넷이 할 일은 이 네 개의 feature를 받은 다음 price of house인 y값을 예측하는 것이다.
가운데에 있는 세 개의 원은 hidden units이라고 한다. 이 히든 유닛들은 네 개의 인풋을 받아들인다. 

그리고 첫 번째 layer를 input layer라고 부른다. 현재 hidden unit의 density connected(연결 정도(밀도)는 높다. 모든 input feature들이 neuron에 해당하는 각각의 원에 모두 연결되어 있는 상태를 말한다. 
또한 주목할만한 점은 충분한 양의 x, y 데이터가 neural network에 주어지면, neural network는 새롭게 주어지는 x로부터 y값을 상당히 정확히 맵핑해내는 함수를 만들어 낼 수 있다는 점이다.



반응형