※Hinweis Dieser Artikel ist auf niedrigem Niveau, weil es viele autarke Elemente gibt, die ich für mich selbst schreibe und die gerade erst anfangen, dieses Buch zu lesen Der Inhalt ist möglicherweise falsch oder der Code ist möglicherweise seltsam. Außerdem erkläre ich die Begriffe nicht so oft, daher denke ich, dass sie für Leute, die sich mit maschinellem Lernen nicht auskennen, bedeutungslos sind. Ich werde diesen Artikel schrittweise aktualisieren.
Perceptron: Eine Art Algorithmus. Der Algorithmus, der die Grundlage des neuronalen Netzwerks bildete. Eine Schrittfunktion wird als Aktivierungsfunktion verwendet. Mit einer einzelnen Schicht kann nur ein linearer Bereich ausgedrückt werden.
** Drücken Sie AND, OR und NAND aus, indem Sie die Vorspannung und das Gewicht jedes Eingangssignals an den Konstruktor übergeben. ** **.
public class PerceptronSample {
private double b, w1, w2;
PerceptronSample(double b, double w1, double w2){
this.b = b;
this.w1 = w1;
this.w2 = w2;
}
int perceptron(int x1, int x2){
double tmp = (x1*w1 + x2*w2) + b; //Summe
return tmp > 0 ? 1: 0;
}
public static void main(String[] args) {
PerceptronSample perceptronSample = new PerceptronSample(-0.5, 0.3, 0.3);
//vorspannen,Eingabe 1,Eingabe 2
//Diesmal UND Schaltung
System.out.println("" +
perceptronSample.perceptron(0, 0) +
perceptronSample.perceptron(1, 0) +
perceptronSample.perceptron(0, 1) +
perceptronSample.perceptron(1, 1)
);
}
}
Das Ergebnis ist 0001.
Eine tiefere Schicht Perceptron. Es kann Probleme lösen, die mit einschichtigem Perzeptron nicht gelöst werden können.
XOR wird durch NAND, OR und AND ausgedrückt.
public class MultilayerPerceptronSample {
private double b, w1, w2;
MultilayerPerceptronSample(double b, double w1, double w2){
this.b = b;
this.w1 = w1;
this.w2 = w2;
}
int perceptron(int x1, int x2, MultilayerPerceptronSample m1, MultilayerPerceptronSample m2){
if (m1 != null && m2 != null){
int x[] = {x1, x2};
x1 = m1.perceptron(x[0], x[1], null, null);
x2 = m2.perceptron(x[0], x[1], null, null);
double tmp = (x1*w1 + x2*w2) + b;
return tmp > 0.0 ? 1 : 0;
}else {
double tmp = (x1*w1 + x2*w2) + b; //Summe
return tmp > 0.0 ? 1 : 0;
}
}
public static void main(String[] args) {
MultilayerPerceptronSample AND = new MultilayerPerceptronSample(-0.5, 0.3, 0.3);
MultilayerPerceptronSample NAND = new MultilayerPerceptronSample(0.5, -0.3, -0.3);
MultilayerPerceptronSample OR = new MultilayerPerceptronSample(-0.3, 0.5, 0.5);
System.out.println(" " +
AND.perceptron(0, 0, NAND, OR)+
AND.perceptron(1, 0, NAND, OR)+
AND.perceptron(0, 1, NAND, OR)+
AND.perceptron(1, 1, NAND, OR)
);
}
}
Recommended Posts