티스토리 뷰

Perceptron

 

> 인공신경망은 Neuron의 동작 방식을 본을 따서 만든 것입니다.

> Perceptron은 인공신경망의 종류입니다.

> 초기 perceptron은 AND, OR 문제를 해결하기 위해서 만들어졌습니다.


image

image

> AND, OR 문제는 하나의 linear classifier layer로 분류가 가능합니다.


image

> XOR 문제는 하나의 layer로는 해결하지 못합니다. 최소 두 개의 layer가 필요합니다.


image

> XOR 문제를 해결하기 위해서 여러 개의 layer를 이용한 Multilayer Perceptron이 등장하였습니다.

> 처음 Multilayer Perceptron idea가 등장하였을 때는 학습할 수 있는 방법이 없었습니다.


image

> 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가 낮아지는 것을 확인할 수 있습니다.



참고링크:

[PyTorch] Lab-08-1 Perceptron

[PyTorch] Lab-08-2 Multi Layer Perceptron

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함