ปัญหาการจัดหมวดหมู่ที่มีขอบเขตไม่เชิงเส้นไม่สามารถแก้ไขได้โดยง่ายตรอน รหัส R ต่อไปนี้มีวัตถุประสงค์เพื่อเป็นตัวอย่างและเป็นไปตามตัวอย่างนี้ใน Python):
nonlin <- function(x, deriv = F) {
if (deriv) x*(1-x)
else 1/(1+exp(-x))
}
X <- matrix(c(-3,1,
-2,1,
-1,1,
0,1,
1,1,
2,1,
3,1), ncol=2, byrow=T)
y <- c(0,0,1,1,1,0,0)
syn0 <- runif(2,-1,1)
for (iter in 1:100000) {
l1 <- nonlin(X %*% syn0)
l1_error <- y - l1
l1_delta <- l1_error * nonlin(l1,T)
syn0 <- syn0 + t(X) %*% l1_delta
}
print("Output After Training:")
## [1] "Output After Training:"
round(l1,3)
## [,1]
## [1,] 0.488
## [2,] 0.468
## [3,] 0.449
## [4,] 0.429
## [5,] 0.410
## [6,] 0.391
## [7,] 0.373
ตอนนี้แนวคิดของเคอร์เนลและเคอร์เนลเคล็ดลับที่เรียกว่าคือการคาดการณ์พื้นที่อินพุตในพื้นที่มิติที่สูงขึ้นเช่น ( แหล่งที่มาของภาพ ):
คำถามของ
ฉันฉันจะใช้ประโยชน์จากเคอร์เนลเคล็ดลับ (เช่นกับ quadratic kernel ง่าย) เพื่อให้ฉันได้รับเคอร์เนล perceptronซึ่งสามารถแก้ปัญหาการจำแนกประเภทที่กำหนดได้อย่างไร โปรดทราบ: นี่เป็นคำถามเชิงแนวคิดเป็นส่วนใหญ่ แต่ถ้าคุณสามารถให้การแก้ไขรหัสที่จำเป็นได้
สิ่งที่ฉันพยายามจนถึงตอนนี้
ฉันได้ลองสิ่งต่อไปนี้ซึ่งใช้งานได้ดี แต่ฉันคิดว่านี่ไม่ใช่เรื่องจริงเพราะมันกลายเป็นราคาแพงเกินไปสำหรับปัญหาที่ซับซ้อนมากขึ้น ("เคล็ดลับ" ที่อยู่เบื้องหลัง "เคล็ดลับเคอร์เนล" ไม่ใช่แค่ความคิด เคอร์เนลเอง แต่คุณไม่จำเป็นต้องคำนวณโปรเจคชันสำหรับอินสแตนซ์ทั้งหมด):
X <- matrix(c(-3,9,1,
-2,4,1,
-1,1,1,
0,0,1,
1,1,1,
2,4,1,
3,9,1), ncol=3, byrow=T)
y <- c(0,0,1,1,1,0,0)
syn0 <- runif(3,-1,1)
การเปิดเผยแบบเต็ม
ฉันโพสต์คำถามนี้เมื่อสัปดาห์ที่แล้วในSOแต่มันก็ไม่ได้รับความสนใจมากนัก ฉันสงสัยว่าที่นี่เป็นสถานที่ที่ดีกว่าเพราะเป็นคำถามเชิงแนวคิดมากกว่าคำถามการเขียนโปรแกรม