Mengapa kita selalu ingin melihat rasio emas? Mencoba (tidak berhasil) analisis evolusioner menggunakan jaringan saraf C ++

Baru-baru ini, saya bertanya pada diri sendiri: apakah keinginan kita untuk melihat rasio emas di mana-mana berhubungan dengan beberapa hal yang murni kultural entah bagaimana, atau adakah semacam pola yang lebih dalam yang tersembunyi dalam struktur otak kita? Untuk mengetahuinya, saya memutuskan untuk melakukan beberapa hal:

  1. Merumuskan hipotesis spesifik mengenai pola ini. Saya memutuskan bahwa anggapan itu paling cocok bahwa otak kita menggunakan sistem bilangan berdasarkan dekomposisi bilangan menjadi derajat rasio emas, karena beberapa fitur-fiturnya sangat mirip dengan karya jaringan saraf primitif: faktanya adalah bahwa derajat bagian emas dari tatanan yang lebih tinggi dapat diperluas tanpa henti jumlah cara dalam jumlah derajat tatanan yang lebih rendah dan bahkan taraf negatif. Dengan demikian, derajat yang lebih tinggi "bersemangat" dari beberapa derajat yang lebih rendah, dengan demikian memanifestasikan kesamaan yang sama dengan jaringan saraf.
  2. Jelaskan cara spesifik untuk mengujinya: Saya memilih matras. simulasi evolusi otak melalui perubahan acak dalam jaringan saraf yang paling sederhana - matriks operator linear.
  3. Buat kriteria untuk mengonfirmasi hipotesis. Kriteria saya adalah bahwa sistem angka berdasarkan rasio emas diimplementasikan pada mesin jaringan saraf dengan jumlah informasi yang sama dengan kesalahan lebih sedikit daripada biner.

Karena kita berbicara tentang pemrograman, saya akan menjelaskan secara lebih rinci poin kedua dan ketiga.

Untuk mensimulasikan perubahan acak di otak selama evolusi, saya menggunakan fungsi rand_s (), karena kriptografi stabil dan, karenanya, akan memberikan hasil "lebih acak". Saya juga menggunakan kriteria bahwa jaringan saraf mencapai jumlah kesalahan terkecil ketika mengetahui bahwa ketika matriks menyimpang dalam arah acak oleh nilai-nilai kecil, produknya oleh vektor berubah oleh kira-kira modul yang sama.

Adapun pengkodean data dalam vektor itu sendiri, saya menggunakan vektor 28-dimensi untuk dua angka biner 14-digit dan jumlah mereka (setelah 14 karakter pertama, hanya ada 14 nol untuk diisi) dan vektor 40-dimensi untuk dua angka dalam sistem dengan rasio emas.

File input memiliki format berikut.

Baris pertama adalah dua bilangan bulat yang dipisahkan oleh spasi, dimensi vektor dan jumlah elemen dalam set pelatihan.

Semua baris berikutnya: baris pertama adalah input dari jaringan saraf, yang kedua adalah hasil pemrosesan yang benar.

Berikut adalah potongan kode jaringan saraf yang bertanggung jawab untuk melatihnya pada sampel data input dan hasil yang benar sesuai dengan mereka:

while (((d-mu)*(d-mu)>0.01)||(q<10)) // ,        ""    { s=0; //           for (k=0;k<m;k++) { for (i=0;i<n;i++) { (*(z+k*n+i))=0; } for (i=0;i<n;i++) { for (j=0;j<n;j++) { (*(z+k*n+i))=(*(z+k*n+i))+(*(a+i*n+j))*(*(x+k*n+j)); } } //        for (i=0;i<n;i++) { s=s+((*(z+k*n+i))-(*(y+k*n+i)))*((*(z+k*n+i))-(*(y+k*n+i))); } //         s1=s+1; } while (s<s1) //      ,      ,    { s1=0; //      for (k=0;k<m;k++) { for (i=0;i<n;i++) { (*(z+k*n+i))=0; } }//  ()      rand_s(&p); k1 = (int) (p/((int) (UINT_MAX/n))); rand_s(&p); k2 = (int) (p/((int) (UINT_MAX/n))); //   ""  ,     rand_s(&p); h=((double) p/UINT_MAX)-0.5; //  h1=1; rand_s(&p); l=((int) ((double) p/UINT_MAX)*20); for (i=0;i<l;i++) { h1=h1/10; } h=h*h1; //,        for (k=0;k<m;k++) { for (i=0;i<n;i++) { for (j=0;j<n;j++) { if ((i==k1)&&(j==k2)) (*(z+k*n+i))=(*(z+k*n+i))+(*(a+i*n+j))*(*(x+k*n+j))+h*(*(x+k*n+j)); else (*(z+k*n+i))=(*(z+k*n+i))+(*(a+i*n+j))*(*(x+k*n+j)); } } //       for (i=0;i<n;i++) { s1=s1+((*(z+k*n+i))-(*(y+k*n+i)))*((*(z+k*n+i))-(*(y+k*n+i))); }//           } } (*(a+k1*n+k2))=(*(a+k1*n+k2))+h; //           s1=0; d=0; for (k1=0;k1<n;k1++) { for (k2=0;k2<n;k2++) { for (k=0;k<m;k++) { for (i=0;i<n;i++) { (*(z+k*n+i))=0; } } for (k=0;k<m;k++) { for (i=0;i<n;i++) { for (j=0;j<n;j++) { if ((i==k1)&&(j==k2)) (*(z+k*n+i))=(*(z+k*n+i))+((*(a+i*n+j))+0.1)*(*(x+k*n+j)); else (*(z+k*n+i))=(*(z+k*n+i))+(*(a+i*n+j))*(*(x+k*n+j)); } } } s1=0; for (k=0;k<m;k++) { for (i=0;i<n;i++) { s1=s1+((*(z+k*n+i))-(*(y+k*n+i)))*((*(z+k*n+i))-(*(y+k*n+i))); } } d=d+(s1-s)*(s1-s)/(n*m);//          } } mu=mu*((double) q/(q+1))+((double) d/(q+1));//         q=q+1; printf("%lf \n",mu);//         } 

Saya juga menghasilkan data input secara acak, ini adalah bilangan real dari nol menjadi satu. Selain itu, selain sampel pelatihan, saya juga membuat sampel uji, yang saya uji jaringan saraf saya. Selain itu, untuk setiap hasil yang diperoleh oleh jaringan saraf, saya menghitung akar kuadrat akar kesalahan, yaitu, akar kuadrat rata-rata dari perbedaan antara elemen-elemen vektor yang diperoleh oleh jaringan saraf dan vektor yang berisi hasil yang benar.
Sebagai hasilnya, saya mendapat 1000 kesalahan rata-rata untuk hasil operasi jaringan saraf dengan penambahan dalam sistem angka berbasis biner dan emas. Saya memilih dimensi vektor sehingga mereka menyimpan kira-kira jumlah informasi yang sama baik di dalam sistem angka dan di antara mereka.

Saya membandingkan kesalahan dalam sistem angka yang berbeda dengan uji-t berpasangan dan inilah yang saya dapatkan.

Perbandingan: Rasio Emas - Sistem Biner
Hipotesis: Kesalahan dalam rasio emas rata-rata lebih sedikit.
Hasil:
t = -22.033
df = 999
p <0,001
Cohen d = -0,697 (Dengan rasio emas, kesalahannya kurang)
Interval kepercayaan 99% untuk Cohen d:
dari -inf ke -0.615
Uji normalitas distribusi Shapiro-Wilk:
W = 0,998 p = 0,382 (distribusi kira-kira sesuai dengan normal)
Statistik deskriptif:
Rasio emas:
Berarti aritmatika: 0,365
Standar Deviasi: 0,044
Sistem biner:
Berarti aritmatika: 0,414
Standar Deviasi: 0,055

Saya memutuskan untuk menyimpan semua data yang digunakan dalam studi kerajinan tangan kecil ini untuk saat ini sebagai bukti bahwa saya tidak mengambil angka dari langit-langit. Siapa pun yang bertanya, saya bisa mengirimkannya.

Sekarang sampai pada kesimpulan. Karena jaringan saraf, pelatihan yang didasarkan pada perubahan acak dalam koneksi antara neuron dan pemilihan yang terbaik dari mereka (seperti selama evolusi), dalam hal ini menunjukkan bahwa mereka mengatasi secara signifikan lebih baik dengan rasio emas daripada dengan keduanya sebagai basis sistem angka dengan jumlah yang sama informasi, dapat diasumsikan bahwa evolusi otak hewan, dan, khususnya, manusia, berjalan di jalur yang sama.

UPD Dari saat publikasi, penulis melakukan studi baru di mana ia memperhitungkan koreksi untuk jumlah pengukuran dan pengaruh basis sistem angka secara terpisah dari jarak ke rasio emas menggunakan regresi linier. Hasilnya mengecewakan: kedekatan basis dengan rasio emas lebih meningkatkan kesalahan daripada menguranginya, sehingga sensasi, seperti biasa, jatuh.

Source: https://habr.com/ru/post/id478998/


All Articles