O‘qitish

  • Perseptron obyektini yaratish
  • O‘qitish funksiyasini yaratish
  • Perseptronni to‘g‘ri javoblar asosida o‘qitish
ULASHISH

O‘qitish vazifasi

x y nuqtalari sochilgan fazodagi to‘g‘ri chiziqni tasavvur qiling.

Chiziqdan yuqoridagi va pastdagi nuqtalarni klassifikatsiya qilish uchun perseptronni o‘qiting.


Perseptron obyektini yaratish

Perseptron obyektini yarating. Unga istalgan nom bering (masalan, Perceptron).

Perseptron ikkita parametr qabul qilsin:

  1. Kirishlar soni (no)
  2. O‘rganish tezligi (learningRate).

Standart o‘rganish tezligini 0.00001 qilib belgilang.

So‘ngra har bir kirish uchun -1 va 1 oralig‘ida tasodifiy vaznlar yarating.

Misol

// Perceptron Object function Perceptron(no, learningRate = 0.00001) { // Set Initial Values this.learnc = learningRate; this.bias = 1; // Compute Random Weights this.weights = []; for (let i = 0; i <= no; i++) {   this.weights[i] = Math.random() * 2 - 1; } // End Perceptron Object }

Tasodifiy vaznlar

Perseptron ishni har bir kirish uchun tasodifiy vazn bilan boshlaydi.

O‘rganish tezligi

Perseptronni o‘qitish jarayonida har bir xato uchun vaznlar kichik bir ulushga tuzatiladi.

Ana shu kichik ulush "perseptronning o‘rganish tezligi" deb ataladi.

Perceptron obyektida biz uni learnc deb ataymiz.

Siljish (bias)

Ba’zan ikkala kirish ham nolga teng bo‘lsa, perseptron noto‘g‘ri natija chiqarishi mumkin.

Buning oldini olish uchun perseptronga qiymati 1 ga teng bo‘lgan qo‘shimcha kirish beramiz.

Bu siljish (bias) deb ataladi.



Aktivatsiya funksiyasini qo‘shish

Perseptron algoritmini eslang:

  • Har bir kirishni perseptron vaznlariga ko‘paytiring
  • Natijalarni qo‘shing
  • Yakuniy natijani hisoblang

Misol

this.activate = function(inputs) {   let sum = 0;   for (let i = 0; i < inputs.length; i++) {     sum += inputs[i] * this.weights[i];   }   if (sum > 0) {return 1} else {return 0} }

Aktivatsiya funksiyasi quyidagini chiqaradi:

  • Agar yig‘indi 0 dan katta bo‘lsa, 1
  • Agar yig‘indi 0 dan kichik bo‘lsa, 0

O‘qitish funksiyasini yaratish

O‘qitish funksiyasi aktivatsiya funksiyasi asosida natijani taxmin qiladi.

Har safar taxmin noto‘g‘ri chiqqanda perseptron vaznlarni tuzatishi kerak.

Ko‘plab taxmin va tuzatishlardan so‘ng vaznlar to‘g‘ri bo‘ladi.

Misol

this.train = function(inputs, desired) {   inputs.push(this.bias);   let guess = this.activate(inputs);   let error = desired - guess;   if (error != 0) {     for (let i = 0; i < inputs.length; i++) {       this.weights[i] += this.learnc * error * inputs[i];     }   } }

O‘zingiz sinab ko‘ring »


Xatoni teskari tarqatish (backpropagation)

Har bir taxmindan so‘ng perseptron taxmin qanchalik noto‘g‘ri bo‘lganini hisoblaydi.

Agar taxmin noto‘g‘ri bo‘lsa, perseptron keyingi safar taxmin biroz to‘g‘riroq chiqishi uchun siljish va vaznlarni tuzatadi.

Bunday o‘rganish xatoni teskari tarqatish (backpropagation) deb ataladi.

(Bir necha ming marta) urinishdan so‘ng perseptroningiz ancha yaxshi taxmin qiladigan bo‘ladi.


O‘z kutubxonangizni yarating

Kutubxona kodi

// Perceptron Object function Perceptron(no, learningRate = 0.00001) { // Set Initial Values this.learnc = learningRate; this.bias = 1; // Compute Random Weights this.weights = []; for (let i = 0; i <= no; i++) {   this.weights[i] = Math.random() * 2 - 1; } // Activate Function this.activate = function(inputs) {   let sum = 0;   for (let i = 0; i < inputs.length; i++) {     sum += inputs[i] * this.weights[i];   }   if (sum > 0) {return 1} else {return 0} } // Train Function this.train = function(inputs, desired) {   inputs.push(this.bias);   let guess = this.activate(inputs);   let error = desired - guess;   if (error != 0) {     for (let i = 0; i < inputs.length; i++) {       this.weights[i] += this.learnc * error * inputs[i];     }   } } // End Perceptron Object }

Endi kutubxonani HTML’ga ulashingiz mumkin:

<script src="myperceptron.js"></script>

Kutubxonangizdan foydalaning

Misol

// Initiate Values const numPoints = 500; const learningRate = 0.00001; // Create a Plotter const plotter = new XYPlotter("myCanvas"); plotter.transformXY(); const xMax = plotter.xMax; const yMax = plotter.yMax; const xMin = plotter.xMin; const yMin = plotter.yMin; // Create Random XY Points const xPoints = []; const yPoints = []; for (let i = 0; i < numPoints; i++) {   xPoints[i] = Math.random() * xMax;   yPoints[i] = Math.random() * yMax; } // Line Function function f(x) {   return x * 1.2 + 50; } //Plot the Line plotter.plotLine(xMin, f(xMin), xMax, f(xMax), "black"); // Compute Desired Answers const desired = []; for (let i = 0; i < numPoints; i++) {   desired[i] = 0;   if (yPoints[i] > f(xPoints[i])) {desired[i] = 1} } // Create a Perceptron const ptron = new Perceptron(2, learningRate); // Train the Perceptron for (let j = 0; j <= 10000; j++) {   for (let i = 0; i < numPoints; i++) {     ptron.train([xPoints[i], yPoints[i]], desired[i]);   } } // Display the Result for (let i = 0; i < numPoints; i++) {   const x = xPoints[i];   const y = yPoints[i];   let guess = ptron.activate([x, y, ptron.bias]);   let color = "black";   if (guess == 0) color = "blue";   plotter.plotPoint(x, y, color); }

O‘zingiz sinab ko‘ring »


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!