Algoritme untuk melatih jaringan saraf menggunakan jenis angka baru

Salam pembaca. Ketika saya masih kecil dan belajar di sekolah, mata pelajaran favorit saya adalah matematika, mata pelajaran favorit saya adalah karena fakta bahwa saya sangat suka memecahkan masalah, di beberapa titik dalam hidup saya saya mulai membuat masalah yang jelas tidak terpecahkan untuk diri saya sendiri dan mencobanya untuk memecahkannya, dengan benar-benar memaksakan pikiran Anda dalam memikirkan pendekatan untuk memecahkan masalah yang tidak dapat dipecahkan, kadang-kadang ternyata masalah yang tidak dapat dipecahkan hanya tampak seperti itu karena kelalaian beberapa momen yang tidak terlihat. Kecintaan saya untuk memecahkan masalah sangat memengaruhi saya, itulah sebabnya saya terus-menerus menyelesaikan masalah apa pun di kepala saya, tidak hanya masalah matematika, tetapi juga dari bidang lain. Selama hidup saya, saya telah mengumpulkan banyak ide (solusi), dari printer 3D baja hingga metode untuk memecahkan masalah pembuangan limbah radioaktif dari pembangkit listrik tenaga nuklir.Tentunya banyak ide yang sebenarnya tidak dapat disadari, karena satu dan lain hal, dan beberapa mungkin ditemukan sebelum saya, dan saya hanya tidak mengetahuinya (ini sudah terjadi). Di terakhir sayaDalam artikel tersebut, saya menyebutkan (saya sendiri tidak tahu mengapa) bahwa saya datang dengan jenis angka baru yang dapat digunakan untuk melatih jaringan saraf. Saya ingin membuka layanan untuk melatih jaringan saraf menggunakan nomor-nomor ini, tetapi mengingat pandemi dan kesehatan saya yang buruk, saya berpikir bahwa tiba-tiba saya benar-benar orang pertama yang memikirkan angka-angka ini dan akan sangat buruk jika saya mati dan pengetahuan tentang angka-angka ini hilang saya. Oleh karena itu, saya memutuskan untuk menulis artikel ini, di mana saya akan berbicara secara rinci tentang angka-angka ini dan cara menggunakannya untuk melatih jaringan saraf. Saya harus segera mengatakan bahwa saya tidak mengerjakan semua rumus yang diperlukan untuk bekerja dengan angka-angka seperti itu, karena saya sibuk dengan bahasa pemrograman saya sendiri, ini hanya sebuah ide, bukan implementasi yang sudah jadi.





Untuk memahami sepenuhnya apa yang akan dibahas dalam artikel ini, Anda perlu memiliki pengetahuan tentang struktur jaringan neural feedforward sederhana.





Misalkan Anda perlu melatih jaringan neural feedforward yang memiliki beberapa jenis set pelatihan, di mana terdapat contoh tentang apa yang diumpankan ke masukan dari jaringan saraf dan apa yang diharapkan diterima pada keluaran. Untuk kasus seperti itu, Anda dapat menulis fungsi, sebut saja kebugaran (seperti dalam algoritme genetika), jaringan neural dan sampel pelatihan diberikan sebagai masukan untuk fungsi tersebut, dan fungsi tersebut mengembalikan angka dari 0 hingga 1, angka tersebut sesuai dengan seberapa banyak jaringan saraf yang diberikan dilatih oleh sampel ini, dimana 0 tidak dilatih sebanyak mungkin, 1 idealnya dilatih. Dengan menggunakan fungsi fitness tersebut, jaringan saraf tiruan dapat direpresentasikan sebagai fungsi matematis di mana argumennya adalah bobot jaringan saraf, dan hasilnya adalah hasil dari fungsi kebugaran yang diterapkan pada jaringan saraf dengan bobot dan sampel pelatihan yang diberikan. Saya mulai berpikir "bagaimana menemukan maksimum dari fungsi seperti itu?"Di kepala saya, saya menyajikan grafik 3 dimensi dari suatu fungsi dengan 2 argumen dan berpikir bahwa jika kita menambahkan kondisi bahwa setiap bobot akan dibatasi pada beberapa kisaran nilai yang mungkin, maka grafik ini dapat dibagi menjadi dua bagian, dalam satu bagian grafik argumen pertama memiliki nilai yang sama dari rentangnya yang mungkin, dan bagian kedua dari grafik memiliki semua nilai yang tersisa dari argumen, kemudian menganalisis di bagian mana yang maksimum lebih besar, ambil bagian ini dan membaginya dengan cara yang sama, tetapi sudah mengandalkan argumen lain, setelah itu bagian yang diperoleh sebagai hasil dari pembagian kedua diperlukan lagi dibagi menjadi dua berdasarkan argumen pertama. Pembagian menjadi bagian-bagian harus dilakukan sampai nilai-nilai hasil fungsi di daerah yang diperoleh dari pembagian tersebut memiliki fluktuasi yang terlalu besar.Setiap argumen dari bagian grafik yang dihasilkan adalah bobot yang sesuai. Untuk pemahaman yang lebih baik, saya akan menjelaskan hal di atas dengan sebuah contoh.





Grafik fungsi y = sin x
y = sin x





y(x) = sin x, x [-4, 4], , , . 2 , x [-4, 0], x [0, 4], , [0, 2] [2, 4]. - , 1, [pi * 999999 / 2000000, pi / 2], x . . - , , , . [0, 1], , . "". , , , , . : sin([-pi, pi]) = [-1, 1]. , , , , . : [-3, 6] - [-12, 7] = [-10, 18]. , [3, 3]. ? , , , , . feedforward :





  • - ,





  • fintess





  • 2 , , . , fitness . fitness ,









  • ,









. , . , , - fitness , , , , - . , , , , .





, , , . , . : [1, 2] [4, 5], , [5, 7], 5 1 4, 6 , 6 , 5. , . , , 0, . , [a, b] x , n , x , . f ( 0 1) , x. f f1, f1(x) = f(x) * n. n , f1 , , x . f1 0, , , , , . , f1. , f1 , , youtube (, ), , , - . ( x) , [0, 1], , , .





fitness , . , , , . , , , , , . , , ? ? , , , , . :





  • - , y(x) = 1





  • fintess





  • 2 , , . , fitness . fitness ,









  • ,









  • ,





  • 2 , , . , fitness . fitness ,





  • ,









  • 4





  • 5- , 5





, (: 3 ([0, 1], [20, 40], [100, 101]) ), , , 1 2- . , . [1, 2, y(x) = 1], [4, 5, y(x) = 1], [5, 7, y(x) = 1 - |0.5 - x| * 2]. y(x) = 1 - |0.5 - x| * 2? , , , . y(x) = x, , 2 . , , 2- , , . , , , .. [a1, b1, y1(x) = f1(x)] + [a2, b2, y2(x) = f2(x)] = [a3, b3, y3(x) = f3(x)], f3 a1, b1, a2, b2, f1 f2, , . , , .





P. S. , . , . , , . , 80%. , , ( , , ). ( ), - ( ), , . , () , - , , . , , . 200 , . , ( ""). .








All Articles