티스토리 뷰
Perceptron
> 인공신경망은 Neuron의 동작 방식을 본을 따서 만든 것입니다.
> Perceptron은 인공신경망의 종류입니다.
> 초기 perceptron은 AND, OR 문제를 해결하기 위해서 만들어졌습니다.
> AND, OR 문제는 하나의 linear classifier layer로 분류가 가능합니다.
> XOR 문제는 하나의 layer로는 해결하지 못합니다. 최소 두 개의 layer가 필요합니다.
> XOR 문제를 해결하기 위해서 여러 개의 layer를 이용한 Multilayer Perceptron이 등장하였습니다.
> 처음 Multilayer Perceptron idea가 등장하였을 때는 학습할 수 있는 방법이 없었습니다.
> Backpropagation을 통해서 Multi layer Perceptron을 학습 할 수 있게 되었습니다.
One Layer
IN[1]
X = torch.FloatTensor([[0, 0], [0, 1], [1, 0], [1, 1]])
Y = torch.FloatTensor([[0],[1],[1],[0]])
linear = torch.nn.Linear(2, 1, bias=True)
sigmoid = torch.nn.Sigmoid()
model = torch.nn.Sequential(linear, sigmoid)
criterion = torch.nn.BCELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=1)
for step in range(10001):
optimizer.zero_grad()
hypothesis = model(X)
cost = criterion(hypothesis, Y)
cost.backward()
optimizer.step()
if step % 100 == 0:
print(step, cost.item())
> 10000번 시행하였을 때, cost가 약 0.6931 나오게 됩니다.
Two Layer
X = torch.FloatTensor([[0, 0], [0, 1], [1, 0], [1, 1]])
Y = torch.FloatTensor([[0],[1],[1],[0]])
linear1 = torch.nn.Linear(2, 2, bias = True)
linear2 = torch.nn.Linear(2, 1, bias = True)
sigmoid = torch.nn.Sigmoid()
model = torch.nn.Sequential(linear1, sigmoid, linear2, sigmoid)
criterion = torch.nn.BCELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=1)
for step in range(10001):
optimizer.zero_grad()
hypothesis = model(X)
cost = criterion(hypothesis, Y)
cost.backward()
optimizer.step()
if step % 100 == 0:
print(step, cost.item())
> 선형 layer를 두 개(linear1, linear2)쌓고 10000번 반복하였을 때, cost가 약 0.000992 나오게 됩니다.
> 위의 코드에서 layer를 더 쌓아 선형 layer을 쌓고 10000번 반복 하였을 때, cost가 0.000111으로 더 낮아졌습니다.
> layer를 더 많이 쌓을수록 cost가 낮아지는 것을 확인할 수 있습니다.
참고링크:
'모모딥 시즌2 정리' 카테고리의 다른 글
[PyTorch] Lab-10 Convolution, VGG, RESNET (0) | 2019.09.02 |
---|---|
[PyTorch] Lab-09 ReLU, Weight initialization, Dropout,Batch Normalization (0) | 2019.06.10 |
[PyTorch] Lab-07 Tips, MNIST Introduction (0) | 2019.06.04 |
[PyTorch] Lab-06 Softmax Classification (0) | 2019.06.04 |
[PyTorch] Lab-05 Logistic Regression (0) | 2019.06.02 |
댓글