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
}2章 パーセプトロン
パーセプトロンの実装
ANDゲートの実装
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