본문 바로가기
IT & Tech 정보

머신러닝과 딥러닝의 심화 개념 설명

by 지식과 지혜의 나무 2025. 5. 12.
반응형


지도학습 (Supervised Learning)의 원리와 특성


지도학습은 입력 데이터와 그에 대응하는 정답 레이블(목표 출력)이 주어진 상태에서 모델을 학습시키는 방법입니다 . 모델은 주어진 입력에 대해 사람이 부여한 정답을 예측하도록 훈련되며, 충분히 학습되면 보지 않은 새로운 입력에 대해서도 정확한 출력을 일반화하여 내도록 합니다. 예를 들어 스팸 이메일 분류에서는 이메일 내용을 입력으로 받고 “스팸/정상”과 같은 레이블을 사용해 학습시킵니다. 지도학습의 대표적인 과제로는 분류(classification)와 회귀(regression)가 있으며, 이미지 인식, 음성 인식, 의료 진단 등 다양한 분야에서 활용됩니다.

장점: 지도학습은 레이블된 데이터가 제공하는 명시적 피드백을 바탕으로 고성능 모델을 만들 수 있다는 장점이 있습니다. 충분한 양질의 데이터로 학습하면 새로운 데이터에 대해서도 높은 정확도의 예측이 가능합니다  . 또한 선형 회귀나 의사결정나무처럼 해석이 가능한 모델도 존재해 예측의 근거를 이해하기 쉬운 경우도 있습니다  . 다양한 도메인(의료, 금융, 자율주행 등)에 적용 사례가 누적되어 있고, 라이브러리와 도구(예: scikit-learn, TensorFlow 등)도 풍부하여 실용적으로 활용하기 쉽습니다  .

단점: 지도학습에는 라벨링된 데이터의 확보가 필수적인데, 대량의 데이터에 일일이 레이블을 다는 것은 비용이 많이 들고 시간이 걸립니다  . 레이블에 사람이 개입하다 보니 오류나 편향이 들어갈 수 있고, 모델이 이를 학습하면 편향된 예측을 낳을 위험도 있습니다 . 또한 모델이 학습 데이터에 너무 특화되면(복잡한 모델의 경우) 과적합이 발생하여 새로운 데이터에 성능이 떨어질 수 있습니다  . 이외에도 데이터 분포가 변하면 성능이 감소하는 개념 드리프트 문제나, 불균형 데이터에서 소수 클래스 예측이 어려운 문제 등이 존재합니다 .

대표 알고리즘: 지도학습에는 다양한 알고리즘이 있습니다. k-최근접 이웃(k-NN) 알고리즘은 새로운 데이터가 주어졌을 때 가장 가까운 k개의 이웃 데이터의 레이블을 참고하여 분류하거나 값을 예측하는 직관적인 방법입니다. 예를 들어 k-NN은 추천시스템에서 비슷한 취향의 이웃 사용자를 찾아 아이템을 추천하는 데 활용될 수 있습니다 . **서포트 벡터 머신(SVM)**은 레이블 간의 마진(분리 여유)을 최대화하는 결정경계를 찾는 방법으로, 고차원에서도 효과적이며 이미지 분류나 필기체 인식 등에 활용됩니다  . 이 외에도 의사결정나무, 랜덤 포레스트, 로지스틱 회귀, 신경망 등 많은 알고리즘이 지도학습에 속하며, 문제 유형과 데이터 특성에 따라 적절한 방법을 선택합니다.

적용 사례: 지도학습은 현실에서 가장 널리 쓰이는 학습 방식입니다. 예를 들어 자율주행 자동차의 객체 인식 모듈은 도로 영상에 사람이 라벨링한 “차량”, “보행자”, “신호등” 등의 정답 데이터를 이용해 CNN 기반의 모델을 지도학습으로 훈련하여, 주행 중 카메라 영상에서 이러한 객체들을 정확히 감지합니다. 의료 영상 진단에서도 MRI나 X-ray 영상을 입력으로 종양 여부를 레이블링한 데이터로 모델을 학습시켜 종양을 자동으로 판별할 수 있습니다. 추천 시스템의 경우에도 사용자의 과거 행동을 “좋아함” 또는 “구매함” 등의 레이블로 간주하여 예측 모델을 학습시키며, 이를 통해 개인화된 콘텐츠 추천을 수행합니다.

비지도학습 (Unsupervised Learning)의 원리와 특성

비지도학습은 데이터에 대한 정답 레이블이 없이 모델을 학습시키는 방법으로, 데이터의 숨은 구조나 패턴을 발견하는 데 초점을 둡니다 . 주어진 입력들 사이의 유사성, 군집 구조, 분포 등을 모델 스스로 파악하여 유용한 표현이나 군집을 만들어냅니다. 즉, 어떤 데이터가 주어졌을 때 그것들을 몇 개의 그룹으로 묶거나 차원 축소를 통해 데이터의 본질적인 특성을 추출하는 식입니다. 예를 들어 고객들의 구매 데이터에서 비지도학습을 적용하면 비슷한 소비 성향을 가진 고객군으로 군집화(clustering)하여 마케팅에 활용할 수 있습니다.

장점: 비지도학습은 숨겨진 패턴 발견을 통해 데이터에 대한 통찰을 얻을 수 있다는 큰 장점이 있습니다  . 방대한 미분류 데이터에서 인간이 미처 알지 못한 구조를 찾아내어 특징을 추출하거나 시각화할 수 있습니다. 또한 차원 축소 기법(PCA, t-SNE 등)을 통해 고차원 데이터를 요약하여 다룰 수 있게 하고, 노이즈 제거나 데이터 압축에도 활용됩니다 . 레이블이 필요 없으므로 데이터 라벨링 비용이 들지 않으며(혹은 최소화하여) 활용할 수 있다는 점도 중요합니다  . 이 때문에 레이블을 구하기 어려운 분야나 데이터 탐색적 분석(EDA) 단계에서 유용하게 쓰입니다. 또한 학습된 비지도 모델의 결과(예: 클러스터 레이블 또는 생성된 새로운 특징)를 다시 지도학습의 입력으로 활용하여 성능을 높이는 등 피처 공학 측면에서도 도움을 줍니다 .

단점: 비지도학습은 정답이 없기 때문에 결과의 평가가 주관적일 수 있고, 군집이나 패턴이 실제로 의미가 있는지 판단하기 어렵습니다  . 또한 적용하는 알고리즘과 하이퍼파라미터 선택에 따라 서로 다른 결과가 나올 수 있어 일관성이 떨어질 수 있습니다 . 무엇보다도 정량적인 정답 대조가 불가능하므로 모델의 성능을 객관적으로 측정하거나 모델 선택을 하는 데 한계가 있습니다 . 데이터에 내재한 구조를 찾는 과정이므로, 고차원일 때 계산량이 많거나(예: 군집 수 k에 따른 복잡도) 해석이 어려운 경우도 있습니다 . 그리고 발견된 패턴이 항상 유용한 것은 아니며, 실제 업무에 활용하려면 추가로 도메인 지식을 통한 의미 해석이 필요합니다.

대표 알고리즘: 비지도학습의 대표적인 기법으로는 **군집화(Clustering)**와 밀도 추정, 연관 규칙 학습 등이 있습니다. K-평균 군집화(K-means) 알고리즘은 가장 널리 알려진 군집화 방법으로, 데이터를 미리 지정한 K개의 그룹으로 묶습니다. 임의로 선택된 K개의 중심에서 시작해 각 데이터 포인트를 가장 가까운 중심에 할당하고, 할당 결과에 따라 중심을 데이터 평균으로 업데이트하는 과정을 반복하여 그룹을 형성합니다  . 이 방법은 고객 세분화, 이미지 압축(유사한 색상 픽셀 군집화) 등에 활용되며, 계산이 빠르고 구현이 간단한 장점이 있습니다. 그 외에도 계층적 군집화(계층적 트리 형태로 군집 형성), DBSCAN(밀도 기반 군집화, 이상치 탐지에 강건) , 혼합 가우시안 모델(GMM) 등이 자주 사용됩니다. 또한 연관 규칙 학습은 대형 장바구니 분석에서 “A를 산 사람들이 B도 살 확률” 같은 규칙을 발견하는 데 쓰이고, **자기조직화 지도(SOM)**나 **주성분분석(PCA)**처럼 데이터의 구조를 파악하거나 시각화하는 알고리즘도 비지도학습에 속합니다.

적용 사례: 비지도학습은 데이터 탐색과 분류 이전 단계에서 널리 사용됩니다. 예를 들어, 온라인 쇼핑몰에서는 비지도학습으로 수백만 고객들의 행동 데이터를 분석하여 고객 프로파일을 몇 개의 군집으로 분류하고 각 군집별 마케팅 전략을 수립합니다. 네트워크 트래픽 이상 탐지의 경우 정상 트래픽의 패턴을 학습하고 나서 크게 벗어나는 패턴을 이상치로 간주하여 사이버 공격을 탐지하기도 합니다. 또한 추천 시스템에서 사용자-아이템 평가행렬을 행렬 분해하거나 임베딩하는 과정(예: Word2Vec의 단어 임베딩)은 비지도적 성격을 띠며, 이렇게 얻은 잠재요인을 이용해 비슷한 아이템을 추천하는 데 활용합니다. 의료 영상 분야에서도 비지도 학습을 통해 MRI 이미지에서 구조적으로 비슷한 픽셀들을 군집화하여 장기(臟器) 분할을 자동화하는 시도 등이 이루어지고 있습니다.

강화학습 (Reinforcement Learning)의 원리와 특성

강화학습은 보상(reward)이라는 피드백 신호를 통해 시행착오를 거치며 최적의 행동 전략을 학습하는 방법입니다. 지도학습처럼 정답을 알려주는 것이 아니라, **에이전트(Agent)**가 **환경(Environment)**과 상호작용하면서 매 순간 선택한 행동에 대해 환경으로부터 보상이나 벌점을 받고 , 이를 토대로 향후 보상을 최대화하는 방향으로 행동 정책을 개선해 나갑니다. 예를 들어 미로를 탈출해야 하는 로봇 에이전트가 있다고 하면, 한 걸음 움직일 때마다 목표(출구)에 가까워지면 +1 보상을, 불길이나 벽에 부딪히면 -1 페널티를 주는 식입니다. 에이전트는 여러 시행착오 끝에 누적 보상(total reward)을 최대화하는 경로를 학습하게 됩니다.

장점: 강화학습의 가장 큰 장점은 복잡한 순차적 의사결정 문제를 해결할 수 있다는 점입니다  . 환경의 상태가 시간에 따라 변하고, 단일 행동이 아닌 일련의 행동들의 장기적인 결과를 고려해야 하는 문제(예: 게임 플레이, 로봇 제어 등)에 잘 맞습니다. 명시적인 지도데이터 없이도 실시간 상호작용을 통해 학습하므로, 환경이 명확한 수식으로 표현되지 않더라도 시뮬레이션이나 실제 환경에서 직접 배우며 예기치 않은 변화에도 적응할 수 있습니다  . 또한 보상 신호만 적절히 설계하면 매우 창의적인 전략을 발견하기도 하는데, 이는 다른 학습 방식으로 풀기 어려운 문제를 풀 수 있게 해줍니다  . 예를 들어, 바둑의 최적 수순을 인간 데이터 없이도 스스로 찾아낸 AlphaGo의 학습은 강화학습의 대표적인 성과입니다. 이처럼 탐험과 활용(exploration vs. exploitation)을 조율하며 학습하기 때문에, 잘 설정만 하면 글로벌 최적해도 찾을 수 있는 이론적 보장이 있습니다.

단점: 강화학습은 적용이 어려운 영역도 있습니다. 먼저 학습 시간이 매우 오래 걸리고 데이터 효율이 낮을 수 있습니다. 원하는 행동 전략을 얻기 위해 에이전트가 수많은 시행착오를 겪어야 하며, 특히 시뮬레이션이 어려운 현실 환경에서는 학습 비용이 크게 증가합니다  . 또한 보상 함수를 어떻게 설계하느냐에 성능이 크게 좌우되는데, 부적절한 보상은 엉뚱한 행동을 강화하거나 의도치 않은 부작용(예: 보상을 높이기 위해 편법을 학습하는 현상)을 낳기도 합니다  . 학습 과정이 불안정하여 수렴을 보장하기 어렵고, 많이 튀는 경향(노이즈) 때문에 최적점 근처에서 진동하며 정확히 최적해를 찾지 못할 수도 있습니다  . 마지막으로, 학습된 정책이나 가치함수가 왜 그런 결정을 내리는지 해석하기 어려워 디버깅이 어렵고, 보상 설계부터 학습 파이프라인까지 실험적인 조율이 많이 필요합니다.

대표 알고리즘: 강화학습 알고리즘으로는 가치 기반과 정책 기반 방법이 있습니다. **Q-러닝(Q-learning)**은 대표적인 가치 기반 방법으로, 환경의 상태-행동 쌍 (s, a)마다 Q값이라 불리는 장기적 보상을 추정하는 값을 학습합니다. 에이전트는 Q값이 가장 높은 행동을 선택하는 정책을 따르며, 경험을 통해 Q값을 지속적으로 갱신(Bellman 방정식 기반)하여 최적 정책에 수렴합니다  . 예를 들어 작은 그리드 월드 게임에서 Q-러닝은 표 형태로 각 위치(state)에서 상하좌우 행동(action)의 Q값을 학습해두고, 가장 높은 Q값의 행동을 선택함으로써 최단 경로를 찾아냅니다. **상태 가치 함수(V)**나 정책 함수(π) 자체를 신경망으로 근사하여 직접 최적화를 하는 정책 그래디언트 방법도 있으며, 최근에는 딥러닝과 결합한 심층 강화학습(Deep RL)이 많이 활용됩니다. 예를 들어 **DQN(Deep Q-Network)**은 신경망을 이용해 Q값을 근사하여, 영상 입력에 대해서도 Q-러닝을 적용할 수 있게 한 알고리즘으로, 이것이 Atari 게임에서 인간 수준의 플레이를 보여 큰 화제가 되었습니다.

적용 사례: 강화학습은 게임 인공지능과 로보틱스 분야에서 두각을 나타냅니다. 바둑 인공지능 AlphaGo는 처음에는 인간 기보로 지도학습을 거쳤지만 이후 셀프 플레이 강화학습을 통해 기보 데이터 이상의 기량 향상을 이루었고, 결국 세계 챔피언을 이겼습니다  . AlphaGo Zero는 아예 인간 지식 없이 오직 강화학습만으로 바둑, 체스 등 보드게임에서 최고 수준에 올랐고 이는 딥러닝+강화학습의 위력을 보여줍니다 . 또한 물리적인 로봇 제어에도 강화학습이 쓰이는데, 예를 들어 로봇 팔이 물체를 집는 동작을 인간이 일일이 프로그래밍하지 않고, 성공하면 보상을 주는 형태로 학습시켜 스스로 최적의 잡기 동작을 익히게 할 수 있습니다. 자율주행 차량의 주행 전략(예: 장애물 회피 행동)을 강화학습으로 훈련시키는 연구도 있으며, 추천 시스템 분야에서도 사용자의 장기 만족도를 높이는 쪽으로 추천 정책을 강화학습으로 최적화하려는 시도가 있습니다. 다만 현실 세계 문제에 강화학습을 적용할 때는 안전성과 충분한 시뮬레이션 환경 구축 등이 선결과제로 고려됩니다.

인공신경망의 작동 원리와 계층 구조

인공신경망(Artificial Neural Network, ANN)은 뇌의 뉴런 연결을 모방하여 만들어진 함수 추정 모델로, **여러 계층(layer)의 노드(node)**로 이루어진 구조를 갖습니다. 가장 앞쪽에는 입력 특성들이 들어가는 입력층, 가장 끝에는 최종 결과를 출력하는 출력층이 있으며 그 사이에 하나 이상의 **은닉층(hidden layer)**이 존재합니다 . 각 노드는 일종의 인공 뉴런에 해당하며, 앞 계층의 노드들과 **가중치(weight)**로 연결되어 있습니다. 하나의 노드는 연결된 이전 노드들의 출력을 각 연결 가중치로 곱하여 모두 합산하고, 여기에 **편향(bias)**을 더한 값에 어떤 활성화 함수를 적용하여 자신의 출력을 계산합니다  . 이를 수식으로 표현하면, 예를 들어 어떤 노드 j의 출력이 h_j라고 할 때 h_j = f\Big(\sum_i w_{ij} x_i + b_j\Big)와 같은 형태입니다. 여기서 x_i들은 이전 층의 출력(혹은 입력층의 값), w_{ij}는 i로부터 오는 연결 가중치이며, f는 활성화 함수입니다.

이러한 계산이 계층적으로 순차 진행되는 것이 신경망의 작동 원리입니다. 입력층에서 들어온 값들은 첫 번째 은닉층의 각 노드에 가중합 계산으로 전달되고, 그 결과가 비선형 활성화 함수를 통과하여 활성화됩니다. 그 활성 출력들이 다시 다음 층의 입력이 되어 같은 방식으로 계산이 이루어집니다. 마지막 출력층까지 이러한 순방향 전파(feedforward)를 거치면 최종 출력이 산출됩니다. 각 층의 노드들은 모든 이전 층의 노드들과 연결되는 완전 연결층(fully connected layer) 형태를 취하는 경우가 많습니다 . 신경망이 딥러닝이라 불리는 이유는 이렇게 은닉층을 여러 겹 깊게 쌓아 입력으로부터 계층적 표현 학습을 가능케 하기 때문입니다. 층이 깊어질수록 저층에서는 간단한 패턴 또는 저수준 특징을, 고층으로 갈수록 복잡한 패턴이나 고수준 개념을 잡아내는 식의 계층 구조가 형성됩니다.

신경망의 학습은 주어진 입력에 대해 원하는 출력이 나오도록 각 연결 가중치를 조정하는 과정입니다. 일반적으로 출력과 목표값 사이의 손실 함수를 정의하고, 그 손실이 작아지도록 가중치를 최적화합니다. 이때 핵심이 되는 것이 역전파(Backpropagation) 알고리즘인데, 이는 출력층에서 계산된 오류를 거꾸로 입력 방향으로 전파하여 각 연결 가중치가 오류에 얼마나 기여했는지 미분(gradient) 형태로 계산하는 방법입니다. 역전파를 통해 구한 그래디언트를 이용하여 경사하강법으로 가중치를 갱신함으로써 신경망이 점차 정확한 예측을 하도록 만듭니다 (이후 해당 알고리즘을 자세히 설명). 요컨대, 인공신경망은 선형 결합 + 비선형 활성화라는 단순 연산을 다층으로 쌓아 복잡한 함수를 근사하며, 이미지 인식, 음성 인식, 자연어 처리 등 거의 모든 딥러닝 응용의 기본 토대로 자리잡고 있습니다. 실제로 현대의 많은 AI 시스템은 이와 같은 다층 신경망 구조를 활용하고 있으며, 예컨대 구글의 검색 엔진 알고리즘도 대규모 신경망의 한 사례로 알려져 있습니다 .

합성곱 신경망(CNN)의 내부 구조와 작동 방식

합성곱 신경망(CNN, Convolutional Neural Network)은 이미지나 영상 인식 등에 특화된 신경망 구조로, 합성곱 계층(convolution layer)과 풀링 계층(pooling layer)을 특징적으로 사용합니다. 기본적인 신경망이 모든 입력 노드와 출력 노드가 완전히 연결되는 것과 달리, CNN의 합성곱 계층에서는 각 뉴런이 국소적인 receptive field만을 바라봅니다  . 즉, 이미지 같은 2차원 입력의 경우 작은 크기의 필터(kernel)를 이미지 위에 슬라이딩하며 적용하여 합성곱 연산을 수행합니다. 하나의 합성곱 필터는 특정한 특징(에지, 모서리, 질감 등)을 감지하는 역할을 하며, 필터를 이미지 전체에 걸쳐 이동시키면서 내적곱(dot product)을 계산해 나온 값들이 그 필터의 **특징 맵(feature map)**으로서 출력됩니다  . 여러 개의 서로 다른 필터를 사용하면 여러 종류의 특징 맵이 생성되고, 이것이 다음 계층으로 전달되어 더욱 복잡한 패턴을 감지하게 됩니다. 합성곱 계층의 활성화 함수로는 보통 ReLU와 같은 비선형 함수를 사용하여, 필터의 선형 응답에 비선형성을 부여합니다 .

합성곱 연산을 통해 특징을 추출한 후에는 풀링(pooling) 계층을 두어 특징 맵의 공간적 크기를 줄입니다. 풀링은 일정 크기 구역 안에서 대표값을 뽑는 다운샘플링 작업으로, 주로 **최대 풀링(max pooling)**이나 평균 풀링을 사용합니다 . 예를 들어 2×2 크기의 max 풀링은 인접한 4개 픽셀 중 가장 큰 값만을 통과시키고 나머지는 버림으로써, 특징 맵의 폭과 높이를 절반으로 줄입니다 . 이렇게 하면 계산량이 감소할 뿐 아니라, 작은 위치 변화에 대한 **위치 불변성(invariance)**이 생겨서 조금 위치가 달라져도 동일한 특징으로 인식하는 효과가 있습니다 . CNN은 일반적으로 여러 층의 합성곱+풀링 계층 조합을 쌓은 후, 마지막에 전통적인 완전연결층(Dense layer)들로 이어져 분류 등의 최종 결정을 내리게 됩니다  .

이러한 CNN 구조의 예로 고전적인 LeNet(손글씨 숫자 인식용)과 현대적인 깊은 CNN인 AlexNet을 비교한 도식이 위 그림에 나와 있습니다. 합성곱 층(파란색)은 필터 크기와 개수, 보폭(stride), 패딩 여부 등을 조정하며 특징을 추출하고, 풀링 층(자주색)은 보통 2×2 영역에 적용되어 폭과 높이를 축소합니다. 초창기 LeNet은 작은 합성곱-풀링 층 두 쌍 뒤에 완전연결층을 두었지만, AlexNet은 더 많은 합성곱 층과 풀링 층을 쌓고, 중간에 활성화 함수로 ReLU를 넣는 등 훨씬 깊고 크기가 큰 네트워크로 구성되어 있습니다. 이처럼 CNN은 계층별로 계층적인 시각적 특징을 학습하게 되는데, 처음 층들은 에지나 색상 대비 같은 저수준 특징을, 중간 층들은 모서리나 작은 패턴을, 마지막 층에 가까워질수록 복잡한 객체의 일부분이나 전체 모양 같은 고수준 특징을 인코딩합니다. 마지막 완전연결층은 이런 추상화된 특징들을 입력 받아 최종적으로 예측을 산출합니다.

CNN은 오늘날 컴퓨터 비전 분야의 거의 모든 문제에 활용되고 있습니다. 이미지 분류(예: 개 vs 고양이 분류)에서 탁월한 성능을 보이며, 객체 탐지나 이미지 분할처럼 위치 정보가 필요한 과제도 합성곱 신경망 구조로 해결합니다. 자율주행 차량의 차선 인식이나 보행자 감지, 의료 영상에서의 종양 부위 검출 등은 모두 합성곱 신경망으로 구현된 모델이 핵심 역할을 합니다  . 이미지 외에도 시계열 데이터나 일부 자연어 처리에서 1차원 합성곱으로 특징 추출을 하기도 하고, 추천 시스템에서 사용자-아이템 상호작용을 이미지처럼 매트릭스로 보고 합성곱으로 추론하는 등 창의적인 적용도 이뤄지고 있습니다 . 합성곱 신경망의 특징은 매개변수 공유(같은 필터를 전체 입력에 적용)와 희소 연결(국소 영역만 연결)로 인해 파라미터 수를 크게 줄이고 학습 효율을 높였다는 점인데, 이러한 강점 덕분에 딥러닝의 비약적 발전을 이끈 주요 건축(block)으로 손꼽힙니다.

소프트맥스 함수와 교차 엔트로피 손실 함수

소프트맥스(Softmax) 함수는 분류 문제에서 출력 값을 확률분포로 변환해주는 다층 퍼셉트론의 출력층 활성화 함수로 많이 쓰입니다. 소프트맥스는 실수 값 벡터를 입력 받아 각 원소를 exponential로 취한 뒤 총합으로 나누어 정규화합니다  . 이를테면 어떤 모델의 출력 로짓(logit) 벡터가 z = [z_1, z_2, …, z_K]라면, 소프트맥스 출력의 i번째 값은
\sigma(z)i = \frac{e^{z_i}}{\sum{j=1}^{K} e^{z_j}}
로 정의됩니다 . 이렇게 변환하면 출력 벡터의 모든 성분이 0과 1 사이의 값이 되고 합이 1이 되어, 마치 K개의 클래스에 대한 확률처럼 해석할 수 있게 됩니다  . 특히 입력 값 중 가장 큰 원소에 대응하는 지수항이 다른 것들보다 월등히 크기 때문에, 소프트맥스 결과에서는 가장 큰 값 쪽으로 확률질량이 집중되는 효과가 있습니다 . 예컨대 로짓이 (1, 2, 8)이라면 소프트맥스 결과는 대략 (0.001, 0.002, 0.997)이 되어, 세 번째 항목의 확률이 거의 1에 가깝게 됩니다 . 이러한 성질 때문에 소프트맥스 함수는 “soft”한 argmax로 불리기도 하며, 다중 클래스 분류에서 신경망의 마지막 출력층에 배치되어 모델이 각 클래스에 속할 확률을 예측하도록 합니다 .

**교차 엔트로피 손실 함수(Cross-Entropy Loss)**는 소프트맥스 등의 확률 출력과 한 핫(one-hot) 인코딩된 실제 정답 분포 사이의 차이를 측정하는데 널리 쓰이는 손실 함수입니다  . 엔트로피는 원래 확률분포의 불확실성을 나타내는 척도인데, 교차 엔트로피는 어떤 분포 q가 실제 분포 p를 얼마나 잘 설명하는지를 수치화한 것입니다. 분류 문제에서 실제 분포 p는 정답 클래스에 1, 나머지에 0인 one-hot 벡터이고, 모델의 예측 분포 q는 소프트맥스로 나온 확률벡터입니다. 교차 엔트로피 값 H(p,q)는 두 분포가 완전히 같으면 0이고, 다를수록 커지는데, 이를 최소화하는 것이 곧 예측 확률 q를 정답에 가깝게 만드는 일과 같습니다  . 수식으로 교차 엔트로피 손실 L을 나타내면 다음과 같습니다:
L = -\sum_{j=1}^{C} y_j \log\,p_j
여기서 y_j는 정답 분포(실제 클래스일 때 1, 아니면 0), p_j는 모델의 소프트맥스 출력 확률입니다 . 이 값은 결국 정답 클래스에 해당하는 출력 확률 p_{\text{true}}에 대해 -\log p_{\text{true}} 값과 같으며, 정답 확률이 1에 가까워질수록 손실이 0에 수렴하고, 정답 확률이 낮을수록 손실이 크게 증가합니다. 예를 들어 정답 클래스에 대한 예측확률이 0.9였다면 손실은 -\log 0.9 \approx 0.105로 비교적 작지만, 잘못된 클래스에 0.9 확률을 주고 정답에는 0.1 확률만 줬다면 손실은 -\log 0.1 = 2.302로 매우 커집니다. 이러한 로그 손실 특성 때문에, 교차 엔트로피는 모델이 정답인 클래스의 확률을 크게 높이도록 유도하며, 틀린 답에 대해서는 크게 페널티를 주어 학습이 빠르게 수렴하도록 돕습니다.

교차 엔트로피 손실 함수는 분류 문제 특히 딥러닝에서 표준적인 손실 함수로 자리잡았습니다  . 소프트맥스와 한 쌍을 이루어 다중 클래스 분류에서 확률적 출력 + 로그 손실 조합으로 사용되며, 이는 확률적 해석이 가능하고 미분가능하여 경사하강법 기반 최적화에 적합하기 때문입니다  . 실제로 신경망에서 교차 엔트로피의 그래디언트는 예측 확률과 정답의 차이(예: p - y) 형태로 깨끗이 떨어져 계산이 편리하고, 이는 학습을 안정적으로 만드는 요인입니다  . 요약하면, 소프트맥스는 모델 출력값들을 확률처럼 해석하게 해주고, 교차 엔트로피는 그 확률분포와 정답 사이의 차이를 수치화하여 모델을 훈련시키는 역할을 합니다. 이 둘은 이미지 분류(예: 손글씨 숫자 0~9 인식)나 자연어 처리에서 다음에 설명할 언어 모델의 훈련 등에서 핵심적으로 쓰이는 개념입니다.

언어 모델에서의 소프트맥스와 자연어 생성 원리

ChatGPT와 같은 **대형 언어 모델(LLM)**은 기본적으로 다음 단어 예측을 통해 언어 생성 기능을 수행합니다. 이들은 주어진 문맥(앞선 단어들 혹은 토큰들)이 있을 때, 다음에 올 가능성이 가장 높은 단어 분포를 출력하도록 훈련되어 있습니다. 구체적으로, 모델의 출력층에서는 거대한 어휘집의 각 토큰(token)에 대한 로짓 값이 나오고, 여기에 소프트맥스 함수를 적용하여 해당 문맥에서 각 단어가 다음으로 출현할 확률 분포를 얻습니다  . 예를 들어 어떤 문맥까지의 내용이 “파란 하늘을 보니 기분이”였다면, 그 다음에 올 단어로 “좋다”, “상쾌하다”, “우울하다” 등 다양한 후보가 있고, 모델은 학습된 확률분포에 따라 이들의 가능성을 계산합니다. 이때 소프트맥스를 적용하면 모든 단어에 대한 확률값이 되고, 모델은 이 분포를 기반으로 실제 출력을 생성하게 됩니다.

자연어 생성 시에는 **디코딩 전략(decoding strategy)**에 따라 최종 출력이 결정됩니다 . 가장 간단한 방법은 탐욕적(greedy) 방법으로, 매 스텝마다 소프트맥스 확률이 가장 높은 단어를 선택하는 것입니다. 위 예시에서 “기분이 ___” 다음에 확률이 가장 높게 예측된 단어가 “좋다”라면 이를 출력하고 문장에 이어붙이는 방식입니다. 좀 더 풍부하고 일관된 생성 결과를 얻기 위해 확률적 샘플링도 활용되는데, 이는 소프트맥스로 얻은 확률분포에 따라 랜덤 표본추출을 하는 것입니다 . 다만 완전히 확률에 따라 샘플링하면 때때로 말이 안 되는 결과가 나올 수 있어, 상위 k개 단어만 고려하는 **상위-K 샘플링(top-k)**이나 누적 확률 0.x 이하의 단어만 고려하는 핵심 샘플링(top-p, nucleus) 등의 기법으로 적절한 무작위성과 일관성을 조절합니다  . 또한 소프트맥스 온출력 전에 온도(temperature) 값을 곱해 분포의 Sharp함을 조절함으로써, 값이 크면 확률 분포를 평탄하게 만들어 다양성을 높이고, 작으면 더욱 한두 개 후보에 집중하여 보수적으로 생성하도록 조정할 수 있습니다 . 이러한 방법들 덕분에 언어 모델은 맥락에 어울리면서도 창의적인 텍스트를 만들어냅니다.

언어 모델의 학습에도 소프트맥스와 교차 엔트로피가 사용됩니다. 대용량 텍스트 코퍼스를 학습할 때 각 시점의 다음 단어에 대한 정답을 이용하여 (실제로는 문장을 토큰 단위로 끊은 다음) 모델이 예측한 다음단어 확률분포와 정답 원-핫 벡터 사이의 교차 엔트로피 손실을 계산하고, 이를 최소화하도록 모델 파라미터를 업데이트합니다. 이렇게 훈련된 모델은 예측 분포가 실제 언어의 통계에 가깝게 되며, 자연스러운 문장생성이 가능해집니다. ChatGPT의 경우 기본적으로 GPT 계열 모델로서 이러한 과정을 거쳐 거대한 데이터로 **사전 학습(pre-training)**되었고, 이후 추가적인 미세조정(예: 대화형 미세튜닝, RLHF 등)을 거쳐 대화 품질을 높인 것입니다. 하지만 최종적인 작동은 여전히 다음 토큰 확률을 소프트맥스로 계산하고, 이를 기반으로 순차적으로 단어를 생성하는 것입니다  . 요컨대, 소프트맥스는 언어 모델이 다음에 올 단어를 확률적으로 선택할 수 있게 하는 핵심 메커니즘이며, 이 확률분포에서 적절한 샘플링 기법을 통해 한 글자씩, 한 단어씩 텍스트를 이어붙여 나감으로써 인간과 유사한 문장을 만들어냅니다.

손실 함수(Loss Function)의 종류와 목적

손실 함수는 머신러닝 모델의 예측과 실제 정답 간의 차이를 정량적으로 평가하는 함수로, 모델 학습의 방향을 제시하는 핵심 요소입니다. 손실 함수의 값은 곧 모델의 오류 정도를 나타내며, 학습 알고리즘은 이 값을 최소화하도록 모델 파라미터(가중치)를 조정합니다  . 손실 함수는 단순한 성능 평가 이상의 의미를 가지는데, 오차를 어떻게 측정하느냐에 따라 모델이 학습하는 방식과 최종 성능이 크게 달라집니다. 예컨데 동일한 문제라도 손실 함수를 다르게 설정하면 모델이 중요시하는 부분이 바뀔 수 있습니다. 일반적으로 손실 함수는 미분 가능해야 경사하강법 등의 최적화 방법을 적용할 수 있고  , 출력값과 연관되어 설계됩니다.

손실 함수는 크게 **회귀(regression)**와 **분류(classification)**에서 주로 사용하는 것들로 나눌 수 있습니다 . 회귀 문제에서는 연속적인 값을 예측하므로 예측값과 실제값의 차이를 직접 재는 손실을 씁니다. 가장 대표적인 것이 **평균제곱오차(MSE)**로, \frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2 형태로 모든 데이터에 대한 오차 제곱을 평균낸 값입니다  . 제곱을 하기 때문에 오차의 부호와 상관없이 **크기(magnitude)**만 고려하며, 큰 오차는 제곱으로 훨씬 크게 벌점을 주기 때문에 극단값에 민감하지만, 그만큼 모델이 큰 오류를 내지 않도록 만드는 효과가 있습니다 . 회귀에서는 이 외에도 평균절대오차(MAE) – 오차의 절댓값의 평균 – 등을 쓰기도 하는데, MAE는 제곱이 아니라 1차적으로 오차를 다루기 때문에 이상치에 덜 민감하고, 대신 작은 오차에 대해선 MSE보다 상대적으로 큰 패널티를 주는 특성이 있습니다 . **후버 손실(Huber)**처럼 MSE와 MAE의 절충안을 쓰거나, 예측값 로그를 씀으로써 비율 관점의 오차를 보는 MSLE 등도 경우에 따라 사용됩니다. 중요한 것은, 회귀 손실 함수는 모델이 정답과 최대한 가깝도록 출력하도록 유도하는 것이며, 보통 예측값-실제값의 차이가 0이 되도록 학습합니다.

분류 문제에서는 모델 출력이 확률분포(혹은 점수 벡터) 형태가 되고, 정답은 클래스 레이블로 주어지므로 여기에 맞는 손실 함수를 사용합니다. 가장 널리 쓰이는 것이 앞서 설명한 교차 엔트로피 손실입니다. 이진 분류에서는 실제값 y가 0 또는 1인 상황에서 -[y \log p + (1-y)\log(1-p)] 형태로 쓰이며  , 다중 클래스 분류에서는 one-hot 정답과 소프트맥스 확률분포 사이의 교차 엔트로피 -\sum_j y_j \log p_j를 취합니다 . 이 손실은 **로그 손실(log loss)**이라고도 불리며, 확률 예측이 정답 분포와 일치할수록 0에 가까워지고 엇나갈수록 커집니다. 힌지 손실(hinge loss) 역시 분류에서(특히 SVM에서) 사용되는 손실 함수로, 정답과 예측 점수 사이의 마진 위반 정도를 측정합니다. 예를 들어 이진 분류에서 정답 레이블 y = \pm1, 예측 값 s라 할 때 hinge 손실은 \max(0, 1 - y\cdot s)로 정의되어, 올바르게 분류하면서 마진 1 이상 확보하면 손실 0, 그렇지 않으면 부족한 만큼 선형의 페널티를 줍니다. 이로써 SVM은 최대 마진을 찾도록 학습됩니다. 0-1 손실(틀리면 1, 맞으면 0) 같은 함수도 개념적으로 존재하지만, 이는 미분 불가능해 직접 최적화에는 쓰이지 않고 이론적인 지표로만 씁니다. 대체로 분류 손실 함수들은 모델이 정답 클래스에 높은 점수/확률을 부여하도록 유도하고, 잘못된 예측에는 큰 오류 값을 부여함으로써 분류 정확도를 높이도록 설계됩니다  .

손실 함수의 선택 목적은 해당 문제의 평가 척도와 학습 안정성을 모두 고려하는 것입니다. 예를 들어 회귀에서 MSE를 쓰는 이유는 평균 오차 제곱이 L2 노름 기반으로 매끄럽게 미분 가능하고, 이상치가 크게 문제가 되지 않는 경우 효과적이기 때문입니다. 반면 분류에서 교차 엔트로피를 사용하는 이유는 확률 예측을 다루기에 자연스럽고, 미분도 용이하며, 확률적 해석이 가능하기 때문입니다  . 실제 산업 현장에서는 기본 손실 함수에 더해 정규화 항(regularization term)을 추가해 모델 복잡도를 억제하기도 합니다 . 궁극적으로, 손실 함수는 모델이 나아갈 방향을 제시하는 나침반 역할을 하므로, 목표로 하는 성능 지표와 부합하도록 잘 설정하는 것이 중요합니다.

경사하강법(Gradient Descent)의 작동 원리와 변형들

경사하강법은 머신러닝 모델 학습에서 손실 함수를 최소화하기 위해 널리 사용되는 최적화 알고리즘입니다. 핵심 아이디어는 간단한 경사 내려가기(Game of hill climbing 반대 개념): 현재 파라미터에서 손실 함수의 **기울기(gradient)**를 계산하고, 그 기울기가 가리키는 증가 방향의 반대쪽으로 파라미터를 조금 이동시키면 손실이 줄어든다는 원리입니다. 마치 산에서 가장 낮은 지점을 찾기 위해 경사가 내려가는 방향으로 걸어가는 것과 같습니다. 수식으로, 파라미터 w에 대한 손실 함수 L(w)의 그래디언트 \nabla L(w)를 구했다면, 경사하강법은
w := w - \eta \, \nabla L(w)
형태로 업데이트를 수행합니다. 여기서 \eta는 **학습률(learning rate)**로, 한 번의 업데이트에 얼마만큼 이동할지를 정하는 크기 조절 인자입니다. 학습률이 크면 빠르게 이동하지만 발산 위험이 있고, 작으면 안정적이나 수렴이 느려지므로 적절한 값을 선택해야 합니다.

**배치 경사하강법(Batch GD)**은 가장 순수한 형태로, 전체 학습 데이터에 대한 손실의 기울기를 한 번에 계산하여 파라미터를 업데이트합니다. 이 방식은 모든 데이터를 활용하므로 안정적이고 정확한 기울기를 얻지만, 데이터셋이 클 경우 한 번 업데이트에 드는 연산 비용이 매우 크고 느립니다  . 반면 **확률적 경사하강법(SGD, Stochastic GD)**은 한 번 업데이트할 때 오직 무작위로 선택된 하나의 데이터 샘플만 이용하여 그래디언트를 추정합니다  . 이렇게 하면 업데이트 자체는 아주 빠르고 자주 일어나지만, 하나의 샘플만으로 계산한 기울기는 잡음이 많아 진짜 최솟값 방향과 다를 수 있습니다 . 그 결과 SGD는 손실 함수 표면을 좀 요동치면서 내려가는 경향이 있고, 정확히 수렴하기보다는 최저점 근처에서 왔다갔다할 수 있습니다 . 하지만 이러한 무작위성 덕분에 지역 최소에 갇히지 않고 탈출하는 데 유리하며  , 대용량 데이터셋도 효율적으로 학습할 수 있다는 큰 장점이 있습니다. **미니배치 경사하강법(Mini-batch GD)**은 배치GD와 SGD의 절충으로, 한 번에 하나가 아니라 수십 개~수백 개 정도의 미니배치를 묶어 기울기를 계산하여 업데이트합니다. 이렇게 하면 어느 정도 안정적인 그래디언트 추정이 가능하면서도 병렬연산을 통해 효율을 높일 수 있어, 실무에서는 미니배치 방법이 가장 널리 쓰입니다 (딥러닝 프레임워크의 기본 옵티마이저들이 이 방식).

경사하강법에는 이러한 배치 크기에 따른 변형 외에도 다양한 개선 기법이 존재합니다. 모멘텀(momentum) 기법은 물리학의 운동량 개념을 도입하여 이전 업데이트 방향을 일정 부분 유지함으로써, 골짜기 바닥에서의 진동을 줄이고 경사면을 더 빠르게 활주하도록 합니다. 적응적 학습률(adaptive learning rate) 방법들은 각 파라미터마다 학습률을 자동으로 조정하는 기법으로, AdaGrad, RMSProp, Adam 등이 대표적입니다. 예를 들어 Adam 옵티마이저는 모멘텀과 RMSProp(최근 기울기 제곱의 지수평균 이용)을 결합하여, 학습률을 파라미터별로 조정하고 일시적인 그래디언트 변화에 너무 휘둘리지 않도록 하여 빠른 수렴과 안정성을 확보한 방법입니다  . 이러한 변형들 덕분에 현대 딥러닝 모델은 초거대 파라미터 공간에서도 비교적 효율적으로 최적화를 수행할 수 있게 되었습니다.

경사하강법의 역할은 모델을 학습시키는 엔진과 같습니다. 손실 함수 지형에서 최저점을 찾아 모델을 최적화하는 과정을 자동화해주며, 거의 모든 신경망 기반 모델 학습에 이 알고리즘이 쓰이고 있습니다. 예컨대 CNN 기반 자율주행 인식 모델이나 Transformer 기반 번역 모델 모두 학습 과정에서 손실 함수를 정의하고 경사하강법(및 그 변형 알고리즘)으로 파라미터를 업데이트한 결과물입니다. 경사하강법은 단순하지만 강력하여, 좋은 손실 함수와 함께라면 높은 차원의 복잡한 모델도 점진적으로 성능을 개선시켜 결국 원하는 목표에 도달하게 합니다.

역전파(Backpropagation) 알고리즘의 개념 및 수학적 직관

**역전파(backpropagation)**는 다층 신경망의 학습을 가능케 한 핵심 알고리즘으로, **연쇄율(chain rule)**을 효율적으로 적용하여 출력층부터 입력층 방향으로 오차의 기여도(그래디언트)를 계산하는 방법입니다  . 쉽게 말해, 신경망이 출력한 예측값과 실제값 사이의 오차를 각 층을 거슬러 올라가며 **“책임 분배”**를 하는 과정입니다. 출력층에서는 예측과 정답의 차이에 활성화 함수의 미분을 곱해 출력 노드의 그래디언트(오차 신호)를 구하고, 그 다음 이전 층으로 이 값을 전파합니다. 이전 층의 각 노드에서는 자신이 출력한 값이 출력층 오차에 얼마나 영향했는지 계산하기 위해, 연결 가중치와 자신의 활성화 함수 미분값 등을 곱해 자신의 오차 신호를 산출합니다. 이렇게 하면 한 층 아래의 노드들에 대한 그래디언트가 구해지고, 다시 그보다 더 아래층으로 전달됩니다. 이 과정이 입력층 쪽까지 반복되면 모든 가중치에 대한 **손실의 기울기 \frac{\partial L}{\partial w}**가 효과적으로 계산되는 것입니다.

수학적으로 역전파는 연쇄율의 반복 적용입니다. 예를 들어 두 개 층으로 이루어진 간단한 네트워크를 생각해보면, 입력 x에서 은닉층 h를 거쳐 출력 y를 얻는 구조일 때, 출력층 가중치 W^{(2)}에 대한 손실의 미분은
\frac{\partial L}{\partial W^{(2)}} = \frac{\partial L}{\partial y} \frac{\partial y}{\partial W^{(2)}}
로 계산됩니다. 한편 은닉층 가중치 W^{(1)}에 대한 미분은
\frac{\partial L}{\partial W^{(1)}} = \frac{\partial L}{\partial y}\frac{\partial y}{\partial h} \frac{\partial h}{\partial W^{(1)}}
와 같이 여러 개의 곱으로 연결되는데, 여기서 \frac{\partial L}{\partial y}는 출력층에서 계산된 오류신호, \frac{\partial y}{\partial h}는 출력층 가중치 등을 반영한 값, \frac{\partial h}{\partial W^{(1)}}는 은닉층의 활성화 미분 등을 포함한 값입니다. 결국 출력층에서 전파된 그래디언트에, 경로를 따라온 각 요소의 국소 미분들을 곱해주면 해당 가중치에 대한 최종 그래디언트가 구해지는 셈입니다. 역전파 알고리즘은 이 곱셈 과정을 동적 프로그래밍으로 효율화하여, 한번의 순전파와 역전파로 모든 파라미터의 기울기를 구할 수 있게 해줍니다  . 만약 역전파가 없었다면 임의의 다층신경망의 각 가중치에 대해 손실 미분을 일일이 구하는 데 엄청난 계산량이 들었을 것이고, 딥러닝은 현실적으로 불가능했을 것입니다.

역전파의 직관은 “출력에 영향을 미친 만큼 책임을 진다”로 요약할 수 있습니다. 어떤 가중치가 최종 오류를 크게 증가시키는 방향으로 영향했다면 그 가중치는 큰 그래디언트를 부여받아 많이 조정되고, 반대로 영향이 미미한 가중치는 작은 변화만 겪습니다. 이렇게 함으로써 신경망의 각 부분이 자신의 기여도에 따라 학습하며 전체 성능을 향상시키게 됩니다. 역전파는 알고리즘적으로는 비교적 단순하지만, 이를 통해 신경망이 스스로 특징을 학습할 수 있게 되었다는 점에서 의의가 큽니다. 1980년대 중반에 역전파 개념이 재발견되면서 다층신경망의 학습 문제가 풀렸고, 2010년대의 딥러닝 열풍까지 이어지게 되었습니다.

현대의 모든 딥러닝 프레임워크(PyTorch, TensorFlow 등)는 역전파를 기반으로 동작합니다. 예를 들어 의료영상 진단 CNN 모델을 훈련할 때, 환자의 X-ray 이미지를 입력하면 모델이 종양 여부를 출력하고, 손실 함수(예: 교차 엔트로피)를 계산한 뒤 자동으로 역전파를 수행하여 모든 필터와 뉴런 가중치들의 그래디언트를 구합니다. 그런 다음 경사하강법으로 파라미터를 갱신하고, 수천번 반복하여 모델이 정확한 예측을 할 때까지 학습합니다. 이 전체 과정의 핵심 계산이 바로 역전파이며, 이는 모델 구조가 아무리 복잡해도 동일한 원리로 적용됩니다. 다만 역전파는 아주 깊은 네트워크에서는 기울기 소실/폭주 문제(초기층까지 전파시 그래디언트가 너무 작아지거나 커지는 현상)가 있을 수 있어 배치정규화나 Residual 연결 등 보조 기법이 사용되기도 합니다 . 그럼에도 역전파 자체는 딥러닝 학습의 근간으로서, 인간의 개입 없이도 오류를 줄이도록 모델을 자동으로 미세조정하는 역할을 수행하고 있습니다.

마지막으로 요약하면, 역전파는 다층신경망에서 각 가중치가 오류에 미치는 영향을 효율적으로 계산하는 방법이며 , 이를 통해 우리는 딥러닝 모델을 체계적으로 훈련시켜 자율주행, 의료 영상 분석, 자연어 처리 등 다양한 산업 분야에 적용할 수 있는 강력한 모델을 얻을 수 있게 되었습니다.

반응형