“용수학” 수학의 관심, 흥미 열정을 갖도록 하자!!
빅-데이터 시대! 코딩! 수학이 뜬다!
2014년에 미국 유망 업종을 보면 다음과 같은 순위로 나와 있다.
1. 수학자
2. 보험계리사
3. 통계학자
4. 생물학자
5. 컴퓨터 시스템 분석가
한 신용카드사의 마케팅 부서 직원 31명 가운데 절반 정도는 수학이나 통계학 전공자다. 이는 날로 다양해지는 소비자의 성향과 요구에 효과적으로 대응하기 위해 수학적 분석이 필요해졌기 때문이다.
최근에는 파생 상품을 개발하는 증권사나 위험 요소를 관리하는 보험사, 컴퓨터 보안 업체 및 컨설팅 분야 등도 신규 채용을 할 때 수학 전공자를 우대한다. 이는 수학 전공자들이 선택할 수 있는 직업군이 그만큼 다양해졌으며 미국의 한 유명 구인구직 업체 역시 가장 유망한 직업으로 수학자와 통계학자를 꼽았다. 그렇다면 최근에 나온 복잡하고 많은 양의 데이터들을 분석하고 또 그 해답을 찾으려면 꼭 수학을 전공해야 될까? 아니다! 수학 전공자가 아니라도 빅-데이터에 관심, 흥미, 열정 이 3가지 중 한 가지만 있다면 누구나! 빅-데이터를 다룰 수는 있다.
하지만, 빅-데이터, 알고리즘을 보면 다 수학 덩어리로 만들어져 있다고 볼 수 있다.
수학과 IT분야에 관련된 예를 들어보자.
1. 보안 분야
–데이터를 암호화해서 전송할 때 쓰는 암호화, 복호화 알고리즘들은 모두 수학을 써서 개발되었다. 대표적인 것으로 RSA암호화 방식이 있습니다. 원리는 두 개의 큰 소수의 곱으로 이루어진 아주 큰 수를 컴퓨터로 소인수분해하기 어렵다는 것에 있다. 이에 1978년에 매사추세츠 공과 대학(MIT)의 리베스트(R. Rivest), 샤미르(A. Shamir), 아델먼(L. Adelman) 등 3인이 공동 개발한 RSA 기법이라는 암호화 알고리듬을 사용하는 공개 키 암호 방식. 큰 수의 소인수 분해에는 많은 시간이 소요되지만 소인수 분해의 결과를 알면 원래의 수는 곱셈에 의해 간단히 구해지는 사실에 바탕을 두고 있다. 키의 길이는 수백 비트가 필요하다. RSA 방식은 현재 공개키 암호 체계의 사실상의 세계 표준이다. - 실제 RSA의 개념
소인수분해 문제, 특히 페르마의 소정리를 이용한다.
(1) 페르마의 소정리
p와 q가 소수일 때, p와 q로 나누어지지 않는 양수 M에 대해서,
M^(p-1)(q-1) = 1 (mod p X q)가 성립한다.
(2) 유클리드 함수
EUCLID(e, p, q)
e X d = 1 (mod (p-1) X (q-1))이 되는 d 값을 계산해 주는 함수이다.
M^(e X d) = M (mod p X q)
2. 데이터 통신 분야
-우리가 쓰는 인터넷, 또는 와이파이 다 수학이다. 예를 들어 와이파이 이런 것은 전자기파에 데이터를 실어 보내는 건데 어떻게 실어 보내는가 하면 전자기파의 주파수에 데이터를 넣어 보내는 것이다. 주파수에 데이터를 넣어 보내는가? 설명하기 어렵지만 푸리에 변환을 이해해야 알 수 있다. 푸리에 변환을 인터넷에 쳐 보자. 다 수학이다.
3. 데이터 전송 경로 결정하기
-우리가 지식인에 질문을 올릴 때, 올린 질문 데이터는 어떻게 이동할까? 대충 이렇게 이동한다. 우리집컴퓨터-우리집아파트라우터-지하에매설된케이블-인터넷회사기지국-....-네이버서버건물-네이터서버컴퓨터.
여기서 알 수 있듯이, 데이터가 이동할 땐 수많은 중간 지점들을 지나는데, 그럼 어떤 지점들을 통해 데이터를 보내는게 가장 빠르나? 이런 생각을 할 수 있다.
이게 결코 간단한 문제가 아닌게, 인터넷 사용자가 1명이면 뭐 그냥 최대한 일직선의 경로로 보내면 되겠지만 실제로는 인터넷 사용자는 엄청나게 많아서 인터넷망을 통해 이동해야할 데이터는 엄청나게 많은데 중간지점의 수는 그보다는 적죠. 이런 상황에서 데이터 교통체증을 어떻게 효율적으로 해결할 수 있을까? 결국 수학문제다.
4. 인공지능
- 이건 요즘 많이 들어본다. 알파고 때문에. 요즘 인공지능 인공지능 하는건 대부분 머신러닝(기계학습) 알고리즘들의 얘기인데, 이 알고리즘들은 결국 다 수학으로 만들어진 알고리즘들이다.
쉽게 말하자면,
예를 들어 100명의 사람들의 (몸무게, 키) 데이터가 주어져있고, 컴퓨터가 자동으로 그 데이터를 보고 어떤 사람이 20세미만이고 어떤 사람이 20세 이상인지 맞추도록 하려고 한다고 가정하자.
어떻게 해야 할까? 간단한 방법을 이야기 하자면,
사람들의 (몸무게, 키) 데이터를 x-y 좌표평면에 일단 점을 찍어보면
점을 막 찍다보면 20세 미만의 사람들은 몸무게, 키가 모두 작기 때문에 점들이 원점에 가깝게 그룹을 지어서 있고, 20세 이상의 사람들은 몸무게, 키가 모두 그보다는 클 것이기 때문에 점들이 원점에서 멀리 그룹을 만들어 낸다.
그러면 대충 두 그룹을 최대한 선명하게 나누는 직선의 방정식을 구할 수 있다.(이런걸 컴퓨터가 자동으로 하게끔 하는 알고리즘이 또 여러개 있다)
그럼 그 방정식을 구하고 이제 새로운 (몸무게, 키) 데이터가 들어오면 그 직선의 방정식을 이용해서 그 데이터가 직선의 위쪽에 있는지 아래쪽에 있는지 계산해서 데이터를 분류할 수 있을 것이다.
이제 이걸 확장해서 컴퓨터한테 고양이, 개 사진들을 주고 컴퓨터가 알아서 이게 고양이인지 개인지 분류하게 하고 싶다고 해보자. 그러면 어떻게 할까? 원리는 똑같다.
만약 사진이 10x10 사진이고 흑백사진이라면 사진엔 픽셀이 100개있고 각 픽셀은 0~255까지의 값일거에요. 따라서 하나의 사진은 항상 (1번째픽셀값, 2번째픽셀값, .... , 100번째 픽셀 값)의 100차원 공간의 점으로 표현할 수 있다. (앞서 (몸무게, 키) 데이터는 2차원 데이터였던 것이다)
하여튼 그래서 고양이, 개 사진들을 이렇게 100차원 공간의 점으로 바꾸고 100차원 공간에 찍으면(3차원 이상은 사람이 상상할 수 없지만 그냥 추상적으로 생각하는 것으로, 축이 100개인 100차원 공간이 있다고) 100차원 공간에서 고양이, 개 사진이 각각 그룹처럼 묶일 것이고 앞서 2차원 공간의 예처럼 될 것이다.
그럼 이제 문제는 그 그룹을 가장 잘 나누는 100차원 평면의 방정식을 찾는 것? 이걸 어떻게 찾느냐고? 다 수학 알고리즘이 있다. 간단하게는 Logistic Regression 부터 복잡하게는 SVM, Neural Network(이게 뉴스에서 맨날 얘기하는 신경망 또는 딥-러닝 이다. 뭐 실제론 더 복잡하지만) 등등이 있다. 구글에 검색해보시면 알겠지만 고등학교 수준에선 어렵고 다 수학으로 되어있다.
이렇게 평면 방정식을 찾으면 문제는 대충 끝난 거다. 이제 새로운 데이터가 들어오면 그 데이터가 이 평면의 위쪽에 있는지 아래쪽에 있는지 계산하면 고양이 그룹에 속해있는지 개 그룹에 속해있는지 알 수 있다.
인공지능(머신러닝) 알고리즘은 이렇게 모두 수학으로 되어 있다. 필자가 말 할 수 있는 것은 아주 간단한 “예“이고 실제론 훨씬 복잡하다는 것을 말하는 바이다.
머신러닝 알고리즘은 모두 수학 덩어리로 이루어져 있다고 보면 된다. 그리고 응용분야는 무궁무진하죠. 자율주행차, 로봇수술, 언어 번역 등.. 그 밖에도 데이터 압축, 이론 컴퓨터 과학(계산이론), 데이터 구조, 알고리즘, Symbolic Computation 등 다양한 분야에 수학이 필수라는 것을 필자는 말하는 바이다. 이글을 읽고 수학에 관심, 흥미, 열정을 갖고 열심히 공부 할 수 있는 계기에 되었으면 하는 마음으로 글을 올린다. 즉, 수학을 즐기자.