머신러닝 매거진을 만든 이유
그 동안 독서에 대한 글이나 개인적으로 생각했던 부분에 대해서 글을 작성해 왔는데
올해부터 약 2년 동안 머신러닝과 관련된 개념을 설명하는 글을 작성할 것이다.
주기는 대략 2주에 1번 정도로 예상하고 있다.
글을 쓰는 이유는 개인적으로 머신러닝과 관련된 개념을 이해하고, 이를 글로 표현해 보기 위함이다.
필자는 대학원 때 simulation 관련 연구를 주로하다가, 대학원 말미에 머신러닝을 공부해서
지금은 연구원으로 simulation과 머신러닝을 같이 연구 하고 있다.
지금까지는 simulation과 머신 러닝 중에 simulation의 비중이 더 높았지만, 올해부터는 머신 러닝의 비중을 더 높이고자 한다.
* 필자가 머신러닝을 아예 모르는 건 아니기 때문에, 기초 개념부터 쓰기보다는 업무 중에 공부한 개념들을 설명하는 방식으로 글을 쓸 것이다. (글의 순서가 뒤죽박죽일 수 있다.) 그리고 나서 브런치북에 관련된 내용을 짜임새 있게 정리할 예정이다.
글을 쓰기에 앞서 필자가 이해하고 있는 머신 러닝의 개념을 함수에 빗대서 쉽게 설명해보겠다.
함수라고 하면 y = f(x)가 먼저 떠오를 것이고, f는 x와 y의 관계를 이어주는 역할이라고 볼 수 있다.
예를 들면 x와 y가 선형적인 관계를 가지고 있다고 가정하면, y = a*x + b로 쓸 수 있고,
x와 y 데이터로부터 계수 a와 b를 구하는 것이 함수 f를 구하는 것이 된다.
머신러닝도 기본적인 원리는 이와 비슷하다. 원래는 x와 y를 동시에 측정하던 거를 수 많은 데이터로 바탕으로 얻은 f를 통해 x만 알고도 y를 구하는 것이다. 물론 f는 위에서 말한 선형적인 관계보다는 훨씬 복잡한 형태이며 정교한 모델이 필요하다.
그렇다면 뭐가 좋길래 굳이 어려운 머신러닝을 도입해서 f를 구하는 수고를 하는 것일까?
이러한 머신러닝은 y를 구하기 어려울 때, y를 직접 구하는 것보다 머신러닝으로 얻은 f를 통해 구하는 게 더 효율적일 때 아주 유용하다.
예를 들면, CCTV에 수 많은 사람들의 얼굴이 찍히는데, 이 사람이 누군지 알고 싶다고 가정하자. 그러면 CCTV에 찍히는 사람들의 얼굴 이미지는 x가 되고, 그 사람이 누구인지는 y가 된다.
만약에 범죄자를 잡는다고 생각해보면, 경찰이 직접 CCTV를 얼굴 이미지를 보면서 범죄자를 특정할 수도 있겠지만, 24시간 동안 감시할 수는 없지 않은가. 만약 사람들의 얼굴 이미지만 보고 CCTV에서 자동으로 범죄자를 특정해서 경찰에게 알람을 주면 더 효율적이지 않겠는가?
이외에도 머신러닝이 효율적으로 적용될만한 예시는 많다. 사실 너무 많아서 하나하나 다 쓸수도 없는 지경이다.
아무튼 위의 함수 예시를 빗대어 보면 머신러닝에서는 다음과 같은 요소가 중요하다.
1. 데이터: 데이터가 어떠한 형태로 있는가? 이미지, 언어, 그래프 형태?
2. X, Y: 데이터를 적절한 X, Y 값으로 표현하는 방법. 머신러닝 분야에서는 주로 X를 feature라고 하고 y를 target이라고 한다.
3. Algorithm: X를 통해 Y를 효과적으로 예측할 수 있는 algorithm. 가장 간단한 예시는 linear regression이 있고, neural network, CNN 등이 있다. 데이터의 갯수나 형태 등에 따라서 어떤 algorithm을 사용할지 결정된다.
이 외에도 머신러닝은 학습하는 방법에 따라 다음과 같이 나눌 수 있다 (실제로는 더 세부적으로 분류할 수 있다)
1. 데이터에 정답이 있는 경우 => 지도학습 (supervised learning)
2. 데이터에 정답이 없는 경우 => 비지도학습 (unsupervised learning)
3. 주변 환경과 interaction을 하며 업데이트 한다 => 강화학습 (reinforcement learning)