// x,y var n1 = Math.max(0, a1*x + b1*y + c1); // 1- var n2 = Math.max(0, a2*x + b2*y + c2); // 2- var n3 = Math.max(0, a3*x + b3*y + c3); // 3- var score = a4*n1 + b4*n2 + c4*n3 + d4; //
// var a1 = Math.random() - 0.5; // -0,5 0,5 // ... for(var iter = 0; iter < 400; iter++) { // var i = Math.floor(Math.random() * data.length); var x = data[i][0]; var y = data[i][1]; var label = labels[i]; // var n1 = Math.max(0, a1*x + b1*y + c1); // 1- var n2 = Math.max(0, a2*x + b2*y + c2); // 2- var n3 = Math.max(0, a3*x + b3*y + c3); // 3- var score = a4*n1 + b4*n2 + c4*n3 + d4; // // var pull = 0.0; if(label === 1 && score < 1) pull = 1; // ! . if(label === -1 && score > -1) pull = -1; // ! . // // «» var dscore = pull; var da4 = n1 * dscore; var dn1 = a4 * dscore; var db4 = n2 * dscore; var dn2 = b4 * dscore; var dc4 = n3 * dscore; var dn3 = c4 * dscore; var dd4 = 1.0 * dscore; // // ReLU, // .. , «» var dn3 = n3 === 0 ? 0 : dn3; var dn2 = n2 === 0 ? 0 : dn2; var dn1 = n1 === 0 ? 0 : dn1; // 1 var da1 = x * dn1; var db1 = y * dn1; var dc1 = 1.0 * dn1; // 2 var da2 = x * dn2; var db2 = y * dn2; var dc2 = 1.0 * dn2; // 3 var da3 = x * dn3; var db3 = y * dn3; var dc3 = 1.0 * dn3; // ! ! // , x,y // . // , x,y // , // (.. ) , da1 += -a1; da2 += -a2; da3 += -a3; db1 += -b1; db2 += -b2; db3 += -b3; da4 += -a4; db4 += -b4; dc4 += -c4; // , var step_size = 0.01; a1 += step_size * da1; b1 += step_size * db1; c1 += step_size * dc1; a2 += step_size * da2; b2 += step_size * db2; c2 += step_size * dc2; a3 += step_size * da3; b3 += step_size * db3; c3 += step_size * dc3; a4 += step_size * da4; b4 += step_size * db4; c4 += step_size * dc4; d4 += step_size * dd4; // , . // ! }
Source: https://habr.com/ru/post/246973/
All Articles