도서 : 신경망 첫걸음(한빛미디어)
지음 : 타리크라시드(송교석 옮김)
- 인간에게는 쉽고 기계에게는 어려운
- 인간과 컴퓨터의 차이점 : 컴퓨터는 많은 연산을 매우 빠르게 할 수 있는 쉽게 말하면 계산기 같은 것이지만 인간은 그러한 빠른 계산을 보통은 하지 못한다. 그렇지만 인간은 어떠한 정보를 인지하고 올바른 것을 찾아내는 일을 쉽게 해낸다. 물론 컴퓨터는 그러한 일을 하지 못한다.
- 딥러닝은 이러한 컴퓨터의 단점을 장점으로 극복하고자 하는 것이다.
- 간단한 예측자
- 킬로미터를 마일로 바꾸는 공식을 모른다고 가정했을 때, 두 단위의 관계가 선형이라는 것과 오차를 활용하여 정확한 공식을 알아내볼 수 있다.
- 마일 = 킬로미터 x c(상수)라는 선형적인 공식을 만들어서 c의 값에 임의의 값인 0.5를 넣는다면
- 100킬로미터는 50마일이라는 예측 값을 얻게 된다.
- 그러나 100킬로미터는 62.137마일이므로 오차는 12.137이 된다. -> 오차 = 실제 값 - 계산된 값
- 여기서 상수값을 조금 더 올려 0.6으로 계산을 해본다면 60마일이 나오므로 오차는 2.137이 된다.
- 여전히 오차가 발생했으므로 또다시 0.7을 넣어본다면 70마일, 즉, 오차가 -7.863이 되어버려 다시 c의 값을 줄여야하는 상황에 도달한다. -> 오버슈팅
- 여기서 0.6을 조금만 올려 0.61로 계산해보면 61마일, 오차는 1.137
- 이런식으로 오차를 비교해가며 임의의 값을 증가시키고, 증가량 또한 조절하면서 오차가 0이 되는 순간을 찾는다면 우리가 원하는 킬로미터를 마일로 바꾸는 공식을 컴퓨터의 계산만으로 찾아낼 수 있는 것이다. -> 이러한 과정을 반복이라고 한다.
- 컴퓨터는 입력 -> 연산 -> 출력 시스템이며 인공 신경망도 마찬가지이다.
- 어떤 것의 동작 원리를 정확히 파악할 수 없을 때 취할 수 있는 한 방식은 우리가 조정할 수 있는 매개변수 값을 포함하는 모델을 만들어보는 것이다.
- 모델을 정교화해나가는 좋은 방법은 오차에 기초해 매개변수 값을 조정해나가는 것이다.
- 분류는 예측과 그다지 다르지 않습니다
- 두 가지 부류의 곤충들을 분류하는 하나의 공식이 있다고 가정하자
- 애벌레와 무당벌레가 그 두 부류라면 애벌레는 날씬하고 길이가 길며, 무당벌레는 통통하고 길이가 짧다.
- 이를 그래프상에 길이(y), 폭(x)으로 나타내면 인간들의 눈으로는 분류된 것이 보이지만 컴퓨터는 하나의 공식으로 분류를 하게된다.
- 여기서는 간단히 직선공식의 기울기를 변화시키며 분류시킬 수 있다.
- 폭 1.0cm에 길이 3.0cm인 애벌레와 폭 3.0cm에 길이 1.0cm인 무당벌레가 있다고 하면 그래프에 두 개의 점을 찍게 된다.
- 여기서 y = Ax의 아주 간단한 직선공식으로 저 둘을 분류할 수 있을까?
- A를 0.25라고 한다면 두 벌레가 모두 같은 부류로 분류되므로 좋은 분류자가 될 수 없다.
- 여기서 이 공식에 무당벌레의 데이터를 넣어본다면 y = 0.25 * 3.0 = 0.75 인데 실제 길이는 1.0이므로 A는 너무 작은 수라는 것을 할 수 있다.
- 그렇지만 저 공식은 무당벌레의 길이를 맞추는 것이 아닌 분류를 하기 위한 것이므로 직선 아래에 값이 있기 위해서는 1.0보다 큰 값이 나와야 한다.
- 그래서 x = 3.0일 때, y = 1.1이 되는 것을 목표로 해보자
- 오차(E) = 목표값(1.1) - 실제 출력 값(0.75) = 0.35이므로 그래프를 확인해보면
- E와 A의 관계를 공식으로 나타낼 수 있을까? 우리는 A의 값을 또 다시 조금씩 증가, 혹은 감소시키며 원하는 목표값에 도달하고자 한다. 그러므로 y = Ax라는 이 공식을 y = (A + B)x 로 바꿀 수 있다.(B는 A의 변화량)
- 오차(E)의 공식을 이용하여 Ax - (A + B)x를 계산해보면 E = Bx라는 하나의 공식을 알아낼 수 있다. -> 따라서 B = E / x
- 아까 오차와 x값을 넣어보면 B = 0.1167이므로 0.1167만큼 A값을 증가시키면 된다.
- 새롭게 만들어진 y = 0.3667 * x 라는 공식에 두 번째 학습 데이터인 x = 1.0, y = 3.0을 대입하면 y = 0.3667이 되어 3.0과 매우 많은 차이가 나게 된다.
- 아까 전, 직선 아래에 무당벌레가 들어갔으므로 애벌레는 직선 위쪽에 위치해야 하므로 목표값을 2.9로 정하면 오차(E) = 2.5333이 된다.
- 그러나 이런식으로 학습을 한다면 너무 한 쪽에만 편향될 수 있으므로 여기서 변화량을 일부만 업데이트 하도록 하면 편향되는 것을 막을 수 있다.
- 이를 학습률(L)이라고 하고 B = L(E/x)로 나타낼 수 있다. 이렇게 하면 더 나은 결과를 얻을 수 있게 된다.
- 오차를 제거하기 위해서 얼마만큼의 기울기를 조정해야 하는지 오차와 기울기 매개변수 간의 관계를 이해할 수 있다.
- 그러나 이러한 조정과정은 이전의 학습 데이터는 무시하고 최종 학습 데이터에만 맞춰 업데이트되기때문에 학습률을 도입하여 정도를 조정한다.
'Deep-Learning > Deep-Learning 기초 지식' 카테고리의 다른 글
[신경망 첫걸음]데이터 준비하기 (0) | 2019.02.20 |
---|---|
[신경망 첫걸음]가중치의 진짜 업데이트 (0) | 2019.02.20 |
[신경망 첫걸음]여러 노드에서 가중치 학습하기(역전파) (0) | 2019.02.19 |
[신경망 첫걸음]신경망 내의 신호 따라가기 (0) | 2019.02.17 |
[신경망 첫걸음]여러개의 분류자와 뉴런 (0) | 2019.02.17 |