※Mise en garde Cet article est de bas niveau car il y a de nombreux éléments autosuffisants que j'écris pour moi-même qui commencent tout juste à lire ce livre Le contenu peut être incorrect ou le code peut être étrange. De plus, je n'explique pas grand chose sur les termes, donc je pense que cela n'a aucun sens pour les personnes qui ne connaissent pas l'apprentissage automatique. Je mettrai à jour cet article progressivement.
Perceptron: Un type d'algorithme. L'algorithme qui était à la base du réseau neuronal. Une fonction d'étape est utilisée comme fonction d'activation. Avec une seule couche, seule une région linéaire peut être exprimée.
** Exprimez AND, OR et NAND en transmettant le biais et le poids de chaque signal d'entrée au constructeur. ** **
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; //Somme
return tmp > 0 ? 1: 0;
}
public static void main(String[] args) {
PerceptronSample perceptronSample = new PerceptronSample(-0.5, 0.3, 0.3);
//biais,Entrée 1,Entrée 2
//Cette fois et circuit
System.out.println("" +
perceptronSample.perceptron(0, 0) +
perceptronSample.perceptron(1, 0) +
perceptronSample.perceptron(0, 1) +
perceptronSample.perceptron(1, 1)
);
}
}
Le résultat est 0001.
Une couche plus profonde de Perceptron. Il peut résoudre des problèmes qui ne peuvent être résolus par un perceptron monocouche.
XOR est exprimé par NAND, OR et AND.
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; //Somme
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)
);
}
}