एक सरल परसेप्ट्रोन को कर्नेल कैसे करें?


10

Nonlinear सीमाओं के साथ वर्गीकरण समस्याओं को एक सरल अवधारणात्मक द्वारा हल नहीं किया जा सकता है । निम्नलिखित आर कोड निदर्शी उद्देश्यों के लिए है और पायथन में इस उदाहरण पर आधारित है ):

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

अब कर्नेल और तथाकथित कर्नेल ट्रिक का विचार इनपुट स्पेस को एक उच्च आयामी स्थान में प्रोजेक्ट करना है, जैसे कि ( पिक्स के स्रोत ):

यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें

मेरा प्रश्न
मैं कर्नेल ट्रिक का उपयोग कैसे करूं (जैसे एक साधारण द्विघात कर्नेल के साथ) ताकि मुझे एक कर्नेल परसेप्ट्रॉन मिले , जो दी गई वर्गीकरण समस्या को हल करने में सक्षम है? कृपया ध्यान दें: यह मुख्य रूप से एक वैचारिक प्रश्न है लेकिन यदि आप आवश्यक कोड संशोधन भी दे सकते हैं तो यह बहुत अच्छा होगा

मैंने
जो अभी तक कोशिश की, मैंने निम्नलिखित कोशिश की जो ठीक काम करता है लेकिन मुझे लगता है कि यह वास्तविक सौदा नहीं है क्योंकि यह अधिक जटिल समस्याओं के लिए कम्प्यूटेशनल रूप से बहुत महंगा हो जाता है ("कर्नेल ट्रिक" के पीछे "चाल" सिर्फ एक विचार नहीं है कर्नेल स्वयं लेकिन आपको सभी उदाहरणों के लिए प्रक्षेपण की गणना करने की आवश्यकता नहीं है):

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)

पूर्ण प्रकटीकरण
मैंने एसओ पर एक सप्ताह पहले यह प्रश्न पोस्ट किया था लेकिन इस पर बहुत ध्यान नहीं गया। मुझे संदेह है कि यहां एक बेहतर जगह है क्योंकि यह एक प्रोग्रामिंग प्रश्न की तुलना में अधिक वैचारिक प्रश्न है।

जवाबों:


2

हम मानक परसेप्ट्रॉन लेकर और आंतरिक उत्पाद को समतुल्य ("कर्नेल-ट्रिक" के कारण) K (X) के द्वारा "कर्नेल परसेप्ट्रॉन" का निर्माण कर सकते हैं। ,एक्स)। यह तब से काम करता है जब हमारे पास यह है कि आंतरिक उत्पाद एक मानचित्र है , जिसमें समान गुण हैं कर्नेल फ़ंक्शन । सामान्य गॉसियन रेडियल आधार फ़ंक्शन कर्नेल (RBF) के मामले में : XX=X,X<,>:Rp×RpRk:Rp×RpR

K(xi,xj)=exp(||xixj||22σ2)

जैसा कि कर्नेल परसेप्ट्रॉन पर विकिपीडिया पृष्ठ में बताया गया है , हम इनपुट्स के आकार के सबसेट का चयन करते हैं और हमारे उत्पादन का उत्पादन करने के लिए उनमें से एक रैखिक संयोजन का उपयोग करते हैं, M

f(x)=iMαiyiK(x,xi)

यदि आपने सपोर्ट वेक्टर मशीन ( SVM ) देखी है , तो आप समान ड्यूल को नोटिस करेंगे। उपयोग करने के लिए आकार के सबसेट का चयन करने के लिए, हम over अनुकूलित करते हैं, जो यह दर्शाता है कि क्या नमूना हमारे समाधान का समर्थन / आधार वेक्टर है। के अनुकूलन में हम मूल अनुकूलन का भार शामिल करते हैं ।Mαiiαiωi

प्रक्षेपण की गणना न करने के बारे में आपके प्रश्न के अनुसार, आप सही हैं, आपका इनपुट डेटा मैट्रिक्स अभी भी 2-आयामी है। आउटपुट की गणना में हमने कर्नेल फ़ंक्शन के साथ एक डॉट उत्पाद को प्रतिस्थापित किया, और यह वह जगह है जहां सुविधा स्थान में 'निहित' गणना होती है।X



धन्यवाद - क्या आप शायद अपने जवाब को इस अर्थ में अधिक ठोस बना सकते हैं कि आप यह बताएं कि ऊपर से कोड में कौन सी पंक्तियों को किस तरह से संशोधित करना है। यदि आपको पता नहीं है कि आर निश्चित रूप से छद्मकोश में कहा जा सकता है। मैं तब आपके उत्तर को
सहर्ष

आपके द्वारा अपने कोड के आधार पर आपसे जुड़ी पोस्ट, मेरी राय में, परसेप्ट्रॉन और बैक-प्रचार की एक खराब प्रस्तुति है, हालांकि यह निश्चित रूप से कठिन है। क्या आप जानते हैं कि प्रचार और सामान्य अवधारणात्मक सिद्धांत कैसे काम करते हैं?
केलन फ़्लुएंट

खैर, एक बिंदु तक, मुझे उम्मीद है। आप वास्तव में क्या प्राप्त कर रहे हैं? आप द्विघात कर्नेल के साथ कर्नेल ट्रिक का उपयोग करने के लिए ऊपर दिए गए कोड को कैसे संशोधित करेंगे?
vonjd

क्या धारणा धारणा के लैग्रेनेजी दोहरे में $ \ vec {x} ^ \ intercal \ vec {x) $ नहीं है? यह विशेष रूप से है जहाँ आप कर्नेल फ़ंक्शन मूल्यांकन के साथ आंतरिक उत्पाद को बदलते हैं।
केलन फ़्लुएंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.