Dalam bab ini, kami akan memperkenalkan jaringan saraf dan mencari tahu untuk apa jaringan itu dirancang. Bab ini berfungsi sebagai fondasi untuk bab-bab berikutnya, sedangkan bab ini menunjukkan konsep dasar jaringan saraf. Dalam bab ini, kami akan membahas topik-topik berikut:
Neuron buatan
Bobot dan bias
Fungsi aktivasi
Lapisan neuron
Menerapkan jaringan neural di Java
Mengungkap jaringan saraf
Pertama, istilah "jaringan saraf" dapat membuat gambaran singkat tentang otak di benak Anda, khususnya bagi mereka yang sebelumnya sudah terbiasa dengannya. Ini sebenarnya benar, kita menganggap otak sebagai jaringan saraf yang besar dan alami. Namun, apa yang dapat kami katakan tentang jaringan saraf tiruan ( JST )? Nah, itu dimulai dengan antonim natural dan yang pertama terlintas di benak kita adalah gambaran otak buatan atau robot yang memperhitungkan istilah “ artificial". Dalam hal ini, kita juga berurusan dengan penciptaan suatu struktur yang serupa dan diilhami oleh otak manusia; oleh karena itu disebut kecerdasan buatan. Oleh karena itu, pembaca yang tidak memiliki pengalaman sebelumnya dengan ANN mungkin sekarang berpikir bahwa buku tersebut mengajarkan bagaimana membangun sistem cerdas, termasuk otak buatan yang dapat meniru kesadaran manusia menggunakan program Java, bukan? Tentu saja kami tidak akan membahas pembuatan mesin berpikir artifisial seperti dalam trilogi Matrix; namun, buku ini akan menjelaskan beberapa kemampuan luar biasa dan apa yang dapat dilakukan oleh struktur ini. Kami akan memberikan kode sumber Java kepada pembaca dengan definisi dan pembuatan struktur jaringan saraf dasar, memanfaatkan semua keunggulan bahasa pemrograman Java.
Mengapa jaringan saraf tiruan?
, . (NN) ANN , NN ,
. , ANN? .
1940- Warren McCulloch Walter Pits , . , . McCulloch Pits , . , , , , , . , , , .
, McCulloch Pits , . , ; , , , . , , .
, ANN , , , , , . ANN , , .
, |
, |
|
|
, ANN — , . , , . , .
, . ( ), ( ), ( ), :
, .
—
, — , . , (inputs) (output), , . , , :
, , . , .
—
. , , . , , .
:
(Sygmoid)
(Hyberbolic tangent)
(Hard limiting threshold)
(linear)
,
:
— (weights)
, , , , . , , (weights) (output), . , inputs , (weights) . , , , — .
—
, .
—
, ; , , , . , , . , :
, . 3 :
1. Input layer;
2. Hidden layer;
3. Output layer;
,
,
.
/ . , .
, , . . , . , 2 :
1. :
1.1 (monolayer) ;
1.2 (multilayer) ;
2. :
2.1 (Feedforward networks);
2.2 (Feedback networks);
, . . : , Adaline( ), , (Elman) .
, , , :
– . , . , , , , , .
(feedforward networks)
. – feedforward, ; , , , . – feedforward .
(Feedback networks)
, , , , – feedback-. :
– , , , . , , . feedback – , (Elman) (Hopfield), , .
—
, . , . . , , . :
, , (supervised learning), , , ( ). , « », .
!
Java. Java — - , 1990- Sun Microsystems, Oracle 2010-. , Java , . - , Java, . — - , — , , car(, ) my car(, — ). Java ( ), - (). , — . :
: , , .
: , ((public) ), ((private) (protected)), .
: , ; , - . , , .
: , , .
, , , . , , , , , : , . . / , .
, , . , - , / . . , 6 , :
: Neuron |
|
|
|
private ArrayList listOfWeightIn |
ArrayList |
private ArrayList listOfWeightOut |
ArrayList |
|
|
|
public double initNeuron() |
listOfWeightIn, listOfWeightOut |
: |
|
: |
|
public ArrayList getListOfWeightIn() |
ListOfWeightIn |
: |
|
: , ListOfWeightIn |
|
public void setListOfWeightIn(ArrayList listOfWeightIn) |
ListOfWeightIn |
: , |
|
: |
|
public ArrayList getListOfWeightOut() |
ListOfWeightOut |
: |
|
: , ListOfWeightOut |
|
public void setListOfWeightOut(ArrayList listOfWeightOut) |
ListOfWeightOut |
: , |
|
: |
|
: Neuron.java |
|
: Layer |
|
: . |
|
|
|
private ArrayList listOfNeurons |
ArrayList Neuron |
private int numberOfNeuronsInLayer |
, . |
|
|
public ArrayList getListOfNeurons() |
listOfNeurons |
: |
|
: listOfNeurons |
|
public void setListOfNeurons(ArrayList listOfNeurons) |
listOfNeurons |
: listOfNeurons |
|
: |
|
public int getNumberOfNeuronsInLayer() |
numberOfNeuronsInLayer |
: |
|
: numberOfNeuronsInLayer |
|
public void setNumberOfNeuronsInLayer(int numberOfNeuronsInLayer) |
numberOfNeuronsInLayer |
: numberOfNeuronsInLayer |
|
: |
|
: Layer.java |
|
: InputLayer |
|
: Layer |
|
|
|
|
|
|
|
|
public void initLayer(InputLayer inputLayer) |
|
: InputLayer |
|
: |
|
public void printLayer(InputLayer inputLayer) |
|
: InputLayer |
|
: |
|
: InputLayer.java |
|
: HiddenLayer |
|
: Layer |
|
|
|
|
|
|
|
|
public ArrayList initLayer( HiddenLayer hiddenLayer, ArrayList listOfHiddenLayers, InputLayer inputLayer, OutputLayer outputLayer ) |
() |
: HiddenLayer, HiddenLayer, InputLayer, OutputLayer |
|
: |
|
public void printLayer(ArrayList listOfHiddenLayers) |
() |
: HiddenLayer |
|
: |
|
: HiddenLayer.java |
|
: OutputLayer |
|
: Layer |
|
|
|
|
|
|
|
|
public void initLayer(OutputLayer outputLayer) |
|
: OutputLayer |
|
: |
|
public void printLayer(OutputLayer outputLayer) |
|
: OutputLayer |
|
: |
|
: OutputLayer.java |
|
: NeuralNet |
|
: ( , , ). : . |
|
|
|
private InputLayer inputLayer |
InputLayer |
private HiddenLayer hiddenLayer |
HiddenLayer |
private ArrayList listOfHiddenLayer |
ArrayList HiddenLayer. |
private OutputLayer outputLayer |
OutputLayer |
private int numberOfHiddenLayers |
, |
|
|
public void initNet() |
. |
: |
|
: |
|
public void printNet() |
. . |
: |
|
: |
|
: NeuralNet.java |
|
— (UML). UML , , , , , / . : , .
, NeuralNet, n. n ( ), initNet () printNet () n, , . , :
public class NeuralNetTest {
public static void main(String[] args) {
NeuralNet n = new NeuralNet();
n.initNet();
n.printNet();
}
}
, , , . , , :
Dalam bab ini, kita melihat pengantar tentang jaringan saraf, apa itu, digunakan untuk apa, dan konsep dasarnya. Kami juga melihat implementasi jaringan saraf yang sangat sederhana dalam bahasa pemrograman Java, di mana kami menerapkan konsep teoretis jaringan saraf dalam praktiknya dengan mengkodekan setiap elemen jaringan saraf. Penting untuk memahami konsep dasar sebelum kita melanjutkan ke konsep lanjutan. Hal yang sama berlaku untuk kode Java. Di bab berikutnya, kita akan mendalami proses pelatihan jaringan saraf lebih dalam dan menjelajahi berbagai jenis lereng dengan contoh sederhana.
Dari penerjemah
Buku asli: Pemrograman Jaringan Neural dengan Java