#재미있는수학
-
학습 길잡이 기타
위상기하학에선 접시와 컵이 다 같은 모양이죠
지난 생글생글 878호에서 비유클리드기하학을 소개하며 더 많은 기하학이 있다고 했는데요, 오늘은 언급한 것처럼 좀 더 다양한 기하학을 이야기하도록 하겠습니다.보통 우리는 정해진 규칙 안에서 사고를 전개하는 데 익숙합니다. 특히 수학 문제를 풀 때 그렇죠. 하지만 일부 선생님은 수학 문제를 직접 만들어보라고 권하기도 합니다. 한편 어떤 수학 문제는 그 문제에서만 사용되는 특정한 조건이나 기호를 포함하기도 하죠. 이런 상황은 여러분에게 새로운 고민거리를 안겨주기도 하지만, 동시에 우리가 어디까지, 무엇을 할 수 있는지 생각해보는 실마리가 되기도 합니다.기하학에서도 마찬가지입니다. 이미 소개했듯이, 유클리드기하학이란 거의 완벽에 가까운 체계가 있고 이 규칙을 지키며 생각과 추론을 이어나갈 수 있습니다. 그러나 우리가 직접, 이 규칙을 수정할 수도 있다는 것이죠. 사실 기하학에서는 이 사실을 깨닫는 것 자체가 아주 오래 걸린 일이었습니다.첫 번째로 사영기하학을 소개할까 합니다. 국내에는 많이 알려져 있지 않지만 수학 관련 교양서적에서 꾸준히 찾아볼 수 있는 기하학인데요, 위에서도 언급했지만 새로운 규칙을 만들어야 한다는 점에서 이 기하학은 ‘무한하게 먼 곳’을 실제로 있는 것처럼 가정하고 논리를 전개합니다. 이 말은 한 쌍의 평행선이 있을 때 그 두 선의 교점이 아주 먼 곳에 ‘있다’라고 가정한다는 의미입니다. 당연한 이야기지만 옆에 보이는 그림과 같이, 2개 직선은 하나의 교점을 가집니다.이때 교점 A는 두 직선이 평행선에 가까워지면서 점점 오른쪽으로 밀려나는데, 결국 평행선이 되는 순간 교점 A는 갈 곳이 없어지죠. 그런데 오
-
학습 길잡이 기타
우리 인생에 하나뿐인 제곱수의 해 '2025'
2025년 을사년 뱀띠의 해가 시작된 지 벌써 한 달이 지났습니다. 2025년은 수학과 관련이 많은 수학의 해인 것 같습니다. 2025년이 시작하자마자 SNS와 각종 수학 커뮤니티에서는 2025를 수학으로 이야기하는 글이 많이 올라왔는데, 2회에 걸쳐 이에 대한 이야기를 소개하려고 합니다.2025는 452 = 2025이므로 어떤 정수의 제곱이 되는 정수, 즉 제곱수입니다. 442=1936, 462=2116이니까 어떻게 보면 2025년은 우리의 인생에서 하나밖에 없는 제곱수인 해일 수 있습니다.2025는 신기한 수입니다. 2025를 절반으로 나누어 앞자리 수 20과 뒷자리 수 25를 생각합니다. 20과 25를 더하면 45가 되고, 이 45를 제곱하면 2025가 됩니다. 즉, 2025는 절반으로 나누어 더한 후 제곱하면 원래의 수가 됩니다. 이를 식으로 나타내면 다음과 같습니다.20+25=45, 452=2025여기서 45와 같은 수를 ‘카프리카 수’라고 하는데, 일반적으로 어떤 수의 제곱수를 두 부분으로 나누어 더했을 때 다시 원래의 수가 되는 수를 인도의 수학자 카프리카(D. R. Kaprekar, 1905~1986)의 이름을 붙여 ‘카프리카 수’라고 합니다. 이 카프리카 수에는 다음과 같은 유래가 있습니다.인도의 어느 지역에 있는 철도의 선로 옆에 “3025km”라고 적힌 이정표가 있었습니다. 그런데 어느 날 심한 폭풍우로 인해 이정표가 쓰러지면서 ‘3025’가 ‘30’, ‘25’와 같이 절반으로 나뉘게 되었습니다. 마침 이곳을 지나던 인도의 수학자 카프리카가 30+25=55이고, 552=3025라는 점을 발견했습니다. 그 후 사람들은 55와 같이 어떤 수의 제곱수를 두 부분으로 나누어 더했을 때 다시 원래의 수가 되는 수를 카프리카 수로 부르게 되었습니다.카프리카 수 중에서 두 자리
-
학습 길잡이 기타
행렬과 벡터, 단어의 관계를 푸는 데도 '역할'
컴퓨터가 인간의 언어를 이해하려면 단어와 문장을 수치로 표현하는 과정이 필요합니다. 이를 ‘임베딩’이라고 합니다. 단어를 벡터라는 수학적 구조로 변환해 컴퓨터가 처리할 수 있도록 만드는 핵심 기술이죠. 임베딩은 단어를 숫자로 바꾸는 것을 넘어 단어 간 의미적 관계와 맥락을 수학적으로 반영하는 것이 특징입니다. 예를 들어 강아지와 고양이는 서로 의미가 비슷하므로 임베딩 벡터 공간에서도 가까운 위치에 놓이며, 반대로 강아지와 자동차는 멀리 떨어져 있게 됩니다.쉽게 사용할 수 있는 임베딩은 어떤 말뭉치에 존재하는 단어들에 각각의 인덱스를 부여해 각 문장에 사용된 단어들의 횟수를 기재하고, 사용되지 않은 단어에는 0을 부여하는 벡터를 생성하는 방식이었습니다. 이러한 접근법이 바로 ‘Bag of Words’입니다. 단어의 빈도를 벡터로 표현함으로써 문서를 단순한 수치적 배열로 전환하는 방식입니다. 말뭉치에서 특정 단어가 몇 번 등장했는지를 나타내는 행렬을 생성하고, 이를 통해 단어 간 상관성을 계산할 수 있습니다. 하지만 이 과정에서 가장 자주 등장하는 단어가 the, is, a 같은 기능어라는 문제가 발견되었습니다. 이러한 단어들은 문장의 구조를 형성하는 데 중요하지만, 말뭉치의 실제 의미를 파악하는 데는 큰 도움이 되지 않았습니다. 이를 해결하기 위해 불용어 처리라는 단계를 도입해 특정 단어를 제외함으로써 임베딩 결과의 유의미성을 높였습니다. 그러나 여전히 이 방법은 단어의 순서나 문맥을 반영하지 못한다는 한계를 지니고 있었습니다.이러한 한계를 극복하기 위해 ‘Word2Vec(워드투벡)’나 ‘GloVe(글로브)’ 같은 임베딩 기법이 등
-
학습 길잡이 기타
일상적인 대화, 벡터·행렬로 수치화 가능하죠
“벡터와 행렬은 컴퓨터에 인간의 언어를 가르치는 언어 교과서다.” 이 말을 들으면 어떤 생각이 드나요? 우리가 일상적으로 사용하는 말과 글이 수학적 구조, 특히 벡터와 행렬로 표현된다는 사실은 다소 놀라울 수 있습니다. 그러나 이는 자연어처리(Natural Language Processing), 즉 컴퓨터가 인간의 언어를 이해하고 소통할 수 있도록 하는 기술의 핵심 원리입니다. 단어와 문장은 단순히 나열된 기호가 아니라, 컴퓨터가 처리할 수 있도록 수학적 데이터로 변환됩니다. 그리고 이 과정에서 벡터와 행렬은 복잡한 언어 체계를 명확하고 효율적으로 다룰 수 있는 강력한 도구로 사용됩니다. 오늘은 자연어처리가 어떻게 수학의 도움으로 발전해왔는지, 그리고 이 과정에서 벡터와 행렬이 어떤 역할을 했는지 살펴보겠습니다.단순히 계산을 빠르게 처리하거나 그림을 그리는 도구로 사용되던 컴퓨터가 점차 인간처럼 언어를 이해하고 소통하는 도구로 발전할 수 있다면 어떨까요? 초기의 연구자들은 컴퓨터에 인간의 언어를 이해시키기 위해 단순한 방법을 사용했습니다. 수많은 ‘if’ 조건문을 작성해 컴퓨터가 특정 단어와 상황에 따라 반응하도록 학습시키려 한 것입니다. 그러나 이 방식은 한계가 명확했습니다. 언어는 복잡하고 유연하며, 단어의 의미는 문맥에 따라 달라지기 때문에 모든 상황을 ‘if’ 조건문으로 정의하는 것은 불가능에 가까웠습니다. 이러한 한계를 극복하기 위해 컴퓨터가 언어를 수학적으로 다루고, 의미를 수치로 표현하는 새로운 접근법이 필요하게 되었습니다.각 사물의 그림에 이름표(label)를 붙여서 컴퓨터가 그림을 배울 수 있도록 하는 방법을 생각해보았습
-
학습 길잡이 기타
그림·소리 데이터화에 최적…'딥러닝 혁명' 일으켜
행렬은 17세기에 이르러 수학자들에 의해 더욱 체계적으로 구조화되었습니다. 당시 수학자들은 행렬을 단순히 숫자의 배열로 인식하는 것을 넘어, 이를 연립방정식과 선형 변환을 처리하는 강력한 도구로 정립하려 했습니다. 이러한 체계화 과정은 19세기 아서 케일리와 제임스 실베스터의 연구로 완성되며 현대적인 행렬 이론의 토대를 마련했습니다.단순 계산을 빠르게 하기 위해 주판 같은 수작업 도구를 사용했고, 17세기에는 블레이즈 파스칼이 덧셈과 뺄셈을 자동으로 처리할 수 있는 계산기를 발명했습니다. 이후 고트프리트 빌헬름 라이프니츠는 곱셈과 나눗셈까지 가능한 기계를 개발하며 계산 도구를 한 단계 발전시켰습니다.19세기에는 찰스 배비지가 기계적으로 수학적 계산을 수행하고, 조건문과 반복문을 활용해 프로그래밍이 가능한 기계를 구상했습니다.1945년에 개발된 ENIAC은 데이터를 처리하기 위해 이진법을 사용했는데, 0과 1이라는 단순한 입력 체계가 전자회로 설계를 단순화하고 연산을 빠르게 처리할 수 있게 했습니다. 이후 컴퓨터는 더 작은 크기와 강력한 연산 능력을 갖추기 위해 발전했으며, 1950년대 트랜지스터의 발명과 1960년대 집적회로(IC)의 개발로 컴퓨터는 빠른 연산과 복잡한 데이터를 처리할 수 있게 되었습니다.행렬은 데이터를 직사각형 배열로 정리해 복잡한 문제를 단순화하는 데 유용했으며, 이를 기반으로 프로그래밍 언어를 좀 더 쉽게 설계할 수 있었습니다. 특히 1950~1960년대에는 포트란(Fortran) 같은 고급 프로그래밍 언어를 개발함으로써 행렬 연산을 자동화하고 복잡한 계산을 간단한 명령으로 구현할 수 있게 되었습니다. 이러한 언어는 행렬 연산을 간편하게