보안 이슈

AhnLab 보안 전문가의 심층분석! 보안 이슈 정보를 전해드립니다.

머신 러닝(Machine Learning)이란

  • Facebook에 공유하실 수
    있습니다.

  • Twitter에 공유하실 수
    있습니다.

  • Linked in

    Linked in에 공유하실 수
    있습니다.

  • 붙여넣기

    블로그나 게시판에 붙여넣기 하실
    수 있습니다.

  • AhnLab
  • 2017-01-02

보안 위협 발견을 위한 또 다른 대안, ‘머신 러닝’
머신 러닝(Machine Learning)이란

 

구글의 알파고와 이세돌 9단의 바둑 대결은 인공지능이 더 이상 먼 미래에 일이 아님을 보여주었다. 또한 IT 업계의 거물들은 미래 성장 성장 동력으로 ‘인공지능(Artificial Intelligence)’을 정조준하고 있으며, 여러 분야에서 이를 구현한 사례들을 속속 선보이고 있다. 
월간’안’에서는 인공지능을 구현하기 접근 방식 중의 하나인 머신 러닝(Machine Learning)이 무엇이며, 보안 분야에서 머신 러닝이 왜 필요한지에 대해 2회에 걸쳐 소개하고자 한다.

 

 

[연재 목차]

1부_머신 러닝이란 (이번 호)
2부_왜 보안 분야에 머신 러닝이 필요한가 (2017년 2월호)

 

 

몇 년 전부터 IT 전문 뉴스뿐만 아니라, 일반 공중파 뉴스에서도 ‘인공지능’ 관련 기사를 쉽게 접해볼 수 있다. 특히 얼마전 ‘이세돌’과 ‘알파고’의 바둑 대국 승부는 국내에서 ‘인공지능 포비아’라는 용어가 생길 정도로 우리에게 적지 않은 충격을 주는 사건으로 알려졌다. 그 결과 많은 이들이 ‘인공지능’은 우리의 일자리를 뺏을 것이며, 더 나아가 ‘터미네이터’나 ‘매트릭스’같은 어두운 미래를 보여주는 영화가 이제 곧 현실로 닥칠 수 있다며 경계하기도 했다.

 


 

 

2005년 즈음만 해도 국내에서 ‘인공지능’은 인기 분야가 아니었다. 이는 1980년대 소위 “인공지능은 죽었다(인공지능 연구의 거품이 터진 사건)”의 영향일 수도 있지만, 국내의 산업 환경(소프트웨어보다는 하드웨어 중심)의 영향이 그 원인일 듯 하다. 우리나라와 다르게 당시 확장을 거듭하는 해외의 몇몇 신생 IT 업체들이 있었다. 그들 중 하나가 구글(google)이었고, 그 중심엔 페이지 랭크(page rank)라는 실제 운영되던 인공지능(혹은 알고리즘)이 있었다. 즉, 국내에서 침체된 인공지능이 해외의 IT 업체에게는 주요 핵심 전략 과제 중 하나로 인정 받기 시작할 때였다.


구글 이후의 IT 업체들은 웹(web) 2.0 패러다임을 거치면서 인공지능은 이제 경쟁자와의 비즈니스 차별성을 주기 위한, 기업의 생존과 직결된 기술로 자연스럽게 이해되고 있다. 모든 데이터는 가공되고 공유되며, 그들로부터 지식(knowledge)를 최대한 많이 뽑아내는 기업이 우승 트로피를 얻게 되는 것을 경쟁을 통해 직접적 혹은 간접적으로 경험하게 된 것이다. 즉, 기업은 데이터를 최대한 많이 가지도록 노력해야 하며, 손쉽게 ‘공유∙가공’될 뿐만 아니라 결국 지식으로 변환할 줄 알아야 한다는 것이다. 과거 “일단, 데이터만 쌓아, 나중에 어떻게든 되겠지”하던 시절보다 이제 머리가 많이 아파졌다. 페이스북(facebook.com)과 잊혀진 마이스페이스(myspace.com), 그리고 구글(google.com)과 야후(yahoo.com). 그들의 차이점에 주목하라.


앞서 언급한 것처럼, 서구의 IT 업체들은 “기저귀를 사면 맥주를 산다”에서부터 “검색한 결과를 고객이 가장 만족할만한 순서로 정렬”하는 알고리즘, 그리고 “어제 영화 터미네이터를 시청했으니, 오늘은 매트릭스를 15% 할인된 가격으로 제공해 드립니다.”까지, 인공지능의 활용과 연구는 그들에 의해 수십 년간 주도적으로 이미 진행되고 있었다. 이에 반해 국내 IT 업체들은 최근 들어서야 그 중요성을 깨닫고 도전하고 있지만, 힘에 부칠 수 밖에 없다. 하드웨어 산업은 근성과 노력으로 극복할 수 있었지만, 인공 지능은 쉽게 그렇게 되지는 못한다. 즉, 우리가 따라가는 속도보다 빠르게 그들은 앞서갈 것이 뻔하기 때문이다. 그렇지만 늦었다고 손을 놓고 있을 수는 없지 않겠는가? 

 

머신 러닝, 넌 누구냐


인공지능의 분야는 여러 가지가 있는데, 최근에는 ‘이세돌’을 상대했던 ‘딥 마인드’와 같은 ‘머신 러닝’이 꽤나 유명세를 타고 있다. 이외에도 휴리스틱, 최적화, 정보 검색, 그리고 패턴 인식 등 수많은 분야가 있다. 최근에 알려진 알고리즘들은 분야를 명확히 구별하기가 힘들어지는 추세이다. 일단 여기에서는 일반적인 “머신 러닝”에 대해 소개하기로 한다.

 


 

 

우리 삶은 일정한 패턴을 가지고 있는데, 필자의 생활 패턴은 [표 1]과 같다고 가정하자. 즉, 비가 오거나 혹은 너무 춥거나 더워도 나가 놀지 않았다. 그래서, 위 데이터를 가지고 [표 2]와 같은 규칙을 사람인 필자가 직접 만들어 보았다.

 


 

 

이러한 규칙을 미리 만들어 놓았다면, 내일 일기 예보만 가지고 내일 밖에 나가서 놀지를 고민 없이(더 나아가 내가 없더라도, 그 누군가에 의해서도) 쉽게 결정할 수 있다. 만일, 위 [표 1]이 일반적인 사람들의 패턴이라고 가정할 경우, IT 지식이 있는 동네 치킨집 사장님이 [표 2]를 입수하게 됐다면 이를 영업에 활용할 수 있을 것이다. 예를 들어, 야외 공원 주문량을 미리 예측하여 공원에 광고지를 노출하여 주문을 유도한다면 매출이 증가할 수도 있다. 


그런데 만일 [표 1]과 같은 데이터가 수십~수백 만개 이상인 경우에도 사람이 직접 패턴을 만들 수 있을까? 아마도 무척 힘들 뿐 아니라 그 검증 또한 어려울 것이다.


이와 같이 [표 1]과 같은 임의의 데이터들을 토대로 [표 2]와 같은 규칙을 ‘기계, 즉 컴퓨터’가 만들어 내는 것을 ‘머신 러닝’이라고 설명할 수 있다. [그림 2]를 참고하자.

 


 


[그림 2]에서 주황색 화살표는 데이터를 가지고 머신 러닝을 수행하는 과정을 나타낸다. 즉, 머신 러닝을 수행하기 위해서는 데이터가 필요하며, 그 처리는 기계(컴퓨터)가, 그리고 결과로 규칙(모델)이 생성된다. 이 과정은 수많은 반복과 실험 등을 통해 매우 오래 걸리는 작업이다. 이후 규칙(모델) 부분 그림의 파란색 화살표는 학습 결과를 적용하는 과정으로, 임의의 질의를 가지고 규칙(모델)을 통해 그에 상응하는 정보를 산출한다. 이 과정은 이전 머신 러닝을 수행하는 과정에 비해 상대적으로 단순하다. 알파고는 이세돌과 대국 이전에 수많은 바둑 기보를 가지고 오랫동안 학습한 결과로 ‘규칙(모델)’를 얻어냈으며, 이세돌과 대국 시점에서는 현재 바둑의 형세를 간단히 입력하면 다음 번 수를 제한 시간 이내로 빨리 산출하는 것으로 비유할 수 있다.


간략하게 머신 러닝에 대해 알아봤다면, 이제 이를 수행하기 위해 필요한 체크 항목들을 알아보기로 하자.

 

머신 러닝, 뭣이 중헌디


 

구글의 딥 마인드가 복잡하게 구성된 많은 수의 컴퓨터로 이뤄져 있다고 하지만 그에 비교해서 [표 3]의 ZeroR 알고리즘은 꽤나 단순하다. 즉, 1대의 컴퓨터로도 충분히 계산이 가능하다. 


이제 또 다른 예로, [표 1]의 소규모 데이터 대신 100년간의 사우디 아라비아의 날씨 데이터가 있고, 그 데이터의 크기는 수십 테라바이트(TB) 정도로 방대하다고 가정하자. 그것을 가지고 ‘내일 눈이 올까’를 학습하여 지식을 만들었다고 가정한다면, 그 대답은 항상 ‘아니요’일 것이다. 왜냐하면 그곳에서 눈은 100년 동안 오지 않았기 때문이다. 만일 ‘내일 눈이 올까’ 질문의 답을 구하기 위해 수십억 원의 예산을 들여 가장 최신이며 고가의 머신 러닝 알고리즘의 실행을 위한 환경을 구축한 뒤, 5주 동안 종일 기다리며 학습 시키는 장면을 상상해 보자. 그렇지만 그 결과는 매우 단순한 ZeroR 알고리즘의 결과와 큰 차이가 없을 것이다. 항상 ‘아니요’로 답할 것이기 때문이다. 게다가 ZeroR 알고리즘은 웬만한 요즘 컴퓨터 1대만 가지고도 금방 답할 수 있을 것이다. 어떻든, 사우디 아라비아에서 “내일 눈이 올까” 문제는 그렇게 어렵지 않고 상식적으로도 궁금하지도 않다. 오히려, 내일 사우디 아라비아의 최고 온도를 미리 예측하여, 폭염 대처를 하는 것이 더 큰 의미가 있을 것이다.


이와 같이 머신 러닝을 의미 있게 수행하기 위해서는 첫 번째로 ‘문제’를 잘 선택하는 것이 매우 중요하다. 사우디 아라비아에서 ‘눈’이 의미가 없는 것을 상기하면 된다. 또한 머신 러닝의 결과가 ‘이미 알고 있는 지식을 답습’해서도 의미가 없다. 즉, “30대 싱글 남성은 주말 야간에 혼자 집에서 맥주와 액션 영화를 즐긴다”를 10억 원의 비용을 통한 머신 러닝의 결과로 얻었다고 가정해보자. 허무하지 않겠는가? 혹시 글을 읽으면서, “에이, 이런 것을 설마 비싼 돈 주고 하겠어?”라고 질문할 수 있겠으나 비유가 다를 뿐이지 의미 없이 진행되는 값비싼 머신 러닝 프로젝트들도 꽤나 있다. 이를 확인할 수 있는 방법 중 하나가, 앞선 예제인 ZeroR 알고리즘과 그것 보다 조금 향상된 버전인 OneR 알고리즘을 돌려보면 된다. 이는 머신 러닝 기준(Baseline) 알고리즘으로, 만일 현재 연구 중인 알고리즘과의 결과 차이가 미비하다면 그 ‘문제’는 큰 의미가 없거나, 머신 러닝으로 수행할 필요가 없음을 뜻한다.


어떻든 문제가 잘 정의되었다면, 이제 데이터를 살펴봐야 한다. 다음 항목의 체크가 필요하다.

 


 

 

앞서 예를 들었던 사우디 아라비아의 경우, 해당 날씨 데이터를 어떻게 확보하느냐가 중요할 것이다. 만약 직접 사우디 아라비아에 온도계, 습도계 등의 센서를 배포하고 날씨 정보를 직접 수집했다면, 우리는 데이터의 주인이며 모든 권한이 포함되어 있을 것이다. 그런데 웨더닷컴(weather.com) 같은 서비스 업체로부터 RSS 피드나 JSON(JavaScript Object Notation) 형태로 수집을 받는다면, 주인도 아니며 권한도 없다. 이런 부분이 중요한 이유는, 데이터에 대한 주권이 없다면 향후 데이터의 속성이나 형상 변경을 통한 결과 향상을 기대하기 어렵기 때문이다. 예를 들어 사우디 아라비아의 날씨 데이터에 풍향 정보만 있어도 예측 정확도가 높아질 것으로 기대되는 상황이지만, 데이터의 주권이 없어서 풍향을 추가할 수 없다면 예측 정확도 향상을 포기해야 한다는 것이다. 

 

그리고 데이터의 주권이 확보되더라도, 머신 러닝 프로젝트를 연구하는 사람이 해당 데이터의 도메인(Domain) 지식이 부족하다면 쉽지 않은 작업일 것이다. 만약 의학 정보 데이터를 가지고 있을 때, 참여자가 의학 지식이 전혀 없는 머신 러닝 전문가라면 결과가 한정적 일 수 밖에 없다. 예를 들어, 간 수치에 대한 데이터가 있을 때 동일한 데이터 값을 실수 값(0.0 이상)으로 표현할 수 있거나 적당 값을 기준으로 양성(+)/음성(-)으로 구분하여 표현하는 경우도 있을 것이다. 머신 러닝 알고리즘에서 데이터 표현이 정수인 경우와 +/-와 같은 이진 값(boolean)은 매우 다르게 처리된다. 따라서, 의학 정보를 잘 아는 사람이라면, 해당 수치를 +/-와 같은 이진 값으로 변환하여 학습을 시도해 볼 수 있다. 이것은 머신 러닝 실험을 보다 다양하게 진행할 수 있는 조건이 되며, 더 좋은 결과를 만들 수 있는 기회를 제공해 준다. 

 

이외에도 여러 가지 체크 항목이 있는데, 모두 머신 러닝을 수행하는데 우선 고려할 사항들이다. 특히 데이터의 트렌드(정규 분포)가 빈번히 변경되는 환경이라면 머신 러닝의 결과에 큰 영향(물론 안 좋은)을 줄 수 있기 때문에 사전 조사가 필요하다. 예를 들어, 국민 소득 데이터에서 매우 큰 국가적 재난이 발생해서 국민 소득이 갑자기 1/3로 줄었다고 가정하자(즉, 데이터의 정규 분포가 크게 변경되는 상황). 그렇다면, 재난 이전에 학습된 결과를 재난 이후의 데이터로 적용하면 잘 맞아 떨어질까? 이세상에 아무리 훌륭한 머신 러닝 알고리즘이 있더라도, 재난까지 미리 계산해 넣을 수는 없을 것이다. 

 

앞선 예로 소득 데이터와 재난을 언급했는데, 생각보다는 이러한 트렌드의 변화는 매우 다양하게 발생하며 머신 러닝의 정확도는 그것으로 인해 시간이 지날수록 점점 떨어지게 된다. 따라서 해당 가능성을 사전에 체크해 두는 게 중요하여 어떻게 대응할 지를 미리 연구해야 한다.  

 

마지막으로 '다수/소수'의 문제인데, 과거의 마케팅이 일반인을 상대로 크게 몇 부류로 나눈 뒤 진행하였다면, 이제는 좀더 세분화된 분류로 나눠서 대응하는 것이 필요한 시대이다. 왜 갑자기 '마케팅' 용어가 나오냐고 의아해 할 수 있는데, 머신 러닝에서 ‘아웃스탠딩(Outstanding)’이라는 용어와 연관이 있기 때문이다. 이는 다수가 아닌 소수의 일부분인 그룹을 의미하는데, 보통 머신 러닝 알고리즘은 아웃스탠딩을 무시해서 오차를 줄이려고 노력한다. 만약 우리에게 필요한 지식이 전체 고객 정보에서 상위 0.1%의 VIP 고객을 목적으로 하고, 이를 머신 러닝을 통해서 구하고자 한다면 다른 접근법이 필요하다는 점이다. 즉, 머신 러닝 알고리즘은 아웃스탠딩을 줄여 일반화를 시키는데, 그러다 보니 상위 0.1%의 VIP 데이터가 무시될 수 있다. 이는 아래 [그림 3]과 유사한데, 머신 러닝 알고리즘은 푸른색과 붉은색 두 개의 분류 영역을 ‘규칙’ 혹은 ‘수식’으로 분리하려고 한다. 그런데 위 두 개의 회색 영역은 아웃스탠딩으로, 분류의 성능을 저해한다는 명분 하에 무시하거나 제거하려는 경향이 강한 지역이다. 즉, 수학만 특별히 잘하거나 수학과 국어를 모두 잘하는 학생의 데이터는 ‘예외’로 처리되어 학습에 포함되지 않을 수 있다.

 


 

 


 

 

이러한 종류는 FDS(부정 금융 거래 감시 시스템) 데이터도 해당되는데, 전체 금융 거래 중 부정 거래의 비율은 극히 낮을 것이기 때문에, 머신 러닝 적용이 용이하지 않는 경우가 많을 것이다. 또한 보안 데이터도 마찬가지로, ‘정상’ 비율이 ‘악성’ 비율보다 상대적으로 매우 높은 모양이다. 이때는 있는 그대로의 데이터를 가지고 자연스럽게 대응할 수 있는 머신 러닝 알고리즘의 선정이 중요한데, 그렇지 못한 경우 데이터의 분포를 임의적으로 조정하여 해결하려고 하는 방법들이 종종 사용될 수도 있다. 그들 중 하나가, 아웃스탠딩인 회색 영역의 작은 점 하나 주변에 여러 개의 점을 추가로 찍는 방식이다. 예를 들어, 수학과 국어를 잘하는 학생의 데이터가 원래 1명이지만, [그림 4]와 같이 가상의 4명을 추가하여 아웃스탠딩의 조건을 사전에 방지하는 방식이다. 이러한 테크닉은 현재의 학습 결과를 만족시킬 수 있지만, 데이터의 분포를 임의대로 조작(즉, 1등 학생을 4등으로 만들어서) 했기 때문에 향후에도 좋은 예측 결과를 계속 만들어 낼 수 있을지는 의문이 되는 방식이다.

 

지금까지 머신 러닝이 무엇이며, 머신 러닝을 의미 있게 적용하기 위한 고려 사항에 대해 알아보았다. 다음 호에서는 보안 위협을 대비하기 위해 머신 러닝이 필요한 이유를 소개하고자 한다. 

  • AhnLab 로고
  • MDS개발팀 전진표 책임
  • Facebook에 공유하실 수
    있습니다.

  • Twitter에 공유하실 수
    있습니다.

  • Linked in

    Linked in에 공유하실 수
    있습니다.

  • 붙여넣기

    블로그나 게시판에 붙여넣기 하실
    수 있습니다.

지금 마케팅 안내 수신 동의하고
선물 받아가세요!

이벤트 내용 더 보기
세미나/제품/이벤트 안내

더 알아보기

개인정보 수집 및 이용 동의서

선물 발송을 위해 아래와 같이 개인정보를 수집 및 사용합니다.
동의를 거부할 수 있으나, 동의 거부 시 이벤트 참여가 불가능 합니다.

  1. ㆍ수집 항목 : 이름, 휴대전화번호
  2. ㆍ수집 목적 : 참여자 중복 확인, 공지 발송, 경품 발송
  3. ㆍ보유기간 : 이벤트 종료 후 지체 없이 파기(단, 당첨자의 경우 경품 배송 후 30일)
  4. ㆍ경품 발송 위탁: 쿠프마케팅 (모바일상품권 발송업체)
참여하기
닫기