Machine learning...

예전엔 머신러닝이라고 하면 특별히 공부를 시켜야되는, 그러니까 데이터와 원하는 결과를 가져다가 뭔가(신경망)을 학습시키는 것을 machine leanring이라고 생각했는데, 사실상 요즘은 기계가 뭔가 약간의 지능이라도 가진 물건처럼 동작하면 그것을 다 머신러닝이라고 부르는 모양이다.

예전에 micromouse라는 게 있어서 미로에 놓아두면 자동으로 미로를 학습해서 최단경로를 구하고 그것을 얼마나 빨리 달릴 수 있는지 하는 대회도 있었는데 (지금도 있다) 이것도 머신러닝이라고 부를 수 있는 시절이다. 어떤 방법으로 구현했고 하는 것은 별개의 문제고 뭔가를 학습해서 최적의 답을 구하기만 하면, 그걸 기계의 힘으로 하면 다 마신러닝이 되는 거다.

신경망과 가장 가까운 것이 사실 신호처리라는 학문이고 패턴인식이고 보면 그 옛날에 하던 모든 신호처리, 패턴인식도 어떤 면에서는 다 머신러닝이라고 할 수 있다. 신호처리에서 적응형 신호처리 (adaptive signal processing)야 말로 대표적인 머신 러닝이 된다. 이렇게 기존의 것들을 지금 잘 나가는 용어/개념에 흡수시켜놓고 보면 뭔가 시대에 뒤떨어졌다는 생각이 덜 든다. 일종의 최면이나 정신승리(?)라고 하는 것 처럼이나.

그러니까 머신러닝이라고 하는 것은 기계의 힘(빠른 연산/처리 능력)을 이용해서 인간의 문제를 풀어줄 수 있게만 하면 다 머신러닝이다. 물론 용어에 있는 것처럼 학습을 해야 하는데, 그 학습은 기계 스스로가 하든지 아니면 사람의 힘을 빌든지 상관이 없다. 그렇게 보면 디지털 필터(EQ/화상처리)도 머신 러닝이 된다. 사람이 원하는 효과를 기계에 학습시켜 (weight의 형태로 주었으니까) 얻어내고 있으니까 말이다.

같은 맥락으로 통신시스템 또한 엄청난 ML 시스템이다. 그러나 다들 이것도 뭔가 ai화가 안된 세계라고 생각해서 이 블록 저 블록 찐 ML로 만들고 싶은가보다. 여기서 찐ML이라는 것은 신경망 네트워크를 말한다.

예전의 신호처리나 통신시스템에 비해서 신경망은 뭐랄까 너무 휴리스틱한 측면이 있다. 망을 어떻게 구성해야 되는지, 노드를 몇 개로 구성해야 하는지 레이어를 몇 개나 해야 할지, 또 각각의 망 구성은 어떻게 해야할지 그 용어나 정의도 뭔가 확실하지가 않다. 누군가가 구성해 놓은 망을 보면 ‘이걸 왜 이렇게 했지?’싶지만 아무런 근거나 이유가 없다. 그냥 그렇게 구성했더니 좋은 결과가 나온 거다.

‘이게 뭔 소리야??’

그렇다. 그냥 그게 잘 된다니까 그렇게 해보는 거다. 왜 잘 되는지는 모르지만. 왜 잘 되는지는 모르지만 그 복잡한 행렬 연산을 계속해야 되는 거다.

그러니까 수많은 실험을 해보고 나면 여태 나와 있는 망들의 특징을 어느 정도 (경험적으로) 파악하게 될테니까 그것들을 연결해서 복잡한 문제를 풀어내는 거다. 전적으로 trial&error를 통해서 말이다.

이 방법이 어찌보면 뭐 문제를 푸는 올바른(?) 접근 방식이라고 할 수도 있을지도 모른다. 한방에 어떻게 답을 알겠나. 일단 붙여보고 시도해보고 나서 원리를 파악하든가 하면 되는 거지. 어차피 투자도 받을 거고 GPU가 빵빵하니까 일단 신경망을 붙이고 보는 거다.