SWE 로서, 혹은 엔지니어로서 생각하는 수학과 공학의 관계

신원규·2025년 2월 14일
2

글을 쓰게 된 이유

아는 분에게 추상수학과 구체수학의 차이가 무엇인지,
그리고 추상 수학이 어떻게 개발에 도움이 되는지에 관해 질문을 받았다.

구체 수학이란

'구체수학' 이라는 용어가 익숙치 않아 찾아보니
Concrete Mathematics 라는 스탠포드 교제 이름에서 나온 응용수학, 그 중 CS 에서 주로 사용되는 수학에 대한 교재를 의미하는걸 알 수 있었다.

내가 생각하는 수학의 종류

사실 수학에는 경계가 없다 보니
어떤 분야의 수학이 실용 수학인지, 이론 수학 (혹은 추상수학) 인지는 이러한 도구를 사용해 풀이하고자 하는 목표가 무엇인지에 따라 달라진다고 생각한다.

뉴턴이 도함수 라는 개념을 처음 발명한 시절에,
미분은 천상위 별의 움직임을 기술하기 위한 순수한 이론수학 이였다.
이를 통해서 실용의 레벨에서 얻을 수 있는 이점 (즉, 미분을 이용해 잘 풀 수 있는 문제)를 아직 발견하지 못햇기 때문이다.

근대 수학에서 수학자들 스스로도 이게 과연 현실에서 사용할 일이 있을까?
라 생각되었던 비-유클리드 기하학, 리만기하학

아인슈타인의 일반 상대성 이론을 만나
공학 레벨(GPS 시스템에서 정확한 위치를 측량하기 위해선 유클리드 기하학에서의 삼각 층량으로는 부족하다)
에서 실제로 사용되기 시작하며 질문자의 용어인 ‘추상 수학’ 에서 ‘구체 수학’ 혹은 ‘응용 수학’ 의 레벨로 내려왔다고 볼 수 있다.

그럼, 시간이 지나며 리만기하학의 성질이 변화한것인가?

그렇다기보단, 이를 통해 풀이할만한 공학 문제를 발견하고, 이를 공학적인 용도로 사용하려는 의도를 가진 공학도가 많아졌다고 보는게 맞다.

그럼 스탠포드 에서 한 과목으로 가리키는 Concrete Mathematics 에는 의미가 없는것인가?

아니다.
수학이라는 세계는 너무 넓어, 현대 수학의 모든 분야를 이해한 사람은 없다고 말 할 수 있다.
콜라츠 추측부터, 매듭이론, 군론, P-NP 문제의 이산수학, 나비에-스톡스 방정식의 미적분학, 대수학, 기하학, 혹은 들어보지도 못한 난제들…

이러한 광활한 광야에서 적절한 배경지식이 없다면, 입문자는 이를 어떻게 배우기 시작해야하는지 알 수 없다.

또한, 수학의 많은 자료는 실용의 목적으로 기술되기보다는
이론 그 자체를 위해 기술된 자료가 많기 떄문에, 이를 어떻게 응용해야하는지도 알 수 없다.

다시 시작으로 돌아가서, 질문을 내가 생각하는 보다 적절한 두개의 질문으로 나눠보자면,

  • 개발자가 수학을 배워야할까?
  • 어떤 수학의 분야는 어떤 문제를 푸는데 도움이 될 수 있을까?

와 같이 질문을 바꿔보면,

개발자가 수학을 배워야할까?

예, 본인의 지향점이 엔지니어라면.

수학은 자연을 기술하는 언어이고,
엔지니어는 자연의 특성을 사용해 현실의 문제를 해결하는 사람이다.

단순한 코드 작성인의 역할을 벗어나, 실존하는 문제를 풀이하는 역할을 수행하고 싶다면,

공학적 사고가 필수적이고, 이 사고의 언어는 수학으로서 기술되기 떄문이다.

그렇다면 어떤 분야의 수학을 배워야지 도움이 될 수 있을까?

답은, ‘가능한 많은 분야’

수학의 신기한 성질중 하나는,
겉으로 보면 전혀 연관이 없어보이는 두개의 분야도,
처음에는 상상하지 못한 부분에서 서로 깊은 연관성을 가지고 있다는 성질이 있다.
( 자연수, 소수, 실수와, 집합이 매우 깊은 관계를 가지고 있듯이, 하나의 분야를 깊이 알고싶다면, 다른 분야의 수학이론이 필요한 경우는 드물지 않다.)

하나의 분야에서 쉽게 풀리지 않는 어려운 부분을 풀이하기 위해, 다른 분야의 수학의 아이디어를 불러와 이를 해결하는 경우와,

비록 아직 해결하지 못했더라도, 아직 이해하지 못한 깊은 영역에서 연관성이 있음을 암시하는 증거를 많이 볼 수 있다.

대표적 예시로 물리학에서의 슈레딩거 방정식으로 풀이되는,
수소 원자에 구속된 전자의 에너지 준위와, 리만 제타 함수의 해석적 연속기법과 깊은 의미에서 연관되어 있단 사실을 알 수 있다. (아직 그 의미가 무엇인지는 밝혀지지 않았지만)

하지만, 수학의 모든 분야는 평생을 바쳐도 다 이해할 수 없을정도로 넓기 때문에
여태껏 내 경험으로 도움이되고, 주로 사용되었던 분야를 이야기하면,

사칙 연산 그 뒤를 바로 따르는 대수학(大 가 아닌 代 대신할 대 이다),
특히 대수학에서 선형적 관계에 대해 기술하는 선형대수를 이해해야 이제 수학을 이야기하는 시작점에 다다를 수 있다.

이를 통해 미분과 적분을 이해하면,
연속된 데이터의 변화에 대해 다룰 수 있게 되고,

이를 통해 변곡점, 즉 변화하는 양이 급격히 반전되는 순간을 찾을 수 있다.
(이는 대부분의 공학, 혹은 사업에서 중요한 목표중 하나가 된다. 정보의 선점을 통해 이득을 얻을 수 있기 때문이다).

미적분과 선형대수를 응용하면 다차원미분, 그레이디언트를 다룰 수 있으며,

이는 현대 ML의 황금기가 back gradient, 역전파 기법을 통해 학습이 가능해 진점을 통해 알 수 있듯이,

ML 전범위적인 분야에서 사용되고, 이와 깊은 연관성이 있는 이미지처리와 이를 통해 기술할 수 있는 물리 현상을 이해 할 수 있게 된다.

(물리 시뮬레이션 중 비 압축성 유체의 시뮬레이션을 구현하기 위해 대표적으로 사용된다.

공간을 각 격자로 나누고, 비 압축성 유체는 그 정의로부터 그 격자에 인입되는 유체량과, 나가는 유체의 량이 동일해야한다는걸 알 수 있으므로, 이를 계산하기 위해선 자연스럽게 gradient 가 필요하기 떄문)

이제 이를 넘어가면 위상 수학이 나오게 되는데,
다차원의 대규모 데이터를 다루기 위해서는 위상 수학의 메니폴드 이론이 적용되기 시작한다. (하지만 이 분야는 거의 모르기 때문에 생략. 물리학부 수준에서 배우지 않기 떄문…)

또한 수학의 다른 분야중 하나인, 통계와 확률이다.

이 두 분야를 알게되면 현실에서의 복잡한 문제,
단순한 선형 관계로서는 설명할 수 없는 복잡계, 수많은 구성요소들이 서로 연관되어 영향을 주고받는 상황에서의 문제를 조금씩 해결 해 나갈 수 있게 된다.

(여기서 도출된 계념 중 개발자가 익숙한 두 가지 개념이 “공간적, 시간적 복잡도” 이다.)

이를 통해 전체가 부분의 합보다 큰 창발적인 현상을 기술할 수 있고,
이 창발적인 현상의 어느 시점부터 발생하는지에 대한 임계질량에 대해 기술할 수 있다.

사실 거의 모든 수학의 분야는 현대 사회에서 어딘가에서 사용되고 있기 때문에,
수학을 배우고 이를 활용할 문제를 보는것 보단,

풀고싶은 문제에 연관된 수학 분야를 찾고, 이를 공부하는게 빠르다고 생각한다.

하지만 이러기 위해선 아까 말했듯이, 광야에서 길을 찾아갈 수 있는 기본적인 배경지식이 필요하다.

내가 생각하는 가이드라인

만약 내가 지금 개발자로 일/취업을 준비하고 있으며, 배경이 수학에 친숙하지 않았던 사람이라면, 나는 아래와 같이 학습 계획을 짤 거 같다.

  1. 대수학중 자연수, 실수, Quaternion과 같은 대수구조
    다른 분야의 수학에서 뼈대가 되는 지식들. 이를 모르면 애초에 설명이 되지 않는 분야가 많다.

  2. 선형대수
    대수학중에 다른 비교적 간단한 관계에 대해 기술하는 분야.
    선형성 (Linearity) 이 무엇인지, 왜 이것이 중요한지, 이를 유지하는 변환이 무엇인지에 대해 알아야한다.

  3. 미적분학
    변화, 그 중 연속적인 변화에 대해서 수학적으로 기술하는 방법을 알기 위해선 필수가 되는 기술. serial data 를 다루기 위해선 반드시 알아야 한다.
    기초적인 미분과 적분, 체인룰 등을 학습한 후, 편미분과 다차원 미분까지 공부하면 매우 좋다.

  4. 통계학
    빈도주의자 관점과 베이지안 관점에 대해 학습해야한다.
    통계와 확률을 이용해 이전에 배운 수학 분야가 어떻게 응용될 수 있는지를 공부 한 뒤, 연관된 주제인 엔트로피에 대해서도 잡고 가면 좋다.

  5. 이후에는 본인이 관심 있는 분야를 자유롭게.
    (e.g, 군론, 해석학, 위상수학, 정보이론, 괴델 수, 튜링머신, ....)

사실 개발자로 전직하기 이전 물리학부 시절에도 수학을 그리 잘하지 못했었고,
지금도 RnD 분야에 있는 분들에 비해선 거의 아무것도 알지 못한다고 생각하지만,

앞으로 종종 비슷한 이야기를 할 일이 있을 때, 이 글을 전달하기 위해 남겨본다.

profile
생존형 개발자. 어디에 던져져도 살아 남는것이 목표입니다.

0개의 댓글

관련 채용 정보