Pembelajaran mesin. Neural Networks (Bagian 1): Proses Pembelajaran Perceptron

Saya ingin mencatat sebelumnya bahwa mereka yang tahu bagaimana perceptron belajar tidak akan menemukan sesuatu yang baru dalam artikel ini. Anda dapat melewatinya dengan aman. Mengapa saya memutuskan untuk menulis ini - Saya ingin menulis serangkaian artikel yang berkaitan dengan jaringan saraf dan penggunaan TensorFlow.js, oleh karena itu saya tidak dapat menghilangkan kutipan teoretis umum. Oleh karena itu, saya meminta Anda untuk menangani gagasan akhir dengan kesabaran dan pengertian yang tinggi.



Dalam pemrograman klasik, pengembang menjelaskan dalam bahasa pemrograman tertentu seperangkat aturan tertentu yang ditentukan secara kaku, yang ditentukan berdasarkan pengetahuannya dalam bidang subjek tertentu dan yang, sebagai perkiraan pertama, menggambarkan proses yang terjadi di otak manusia ketika memecahkan masalah serupa.



Misalnya, strategi untuk bermain tic-tac-toe, catur, dan lainnya dapat diprogram (Gambar 1).





Gambar 1 - Pendekatan klasik untuk menyelesaikan masalah



Sedangkan algoritma pembelajaran mesin dapat mendefinisikan seperangkat aturan untuk menyelesaikan masalah tanpa partisipasi pengembang, tetapi hanya berdasarkan ketersediaan set data pelatihan.

Satu set pelatihan adalah sekumpulan masukan yang terkait dengan serangkaian hasil yang diharapkan (tanggapan, keluaran). Pada setiap langkah pelatihan, model, dengan mengubah keadaan internal, akan mengoptimalkan dan mengurangi kesalahan antara keluaran aktual model dan hasil yang diharapkan (Gambar 2).





Gambar 2 - Pembelajaran mesin



Jaringan saraf



Untuk waktu yang lama, para ilmuwan, yang terinspirasi oleh proses yang terjadi di otak kita, mencoba merekayasa balik sistem saraf pusat dan mencoba meniru kerja otak manusia. Berkat ini, seluruh arah dalam pembelajaran mesin lahir - jaringan saraf.



Pada Gambar 3, Anda dapat melihat persamaan antara desain neuron biologis dan representasi matematis dari neuron yang digunakan dalam pembelajaran mesin.





Gambar 3 - Representasi matematis neuron



Dalam neuron biologis, neuron menerima sinyal listrik dari dendrit, memodulasi sinyal listrik dengan kekuatan berbeda, yang dapat menggairahkan neuron ketika nilai ambang tertentu tercapai, yang pada gilirannya akan mengarah pada transmisi sinyal listrik ke neuron lain melalui sinapsis.



Perceptron



Model matematika jaringan saraf, terdiri dari satu neuron, yang melakukan dua operasi berurutan (Gambar 4):



  • menghitung jumlah sinyal input dengan mempertimbangkan bobotnya (konduktansi atau resistansi) koneksi

    sum= XTW+B=i=1nxiwi+b

  • menerapkan fungsi aktivasi ke jumlah total sinyal input.

    out=φ(sum)







Gambar 4 - Model matematika perceptron



Setiap fungsi yang dapat dibedakan dapat digunakan sebagai fungsi aktivasi, yang paling umum digunakan ditunjukkan pada Tabel 1. Pilihan fungsi aktivasi terletak di pundak insinyur, dan biasanya pilihan ini didasarkan pada pengalaman yang ada dalam memecahkan masalah serupa, baik, atau hanya dengan metode pilihan.

Catatan



Namun, ada rekomendasi bahwa jika nonlinier diperlukan dalam jaringan saraf, maka fungsi ULT paling cocok sebagai fungsi aktivasi, yang memiliki tingkat konvergensi model terbaik selama proses pelatihan.

Tabel 1 - Fungsi aktivasi umum
Linear function

φ(x)=x

.

Sigmoid function

φ(x)=11+ex



Softmax function

φ(xj)=exjiexi

φ([1.20.90.4])=[0.460.340.20]



( 2)

Hyperbolic Tangent function

φ(x)=exexexex





[-1, 1]. , ,

Rectified Linear Unit (ReLU)

φ(x)=max(0,x)





, , sigmoid tanh

Leaky ReLU

φ(x)=max(0.01x,x)





ReLU , 0





Proses pembelajaran Perceptron



Proses pembelajaran terdiri dari beberapa tahap. Untuk lebih jelasnya, kami akan mempertimbangkan masalah fiksi tertentu yang akan kami selesaikan dengan jaringan saraf yang terdiri dari satu neuron dengan fungsi aktivasi linier (ini pada dasarnya adalah perceptron tanpa fungsi aktivasi sama sekali), dan untuk menyederhanakan tugas, kami akan mengecualikan node perpindahan b di neuron (Gambar 5) ...





Gambar 5 - Dataset pelatihan dan keadaan jaringan saraf pada langkah pelatihan sebelumnya



Pada tahap ini, kita memiliki jaringan saraf dalam keadaan tertentu dengan bobot koneksi tertentu yang dihitung pada tahap pelatihan model sebelumnya, atau jika ini adalah iterasi pelatihan pertama, maka nilai bobot koneksi dipilih di pesanan acak.



Jadi, mari kita bayangkan bahwa kita memiliki beberapa set data latih, nilai setiap elemen dari himpunan tersebut diwakili oleh vektor data masukan (data masukan), yang berisi 2 parameter (fitur) x1,x2... Dibawahx1,x2dalam model, tergantung pada domain yang bersangkutan, apa pun dapat tersirat: jumlah kamar di rumah, jarak rumah dari laut, baik, atau kami hanya mencoba untuk melatih jaringan saraf operasi logis AND, atau OR.



Setiap vektor masukan dalam set pelatihan dipetakan ke vektor keluaran yang diharapkan. Dalam hal ini, vektor data keluaran hanya berisi satu parameter, yang, sekali lagi, bergantung pada area subjek yang dipilih, dapat berarti apa saja - harga rumah, hasil dari melakukan operasi logika AND atau OR.



LANGKAH 1 - Proses penerusan umpan

Pada langkah ini, kami menghitung jumlah sinyal input dengan mempertimbangkan bobot setiap ikatan dan menerapkan fungsi aktivasi (dalam kasus kami, tidak ada fungsi aktivasi). Mari kita lakukan kalkulasi untuk elemen pertama dalam set pelatihan:

ypredicted=i=1nxiwi=10.1+0.50.2=0.2







Gambar 6 - Perambatan maju kesalahan



Perhatikan bahwa rumus di atas adalah persamaan matematika yang disederhanakan untuk kasus khusus operasi tensor.



Tensor pada dasarnya adalah wadah data yang dapat memiliki sumbu N dan jumlah elemen yang berubah-ubah di sepanjang masing-masing sumbu. Kebanyakan tensor akrab dengan matematika - vektor (tensor dengan satu sumbu), matriks (tensor dengan dua sumbu - baris, kolom).

Rumusnya dapat dituliskan dalam bentuk berikut, di mana Anda akan melihat matriks familiar (tensor) dan perkaliannya, dan juga memahami jenis penyederhanaan yang dibahas di atas:



Ypredicted= XTW=[x1x2]T[w1w2]=[x1x2][w1w2]=[x1w1+x2w2]





LANGKAH 2 - Hitung

fungsi kesalahan Fungsi kesalahan adalah metrik yang mencerminkan perbedaan antara keluaran yang diharapkan dan yang diterima. Fungsi kesalahan berikut biasanya digunakan:

- Mean Squared Error (MSE) - fungsi kesalahan ini sangat sensitif terhadap pencilan dalam set pelatihan, karena ini menggunakan kuadrat selisih antara nilai aktual dan yang diharapkan (pencilan adalah nilai yang jauh dari nilai lain di kumpulan data, yang terkadang muncul karena kesalahan data, seperti mencampurkan data dengan unit ukuran yang berbeda atau pembacaan sensor yang buruk):

L=1Ni=1N(ypredicted(i)yexpected(i))2



- root mean square deviation (Root MSE) - sebenarnya, ini sama dengan root mean square error dalam konteks jaringan saraf, tetapi dapat mencerminkan unit pengukuran fisik yang sebenarnya, misalnya, jika dalam jaringan saraf parameter keluaran jaringan saraf adalah harga rumah dalam dolar, maka satuan pengukuran kesalahan kuadrat rata-rata adalah dolar persegi ($2), dan untuk deviasi standar adalah dolar ($), yang secara alami sedikit menyederhanakan tugas analisis manusia:



L=1Ni=1N(ypredicted(i)yexpected(i))2



- deviasi rata - rata (Mean Absolute Error, MAE) - berbeda dengan dua nilai di atas, tidak begitu sensitif terhadap emisi:

L=1Ni=1N|ypredicted(i)yexpected(i)|



- entropi silang - penggunaan untuk tugas klasifikasi:

L=i=1Nj=1Myexpected(ij)log(ypredicted(ij))



Dimana

N - jumlah salinan di set pelatihan

M - jumlah kelas saat menyelesaikan masalah klasifikasi

yexpected - nilai keluaran yang diharapkan

ypredicted- nilai keluaran aktual dari model yang dilatih



Untuk kasus khusus kami, kami akan menggunakan MSE:

L=1Ni=1N(ypredicted(i)yexpected(i))2=(0.21)2=0.64





LANGKAH 3 - Propagasi mundur

Tujuan pelatihan jaringan saraf sederhana - ini untuk meminimalkan fungsi kesalahan:

Lmin



Salah satu cara untuk menemukan nilai minimum suatu fungsi adalah dengan mengubah bobot koneksi ke arah yang berlawanan dengan vektor gradien pada setiap langkah pembelajaran berikutnya - metode penurunan gradien, dan secara matematis akan terlihat seperti ini:

w(k+1)=wkμL(wk)



Dimana k - iterasi ke-k pelatihan jaringan saraf;

μ- kecepatan pembelajaran ditetapkan oleh teknisi, biasanya dapat 0,1; 0.01 (tentang bagaimana langkah pembelajaran mempengaruhi proses konvergensi pembelajaran, perhatikan sedikit kemudian)

L- gradien dari fungsi kesalahan

Untuk menemukan gradien, kami menggunakan turunan parsial sehubungan dengan argumen khususw1,w2:

L(w)=[Lw1LwN]



Dalam kasus khusus kami, dengan mempertimbangkan semua penyederhanaan, fungsi kesalahan mengambil bentuk:

L(w1,w2)=(ypredictedyexpected)2=(x1w1+x2w2yexpected)2=

=(1w1+0.5w21)2



Memo rumus turunan
,

ddxc=0;c=const

ddx[cf(x)]=cf(x); c=const

ddxxn=nxn1

ddx[f(x)±g(x)]=f(x)±g(x)

ddx[f(x)g(x)]=f(x)g(x)+g(x)f(x)

ddxf(g(x))=f(g(x))g(x)





Mari cari turunan parsial berikut ini:

w1(w1+0.5w21)2=2(w1+0.5w21)w1(w1+0.5w21)=

=2(w1+0.5w21)1=2(0.1+0.50.21)=1.6



w2(w1+0.5w21)2=2(w1+0.5w21)w2(w1+0.5w21)=

=2(w1+0.5w21)0.5=2(0.1+0.50.21)0.5=0.8





Kemudian proses perambatan balik yang error adalah pergerakan sepanjang model dari keluaran menuju masukan dengan modifikasi bobot model ke arah yang berlawanan dengan vektor gradien. Setting langkah pembelajaran 0.1 (learning rate) yang kita miliki (Gambar 7):

w1(k+1)=w1(k)μL(w1,w2)w1=0.10.1(1.6)=0.26



w2(k+1)=w2(k)μL(w1,w2)w2=0.20.1(0.8)=0.28





Gambar 7 - Backpropagation of the error

Jadi, kami telah menyelesaikan langkah-langkah pelatihan k + 1 untuk memastikan bahwa kesalahan telah berkurang, dan output dari model dengan bobot baru menjadi lebih dekat dengan yang diharapkan, kami akan melakukan proses propagasi maju kesalahan sepanjang model dengan bobot baru (lihat LANGKAH 1) :

ypredicted=x1w1+x2w2=10.26+0.50.28=0.4



Seperti yang Anda lihat, nilai output meningkat 0,2 unit ke arah yang benar menuju hasil yang diharapkan - satu (1). Kesalahannya kemudian akan menjadi:

L=(0.41)2=0.36



Seperti yang Anda lihat, pada langkah pelatihan sebelumnya, kesalahannya adalah 0,64, dan dengan bobot baru - 0,36, oleh karena itu, kami menyesuaikan model ke arah yang benar.



Bagian selanjutnya dari artikel:

Pembelajaran Mesin. Jaringan saraf (bagian 2): ATAU pemodelan; XOR dengan Machine Learning TensorFlow.js

. Jaringan Saraf (Bagian 3) - Jaringan Konvolusional di bawah mikroskop. Menjelajahi API Tensorflow.js



All Articles