AI

인공 신경망(ANN / NN), 딥러닝의 심장!!

Jerrykim91 2025. 9. 25. 18:44

인공 신경망(ANN, Artificial Neural Network)

 

이미지 출처 : Applications of Artificial Intelligence on the Modeling and Optimization for Analog and Mixed-Signal Circuits: A Review / Fig 2 - uploaded by Morteza Fayazi 

 

아주 요즘 온 사방이 AI로 아주 뜨겁다. 그 중심에는 인공 신경망(ANN, Artificial Neural Network)이 있다.
음, 이름은 거창하지만 핵심은 단순한 아이인데 우리 뇌의 신경세포(뉴런)가 연결돼 정보를 주고받듯, 인공 신경망도 노드(뉴런)가중치(연결의 강도)로 데이터를 주고받으며 학습이 가능한 아이이다.
“사람의 뇌를 흉내 낸 수학적 모델”이라고 생각하면 딱이다.

자, 그러면 그 인공 신경망은 어떻게 생겼을까? 인공 신경망은 여러 층(layer)이 겹겹이 쌓인 구조이다.
맨 앞에서 데이터를 받아들이는 입력층, 가운데서 의미를 뽑아내는 은닉층, 그리고 결과를 내보내는 출력층으로 이어진다.
특히 은닉층이 여러 겹으로 깊게 쌓이면? 심층 신경망(Deep Neural Network)
줄여서 우리가 흔히 말하는 딥러닝이다.

수학적으로는 한 층의 동작을 아주 간단히 이렇게 ...(수식 미안🙏)

출력 = 활성화함수(가중치 × 입력 + 편향)
y=σ(Wx+b)y = \sigma(Wx + b)
- 수식 수정 예정 ;;

여기서 WW는 연결의 중요도(가중치), bb는 기준점(편향), σ\sigma는 활성화 함수라고 한다. 추후에 자세하게 포스팅 하겠지만 활성화 함수가 들어가야 신경망이 비선형 문제—현실의 복잡한 패턴—를 다룰 수 있어서 꼭 필요하다. (ReLU, sigmoid, tanh 같은 친구들이 여기에 속해요.)

자, 쉽게 생각하면 이렇다.

  1. 입력층 : 데이터가 들어옵니다. (이미지 픽셀 값)
  2. 은닉층: 특징을 조합하며 패턴을 학습합니다. (여러 겹일수록 “딥/deeeeep”)
  3. 출력층: 최종 결과를 냅니다. (고양이/강아지 확률)


아주 쉽쥬?


 

신경망은 어떻게 “배우는가”

학습의 흐름은 크게 두 동작이 번갈아 일어난다. 이름만 들으면 어렵지만 실제로는 사람이 공부하는 과정과 꽤 닮아 있다. 그래서 학습이다.

순전파(Feedforward) 는 입력 데이터가 층을 따라 앞으로 흘러가며 계산된다. 각 연결을 지날 때마다 가중치가 곱해지고, 편향이 더해지고, 활성화 함수를 거쳐 예측값이 나오는데, 이때 “정답”과 비교하면 오차가 생긴다.

그럴 때 딱 역전파(Backpropagation) 가 동작하면 된다.
오차를 줄이기 위해, 그 오차가 어느 연결에서 얼마나 발생했는지를 미분(그래디언트)으로 추적을 한다. 그리고 경사 하강법 같은 최적화 알고리즘을 써서 가중치 WW와 편향 bb를 조금씩 조정해서 틀린 이유를 거슬러 올라가 고치기는 것을 반복한다. (완전 복습..)

이 두 과정을 데이터 묶음마다 계속 반복하면, 모델은 점점 더 똑똑해진다.
맞히고(순전파) → 틀린 이유 찾고(역전파) → 고친다(가중치 업데이트)

 

어? 그러면 학습과 테스트는 뭐가 다를까? 아래에 아주 쉽게 설명해쓰!
아, 참고로 학습에 쓰지 않은 데이터로 테스트해야, “외운 게 아니라 진짜 배웠는지” 평가할 수 있다는 점,
잊지말라구 ~

그리고 테스트 단계에서 가중치를 바꾸면 컨닝입니다. (감히 말하건대, 선 넘지맛 🚫)

  • 학습(Training): 예측 → 오차 계산(손실 함수) → 가중치 업데이트 O
  • 테스트(Testing): 새로운 데이터로 예측만 수행 → 가중치 업데이트 X

 


 

이 위 내용들을 간단하게 정리를 하면

  • 입력층 → 은닉층(여러 겹 가능) → 출력층
  • 각 연결에는 가중치, 각 노드에는 편향이 있고, 노드 출력은 활성화 함수를 거치고
  • 순전파로 예측하고, 손실 함수로 오차를 재고, 역전파+경사 하강법으로 가중치를 갱신!
  • 테스트에서는 업데이트를 절대 하지 않습니다.

신경망을 학생에 비유해보면, 문제를 풀어(순전파) 채점 결과를 보고(손실) 어디서 틀렸는지 확인해(역전파) 공부량을 조절한다.(가중치 업데이트) 시험장(테스트)에서는 그대로 실력 발휘만!

(아래는  그냥 넘어가도 된다... )

아, 참고로 사실 오차(error)와 손실(loss)은 다르다.

오차(error) ➡️ 예측값 – 실제값
손실(loss) ➡️ 이 오차를 특정 규칙(MSE, CrossEntropy 등)으로 수치화한 값

그래서 학습 과정(순전파 ➡️ 손실함수 ➡️ 역전파 ➡️ 경사하강법) 이렇다고 해서 '손실함수로 오차를 계산한다'라고 생각하는 사람도 있을 것 같은데 '차이를 손실함수로 수치화한다.'로 보시면 더 좋을 것 같다.

그리고 음, 위에서 손실은 계산하지만 가중치 업데이트는 없다는 듯이 이야기를 했는데 맞긴하지만,
테스트에서 꼭 손실을 계산하지는 않는다. 꼭은 아니다.
보통 평가지표(Accuracy, F1-score 등)를 사용하기도 한다. 그래서 혹시나 뭐? 아닌데? 하실까봐 추가로 남깁니다!
"손실을 볼 수도 있고, 대신 성능 지표를 쓰기도 한다" 이렇게 보시면 될 것 같다.

 


 

“뇌를 닮은 수학”을 다루는 법

인공 신경망은 철저히 수학적 계산으로 구현된 “뇌의 은유”이다. 너무 인간 뇌와 동일시할 필요는 없지만, 이 비유 덕분에 복잡한 시스템을 직관적으로 이해하기 쉽다.
이제 우리가 해야 할 일은 입력 → 계산 → 오차 → 수정이라는 루프를 믿고, 차근차근 쌓아 올리는 것.
그러면 어느새 “어려운 문제도 자연스럽게 풀어내는 모델”이 탄생... 어쩌면 GPT 같은 거대 모델도 이 단순한 원리의 연장선일지 모르겠다.(사라지지마 내 직업...🙏)

 


 

자, 어떠셨나요. 앞으로 제가 올릴 포스팅이 점점 어려워 질텐데
최대한 쉽고 비 전문가가 읽어보기 쉽게 작성해보려고 합니다.
다음 주는 뭘 또 써볼까~~

 

ps. 말투를 어떻게 해야할 지 고민이네요.. 혹시 추천 말투 있으면 조언 부탁드려요!