[서평] 인공지능을 위한 수학
이 책은 크게 기본편과 응용편으로 나누어져 있습니다.
기본편에는 기초수학, 미분, 선형대수, 확률과 통계와 같은 고등학교 수준의 수학으로 이루어져 있으며, 응용편에서는 선형회귀, 자연어 처리, 이미지 인식으로 이루어져 있습니다.
기본편에서는 변수와 상수와 같은 기본적인 개념부터 구성되어 있는데, 나중에 선형회기 부분에서 가중치에 대한 설명 등에 필요한 개념들이었습니다.
또한 연습문제를 통해 수학 개념을 읽기만 하는 것이 아닌 확인하며 완전히 이해하고 넘어갈 수 있어서 좋았습니다. 또한, 그저 개념만 나열한 것이 아닌 인공지능 개념을 함께 설명해주었습니다. 예를 들어 1-11 수열의 경우 수열을 설명한 후, 신경망의 개요에서 입력값과 가중치를 곱해 더한 후 바이어스를 더해 구하게 되는데 이와 같은 원리가 수열이라고 설명되는 방식이었습니다. 살짝 아쉬웠던 부분은 그런 인공지능에 대한 설명이 너무 두리뭉실해서 완전히 이해하기는 쉽지 않았다는 것이었는데 이렇게 책 한 권으로 인공지능에 대해 쉽게 설명하기 위한 한계라고 생각되었습니다. 또한 미분 파트에서는 손실 함수(정답과 예측값 사이의 오차를 표현하는 함수)의 값을 최소로 만들기 위해 사용된다고 설명되어 있었습니다. 평소에 미분 같은걸 왜 배우지 싶어 하는 고등학생들에게 이런 흥미로운 사실을 알려준다면 좀 더 수학에 흥미를 느낄 수 있지 않을까 하는 생각이 들었습니다. 그 뒤에 나타나는 선형대수와 확률과 통계 또한, 고등학교 시절에는 왜 배웠나 싶었던 수학들이었는데 인공지능에서 여러 방면으로 쓰인다는 사실이 흥미로웠습니다. 확률과 통계 제일 마지막에는 데이터를 추정하는 방법에 대한 방법론에 대해 다루어 주었습니다. 최대 가능도 추정의 개념은 가장 그럴듯하게 값을 추정한다는 의미인데, 가능도함수를 구해 미분해서 0이 되는 값이 최댓값이 되는 원리를 이용해 구하였습니다. 이 과정에서 미분을 좀 더 쉽게 하기 위해 로그 함수를 이용하게 됩니다. 최대가능도추정법의 접근 방식은 관찰한 결과를 계속해서 반복해서 결과를 믿고 확률을 이끌어내는 방식인데, 관찰 결과가 어쩌다가 한쪽으로 치우치거나 부적절한 확률분포를 적용해 버리면 완전히 엉뚱한 추정 결과가 나오는 치명적이 약점이 있다고 설명되어 있었습니다. 반면 이러한 약점을 보완하기 위한 방법이 베이즈 추정법인데, 이 방법은 지금까지의 관찰 결과를 근거로 사전분포를 가정해서 관찰을 통해 얻은 데이터는 사전분포에 따라 얻어진 결과이므로 그에 대한 조건부확률을 구하면 된다는 접근 방법으로 사후확률을 구하는 방법입니다. 두 방법 모두 허점이 있기 때문에 통계에서는 그러한 한계를 명확히 인지한 상태에서 데이터를 다루려는 자세가 무엇보다 중요하다고 말하고 있었습니다. 이러한 통계에 한계에 대해 인지를 하고 데이터 사이언티스트들이 좀 더 좋은 통계 기법을 사용할 수 있어야 좋은 결과를 도출할 수 있겠다는 생각을 하였습니다.
다음으로 응용편의 선형회귀 파트에서는 인공지능 알고리즘을 이용하여 주택 가격의 추정 모델을 구축해보며 좀 더 이해하기 쉽게 풀어나갔습니다.
주택 가격 추정 모델에 여러 변수들이 존재하는데 주택 가격을 추정할 때는 주소, 입지 조건, 건축 연수, 층수, 방의 배치 형태, 넓이와 같은 정보를 활용하였습니다. 여기서 구하고 싶은 주택 가격을 목적(종속)변수라고 하며 필요한 변수들을 설명(독립)변수라고 하였습니다. 각각의 변수들에 가중치를 곱해 더해줘야 하는데 모델식에 가장 잘 들어맞는 가중치를 찾기 위해서는 최소제곱법을 이용하였습니다. 최소제곱법은 오차를 제곱하여 모두 더한 값이 최소가 되는 가중치를 찾는 방법입니다. 절댓값 대신 제곱을 이용하는 이유는 미분을 하여 0이 되는 값을 찾아 줄 때 절댓값의 경우 번거롭기 때문이라고 설명하고 있었습니다. 그렇게 가중치를 다 구한 이후에는 정규화를 통해 과학습을 줄이는 작업을 하게 됩니다. 과학습은 주어진 데이터에 너무 정확히 들어맞아 지나치게 복잡하게 표현된 상태를 의미합니다. 이렇게 정규화까지 마무리하게 되면, 끝나는 것이 아닌 모델을 평가하는 과정을 거치게 됩니다. 이러한 과정을 ‘튜닝‘이라고 설명하고 있었습니다. 튜닝의 방법에는 홀드아웃 교차 검증법과 K-분할 교차 검증법이 있다고 설명되어 있었습니다. 예전에 학교에서 ‘데이터 사이언스의 이해’ 수업을 들을 때 어느 정도 배운 개념이었었는데 다시 보니 감회가 새로웠습니다. 이와 같이 실제 ‘주택 가격 추정’이라는 예시를 통해 설명이 되어 있으니 훨씬 이해하기 쉽고 새롭게 다가왔습니다.
응용편의 두 번째 파트는 자연어 처리였습니다.
우리가 평소에 사용하는 언어를 ‘자연어‘라고 하고 있었는데 인공지능이 자연어 처리를 하기 위해서는 자연어를 수학적으로 표현할 수 있어야 하고, 이러한 정보를 인공적인 언어로 처리한 후에야 비로소 인공지능인 자연어 처리 능력을 갖추었다고 말할 수 있다고 설명하고 있었습니다. 자연어 처리의 설명은 ‘카테고리 판별기‘를 만드는 예시를 통해 설명하고자 하였습니다. 어떤 문장들이 있다면 그 글을 통해 카테고리를 분리해 주는 인공지능을 만드는 것이었습니다. 자연어 처리를 하기 위해서는 문장을 단어로 분리할 수 있도록 만들어주어야 했습니다. 영어나 유럽 지역의 언어는 띄어쓰기를 하는 단위가 단어의 단위랑 거의 일정하기에 분해하는 과정이 상대적으로 쉬운데, 한국어나 일본어 중국어의 경우는 띄어쓰기를 하지 않거나 띄어쓰기를 하면서도 조사가 붙어서 깔끔하게 분해되지 않는 언어들이 많기에 상대적으로 분리 과정이 어렵다고 하였습니다. 이 과정에서 문장의 특징을 결정하지 않고 영향을 주지 않는 스톱워드들을 분리해 내게 됩니다. 스톱워드에는 이, 는, 을, 하 등의 조사나 구두점이 포함되었습니다. 그렇게 문장을 단어로 분해한 이후에는 조각난 단어들 간의 관계를 찾아 구문을 분석하게 되고 마지막으로 의미를 분석하는 단계를 거치게 됩니다. 문장의 의미를 분석할 때 수학적인 개념으로 표현하기 위해 벡터 공간 분석을 이용한다는 사실이 흥미로웠습니다. 단어를 벡터롤 표현하여 코사인 유사도와 같은 개념을 통해 서로 다른 문장들 간에 비교를 할 수 있도록 하여 컴퓨터에게 학습시킨다는 사실이 신기했습니다. 단어를 벡터로 만드는 방법에도 여러 방법이 존재하였습니다. 일단, 단어의 빈도수를 통해 만든 벡터를 BoW(Bag-of-Words)라고 명시하였습니다. 그중에서도 공통적이거나 특징을 잘 드러내는 특징어들에 가중치를 부여하였는데 TF-IDF을 이용하여 부여하였습니다. 단어들의 TF-IDF를 구해서 벡터를 만들면 109종류의 단어나 나타나게 되어 109차원의 BoW벡터를 만들 수 있었습니다. 마지막으로 글의 카테고리를 분리하기 위해서는 로지스틱 회귀를 사용하였는데, 로지스틱 회귀를 사용하는 부분에 대한 설명이 상대적으로 어려운데 비해 간단하게 넘어가고 있어 아쉬웠습니다. 그렇게 모델을 완성하고 나서 마지막으로 모델을 평가하게 되는데, 예측 결과가 참인 것들 중 실제 결과가 참인 것들을 TP 예측 결과가 참인 것들 중 실제 결과가 거짓인 것을 FP, 예측 결과가 거짓인 것들 중 실제 결과가 참인 것을 FN, 예측 결과가 거짓인 것들 중 실제 결과가 거짓인 것들을 TN 이라고 명시하며 정밀도와 재현율, F값을 구해 평가하고자 하였습니다. 이러한 평가 방법 또한 이전에 말한 ‘데이터 사이언스의 이해’ 수업에서 실제로 값을 구하는 과정이 시험문제로 출제되었었기에 쉽게 이해할 수 있었습니다.
마지막으로 응용편의 이미지 인식 파트였습니다.
이 장에서는 딥러닝 중에서도 DNN 알고리즘을 사용하여 이미지 인식을 하고자 하였습니다. 신경망의 경우 사람의 뇌를 흉내 내서 만든 수학적 모델인데 네트워크 계층의 개수를 늘리면 인공지능의 정확도가 높아지는 특징이 있다고 설명되어 있었습니다. 이미지 인식 파트의 실습으로는 손글씨 숫자 데이터를 모아놓은 MNIST를 사용하여 설명하였습니다.
신경망에는 입력층과 은닉층, 그리고 출력층이 존재하게 되는데 은닉층을 여러 개로 만들어 사용하는 경우 심층 신경망으로 불리었습니다. 신경망의 가중치를 결정하는 방법에는 손실 함수를 이용하게 되는데 여러 방법이 있지만 평균제곱오차 방법으로 설명하고 있었습니다. 손실 함수가 최소가 되는 경우를 구하기 위해서는 미분했을 때 접선의 기울기가 0이 되는 방정식을 풀면 된다고 설명되어 있었습니다. 하지만 입력층, 은닉층, 출력층이 많아지면서 변수가 많아져 일반적인 방법으로는 답을 내기가 어려워지는데 이때 필요한 것이 ‘경사하강법‘이었습니다. 경사하강법이란 그래프를 따라 움직이면서 기울기를 조사하고 이때 구한 기울기의 값이 작아지는 방향으로 금씩 내려가는 방법입니다. 최근 학교에서 ‘전산수학’ 과목에서 이러한 머신러닝의 기초 부분에 대해 배운다고 알고 있는데 그 과정에서 ‘경사하강법’ 등에 대해 배운다고 들었습니다. 실제로 변수 다섯 개를 두고 경사하강법을 이용하여 E(w)가 최소가 되는 w 값을 구하는 문제가 과제로 제출되었다고 들었습니다. 이러한 문제를 통해 좀 더 경사하강법에 대해 이해하기 쉬울 것 같다는 생각을 할 수 있었습니다. 이 책의 경우 연습문제는 기본편에서만 많이 나타나 있고, 응용편에서는 거의 나오지 않아 그 부분이 조금 아쉬웠습니다.
마지막 이미지 처리 파트 또한 모델의 평가를 마지막으로 책이 마무리되게 됩니다.
손글씨에 대한 정답률로 모델을 평가하게 되는데 MNIST에서는 10,000장의 테스트 데이터를 사용하였고 89.89% 의 정답률을 볼 수 있었습니다.