๐Ÿ“˜ Backpropagation(์—ญ์ „ํŒŒ)

๊น€๋ฏผ์ค€ยท2025๋…„ 9์›” 16์ผ

1. Backpropagation์ด๋ž€?

์‹ ๊ฒฝ๋ง ํ•™์Šต์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ฐ€์ค‘์น˜์™€ ํŽธํ–ฅ์„ ์–ผ๋งˆ๋‚˜, ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟ€์ง€ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
Backpropagation(์—ญ์ „ํŒŒ)์€ ์ถœ๋ ฅ์—์„œ ๊ณ„์‚ฐ๋œ ์˜ค์ฐจ๋ฅผ ๊ฑฐ๊พธ๋กœ ์ „ํŒŒํ•˜๋ฉด์„œ, ๊ฐ ๊ฐ€์ค‘์น˜๊ฐ€ ์˜ค์ฐจ์— ์–ผ๋งˆ๋‚˜ ๊ธฐ์—ฌํ–ˆ๋Š”์ง€๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๐Ÿ‘‰ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ์‹œํ—˜์„ ๋ณด๊ณ  ํ‹€๋ฆฐ ๋ฌธ์ œ๋ฅผ ์™œ ํ‹€๋ ธ๋Š”์ง€ ์›์ธ์„ ํ•œ ๋‹จ๊ณ„์”ฉ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€๋ฉฐ ์ฐพ๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.


2. ์™œ ํ•„์š”ํ•œ๊ฐ€?

  • ์‹ ๊ฒฝ๋ง์€ ์—ฌ๋Ÿฌ ์ธต(layer)์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ณต์žกํ•œ ํ•จ์ˆ˜๋‹ค.
  • ๋‹จ์ˆœํžˆ "ํ‹€๋ ธ๋‹ค"๋Š” ์‚ฌ์‹ค๋งŒ ์•Œ๊ณ ๋Š” ์–ด๋””๋ฅผ ๊ณ ์ณ์•ผ ํ• ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.
  • Backpropagation์€ **๊ฐ ์ธต์˜ ๊ธฐ์—ฌ๋„(๊ธฐ์šธ๊ธฐ)**๋ฅผ ์•Œ๋ ค์ฃผ๋ฏ€๋กœ, ๊ฐ€์ค‘์น˜๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ๋™์ž‘ ๊ณผ์ •

  1. ์ˆœ์ „ํŒŒ(Forward Propagation)

    • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ์— ๋„ฃ์–ด ์˜ˆ์ธก๊ฐ’์„ ๋งŒ๋“ ๋‹ค.
    • ์˜ˆ: โ€œ๊ณ ์–‘์ด ์‚ฌ์ง„ โ†’ [๊ฐœ:0.1, ๊ณ ์–‘์ด:0.8, ํ† ๋ผ:0.1]โ€
  2. ์†์‹ค ๊ณ„์‚ฐ

    • ์˜ˆ์ธก๊ฐ’๊ณผ ์‹ค์ œ ์ •๋‹ต์„ ๋น„๊ตํ•ด ์˜ค์ฐจ๋ฅผ ๊ตฌํ•œ๋‹ค.
    • ์˜ˆ: ์ •๋‹ต์€ โ€˜๊ณ ์–‘์ด(1)โ€™์ธ๋ฐ, ๋ชจ๋ธ์€ 0.8๋งŒ ๋งž์ท„๋‹ค๋ฉด ์†์‹ค์ด ์กฐ๊ธˆ ์žˆ๋‹ค.
  3. ์—ญ์ „ํŒŒ(Backward Propagation)

    • ์ด ์˜ค์ฐจ๋ฅผ ์ถœ๋ ฅ์ธต๋ถ€ํ„ฐ ์ž…๋ ฅ์ธต๊นŒ์ง€ ๊ฑฐ๊พธ๋กœ ์ „ํŒŒํ•œ๋‹ค.
    • ๊ฐ ์ธต์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์˜ค์ฐจ์— ์–ผ๋งˆ๋‚˜ ์˜ํ–ฅ์„ ์คฌ๋Š”์ง€ ๊ณ„์‚ฐํ•œ๋‹ค.
  4. ๊ฐ€์ค‘์น˜ ์—…๋ฐ์ดํŠธ

    • ๊ณ„์‚ฐ๋œ ๊ธฐ์šธ๊ธฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ, ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ• ๊ฐ™์€ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ฐ€์ค‘์น˜๋ฅผ ์กฐ๊ธˆ์”ฉ ์กฐ์ •ํ•œ๋‹ค.

4. ์ง๊ด€์  ๋น„์œ 

  • ์‹ ๊ฒฝ๋ง์„ โ€œ์—ฌ๋Ÿฌ ๋ช…์ด ํ•จ๊ป˜ ํ‘ธ๋Š” ํŒ€ ํ”„๋กœ์ ํŠธโ€๋ผ๊ณ  ํ•ด๋ณด์ž.
  • ์ตœ์ข… ๊ฒฐ๊ณผ(์†์‹ค)๋Š” ์ ์ˆ˜๋กœ ๋‚˜์˜จ๋‹ค.
  • ์—ญ์ „ํŒŒ๋Š” โ€œ๋ˆ„๊ฐ€ ์ ์ˆ˜ ๊นŽ์ธ ๋ฐ ์–ผ๋งˆ๋‚˜ ์ฑ…์ž„์ด ์žˆ๋Š”์ง€โ€ ๊ฑฐ๊พธ๋กœ ๋”ฐ์ ธ๋ณด๋Š” ๊ณผ์ •์ด๋‹ค.
  • ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ ํŒ€์›์ด(๊ฐ€์ค‘์น˜) ์กฐ๊ธˆ์”ฉ ๊ณต๋ถ€ ๋ฐฉํ–ฅ(์—…๋ฐ์ดํŠธ)์„ ๋ฐ”๊พผ๋‹ค.

5. PyTorch ๊ฐ„๋‹จ ์˜ˆ์‹œ

import torch
import torch.nn as nn

# ๊ฐ„๋‹จํ•œ ์‹ ๊ฒฝ๋ง
model = nn.Sequential(
    nn.Linear(4, 5),
    nn.ReLU(),
    nn.Linear(5, 3)
)

x = torch.randn(2, 4)      # ์ž…๋ ฅ ๋ฐ์ดํ„ฐ
y = torch.tensor([1, 2])   # ์ •๋‹ต ๋ ˆ์ด๋ธ”

criterion = nn.CrossEntropyLoss()
out = model(x)             # ์ˆœ์ „ํŒŒ
loss = criterion(out, y)   # ์†์‹ค ๊ณ„์‚ฐ

loss.backward()            # ์—ญ์ „ํŒŒ ์‹คํ–‰

loss.backward() ํ•œ ์ค„์ด ๋ฐ”๋กœ Backpropagation์ด๋‹ค.
ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ž๋™์œผ๋กœ ๊ฐ ๊ฐ€์ค‘์น˜๊ฐ€ ๋ฐ›์€ ์ฑ…์ž„(๊ธฐ์šธ๊ธฐ)์„ ๊ณ„์‚ฐํ•ด์ค€๋‹ค.


6. ํ•ต์‹ฌ ์š”์•ฝ

  • Backpropagation์€ ์ถœ๋ ฅ ์˜ค์ฐจ๋ฅผ ๊ฑฐ๊พธ๋กœ ์ „๋‹ฌํ•˜๋ฉฐ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ตฌํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
  • ์ด ๊ธฐ์šธ๊ธฐ๋ฅผ ์ด์šฉํ•ด ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋ชจ๋ธ์€ ์ ์  ๋” ์ •ํ™•ํ•ด์ง„๋‹ค.
  • ํ˜„๋Œ€ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ(PyTorch, TensorFlow)๋Š” ์ด๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ๋ฏ€๋กœ, ์›๋ฆฌ๋ฅผ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋””๋ฒ„๊น…๊ณผ ์ดํ•ด์— ํฐ ๋„์›€์ด ๋œ๋‹ค.
profile
์ง€๊ธˆ๊นŒ์ง€ ํ•ด์˜จ ์—ฌ๋Ÿฌ ํ™œ๋™๋“ค์„ ๊ฐ„๋žตํ•˜๊ฒŒ๋ผ๋„ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€