jblog
딥러닝이란?
AI

딥러닝이란?

프론트엔드 개발자가 AI 공부를 시작하며 정리한 딥러닝의 핵심 개념. 뉴런, 활성화 함수, 역전파, 경사하강법까지.

2025-07-2011 min readdeep-learning, ai, neural-network

#시작하며,

나는 그동안 프론트엔드 개발을 주로 해왔다. 사실 어떤 개발이든 그 자체로 재밌었지만, 주로 유저들에게 빠른 서비스를 제공하기 위한 개발을 하다보니 자연스럽게 프론트엔드의 역량을 많이 기를 수 있었다. 지금은 AI시대이다. 그렇다고 프론트엔드 개발자가 AI로 대체되지 않을 것이다. 하지만 AI에 대한 이해가 있으면 충분히 경쟁력이 있는 개발자가 될 것이다. 따라서 나도 AI에 대해 좀 공부해보고자 한다.

#딥러닝이 무엇인가?

딥러닝은 인간의 뇌 작동 부분은 모방해서 재현하는 것이다.

Neuron

인간의 뉴런이 학습 메커니즘 중에 가장 뛰어난 학습 도구이다.

입력은 정규화하는 과정이 중요한데, 이것은 Yann LeCun의 Efficient BackProp 관련하여 좋은 내용이 있다. 가중치로 신경망이 학습하기 때문에, 시냅스는 꼭 필요하다. 신경망은 모든 경우에 가중치를 조정하면서 결정을 내린다. 특정 뉴런에 어떤 신호가 중요하고 어떤 신호가 중요하지 않은지, 어떤 신호가 전달되고 어떤 신호가 전달되지 않을지, 어느 강도의 신호가 전달될 지 정하는 것이다.

먼저 가중치를 다 더하고 활성화 함수를 적용한다. 그리고 함수에 따라 뉴런이 신호를 전달하거나 전달하지 않는다.

Activation Function

활성화 함수 유형 4가지:

  1. Threshold Function - 예, 아니요 유형의 함수
  2. Sigmoid Function - 로지스틱 회귀에서 나오는 방법. 매끄럽고 점진적으로 진행. 시그모이드 함수는 마지막 층인 출력층에 아주 유용하며, 특히 확률을 예측할 때 유용함.
  3. Rectifier Function (ReLU) - 가장 많이 사용되는 함수 중 하나
  4. Hyperbolic Tangent (tanh) - 시그모이드 함수와 비슷한데, 0 아래로 내려감

이진수값에는:

  • threshold activation function
  • sigmoid activation function (y가 1일 확률을 알려주는 함수)

실제로는 숨겨진 층에서 rectifier activation function을 사용하고 신호가 시그모이드 활성화 함수가 적용될 출력층으로 전달이 되어서 확률을 예측할 수 있다.

How do Neural Networks work?

은닉층이 없어도 이미 대부분의 머신 러닝 알고리즘에서 사용할 수 있는 상태이다. 하지만 신경망은 많은 유연성과 기능을 얻을 수 있다는 장점이 있다. 바로 은닉층이 그 기능이다.

머신러닝은 모든 입력층의 요소를 이용하는데, 딥러닝은 입력층의 특정 요소를 이용한다고 생각하면 되려나? → 머신러닝은 모든 피처를 동일하게 사용하지만 딥러닝은 입력의 일부분 또는 계층적 정보를 활용한다. → 딥러닝은 피처 자체를 만들어내는 과정이고, 은닉층의 뉴런이 새로운 피처라고 보면 된다.

| 머신러닝 | "특정 방식(RBF, 다항식 등)으로 종이를 접어서 직선을 긋는 것" (종이 접는 법은 정해져 있음) | | 딥러닝 | "종이를 원하는 대로 접고 자르면서, 어디가 중요한지 스스로 정하는 것" (접는 방식도, 자르는 방식도 모두 학습) |

느낌상 머신러닝은 물고기를 주는 것이라면, 딥러닝은 물고기를 잡는 방법을 가르치는 것 같다.

머신러닝 기법이 더 적합한 상황:

  • 데이터가 적을 때
  • 해석 가능성이 중요한 경우
  • 훈련/예측 속도가 중요한 경우
  • Tabular data에서는 여전히 강력

How do Neural Networks learn?

개와 고양이를 구분하는 프로젝트를 진행한다고 생각해보자. 일반적인 코딩으로는 if문을 통해 직접 프로그래밍을 해야 한다. 그러나 딥러닝의 경우에는 신경망만 코딩하면 된다. 아키텍처만 코딩하는 것이다.

cost function은 예측한 값에 오류가 있다는 것을 나타낸다. 흔히 사용하는 공식:

C=12(y^y)2C = \frac{1}{2}(\hat y - y)^2

에포크(epoch)란 전체 데이터 세트를 통해 모든 행을 가지고 신경망을 훈련시키는 것이다. 1 epoch에서 모든 데이터에:

  • 가중치를 곱하고
  • 활성화 함수를 적용하고
  • 손실함수를 구한 후
  • 다시 가중치를 업데이트한다.

목표는 비용 함수의 최소치를 찾는 순간 최종 신경망을 완성한 것이다. 이 과정 전체를 역전파라고 한다.

Gradient Descent

경사하강법이 최적화 문제를 해결하는데 아주 효율적인 방법이다. 하지만 경사하강법의 문제는 비용 함수가 볼록해야지만 사용할 수 있다는 것이다.

Stochastic Gradient Descent

우리는 손실함수가 제곱한 형태라서 이차함수 형태로 나올 것이라 생각했다. 그러나 다차원 공간이라서 볼록하지 않은 모양으로 바뀔 수 있다고 한다. 그래서 이럴 때 평범한 경사 하강법을 적용하려고 하면 잘못된 가중치를 얻을 수 있다. 이를 해결하기 위해 확률적 경사 하강법을 사용한다.

기존의 (배치)경사 하강법은 신경망에서 모든 행을 실행한 다음 가중치를 조정하고 전체 행을 다시 실행한다. 그러나 확률적 경사 하강법은 한 번에 한 행만 실행하고 가중치를 조정하는 것이다. 확률적 경사 하강법은 전반적인 최소치가 아니라 로컬 최소치를 찾게 되는 문제점을 피하는데 도움이 된다.

하나씩 하다보니 확률적 경사 하강법이 느릴 것 같지만 실제로는 더 빠르다. 전체 데이터를 메모리에 로드해서 모든 행이 다 실행 될 때까지 기다릴 필요가 없기 때문이다.

배치 경사 하강법은 결정론적인 알고리즘이지만 확률적 경사하강법은 확률적인 알고리즘이다. 그래서 둘의 장단점을 합친 미니 배치 경사 하강법: 10개, 100개 정도 데이터를 실행하고 조정하는 방법도 있다.

Backpropagation

역전파는 고급 알고리즘이다. 역전파의 가장 큰 장점은:

  • 모든 가중치를 동시에 조정할 수 있다.
  • 정확하게 어떤 오차가 신경망의 어느 가중치에 의해 나타나는지 파악할 수 있다.

신경망 훈련 단계:

  1. 가중치도 시작값은 필요하므로 0과 가까운 무작위 값으로 설정된다.
  2. 첫 번째 행에 대한 데이터 세트의 첫 관측치를 입력층에 입력한다.
  3. 왼쪽에서 오른쪽으로 순전파한다. (가중치가 각 뉴런 활성화의 중요성을 결정)
  4. 예상 결과를 실제 결과와 비교하여 오차를 측정한다.
  5. 오른쪽에서 왼쪽으로 오차가 역전파된다. (오차에 얼마나 책임이 있는 뉴런인지를 확인하며 가중치를 업데이트)
  6. 1단계에서 5단계를 반복한다.
  7. 전체 훈련 세트가 인공 신경망을 통과해서 에포크를 만들고 더 많은 에포크를 만든다. (계속해서 반복하면 신경망이 점점 더 잘 훈련하고 손실 함수를 줄여감)

댓글

댓글을 불러오는 중...