Noise Injection

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS

NoiseInjection

LocalOptima를 탈출하는데 사용되는 MonteCarloMethod 의 일종인 SimulatedAnnealing 의 한가지 응용예이다.

SignalToNoiseRatio 에서 Noise를 한꺼번에 최대한 증가시켰다가 천천히 빼 준다. 이렇게 되면 Noise 가 증가되었을 때에는 Signal 은 그 속에 묻혀서 전혀 감지되지 않고 오직 Noise 만이 나타난다. 물론 이때의 Noise 는 WhiteNoise 여야 할 것이다.

다음과 같은 예를 생각해 볼 수 있다. 컴퓨터가 사람이 쓴 A 라는 글자를 인식하는 문제에서, 누가 A를 위가 터지게 잘 못 써서, H 라고 인식될 상황이 있을 수 있을 것이다. 그리고 A를 인식할 때 사용하는 알고리즘이 먼저 제일 윗부분을 인식하는 것이라고 가정해 본다면, 100번, 1000번을 다시 돌려도 누군가가 관여하지 않는다면, 컴퓨터가 이것을 A라고 인식할 가능성은 없을 수도 있다.

하지만 여기서 이 글자 위에다가 임의의 점을 무수히 찍어서 완전히 전체가 까맣게 되어 있는 상태에서, 조금씩 찍은 점들을 빼낸다고 해 보자. 그렇다면 이것을 A라 인식할 수 있는 가능성이 생긴다. 왜냐하면 터져 있는 윗부분의 중요도가 Noise 에 의해 상쇄되어 결정적인 역할을 하지 못하게 될 수 있기 때문이다.

실생활에서의 의미

실생활에서도 이러한 기법은 작동할 것이다. GlobalOptima를 꼭 찾아야 하는 문제라면, 항상 일부러라도 Noise를 넣어주면서 문제에 대한 답을 재검증하는 작업이 필요할 것이다.

그리고 이 세상 자체가, 생명체의 원리가 기본적으로 이러한 기능을 내재하고 있는 것으로 보인다. 삶에는 기복이 없을 수 없고, 감정에도 기복이 없을 수 없다. 왜 이런 일이 일어나는가 하고 고민할 필요가 없다. 원래 그렇게 작동하도록 만들어져 있는 것이다.

Noise 가 들어오는 시기가 있다면 빠지는 시기도 있을 것이다. 그리고 원래 NoiseInjection 은 Noise 넣어 줄 때는 빨리 넣어주고, 뺄 때는 천천히 빼야 한다. 삶에서의 진보는 보통 느리지만, 추락은 빠르다. ^^

삶에서의 진보는 보통 느리지만, 추락은 빠르다.
정말이지 너무나 끄덕끄덕~


"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>