brunch

인간도 컴퓨터도 오차를 통해 배워간다

기계학습에 대한 간단한 원리

by 팟캐김

계량경제학에서 평균, 표준편차 등에 대한 확률론적 접근, 파이썬을 공부하면서 느끼는 것인데, 결국 기계가 배운다는 것은 ‘확률론적’으로 특정한 값에 수렴해 가거나, 혹은 그 값을 추측해 가장 ‘근사한 값’으로 내놓는다는 것으로 이해가 된다.


인공지능의 기계학습을 설명하는 가장 비근한 예가 고양이 사진과 다른 동물의 사진 수천, 수만 장을 학습하고 컴퓨터가 고양이를 분별한다는 것인데, 이것도 확률론적으로 고양이에 가장 근사한 형태와 모습을 컴퓨터가 맞추거나 그린다는 뜻이 되겠다. ‘맞냐, 틀리냐’를 보고 판단하는 인간의 입장에서는 “와, 맞네”라고 느끼는 것이다.


다만 인간의 인식의 영역도 ‘확률론적’으로 설명할 수 있는 게, 그가 고양이를 판단하는 근거는 과거 봐왔던 수많은 고양이의 모습과 새롭게 길거리에서 마주치는 길냥이를 대조하면서 “저것은 고양이야”라고 판단하는 과정이다. 대부분의 경우 확률적으로 고양이를 맞추지만, 야생동물이 출몰하는 지역에서는 틀릴 수도 있다. 가령 고양이의 형태를 상당 부분 띠고 있지만 결코 ‘우리가 생각하는 집냥이 형태의 고양이’와 같을 수 없는 퓨마나 사자 같은 경우가 그렇다.


인공지능도 이와 같은 맥락에서 보면, 그것들이 ‘생각한다’는 메커니즘에 대한 이해가 쉽다. 끝없이 틀리면서 ‘오차를 줄여가는 방식’이다. 과거 수십 년 전에는 컴퓨팅 파워와 데이터의 부족으로 구현하지 못했지만, 현재는 그때와 비교해 엄청나게 발전한 연산 능력 덕분에 가능해졌다. 조금 더 상상력을 발휘하자면, 지금의 컴퓨팅 파워를 수십 배, 수천 배 더 늘릴 수 있는 양자컴퓨터가 현실화되면 인공지능은 또 어떤 형태를 띨지 감히 상상하기 어렵다.


일단 기계학습에 대한 얘기를 해보자. 기계학습의 세계에서는 ‘오차’가 중요하다. 처음에는 아무것도 모르는 상태에서 주어진 데이터를 보면서 무작위로 추출한다. 이건 통계에서 모집단으로부터 표본을 추출해 모집단의 특질을 파악해 가는 과정과 비슷하다.


첫 번째 시도는 어김없이 틀릴 수 있다. 설령 맞는다고 해도, 오차값이 더 적은 표본을 넣어 다시 돌려볼 것이다. “이번에는 이렇게 틀렸으니, 다음번에는 조금 조정해야겠다”고 생각한다. 즉, 오차가 줄어드는 방향을 계산하면서 그쪽으로 조금씩 걸어간다. 한 걸음씩 완벽하지 않아도 수천, 수만 번 반복하면서 오차는 작아지고, 결국 정답에 가까워진다.


여기서 우리가 얻을 수 있는 교훈은, 처음부터 완벽하게 시작할 수는 없다는 점이다. 실수를 하고 실패를 하지만, 반복적으로 시도를 하면서 시행착오를 개선해 가며 좀 더 나은 모습을 만들어 간다는 것. 비단 인생의 모습뿐 아니라, 인터넷 서비스의 발전 과정도 상당 부분 닮아 있다. 페이스북이든 네이버든 초기 서비스의 모습을 상상해봐라.


완벽하지 않은 시작이라도 수천, 수만 번 반복하면서 오차는 점점 작아진다. 그러면서 결국 정답에 가까워진다. 이 단순한 반복이 바로 ‘기계의 학습’이다. 학습이란 완벽한 도약이 아니라, 오류를 줄여 가며 천천히 이동해 가는 과정이다.


조금 더 수식으로 바꾸자면 다음과 같다. 여러 방식 중 하나가 경사하강법(Gradient Descent) 인데, (놀랍게도 인공지능을 구현하는 데 ‘미분’이 효과적인 무기다. 오차의 가능성이 줄어드는 비율을 기울기로 만들고 그 기울기를 0에 가까워지게 만드는 방법이다.)


경사하강법.jpg


기계는 수학적으로 세상을 이해하지만, 그 반복이 축적되면 그럴듯한 ‘대응 능력’을 갖추게 된다. 이는 판단의 근거가 되고 지식이 된다. 인간이 그간 쌓아온 경험과 지식을 토대로 결정을 내리는 것처럼, 기계도 확률론에 근거해 오차가 가장 적고 통계적으로 가장 그럴싸한 결정을 내린다.

keyword
매거진의 이전글챗GPT로 통계 데이터 분석을 맡겨봤다