1. 개요


N-gram이란 텍스트, 바이너리 등 전체 문자열을 N 값 만큼 서브스트링(Sub-String)으로 나누어 통계학적으로 사용한 방법을 의미한다. "기계학습"이라는 단어를 2-gram 기준으로 적용하면 "기계", "계학", "학습" 이라는 3가지 하위 문자열들이 각각 빈도수 1로 생성되게 된다. N-gram은 "귀납 학습" 범주에 속하는 학습 방법으로 구체적인 사례를 통해 공통점을 추출하는 형태이다. 이렇게 N-gram은 조각난 문자열을 통해 발생하는 출현 빈도를 암기(학습)하여 사용하는 것이다.


이 기법을 사용하는 대표적인 사례는 구글 북스 엔그램(Google Books N-gram)이 있다. 구글이 모든 책들을 디지털화 시키면서 함께 진행하는 프로젝트로 문화의 전개 방향이라던가, 시대가 보려는 관심사 등 보다 더 정밀한 데이터를 얻을 수 있다는데에서 사용된다. 가령 예를 들면 그 시대에 "셜록 홈즈"가 인기가 없었으나, 향후 다양한 책에서 "셜록 홈즈"라는 단어를 얼만큼 사용되었는가를 보면 앞으로의 "셜록 홈즈"가 시대에 미칠 영향력을 알 수 있다는 것이다.






그 외 언어 인식, 색인 방법, 검색 등 다양한 분야에서 활용하고 있다.


보안적인 관점에서는 악성코드 바이너리 파일을 테스트하여 적정선의 N의 값을 이용, N-gram을 사용하여 좀 더 신뢰성이 높은 시그니처로 활용되는 방안도 연구되고 있다.


2. 참조


학습 데이터를 이용한 기계 학습과 파라미터 조정은 앞서 언급한 내용대로 어떤 데이터 셋을 가지고 학습을 진행했는가에 따라 파라미터의 값이 바뀌게 된다. 수학적으로 접근하면 학습 데이터에 의해 수식이라는 표현 형식으로 나타내어 프로그램을 운영하게 된다.


대용량의 데이터를 데이터 마이닝을 작업하는데있어 파라미터 조정에 의거한 기계 학습을 진행하는 것은 데이터의 전체적인 추이, 경향 등을 추출하기 위함으로써 통계적인 기법에 의거한다.


통계학에서 학습 데이터가 수치로 주어졌을 때 그 수치를 설명할 수 있는 수식을 "회귀 분석"이라 한다. 회귀 분석의 대표적인 방법으로는 "최소제곱법(Least Squares Method)"가 있다.


1차 방정식으로 표현된 최소제곱법 

2차 방정식으로 표현된 최소제곱법 


  • 붉은 점은 데이터 포인트라 하며 학습 데이터 셋을 의미한다.

  • 파란 선은 추세선으로 학습 데이터 셋에 의해 만들어진다. 1차 방정식으로 표현된 추세선은 선형 추세선이라 하고, 2차 방정식에 의해 만들어지는 추세선은 곡선 추세선 혹은 다항식 추세선이라 한다. - 추세선의 종류


다음과 같은 5개의 학습 데이터 셋이 있다고 가정하고 선형 추세선을 그리기 위한 1차 방정식을 최소제곱법을 통해 구해보자.




주어진 데이터 포인트는 2개의 미지수(a, b)를 가지는 연립 일차 방정식을 얻는다. 이 연립 방정식은 해를 갖지 않을 수 있다. 이유는 하나의 직선으로 표현 할 수 없기 때문이다. 다시 이 연립방정식들은 다음과 같이 표현할 수 있다.




이렇게 표현한 식에서 행렬 A의 전치를 양 변에 곱한 식을 "정규시스템(Normal System)"이라 하며, 이 정규 시스템을 통해 구해지는 a와 b의 해를 "최소제곱해(Least Square Solution)"라 한다.




이제 위에서 언급한 다섯개의 데이터 포인트를 이용하여 다음과 같이 계산 할 수 있다.




좌변 우변을 각각 연산을 하면 다음과 같이 계산이 된다.



이를 통해 a와 b에 대한 연립 방정식을 구하게 되고,



연립방적식을 통해 a와 b의 해를 구할 수 있다.



이를 식으로 표현하면 다음과 같고,



이 식을 도표에 표시하면 다음과 같이 나온다.



구해진 방정식에 데이터 셋의 x값을 대입해 y값을 구하면 오차는 다음과 같이 나온다.



앞서 계속 언급되는 파라미터 조정과 학습에서 학습 데이터 셋에 따라 파라미터는 크게 바뀐다고 언급하고 있다. 만약 너무 동떨어진 데이터를 사용하게 되면 어떤 결과를 보게 될 것인가?



최소제곱법을 이용하여 구한 선형 추세선은 때로는 위와 같이 오차가 너무 커지는 경우도 발생한다. 이는 학습 시킨 데이터 셋의 문제가 될 수 있으며, 꼭 이 데이터를 학습시켜야 한다면 선형 추세선이 아닌 형태에 맞는 다항식 추세선으로 바꿔 사용해야 한다.


참조


1970년대

70년대 "귀납 학습"과 함께 진화 연산 방법에 기초한 기계 학습이 제안되었다. 단윈의 진화론 모델화한 기계 학습 방법으로 "유전(자) 알고리즘", "생물 진화 모델", "진화 연산"이라고 불리기도 한다. 일반적으로 생물의 진화에서는 환경과 상호작용하면서 환경에 더 적합한 형태로 진화되어 가는데 적자 생존으로 환경에 잘 적응한 세대가 살아남고 그렇지 못한 세대는 사라지는 형태에 의거하여 적합도 함수에 의해 높게 평가된 형태가 살아남고, 그렇지 못한 형태는 사라지는 것으로 이해할 수 있다.


유전 알고리즘(Genetic Algorithm)은 자연세계의 진화과정에 기초한 계싼 모델로 존 홀랜드(John Holland)에 의해 1975년에 개발된 전역 최적화 기법으로, 최적화 문제를 해결하는 기법 중 하나이다. 생물의 진화를 모방한 진화 연산의 대표적인 기법으로, 실제 진화의 과정에서 많은 부분을 차용하였으며, 변이(돌연변이), 교배 연산 등이 존재한다. 또한 세대, 인구 등의 용어도 문제 풀이 과정에서 사용된다.

- 위키피디아


유전 알고리즘은 기계 학습과 함께 최적화 방법으로 널리 응용되지만 확률적 검색 알고리즘(두 데이터셋의 유전자로 만들어지는 더 나은 형질은 어떤 결과를 가져다 줄지 모른다.)이므로 최적의 지식을 학습하는 것은 기대할 수 없다. 말 그대로 최적화 즉, 근사적으로 최선의 답을 구하는데 있어 뛰어난 알고리즘이다.


1990년대

90년대에 들어서서 생물 학습에 관한 연구가 본격적으로 기계 학습 분야에 응용되어 "강화 학습"이 시작되었다. "유전 알고리즘"이 생물집단의 진화를 모델로 만든 학습 방법인 것에 비해 "강화 학습"은 생물 개체가 환경과의 상호작용에 의해 지식을 획득하는 것을 모델로 삼고 있다.


강화 학습(Reinforcement learning)는 어떤 환경을 탐색하는 에이전트가 현재의 상태를 인식하여 어떤 행동을 취해 그 환경으로 보터 보상을 받게 된다. 보상은 양수와 음수 둘다 가능한데, 보상이 누적되어 최대가 되는 것을 지향한다.

-위키피디아


최종적으로 보상 합계가 최대가 되기 위해서는 현재의 결과보다는 환경에 적응하려는 목적이 더 강하다고 할 수 있다.(잘한 행동에 대해 칭찬이라는 보상을 받고 잘못한 행동에 대해서 벌이라는 보상을 받게 되면 칭찬받기 위해 행동하게 되는 방식의 학습방식이다.) 이는 곧 학습할 때 마다 발생하는 진동이나 잡음이 있더라도 학습이 지속적으로 이루어 질 수 있음을 의미한다. 진동과 잡음에 대한 대응이 잘되다 보니 현실적인 문제대 대한 대응도 뛰어나다.


1990년대 말

인터넷의 발전과 맞물려 "데이터 마이닝", "텍스트 마이닝"이 발전하기 시작했다. "데이터 마이닝"은 축적된 대용량의 데이터에 기초해 특정한 경향과 규칙을 찾아낸다. 초기에는 대용량의 데이터를 처리하기 위해서 통계학확률 이론 같은 데이터 해석방법을 사용하였지만, 기계 학습을 도입해 좀더 지적인 처리를 실현해 나가고 있다.


참조


1940년대


기계 학습의 연구의 시작은 "인공신경망(Artificial Neural Network)"이라고 할 수 있다. 생물의 신경조직 움직임을 모델로 하여 정보를 처리하는 구조로, 자극에 해당하는 데이터가 다른 신경으로 전달되면서 어떻게 처리하고 학습해야할지 정해지게 된다. 1960년대 프랑크 로젠블라트(Frank Rosenblatt)에 의해 "다층 신경망(Multilayer Neural Network)"이 제안되었고, 이는 "퍼셉트론(Perceptron)"이라 부르게 된다. 퍼셉트론은 비교적 정확히 기술된, 계산에 의한 최초의 신경망 모델이어서 여러 분야에 커다란 영향을 미치게 되었다.


자극을 받는 세포인 "자극층(입력층, 센서층)"은 데이터를 받는 역할을 하고, 자극에 따른 행동을 결정하는 "응답층(출력층, 반응층)"이 데이터에 따른 결과를 출력하게 된다. 자극층에서 응답층으로 가는 사이에는 "연상층(중간층, 결합층)"이 존재하는데 연상층에 의해 어떤 응답층으로 보내게 될지 결정된다.




1950년대


기계 학습이라면 제일 먼저 떠오르는 단어는 인공지능이다. 이 시기에 체스나 장기, 바둑과 같은 인간이 지적인 활동을 하는 전형적인 게임을 이용한다. 이러한 게임들의 특징은 정해진 규칙에서 다양한 변수들이 있기 때문에 게임의 정확한 규칙과 정보를 파악한 후 기계 학습을 시켜 결과를 지켜보는 인공지능 연구를 진행했다. 이 시기에 아서 사무엘(Arthur Samuel)이 체커 프로그램에 기계학습을 사용한 연구를 진행했다. 그가 선택한 기계학습은 "파라미터 조정" 기법이다.


"파라미터 조정" 기법은 평가 함수를 만들어 사용하는데 상대의 움직임에 따른 대응을 하기 위해서 여러가지 경우의 수를 구하고, 구한 경우의 수에서 평가하여 가장 높은 평가치에 따라 선택을 하는 방법이다. 이 방법은 어느 요소를 중시하는 가에 따라 평가 함수의 수치는 크게 바뀌며, 그에 따른 결과도 바뀌게 된다. 그래서 파라미터의 값을 어떻게 설정하는 가는 평가 함수 자체의 질이 좋고 나쁠 수 있다. 결국 평가 함수의 파라미터의 조정은 사람이 하기 때문에 이를 설계한 사람의 경험과 생각에 따라 결과가 크게 바뀔 수 밖에 없다.


여담으로 최초 인간과 컴퓨터의 체스 경기는 1989년 IBM에서 만든 체스 전용 컴퓨터인 딥 소트(Deep Thought)이다. 하지만 1993년까지 딥 소트는 이기지 못했다. 이 후 IBM은 지속적인 연구를 통해 새로운 체스 전용 컴퓨터인 딥 블루(Deep Blue)를 내놓았고 1997년 당시 체스 세계 챔피언이었던 게리 카스파로프(Garry Kasparov)와의 7일간의 대결에서 딥 블루가 2승 1패 3무로 승리하게 되었다.



1970년대


1950년대에 활발하게 진행된 연구인 "파라미터 조정"은 수치에 기반을 두고 있다. 1970년에 들어와서는 수치로 표현 할 수 없는 지식에 대한 기계 학습 방법을 연구하기 시작했다. 삼각형을 인식하는 기계학습을 시키기 위해서 세개의 직선을 사용한다는 전제를 이용해보자. 여기서 중요한 개념은 정례와 반례가 있다.

  • 정례 : 학습을 시키는 자가 결정지은 옳바른 데이터 셋 (세개의 직선을 이용한 삼각형의 조건에 맞는 데이터)



  • 반례 : 학습을 시키는 자가 결정지은 옳바르지 않은 데이터 셋 (세개의 직선을 이용한 삼각형의 조건에 맞지 않은 데이터)



이처럼 단순히 세개의 작선이 삼각형이라고 할 수 없다. 정례와 반례의 수 많은 데이터를 학습시키고, 컴퓨터가 스스로 이 모습이 삼각형이다 라는 결론을 내릴 수 있도록 개념을 획득한다. 이렇게 개념을 획득하는 기계 학습을 "귀납 학습"이라 하며, "귀납 학습"의 반대를"연역 학습"이라 한다. "귀납 학습"은 구체적인 사례에서 일반적인 지식을 추출하는 학습 방법이다.위의 예제에서는 "세개의 직선이 연결되어 꼭지점을 이루게 되면 삼각형 이다." 라는 일반적인 지식을 추출하게 될 것이다.(악성코드 분류 방식에서 제너릭 분석 방법론과 비슷하다.) "연역 학습"은 "귀납 학습"과 반대로 주어진 원리와 법칙으로 부터 구체적인 사례 도출 하는 방식으로 처음부터 "삼각형은 세개의 직선으로 연결되어 있으며 세개의 꼭지점을 가진다. 또한 두 직선이 이루는 각들의 총 합은 180도가 된다."라는 명확한 원리를 제시한다.


"귀납 학습"의 주요 쟁점은 정례와 반례를 어떻게 분류하여 학습 시킬 것인가이다. 정례 혹은 반례만으로 올바른 일반화를 진행할 수 없기 때문에 양쪽 모두 균형있는 데이터를 주어 져야한다. 또한 어떤 데이터를 학습시키느냐에 따라 학습 결과는 크게 달라지게 되기에 데이터를 수집하는 데 큰 어려움을 가지게 된다.


"연역 학습"은 컴퓨터가 계산하는데 있어 모든 예외적인 상황을 사람이 미리 판단해야 한다. 너무 많은 변형을 가질 경우 "연역 학습"을 통해 기계 학습을 할 수 없기 때문에 단순한 형태에만 사용 할 수 밖에 없는 문제점을 가지고 있다.


참조


기계학습의 시작은 1950년대 부터 시작되었지만, 그 당시 데이터의 양이 한정되어 있어 학습시킬 데이터가 부족했다. 


1959년 아서 사무엘(Arthur Samuel)이 기계 학습을 "컴퓨터에게 배울 수 있는 능력, 즉 코드로 정의하지 않은 동작을 싱행하는 능력에 대한 연구 분야"라고 정의하였다. 그는 1952년 체커를 소재로하여 기계 학습을 하여 스스로 강해질 수 있는 프로그램을 만들었다. 여기서 사용한 기계 학습은 파라미터 조정에 기초한 기계학습 방법이다.

- 위키피디아


하지만 현재 인터넷의 발전으로 데이터가 폭발적으로 늘어나 다시 기계학습이 화두가 되고 있다. 특히 빅 데이터의 시대가 도래되면서 방대한 데이터에서 어떤 데이터를 어떻게 효과적으로 사용할 것인가를 해결하기 위해 기계학습을 도입하는 사례가 증가되고 있다.



  • 일반화 : 과거의 데이터를 이용하여 기계 학습을 진행하여 새로운 패턴에 대해 효과적으로 처리할 수 있는 능력
  • 데이터 마이닝 : 인터넷 등으로 인해 축적된 대용량 데이터를 해석하여 규칙성과 법칙을 찾아내는 행위의 총칭
  • 텍스트 마이닝 : 데이터 마이닝의 대상이 문자나 문장 같은 텍스트일 때 부르는 명칭


+ Recent posts