[AI]/인공지능 이론 및 실습
[인공지능] Backpropagation, 역전파란? Gradient Descent 경사하강법이란? Backpropagation 실습
seom-j
2024. 2. 3. 15:34
📌 Backpropagation (역전파)
신경망의 가중치를 조정하여 원하는 출력을 만들어내기 위해 오차를 최소화하는 방법
인공지능 분야에서 상당히 중요한 부분을 차지하고 있음
📌 Gradient Descent (GD)
가중치를 조정하여 손실 함수를 최소화하기 위한 최적화 알고리즘
기울기가 음수일 경우 양의 방향으로, 양수일 경우 음의 방향으로 가중치를 업데이트함
이때, 손실함수를 w, b에 대해 각각 편미분을 진행하며 업데이트 수행
📌 Neural Network
하나의 노드를 자세히 보면, 가중합 계산과 활성화함수의 적용으로 이루어짐
즉, Neural Network에서의 가중치 업데이트를 위해서는 이 자세한 과정을 거쳐나아가며 손실함수를 미분해야 함
(이러한 연쇄법칙을 활용한 미분은 레이어가 많을 때 계산량을 줄여주는 고마운 역할을 함)
이러한 방법으로 손실함수의 기울기를 계산하여 업데이트 수행
📌 Backpropagation 실습
위와 같은 신경망이 있다고 가정 (계산량을 줄이기 위해 편향 사용 X, 활성화함수 → identity)
이러한 과정을 통해 2번째 Layer의 손실함수에 대한 각 w의 편미분값을 구할 수 있음
⬇️ 위의 신경망을 코드로 구현한 결과
import torch
import torch.nn as nn
layer1 = nn.Linear(2, 2, bias = False)
layer1.weight.data = torch.nn.Parameter(
torch.Tensor([[-2, 3], [-2, 4]])
)
layer2 = nn.Linear(2, 1, bias = False)
layer2.weight.data = torch.nn.Parameter(
torch.Tensor([[-2, 1]])
)
model = nn.Sequential(
layer1,
layer2,
)
x = torch.FloatTensor([[1, 2]])
y = model(x)
print(model)
print(y)
'''
Sequential(
(0): Linear(in_features=2, out_features=2, bias=False)
(1): Linear(in_features=2, out_features=1, bias=False)
)
tensor([[-2.]], grad_fn=<MmBackward0>)
'''