๋ฐ์ํ
1. ํผ์ ํธ๋ก (Percepttron)
- ์๋ฌผํ์ ๋ด๋ฐ์ ๋ณธ๋ ๋ง๋ ๊ฐ์ฅ ๊ฐ๋จํ ์ ๊ฒฝ๋ง์ ๊ตฌ์กฐ
- ์ ๋ ฅ์ ํธ์ ์ถ๋ ฅ์ ํธ๊ฐ ํผ์ ํธ๋ก ์์ ๊ฐ๊ฐ ์ ๋ ฅ๊ฐ๊ณผ ์ถ๋ ฅ๊ฐ์ ํด๋น
- ์ ๋ ฅ(x), ์ถ๋ ฅ(y), ๊ฐ์ค์น(w), ์ ํธ(b), ํ์ฑํํจ์(f)
- ์ํ์ ์ผ๋ก ํํํ๋ฉด
- ์ธ๊ณต๋ด๋ฐ์ ๋ณด๋ด์ง๋ ๊ฐ x๋ ๊ฐ๊ฐ์ ๊ฐ์ค์น w์ ํจ๊ป ์ต์ข ์ข ์ฐฉ์ง์ธ ์ธ๊ณต ๋ด๋ฐ์ ์ ๋ฌ
- ํ์ฑํํจ์ f๋ ์ผ๋ฐ์ ์ผ๋ก ๋น์ ํํจ์
- wx+b ๋ ์ ํํจ์ (์ํ๋ณํ์ด๋ผ๊ณ ๋ถ๋ฆ)
- ์ฆ, ํผ์ ํธ๋ก ์ ์ ํํจ์์ ๋น์ ํํจ์์ ์กฐํฉ
- ์ ํธ(b)๋ ๊ทธ๋ฆผ์ด๋ ์์์์ ๋ง์ด ์๋ต๋๊ธฐ๋ ํ์ง๋ง, ์ค์ ๋ก b๋ํ ๋ฅ๋ฌ๋์ด ์ต์ ์ ๊ฐ์ ์ฐพ์์ผํ ๋ณ์ ์ค ํ๋
โถ ์๋๋ ํ์ดํ ์น๋ก ๊ตฌํํ ๊ฐ๋จํ ํผ์
ํธ๋ก ์ฝ๋
(์ฐธ๊ณ ) https://github.com/rickiepark/nlp-with-pytorch
import torch
import torch.nn as nn
class Perceptron(nn.Module):
""" ํผ์
ํธ๋ก ์ ํ๋์ ์ ํ ์ธต์
๋๋ค """
def __init__(self, input_dim):
"""
๋งค๊ฐ๋ณ์:
input_dim (int): ์
๋ ฅ ํน์ฑ์ ํฌ๊ธฐ
"""
super(Perceptron, self).__init__()
self.fc1 = nn.Linear(input_dim, 1)
def forward(self, x_in):
"""ํผ์
ํธ๋ก ์ ์ ๋ฐฉํฅ ๊ณ์ฐ
๋งค๊ฐ๋ณ์:
x_in (torch.Tensor): ์
๋ ฅ ๋ฐ์ดํฐ ํ
์
x_in.shape๋ (batch, num_features)์
๋๋ค.
๋ฐํ๊ฐ:
๊ฒฐ๊ณผ ํ
์. tensor.shape๋ (batch,)์
๋๋ค.
"""
return torch.sigmoid(self.fc1(x_in))
- ํ์ดํ ์น๋ torch.nn ๋ชจ๋ ์๋ ๊ฐ์ค์น์ ์ ํธ์ ํ์ํ ๋ถ๊ฐ ์์ ๊ณผ ์ํ๋ณํ์ ์ํํด์ฃผ๋ Linear ํด๋์ค ์ ๊ณต
2. ๋จ์ธต ํผ์ ํธ๋ก (Single-Layer Perceptron)
- ํ๊ฐ์ ๊ณ์ธต์ผ๋ก ์ด๋ฃจ์ด์ง ํผ์ ํธ๋ก ์ ๋จ์ธต ํผ์ ํธ๋ก ์ด๋ผ๊ณ ํจ
- ๋ณด๋ด๋ ๊ฐ๊ณผ ์ถ๋ ฅํ๋ ๋จ๊ณ, ๋ฑ ๋ ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง
- input layer / output layer ๋ ๊ฐ์ ์ธต์ผ๋ก ์ด๋ฃจ์ด์ง
- ๊ฐ ๋จ๊ณ๋ฅผ ๋ณดํต layer ๋ผ๊ณ ๋ถ๋ฆ
- ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด ๋จ์ธต ํผ์ ํธ๋ก ์ ์๋์ ๊ฐ์
3. ๋ค์ธต ํผ์ ํธ๋ก (Multi-Layer Perceptron, MLP)
- ์ ๋ ฅ์ธต๊ณผ ์ถ๋ ฅ์ธต ์ฌ์ด์ ์ค๊ฐ์ธต์ด ๋ ์กด์ฌํ๋ ์ ๊ฒฝ๋ง ๊ตฌ์กฐ
- '์๋์ธต (Hidden Layer)' ์กด์ฌ
- ์๋์ธต์ด ๋๊ฐ ์ด์์ธ ์ ๊ฒฝ๋ง = ์ฌ์ธต์ ๊ฒฝ๋ง (Deep Nueural Network, DNN)
๋จธ์ ๋ฌ๋์์๋ ์ค์ค๋ก ๊ฐ์ค์น๋ฅผ ์ฐพ์๋ด๋๋ก ์๋ํ์์ผ์ผํ๋๋ฐ, ์ด ๊ณผ์ ์ 'ํ์ต (Training)' ๋จ๊ณ์์ ์ํํ๋ค. ์ด ๊ณผ์ ์์๋ ์์คํจ์(Loss Function)๊ณผ ์ตํฐ๋ง์ด์ (optimizer)๋ฅผ ์ฌ์ฉํ๋ค. ์ถํ ์ด ๊ฐ๋ ์ ๋ํด์ ๋ค์ ๋ค๋ค๋ณด๋๋ก ํ์.
์ฐธ๊ณ ๋ฌธํ) https://wikidocs.net/24958
๋ฐ์ํ