• 2018. 1. 9.

    by. 곰돌이푸우~

     


    2016년 구글의 알파고가 인간에게 바둑을 이긴 후

    머신러닝에 관한 관심이 높아졌고.

    2017년 한해도 저는 머신러닝을 배우기에 몰두하였습니다.

     

    머신러닝이란 인공지능기술의 하나로

    기계가 스스로 학습하여 목표로 하는 작업을 완수 할 수 있게 되는 것을 말하죠.

     

    기계가 스스로 학습해서 특정 작업을 하는 것에 무엇이 이점이 있느냐? 하면

     

    많이들 하는 예로 스팸메일을 걸러내는 작업을 예로 들을 수 있습니다.

    머신러닝을 적용한 시스템 외에도

    스팸메일을 구분 할 수 있는 수많은 프로그램들과 방법들이 있지만

     

    프로그래머가 이 작업을 직접 작업 하게 된다면.

     

    예측 할 수 있는 모든 예외들을 따져서 프로그램으로 작성해야 합니다.

     

    그러다 보면 예측 외의 예외들이 발생 할 수 있고

    이것을 수정하기 위해 여러 차례 수정을 반복 해야 할 수 있습니다.

     

    그러나 머신러닝은 스팸메일의 예제들을 주면 적용된 알고리즘을 바탕으로

    사람이 작성해야 할 로직을 (정확히는 로직은 아니지만) 구성하고 실행 할 수 있게 됩니다.


    그리고 우려 했던 부분이 새로운 예외가 나타나면

    스팸메일의 예제에 추가하여 다시 학습해

    프로그래머가 수차례 수정을 가하는 수고를 덜 수 있게 되는 것이죠.

     

     

    이외에도 사람이 직접 해야할 많은 일들을 기계가 스스로 배워 돕게 된다는 장점이 있습니다.

     

    머신러닝의 원리에 대해서는 더 복잡한 많은 설명들이 있지만 그 간단한 아이디어중 하나를 소개하고자 합니다.

    ( 일개 프로그래머로서 머신러닝에 대한 전문적 연구를 하고 있지는 않아 간단한 설명만 드립니다. )

     

    바로 선형대수 입니다.

     


     

    간단하게 위의 식으로 정의가 되는 대요.

     

    H(x)는 우리가 예측하고자 하는 결과 즉 기계가 학습을 해서 내놓을 결과를 말합니다.

    x는 우리가 머신에게 주는 값, 즉 질문이 됩니다.

     

    x의 값을 머신에게 물어보면 머신이 우리에게 줄 값 H(x)를 기대 하게 되는 것이죠.

     

    즉 입력 받은 질문과 예시를 통해 컴퓨터는 W값을 스스로 구성하고

    사람이 물어보는 질문에 대하여 W를 통해 유추하여 결과를 주게 됩니다.

     

     

    기본적인 원리는 이러 하지만 머신러닝의 긴 역사에도 불구하고

    이제 와서 관심을 받게 되는 이유는

    그동안 머신러닝에 있던 결점들로 그 정확도에 의문이 많았고

    그 정확도에 대한 문제는 스마트폰과 소셜미디어가 발달하면서

    대규모의 데이터를 얻을 수 있게 되면서 해결 할 수 잇게 되었습니다.

     

    이처럼 머신러닝은 검증된 알고리즘에

    양질의 방대한 데이터를 주면 줄수록

    그 정확도가 올라간다는 특징이 있습니다.

     

    대체로 머신러닝을 하시는 부분들은 알고리즘도 알고리즘이지만

    이 데이터와 많은 시간을 씨름하게 되죠.

     



    위에서의 설명처럼 머신러닝은 많은 부분 수학적 알고리즘에 그 바탕을 두고 있습니다.

     

    그래서 처음 머신러닝을 시작 하시는 분들이 하는 고민중 하나가

    수학을 다시 공부해야 하나?? 라는 점입니다.

     

    물론 수학을 다시 공부하여 머신러닝에 관련한

    수많은 알고리즘을 이해 할 수 있으면 당연 베스트입니다.


    하지만 수학에서 손을 노은지 오래되었거나

    수포자 분들이 다시 수학을 공부하여 머신러닝에 접근 하려면 많은 무리가 있죠.

     

    이때문에 저도 많은 고민을 하고 공부도 해보고 검색도 많이 해보았습니다.

    해외의 한 개발자 분은 수학을 하나도 공부 하지 않고 코드만 공부하여

    좋은 결과를 내고 있다고 하는 분도 있고

    대체로 알아두면 좋지만 꼭 수학적 알고리즘에 깊게 공부를 할 필요도 없다는 것입니다.

     

    그리고 지금 머신러닝을 공부하며 경험해본 느낌은

    알고리즘을 이해하기 위해 수학을 공부하는 것은

    음악을 할 때 화성학 같은 음악적 이론을 깊이 공부하는 것과 비슷하다는 생각을 하게 되었습니다.

     

    음악을 할 때 화성학을 배우면 여러가지를 응용하거나 음악을 더 깊이 이해 할 수 있지만

    많은 분들이 화성학을 배우지 않아도 음악을 할 수 있다는 점입니다.

     

    이런 것처럼 수학을 공부하여 알고리즘을 이해하면

    해당 알고리즘의 소스에 대한 응용력과 깊은 이해가 생기는 것은 당연한 것이지만.

     

    수학을 잘 몰라도 어느정도는 머신러닝을 공부 할 수 있다는 것이 저의 생각입니다.

     

    저는 이제 머신러닝을 공부하는 입장에 있고 이제 text classification 정도의 프로그램을

    이해하고 적용하는 과정에 있지만 많은 분들이 이 포스팅을 읽고

     

    머신러닝을 어렵게 생각하시고 접근을 망설이시는 것에서

    머신러닝을 자신 있게 시작 할 수 있도록 도움이 되었으면 합니다.