Percepptron


📒 Perceptron


📝 じんこうニューラルネットワーク

  • 人工神経ネットワークはNeuronの動作方式を模倣して構築されたモデルである.
  • 入力信号が
  • に入ると、信号の総和が閾値を超えると、以下のように伝播する.
  • ✏️ Perceptron


    入力xが
  • である場合、重み付け、加算、およびオフセットを乗算して出力を生成する.
  • 出力は、アクティブ化関数(sigmoidなど)によって生成される.
  • 📝 AND, OR

  • PerceptronはAND、ORの問題を簡単に解決できます.
  • 📝 XOR

  • Linearでは解決できません.
  • ABoutput000011101110
    X = torch.FloatTensor([[0, 0], [0, 1], [1, 0], [1, 1]])
    Y = torch.FloatTensor([[0], [1], [1], [0]])
    ## nn Layers
    linear = torch.nn.Linear(2, 1, bias=True)
    sigmoid = torch.nn.Sigmoid()
    model = torch.nn.Sequential(linear, sigmoid)
    # define cost/loss & optimizer
    criterion = torch.nn.BCELoss()
    optimizer = torch.optim.SGD(model.parameters(), lr=1)
    for step in range(10001):
        optimizer.zero_grad()
        hypothesis = model(X)
        # cost/loss function
        cost = criterion(hypothesis, Y)
        cost.backward()
        optimizer.step()
        
        if step % 1000 == 0:
            print(step, cost.item())
  • コスト機能は削減されません.
  • 📒 Multi Layer Perceptron


    📝 XOR

  • XORは1つの構造のPerceptronでは解決できない.
  • 層以上の多層Perceptronを使用する必要がある.
  • 📝 Backpropagation

  • りろんリンク
  • import torch
    
    X = torch.FloatTensor([[0, 0], [0, 1], [1, 0], [1, 1]])
    Y = torch.FloatTensor([[0], [1], [1], [0]])
    ## nn Layers
    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)
    # define cost/loss & optimizer
    criterion = torch.nn.BCELoss()
    optimizer = torch.optim.SGD(model.parameters(), lr=1)
    for step in range(10001):
        optimizer.zero_grad()
        hypothesis = model(X)
        # cost/loss function
        cost = criterion(hypothesis, Y)
        cost.backward()
        optimizer.step()
    
        if step % 1000 == 0:
            print(step, cost.item())
    
  • の損失が徐々に減少していることがわかります.