딥러닝 기초 - Weight, Bias(1)

Yujin Jung·2026년 9월 3일

1. ReLU

ReLU = Rectified Linear Unit

모델이 아니라 활성화 함수이다.

공식:

ReLU(x) = max(0, x)

규칙:

  • x가 음수 → 0
  • x가 0 → 0
  • x가 양수 → 그대로 출력

예:

  • ReLU(-3) = 0
  • ReLU(0) = 0
  • ReLU(2) = 2

NumPy에서는:

np.maximum(0, x)

예:

np.maximum(0, 2)

→ 0과 2 중 큰 값인 2 반환

신경망에서는 보통:

z = np.sum(x * w) + b
output = np.maximum(0, z)

처럼 사용한다.


2. Sigmoid와 ReLU

둘 다 활성화 함수이다.

ReLU

  • 주로 신경망 중간층(은닉층)에 사용
  • 음수는 0, 양수는 그대로

Sigmoid

  • 주로 이진분류 출력층에 사용
  • 값을 0~1 사이로 바꿈

예:

개 / 고양이처럼 둘 중 하나 판단
→ Sigmoid 사용 가능

여러 클래스 중 하나 선택
→ 보통 Softmax 사용


3. 활성화 함수란?

특정 함수 하나의 이름이 아니라, 신경망에서 같은 역할을 하는 함수들을 묶어서 부르는 말이다.

뉴런은 먼저:

z = wx + b

를 계산하고,

그 결과를 활성화 함수에 넣는다.

a = f(z)

흐름:

입력 x
→ 가중치 w 곱하기
→ bias b 더하기
→ z 계산
→ 활성화 함수
→ 출력

활성화 함수가 중요한 이유는 신경망에 비선형성을 넣기 위해서이다.

활성화 함수가 없으면 층을 많이 쌓아도 결국 단순한 선형 계산과 비슷해진다.


4. ReLU에서 0이 되면 데이터가 탈락하는가?

아니다.

데이터 전체가 없어지는 것이 아니라, 해당 뉴런의 출력값만 0이 된다.

예:

뉴런 A → 3.2 → ReLU → 3.2
뉴런 B → -1.5 → ReLU → 0
뉴런 C → 0.8 → ReLU → 0.8

즉 그 순간 특정 뉴런의 신호만 꺼지는 것에 가깝다.

계속 음수만 나와 항상 0이 되는 뉴런이 생기는 현상은 Dying ReLU라고 한다.


5. Tensor

Tensor는 원래 수학적인 개념이다.

쉽게 말하면 다차원 숫자 배열이다.

딥러닝 라이브러리들이 이 개념을 실제 자료형으로 구현해 놓았다.

파이썬 기본 자료형에는 Tensor가 없다.

예:

Python

[1, 2, 3]

→ list

NumPy

np.array([1, 2, 3])

→ ndarray

PyTorch

torch.tensor([1, 2, 3])

→ torch.Tensor


6. ndarray와 Tensor 차이

둘 다 다차원 배열을 표현할 수 있다.

ndarray

  • NumPy에서 제공
  • 일반적인 수치 계산에 많이 사용

Tensor

  • PyTorch, TensorFlow 등에서 제공
  • 딥러닝 계산에 많이 사용
  • GPU 계산 가능
  • 자동 미분(gradient 계산) 기능 지원

입문 수준에서는:

ndarray = 일반 계산용 다차원 배열
Tensor = 딥러닝 기능이 붙은 다차원 배열

이라고 생각하면 된다.


7. PyTorch Tensor와 TensorFlow Tensor

서로 다른 자료형이다.

PyTorch:

torch.Tensor

TensorFlow:

tf.Tensor

바로 완전히 섞어 사용하는 것은 어렵다.

보통:

PyTorch Tensor
→ NumPy ndarray
→ TensorFlow Tensor

처럼 변환해서 사용한다.


8. torch.zeros(3)의 0.

torch.zeros(3)

출력:

tensor([0., 0., 0.])

여기서:

0 = 정수
0. = 실수
0.0 = 실수

0.0.0과 같은 의미이다.

torch.zeros()의 기본 자료형이 보통 float32이기 때문에 이렇게 표시된다.


9. Gradient

Gradient = 기울기, 미분값

신경망에서는:

"가중치를 어느 방향으로 얼마나 바꾸면 loss가 줄어드는가?"

를 알려주는 값이다.

예:

loss = w²

이면

gradient = 2w

현재 w = 3이면:

gradient = 6

이 gradient를 보고 optimizer가 weight를 수정한다.

기본 형태:

새 weight
= 기존 weight - learning rate × gradient

흐름:

Tensor
→ 모델 계산
→ Loss 계산
→ backward()
→ Gradient 계산
→ Optimizer
→ Weight 수정


10. Optimizer

Optimizer는 gradient를 이용해서 실제로 weight를 수정하는 알고리즘이다.

정리:

Gradient
→ 어디로 움직여야 하는지 알려줌

Optimizer
→ 그 정보를 이용해 실제 weight를 수정함

대표적으로 SGD, Adam 등이 있다.


11. Tensor 차원

0차원 → Scalar(스칼라)

3

1차원 → Vector(벡터)

[1, 2, 3]

2차원 → Matrix(행렬)

[[1, 2],
 [3, 4]]

3차원 이상 → Tensor라고 흔히 부름

하지만 엄밀하게는:

스칼라 = 0차원 Tensor
벡터 = 1차원 Tensor
행렬 = 2차원 Tensor

즉 전부 Tensor이다.


12. Tensor Shape

shape은 각 차원의 크기를 나타낸다.

(3,)

[1, 2, 3]

→ 1차원
→ 원소 3개

읽는 법:

"길이가 3인 1차원 텐서"

(3,)에서 쉼표는 파이썬에서 원소 하나짜리 tuple을 표현하기 위한 것이다.


(2, 3)

[
 [1, 2, 3],
 [4, 5, 6]
]

→ 2차원
→ 2행 3열


(2, 3, 4)

3차원 텐서이다.

의미:

큰 덩어리 2개
→ 각 덩어리에 3개
→ 각 줄에 숫자 4개

즉:

2 × 3 × 4 = 총 24개 원소

핵심:

shape 안의 숫자 개수 = 차원 수

(3,) → 1차원
(2, 3) → 2차원
(2, 3, 4) → 3차원

각 숫자 = 해당 차원의 크기


13. Shape에 빈칸 사용 가능?

이런 식은 불가능:

(2, , 4)

각 차원의 크기가 정해져 있어야 한다.

하지만 reshape에서는 -1을 사용할 수 있다.

x.reshape(2, -1, 4)

-1 의미:

"이 차원의 크기는 전체 원소 수에 맞춰 자동으로 계산해줘"

예를 들어 원소가 24개이면:

2 × ? × 4 = 24

따라서:

? = 3

결과 shape:

(2, 3, 4)

14. Feature Space

Feature Space = 특징 공간

데이터를 여러 특징값으로 표현했을 때 만들어지는 공간이다.

예:

사람을

  • 몸무게

두 특징으로 표현하면:

사람 A = (170, 60)
사람 B = (180, 80)

이 데이터들은 2차원 공간의 점으로 표현된다.

이 키 × 몸무게 공간 전체가 feature space이다.

특징이 3개면 3차원 feature space
특징이 100개면 100차원 feature space

한 줄 정리:

Feature Space = 데이터를 특징값으로 좌표화해서 펼쳐놓은 공간

profile
이것저것 다 해보는 컴퓨터학부 학부생

0개의 댓글