2章 パーセプトロン

パーセプトロンの実装

ANDゲートの実装

AND <- function(x1, x2) {
  x <- c(x1, x2)
  w <- c(0.5, 0.5)
  b <- -0.7
  tmp <- sum(w * x) + b

  if (tmp <= 0) 0 else 1
}
AND(0, 0)
[1] 0
AND(0, 1)
[1] 0
AND(1, 0)
[1] 0
AND(1, 1)
[1] 1

ゲートを作る補助関数

make_gate <- function(w, b) {
  function(x1, x2) {
    x <- c(x1, x2)
    tmp <- sum(w * x) + b

    if (tmp <= 0) 0 else 1
  }
}

NANDゲートの実装

NAND <- make_gate(w = c(-0.5, -0.5), b = 0.7)
NAND(0, 0)
[1] 1
NAND(0, 1)
[1] 1
NAND(1, 0)
[1] 1
NAND(1, 1)
[1] 0

ORゲートの実装

OR <- make_gate(w = c(0.5, 0.5), b = -0.2)
OR(0, 0)
[1] 0
OR(0, 1)
[1] 1
OR(1, 0)
[1] 1
OR(1, 1)
[1] 1

多層パーセプトロン

XOR ゲートの実装

XOR <- function(x1, x2) {
  s1 <- NAND(x1, x2)
  s2 <- OR(x1, x2)
  AND(s1, s2)
}
XOR(0, 0)
[1] 0
XOR(0, 1)
[1] 1
XOR(1, 0)
[1] 1
XOR(1, 1)
[1] 0