Memulai dengan jaringan neural

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








All Articles