Data science

인공지능과 수학

이현찬 2023. 8. 6. 16:58
728x90

인공지능은 과거 전문가의 지식을 프로그램화 한 expert system부터 시작해 현재는 데이터로부터 학습하는 머신러닝과 딥러닝을 주로 인공지능이라고 한다. 최근에는 ChatGPT나 Dall-E와 같은 생성형 AI가 주목을 받고 있지만 여기서는 입력된 데이터로부터 어떤 판단을 하거나 예측을 하는 분류(classification)와 회귀(regression) 모델에 대한 설명을 할 예정이다.

AI 모델의 학습 방식

지금부터 AI 모델은 Machine learning이나 Deep learning의 회귀나 분류를 수행하는 지도학습 모델이라고 이해하면 된다.
지금까지 어떤 대상이 특정 입력을 받았을 때 반응을 예측할 수 있는 모델은 Domain 전문가의 물리적인 지식으로 복잡한 현상과 데이터를 분석하고 이를 수학적인 형태로 정리하는 것이 보통의 경우였다. 이런 종류의 모델을 물리 기반 모델(Physics-driven model)이라고 한다.

이와 비교해 AI 모델은 데이터로부터 학습을 한다. 데이터에 내재한 패턴이나 관계를 학습해 예측이나 의사결정을 하는데 도움이 될 수 있는 결과를 반환한다. 수 많은 데이터로 학습된 모델은 전문가의 지식을 활용한 것 보다 더 좋은 예측을 할 수 있을 것이라는 기대감으로 머신러닝은 큰 기대와 주목을 받았다.
AI 모델은 입력된 데이터 값에 기반해 추측을 내놓는다. random forest, Support vector machine 그리고 딥러닝이라고 불리는 neural network 기반 모델 등 다양한 AI 모델이 존재한다. 그러나 모든 알고리즘들이 입력된 데이터로부터 추측을 반환하는 과정은 동일하다.
추측은 각각의 모델에 내재한 특성으로 볼 수 있는 여러 파라미터들에 의해 결정된다. 그리고 학습이라고 하는 것은 주어진 데이터를 활용해 이 파라미터를 수정하는 과정으로 이해하면 된다.

지도학습의 과정은 위의 그림과 같다.

1. 특성 데이터를 입력으로 받아 AI 알고리즘의 로직에 따라 추론 결과를 반환한다.
  2. 실제 정답인 Label과 예측 결과를 비교해 채점하고 정량적인 점수를 계산한다.
3. 정량화 된 결과를 모델에 반영해 점수를 향상 시킬 수 있는 방향으로 자기 자신을 수정한다.

python 라이브러리를 활용하면 단 몇 줄의 코드로 PC나 온라인에 존재하는 데이터를 읽어와 모델이 학습할 수 있는 특성 데이터와 라벨 데이터를 준비할 수 있고, 또 단 몇 줄의 코드로 모델을 학습시킬 수 있다.

수학의 필요성

데이터 기반 예측 모델을 만들고 분석해 의미있는 결과를 만들기 위해선 위 과정의 명확한 이해가 필요하다. 진정으로 알고리즘과 학습 과정을 이해하지 못한 상태에서는 학습 과정을 튜닝할 수 없고, 결과를 분석할 수 없다. 다시 말하면 의미있는 분석이 불가능하고 운에 의존하는 모델링을 할 수 밖에 없다.
기본적으로 수학, 컴퓨터 과학과 도메인 지식의 결함으로 데이터로부터 유의미한 정보를 추출해 의사 결정에 활용하는 것이 Data science이기 때문에 지식이 풍부할 수록 도움이 된다. 데이터 사이언스에서 필요 없는 지식을 없지만 수학은 Data science에서 영어 다음으로 중요한 언어다.
데이터라는 것의 수학적인 형태가 선형대수학에서 다루는 벡터다. 알고리즘이 데이터를 처리하는 과정이 모두 벡터를 연산하거나 변환하는 과정이다. 따라서 선형대수학의 지식이 데이터를 이해하는 것의 시작이 될 수 있다. 그리고 데이터는 태생적으로 불확실한 특성을 갖고 있다. 어떤 변수에 관련된 모든 정보를 얻을 수 없기 때문에 측정거나 수집된 데이터는 불확실성을 내포하고 있다. 이런 데이터에 특성과 데이터에 기반한 추론하는 과정을 이해하기 위해 확률과 통계에 대한 지식이 필요하다. 마지막으로 인공지능이 예측에 대한 평가를 활용해 자기 자신을 최적화 하는 방식을 이해하기 위해서는 미적분학에 대한 이해가 필요하다.

선형대수학

선형대수학은 데이터를 수학적으로 표현하기 위한 벡터의 개념을 학습하는 학문이다. 수를 대신해 미지수로 표현하는 방적식의 학문인 대수학의 한 갈래로 벡터 공간에 대한 성질과 벡터의 합과 실수배로 정의되는 선형방정식의 풀이 방법을 학습니다.
선형대수학은 고등학교 수학에서 주로 실수 체계에서 성립되는 이론에 대해 배웠던 것 처럼 벡터 공간에서 성립되는 연산과 이론을 학습한다. Data Science 관점에서 벡터는 순서가 있는 숫자의 순서쌍으로 이해할 수 있다. 데이터는 어떤 대상을 표현할 수 있다고 믿어지는 몇 개의 특성(feature, attribute 등의 이름으로 불림.)으로 표현되는 벡터다. 예를 들어 어떤 사람을 데이터화 한다고 할 때 데이터 수집의 목적에 따라 필요한 특징이 다르다.

병원에서 검진 결과를 활용해 건강 상태를 분류하기 위해서 혈압, 혈당, 키와 체중 등으로 사람을 데이터화 할 수 있고 대학 합격 여부를 예측하기 위해 시험 점수로 데이터화 할 수 있다. 특정한 목적에 따라 한 사람을 몇 개의 숫자로 정의한 것이 데이터고 이는 수학적으로 벡터 형태다.

쉽게 생각하면 우리가 데이터를 저장하는 excel 파일이나 관계형 데이터베이스 각각의 row가 데이터가 되고 column의 이름이 그 데이터를 정의하는 특성이다. 우리의 저장 장치의 데이터를 수학적인 도구를 활용해 의미를 찾는 첫 걸음이 데이터를 벡터로 여기는 것이다.

Data Science 입문을 염두에 두고 선형대수학을 공부할 때는 방정식의 풀이 방법보다는 벡터의 변환의 기하적인 이해를 목표로 해야한다. 벡터 공간에서 행렬과 곱으로 정의되는 변환은 딥러닝과 일부 머신러닝 알고리즘이 예측하는 과정에 사용된다. 변환의 관점에 대한 이해를 돕기 위해 고등학교 때 배웠던 함수와 비교를 하겠다. 함수는 두 실수의 집합 간의 mapping 관계를 표현하는 방식이다. 이와 동일하게 벡터의 변환은 두 벡터 공간(집합) 간의 mapping 관계를 표현한다. 함수는 두 집합 사이의 관계를 $f(x)=2x$ 같이 독립 변수(x)에 대한 수식으로 표현했다면 벡터의 변환은 하나의 행렬이 수식을 대체한다.

두 실수 간의 대응 관계는 두 수직선으로 표현할 수 있어 하나의 2차원 직교 좌표계에 표현했지만 벡터의 경우 일반적으로 함께 표현하는 것이 어렵다.

추천 자료

추천 자료는 진입 장벽이 낮은 순서로 나열했습니다. 쉽게 설명한 블로그와 유튜브 영상으로 시작하는 것도 좋지만 많은 사람들이 공부한 교과서를 한 번은 정독하는 것이 좋다.

  1. 공돌이의 수학정리노트 - 기초 선형대수학 이론 : 기초 선형대수학 이론 부분에 정리된 내용 필수
  2. 3blue1brown : 이해하기 어려운 내용을 애니메이션을 통해 기하적인 의미를 파악하는데 큰 도움이 됨
  3. Strang 선형대수 2020 : 교양 선형대수의 전체 범위를 다루는 한글 강의
  4. MIT Open Course Gilbert Strang : 선형대수학 명강의로 꼽히는 Gilbert Strang 교수님 강의
  5. Introduction to Linear Algebra (Gilbert Strang)

확률과 통계

확률은 불확실성을 정량화하는 도구다. 절대 일어나지 않을 것 같은 사건에 0의 확률을, 반드시 일어날 것 같은 사건에 1의 확률을 부여한다. 그리고 발생 할 수도, 하지 않을 수도 있는 일들에 그 사이 확률을 부여하는 방식으로 불확실성을 정량화한다. 이런 특성을 갖는 불확실한 변수를 확률 변수(random variable)라고 하고 이 변수들이 가질 수 있는 각각의 값에 확률밀도함수(probability density function, pdf)나 확률질량함수(probabiliby mass function, pmf)라는 이름으로 불확실성을 표현한다. (나는 이것을 해당 변수에 대한 지식이나 정보를 표현한다고 생각한다.)
앞서 언급했던 혈당이나 시험 점수를 생각해보자. 모두 측정하기 전까지는 알 수 없다. 하지만 최근에 측정한 혈당 수치가 80 정도 나왔다면 75에서 85정도의 값이 나올 것으로 기대한다. 또 어떤 학생이 꾸준히 70점 정도를 맞아 왔다면 이번에도 그 정도의 점수를 받을 것으로 생각을 한다. 이와 같은 수치를 확률 변수로 정의하고 측정 될 것으로 기대하는 정도를 수학적으로 표현한 것이 확률 질량/밀도 함수다.
우리가 말하는 데이터는 태생적으로 불확실하다. 수(水)처리 공정에서 취득되는 pH 농도는 이전 처리 과정에서 여러 요인들에 의해 영향을 받기 때문에 정보의 부족으로 인한 불확실성 (Epistemic uncertainty)이 존재한다. 그리고 만약(불가능하다는 뜻) 해당 단계의 pH에 영향을 주는 모든 정보들을 실시간으로 확인할 수 있다고 해도 센서 자체의 측정 오차로 인해 줄일 수 없는 불확실성 (Aleatory uncertainty)이 존재하기 때문에 센서로 취득되는 데이터 자체도 불확실성을 내포한다.

인공지능 공부를 하다 보면 ‘데이터의 분포’에 대한 언급을 자주하고 듣게 된다. 이는 이런 데이터가 내포하는 불확실성과 관련이 있다. 데이터의 불확실한 성질을 알게 되었다면 데이터 벡터의 각 feature가 random variable이라는 것을 알 수 있다. 이런 벡터를 random vector라고 하고 이 벡터에 대한 확률 분포는 결합 확률밀도함수라고한다. 결국 우리가 인공지능을 통해 하고자 하는 것은 많은 데이터를 통해 random vector의 분포를 추정하고 우리가 필요한 관계식을 찾는 것이다. 통계가 위 과정에 이론적인 토대가 된다. 모집단에 대한 정보를 얻기 위해 표본을 추출하는 것 자체가 데이터를 취득한다는 의미이고 이 데이터를 분석해 모집단에 대한 정보를 추론(inference)하는 과정이 인공지능을 이루는 기둥 중 하나다.

추천 자료

확률 변수에 대한 이해를 갖추는 것이 어렵기 때문에 강의를 통해 확률에 대한 이해를 갖추는 것을 중점으로 학습하는 것이 좋다.

  1. k-mooc 강의 확률 및 랜덤프로세스 : 고려대학교 확률론 강의
  2. edwith 확률론 기초: Statistics 110 : 하버드의 확률 강의, ~19강까지 수강하는 것을 추천
  3. StatQuest with Josh Stamer : 확률, 통계, 머신러닝에 관련된 많은 내용을 이해하기 쉽게 설명하는 유튜브 채널

미적분학

미적분학은 함수 관계에 대한 분석을 위한 학문이다. 미적분학에서 미분의 의미를 이해하는 것이 중요하다. 미분은 두 변수간의 변화에 대한 정도를 기술하는 방법이다. 최적화라는 용어는 일상 생활에서도 많이 사용된다. 그러나 공학 분야에서 수학적인 의미는 이익이나 비용을 최대화 하거나 최소화할 수 있는 독립 변수(조작 가능한 값)을 찾는 것을 의미한다.
최적화 문제는 독립 변수에 따라 이익이나 비용을 정량화 할 수 있는 함수를 정의한다. 이를 목적 함수라고 하고 경우에 따라 목적 함수를 최대화하거나 최소화하는 독립 변수를 찾는 것이 최적화 과정이라고 볼 수 있다.

위의 그림에서 목적 함수는 최소값이 최적인 비용의 함수다. 위의 함수에서 최소값이 될 수 있는 가능성이 있는 점은 모두 기울기가 0이다. 따라서 우리가 조작할 수 있는 변수에 대한 비용 함수를 가지고 있다면 그 함수의 미분값을 0으로 만드는 변수의 값 중 최대, 최소값을 찾으면 최적화가 완료되는 것이다. 그런데 딥러닝 모델의 최적화는 수 많은 독립 변수가 개입되어있는 복잡한 목적 함수가 사용된다.

위의 그림은 XOR 논리 연산의 진리표를 좌표 평면 위에 나타낸 것이다. XOR은 AND와 OR 같은 논리 연산자인데 두 입력이 서로 다를 때 True(1), 서로 같을 때 False(0)을 반환한다. 그림에서는 빨간색 점이 True, 파란색 점이 False이다. 간단해 보이지만 이 문제를 딥러닝 모델로 모사하기 위해서는 이론적으로 최소 2개 이상의 neuron이 필요하다. 수월하게 모사하기 위해 5개의 neuron을 사용한다고 했을때, 10차원 함수의 최적화가 필요하다. 10차원의 함수에 대한 미분해 위와 같이 문제를 푸는 것은 현실적으로 불가능하다.

Loss Surfaces, Mode Connectivity, and Fast Ensembling of DNNs

실제 데이터를 사용해 딥러닝 모델을 만든다고 했을 때 아주 간단한 모델을 만들어도 수 만개의 변수가 개입된다. 위 이미지는 그런 상황에서 고차원 목적함수의 차원을 축소해 시각화 한 결과다. 참고로 서비스 중인 Chat GPT의 최적화 필요한 변수의 수는 1750억개다. 1750억 차원의 함수를 미분한 결과로 한 번에 최적값을 찾는 것은 불가능하다.

경사하강법, 매 시점 가장 경사가 급한 방향으로 이동하는 방식으로 최소값에 도달한다.

이런 경우 컴퓨터를 활용한 최적화 방법은 반복 계산을 통해 탐색한 후 그 중 최선의 값을 최적값으로 결정한다. 딥러닝 모델의 학습엔 경사하강법(Gradient Descent Method)이라는 방법이 사용된다. 전체 함수 영역에 대해 도함수를 구하는 것이 아니라, 한 점에서 미분을 계산해 함수 값이 감소하는 방향으로 조금씩 이동해 최적점에 도달하는 방식이다.

Deep learning 모델을 학습시키는 Backpropagation 과정을 이해하기 위해서 합성 함수의 미분을 구하는 연쇄 법칙(chain rule)과 다변수 함수의 미분에 대한 이해가 필요하다.

추천 자료

고등학교 미적분 수준의 이해를 가지고 있다면 chain rule과 다변수 함수의 미분에 대한 내용을 부분적으로

  1. 합성함수의 미분법, 수악중독 : 고등학교 수준의 미적분 강의 중 합성함수의 미분법 강의.
  2. Multivariable chain rule ,Khan's academy : 다변수 함수에 대한 chain rule 적용을 설명한 강의
  3. 공돌이의 수학정리노트 - 스칼라장의 기울기 : 다변수 함수의 편미분과 다변수 함수에서의 기울기인 gradient의 개념을 설명한 posting. 이 포스팅의 내용을 이해하기 어렵다면 기초적인 미적분의 학습이 필요하다.
  4. Calculus online textbook(Gilbert Strang) : 대학 교양 미적분 교과서. 추천 Chapter : 1, 2, 4, 13

'Data science' 카테고리의 다른 글

신뢰성 공학 기초  (0) 2023.10.04
모델과 지도학습  (0) 2023.08.30
Affine 변환  (0) 2022.07.24
최적화와 머신러닝  (0) 2022.07.24
클래스 불균형 다루기  (0) 2022.07.20