Biografi Ciri-ciri Analisis

Fungsi ralat rangkaian saraf. Latihan rangkaian - penyebaran belakang

Algoritma perambatan balik ralat adalah salah satu kaedah untuk melatih rangkaian neural suapan berbilang lapisan, juga dipanggil perceptron berbilang lapisan. Perceptron berbilang lapisan telah berjaya digunakan untuk menyelesaikan banyak masalah yang kompleks.

Latihan dengan algoritma perambatan belakang melibatkan dua laluan melalui semua lapisan rangkaian: ke hadapan dan ke belakang. Dalam hantaran ke hadapan, vektor input disalurkan ke lapisan input rangkaian saraf, dan kemudian merambat melalui rangkaian dari lapisan ke lapisan. Akibatnya, satu set isyarat keluaran dihasilkan, yang merupakan tindak balas sebenar rangkaian kepada imej input yang diberikan. Semasa hantaran ke hadapan, semua berat sinaptik rangkaian ditetapkan. Semasa hantaran ke belakang, semua pemberat sinaptik dilaraskan mengikut peraturan pembetulan ralat, iaitu: output sebenar rangkaian ditolak daripada output yang diingini, menghasilkan isyarat ralat. Isyarat ini kemudiannya merambat ke seluruh rangkaian dalam arah yang bertentangan dengan arah sambungan sinaptik. Oleh itu nama - algoritma perambatan balik. Berat sinaptik dilaraskan untuk membawa keluaran rangkaian sedekat mungkin dengan yang dikehendaki.

Mari kita pertimbangkan operasi algoritma dengan lebih terperinci. Katakan anda perlu melatih rangkaian saraf berikut menggunakan algoritma perambatan balik:

Simbol berikut digunakan dalam rajah:

Sebagai fungsi pengaktifan dalam perceptron berbilang lapisan, sebagai peraturan, fungsi pengaktifan sigmoid digunakan, khususnya fungsi logistik:

di mana ialah parameter cerun bagi fungsi sigmoidal. Dengan menukar parameter ini, anda boleh membina fungsi dengan cerun yang berbeza. Marilah kita membuat tempahan bahawa untuk semua hujah berikutnya kita akan menggunakan tepat fungsi pengaktifan logistik, hanya diwakili oleh formula di atas.

Sigmoid mengecilkan julat variasi supaya nilainya terletak di antara sifar dan satu. Rangkaian saraf berbilang lapisan mempunyai kuasa perwakilan yang lebih besar daripada rangkaian saraf satu lapisan hanya dengan kehadiran tidak linear. Fungsi mampatan menyediakan ketaklinearan yang diperlukan. Sebenarnya terdapat banyak fungsi yang boleh digunakan. Algoritma perambatan belakang hanya memerlukan fungsi itu boleh dibezakan di mana-mana sahaja. Sigmoid memenuhi keperluan ini. miliknya faedah tambahan terdiri daripada kawalan keuntungan automatik. Untuk isyarat lemah (iaitu apabila menghampiri sifar) keluk input-output mempunyai cerun yang kuat, memberikan keuntungan yang besar. Apabila magnitud isyarat semakin besar, keuntungan menurun. Dengan cara ini, isyarat besar diterima oleh rangkaian tanpa ketepuan, dan isyarat kecil melalui rangkaian tanpa pengecilan yang berlebihan.

Tujuan latihan rangkaian Algoritma perambatan belakang ialah pelarasan pemberatnya supaya penggunaan set input tertentu membawa kepada set output yang diperlukan. Untuk ringkasnya, set input dan output ini akan dipanggil vektor. Semasa latihan, diandaikan bahawa untuk setiap vektor input terdapat vektor sasaran yang dipasangkan dengannya, yang menentukan output yang diperlukan. Bersama-sama mereka dipanggil pasangan latihan. Rangkaian ini dilatih pada banyak pasangan.

Seterusnya:

  1. Mulakan pemberat sinaptik dengan nilai rawak yang kecil.
  2. Pilih pasangan latihan seterusnya daripada set latihan; serahkan vektor input kepada input rangkaian.
  3. Kira output rangkaian.
  4. Kira perbezaan antara output rangkaian dan output yang diperlukan (vektor sasaran pasangan latihan).
  5. Laraskan berat rangkaian untuk meminimumkan ralat (seperti lihat di bawah).
  6. Ulang langkah 2 hingga 5 untuk setiap vektor set latihan sehingga ralat pada keseluruhan set mencapai tahap yang boleh diterima.

Operasi yang dilakukan oleh langkah 2 dan 3 adalah serupa dengan yang dilakukan apabila rangkaian sudah dilatih, i.e. vektor input diberikan dan output yang terhasil dikira. Pengiraan dilakukan lapisan demi lapisan. Dalam Rajah. 1, output neuron lapisan pertama dikira (lapisan adalah input, yang bermaksud tiada pengiraan berlaku di dalamnya), kemudian ia digunakan sebagai input lapisan, output neuron lapisan dikira , yang membentuk vektor keluaran rangkaian. Langkah 2 dan 3 membentuk apa yang dipanggil "laluan hadapan" kerana isyarat merambat melalui rangkaian dari input ke output.

Langkah 4 dan 5 membentuk "laluan belakang", di mana isyarat ralat yang dikira disebarkan kembali melalui rangkaian dan digunakan untuk melaraskan pemberat.

Mari kita lihat lebih dekat pada langkah 5 - melaraskan pemberat rangkaian. Dua kes yang diterangkan di bawah harus diserlahkan di sini.

Kes 1. Pelarasan berat sinaptik lapisan keluaran

Sebagai contoh, untuk model rangkaian saraf dalam Rajah. 1, ini akan menjadi pemberat dengan sebutan berikut: dan . Mari kita tentukan bahawa indeks akan menandakan neuron dari mana berat sinaptik keluar, dan neuron di mana ia masuk:

Mari kita perkenalkan nilai , yang sama dengan perbezaan antara output yang diperlukan dan sebenar, didarab dengan terbitan fungsi pengaktifan logistik (lihat di atas untuk formula fungsi pengaktifan logistik):

Kemudian, berat lapisan keluaran selepas pembetulan akan sama dengan:

Berikut ialah contoh pengiraan untuk berat sinaptik:

Kes 2. Pelarasan berat sinaptik lapisan tersembunyi

Untuk model rangkaian saraf dalam Rajah. 1, ini akan menjadi pemberat yang sepadan dengan lapisan dan . Marilah kita memutuskan bahawa indeks akan menandakan neuron dari mana berat sinaptik keluar, dan neuron di mana ia masuk (perhatikan penampilan pembolehubah baru).

Prudnikov Ivan Alekseevich
MIREA(MTU)

Topik rangkaian saraf telah pun dibincangkan lebih daripada sekali dalam banyak majalah, tetapi hari ini saya ingin memperkenalkan pembaca kepada algoritma untuk melatih rangkaian saraf berbilang lapisan menggunakan kaedah perambatan belakang dan menyediakan pelaksanaan kaedah ini.

Saya ingin membuat tempahan dengan segera bahawa saya bukan pakar dalam bidang rangkaian saraf, jadi saya harapkan daripada pembaca kritikan membina, ulasan dan tambahan.

Bahagian teori

Bahan ini menganggap kebiasaan dengan asas-asas rangkaian saraf, tetapi saya percaya adalah mungkin untuk memperkenalkan pembaca kepada topik tanpa ujian yang tidak perlu mengenai teori rangkaian saraf. Jadi, bagi mereka yang mendengar frasa "rangkaian saraf" buat kali pertama, saya mencadangkan untuk melihat rangkaian saraf sebagai graf berwajaran, yang nod (neuron) disusun dalam lapisan. Selain itu, nod dalam satu lapisan mempunyai sambungan dengan semua nod dalam lapisan sebelumnya. Dalam kes kami, graf sedemikian akan mempunyai lapisan input dan output, nod yang bertindak sebagai input dan output, masing-masing. Setiap nod (neuron) mempunyai fungsi pengaktifan - fungsi yang bertanggungjawab untuk mengira isyarat pada output nod (neuron). Terdapat juga konsep anjakan, iaitu nod yang outputnya sentiasa muncul sebagai satu. Dalam artikel ini, kami akan mempertimbangkan proses pembelajaran rangkaian saraf yang menganggap kehadiran "guru," iaitu, proses pembelajaran di mana pembelajaran berlaku dengan menyediakan rangkaian dengan urutan contoh latihan dengan respons yang betul.
Seperti kebanyakan rangkaian saraf, matlamat kami adalah untuk melatih rangkaian sedemikian rupa untuk mencapai keseimbangan antara keupayaan rangkaian untuk menghasilkan tindak balas yang betul kepada data input yang digunakan semasa latihan (penghafalan) dan keupayaan untuk menghasilkan output yang betul dalam tindak balas kepada data input. serupa, tetapi tidak sama dengan yang digunakan dalam latihan (prinsip generalisasi). Latihan rangkaian menggunakan kaedah backpropagation merangkumi tiga peringkat: menyuap data ke input, diikuti dengan penyebaran data ke arah output, mengira dan merambat belakang ralat yang sepadan, dan melaraskan pemberat. Selepas latihan, ia hanya sepatutnya membekalkan data kepada input rangkaian dan mengedarkannya ke arah output. Selain itu, sementara melatih rangkaian boleh menjadi proses yang agak panjang, pengiraan langsung keputusan oleh rangkaian terlatih berlaku dengan sangat cepat. Di samping itu, terdapat banyak variasi kaedah rambatan belakang yang direka untuk meningkatkan kelajuan proses pembelajaran.
Perlu diingatkan juga bahawa rangkaian neural satu lapisan terhad dengan ketara dalam corak data input yang boleh dipelajarinya, manakala rangkaian berbilang lapisan (dengan satu atau lebih lapisan tersembunyi) tidak mempunyai kelemahan sedemikian. Seterusnya, penerangan tentang rangkaian neural standard dengan perambatan balik akan diberikan.

Seni bina

Rajah 1 menunjukkan rangkaian neural berbilang lapisan dengan satu lapisan neuron tersembunyi (elemen Z).

Neuron yang mewakili output rangkaian (ditandakan Y) dan neuron tersembunyi boleh mempunyai bias (seperti yang ditunjukkan dalam imej). Offset yang sepadan dengan output Y k ditetapkan w ok , unsur tersembunyi Z j - V oj . Offset ini berfungsi sebagai pemberat pada sambungan yang terpancar daripada neuron, outputnya sentiasa 1 (ia ditunjukkan dalam Rajah 1, tetapi biasanya tidak dipaparkan secara eksplisit, secara implikasi). Selain itu, dalam Rajah 1 anak panah menunjukkan pergerakan maklumat semasa fasa penyebaran data daripada input kepada output. Semasa proses pembelajaran, isyarat merambat masuk arah terbalik.

Penerangan tentang algoritma

Algoritma yang dibentangkan di bawah boleh digunakan untuk rangkaian saraf dengan satu lapisan tersembunyi, yang merupakan situasi yang sah dan mencukupi untuk kebanyakan aplikasi. Seperti yang dinyatakan sebelum ini, latihan rangkaian merangkumi tiga peringkat: menyuap data latihan kepada input rangkaian, menyebarkan semula ralat dan melaraskan pemberat. Semasa peringkat pertama, setiap neuron input X i menerima isyarat dan menyiarkannya ke setiap neuron tersembunyi Z 1,Z 2 ...,Z p. Setiap neuron tersembunyi kemudian mengira hasil fungsi pengaktifannya (fungsi rangkaian) dan menghantar isyarat Z j ke semua neuron keluaran. Setiap neuron keluaran Yk, seterusnya, mengira hasil fungsi pengaktifannya Yk, yang tidak lebih daripada output neuron itu untuk data input yang sepadan. Semasa proses latihan, setiap neuron pada output rangkaian membandingkan nilai Y k yang dikira dengan t k (nilai sasaran) yang disediakan oleh guru, menentukan nilai ralat yang sepadan untuk corak input yang diberikan. Berdasarkan ralat ini, σ k dikira (k = 1,2,...m). σ k digunakan apabila menyebarkan ralat dari Y k kepada semua elemen rangkaian lapisan sebelumnya (neuron tersembunyi yang disambungkan kepada Y k), dan juga kemudian apabila menukar berat sambungan antara neuron keluaran dan neuron tersembunyi. Begitu juga, σj (j = 1,2,...p) dikira untuk setiap neuron tersembunyi Z j . Walaupun tidak ada keperluan untuk menyebarkan ralat ke lapisan input, σj digunakan untuk menukar berat sambungan antara neuron lapisan tersembunyi dan neuron input. Selepas semua σ telah ditentukan, berat semua sambungan dilaraskan secara serentak.

Jawatan:

Algoritma latihan rangkaian menggunakan tatatanda berikut:

X Vektor input data latihan X = (X 1 , X 2 ,...,X i ,...,X n).
t Vektor nilai output sasaran yang disediakan oleh guru t = (t 1 , t 2 ,...,t k ,...,t m)
σ k Komponen pelarasan berat sambungan w jk sepadan dengan ralat neuron keluaran Y k ; juga, maklumat tentang ralat neuron Y k , yang diedarkan kepada neuron lapisan tersembunyi yang disambungkan kepada Y k .
σ j Komponen pelarasan berat sambungan v ij sepadan dengan maklumat ralat yang disebarkan dari lapisan keluaran ke neuron tersembunyi Z j.
kadar Pembelajaran.
X i Neuron pada input dengan indeks i. Untuk neuron input, isyarat input dan output adalah sama - X i .
v oj Anjakan neuron tersembunyi j.
Z j Neuron tersembunyi j; Jumlah nilai dibekalkan kepada input unsur tersembunyi Z j dilambangkan dengan Z_in j: Z_in j = v oj +∑x i *v ij
Isyarat output Z j (hasil penggunaan fungsi pengaktifan ke Z_in j) dilambangkan dengan Z j: Z j = f (Z_in j)
w ok Anjakan neuron pada output.
Y k Output neuron di bawah indeks k; Jumlah nilai yang dibekalkan kepada input unsur output Y k dilambangkan dengan Y_in k: Y_in k = w ok + ∑ Z j *w jk . Isyarat keluaran Y k (hasil penggunaan fungsi pengaktifan kepada Y_in k) ditetapkan Y k:

Fungsi pengaktifan

Fungsi pengaktifan dalam algoritma perambatan belakang mesti mempunyai beberapa ciri-ciri penting: kesinambungan, kebolehbezaan dan tidak menurun secara monoton. Selain itu, demi kecekapan pengiraan, adalah wajar agar terbitannya mudah ditemui. Selalunya, fungsi pengaktifan juga merupakan fungsi tepu. Salah satu fungsi pengaktifan yang paling biasa digunakan ialah fungsi sigmoid binari dengan julat dalam (0, 1) dan ditakrifkan sebagai:

Satu lagi fungsi pengaktifan yang digunakan secara meluas ialah sigmoid bipolar dengan julat (-1, 1) dan ditakrifkan sebagai:


Algoritma pembelajaran

Algoritma pembelajaran kelihatan seperti ini:

Permulaan pemberat (berat semua pautan dimulakan kepada nilai kecil rawak).

Selagi keadaan penamatan algoritma tidak betul, langkah 2 hingga 9 dilakukan.

Untuk setiap pasangan (data, nilai sasaran), langkah 3 - 8 dilakukan.

Penyebaran data daripada input kepada output:

Langkah 3.
Setiap neuron input (X i, i = 1,2,...,n) menghantar isyarat yang diterima X i kepada semua neuron dalam lapisan seterusnya (tersembunyi).

Setiap neuron tersembunyi (Z j , j = 1,2,...,p) menjumlahkan isyarat masuk berwajaran: z_in j = v oj + ∑ x i *v ij dan menggunakan fungsi pengaktifan: z j = f (z_in j) Kemudian menghantar hasil kepada semua elemen lapisan seterusnya (output).

Setiap neuron output (Y k , k = 1,2,...m) menjumlahkan isyarat input berwajaran: Y_in k = w ok + ∑ Z j *w jk dan menggunakan fungsi pengaktifan, mengira isyarat output: Y k = f (Y_in k).

Ralat penyebaran balik:

Setiap neuron keluaran (Y k, k = 1,2,...m) menerima nilai sasaran - nilai keluaran yang betul untuk isyarat input yang diberikan, dan mengira ralat: σ k = (t k - y k)*f " ( y_in k), juga mengira jumlah yang mana berat sambungan w jk akan berubah: Δw jk = a * σ k * z j. Di samping itu, mengira jumlah pelarasan pincang: Δw ok = a*σ k dan menghantar σ k kepada neuron pada lapisan sebelumnya .

Setiap neuron tersembunyi (z j, j = 1,2,...p) menjumlahkan ralat masuk (daripada neuron dalam lapisan seterusnya) σ_in j = ∑ σ k * w jk dan mengira nilai ralat dengan mendarabkan nilai yang terhasil dengan terbitan fungsi pengaktifan: σ j = σ_in j * f " (z_in j), juga mengira jumlah yang berat sambungan vij akan berubah: Δv ij = a * σ j * x i. Selain itu, mengira jumlah pelarasan ofset: v oj = a * σ j

Langkah 8. Tukar berat.

Setiap neuron keluaran (y k, k = 1,2,...,m) menukar berat sambungannya dengan unsur bias dan neuron tersembunyi: w jk (baru) = w jk (lama) + Δw jk
Setiap neuron tersembunyi (z j, j = 1,2,...p) menukar berat sambungannya dengan elemen pincang dan neuron keluaran: v ij (baru) = v ij (lama) + Δv ij

Menyemak syarat untuk menghentikan algoritma.
Syarat untuk menghentikan operasi algoritma boleh sama ada jumlah ralat kuasa dua hasil pada output rangkaian mencapai minimum yang telah ditetapkan semasa proses pembelajaran, atau penyiapan bilangan lelaran tertentu bagi algoritma. Algoritma adalah berdasarkan kaedah yang dipanggil keturunan kecerunan. Bergantung pada tanda, kecerunan fungsi (dalam dalam kes ini nilai fungsi- ini adalah ralat, dan parameter adalah berat sambungan dalam rangkaian) memberikan arah di mana nilai fungsi meningkat (atau menurun) paling cepat.

Untuk melatih rangkaian berbilang lapisan pada tahun 1986, Rummelhart dan Hinton (Rummelhart D.E., Hinton G.E., Williams R.J., 1986) mencadangkan algoritma perambatan balik ralat. Banyak penerbitan tentang aplikasi perindustrian rangkaian berbilang lapisan dengan algoritma pembelajaran ini mengesahkan prestasi asasnya dalam amalan.

Pada mulanya, satu persoalan yang munasabah timbul - mengapa peraturan Rosenblatt  yang sudah diketahui tidak boleh digunakan untuk melatih perceptron berbilang lapisan (lihat Kuliah 4)? Jawapannya ialah untuk menggunakan kaedah Rosenblatt, adalah perlu untuk mengetahui bukan sahaja output neuron semasa y, tetapi juga yang diperlukan. betul nilai Y. Dalam kes rangkaian berbilang lapisan, nilai yang betul ini hanya tersedia untuk neuron hari cuti lapisan. Nilai keluaran yang diperlukan untuk neuron lapisan tersembunyi tidak diketahui, yang mengehadkan penggunaan peraturan .

Idea utama di sebalik perambatan balik ialah cara mendapatkan anggaran ralat untuk neuron lapisan tersembunyi. perasan, itu terkenal ralat yang dibuat oleh neuron dalam lapisan keluaran timbul disebabkan oleh tidak diketahui manakala kesilapan neuron lapisan tersembunyi. Semakin besar nilai sambungan sinaptik antara neuron lapisan tersembunyi dan neuron keluaran, semakin kuat ralat pertama mempengaruhi ralat kedua. Akibatnya, anggaran ralat unsur lapisan tersembunyi boleh diperolehi sebagai jumlah wajaran ralat lapisan berikutnya. Semasa latihan, maklumat merebak dari lapisan hierarki yang lebih rendah kepada lapisan yang lebih tinggi, dan anggaran ralat yang dibuat oleh rangkaian diedarkan ke arah yang bertentangan, yang ditunjukkan dalam nama kaedah.

Mari kita beralih kepada pertimbangan terperinci algoritma ini. Untuk memudahkan notasi, kami menghadkan diri kami kepada situasi apabila rangkaian hanya mempunyai satu lapisan tersembunyi. Kami akan menandakan matriks pekali pemberat daripada input ke lapisan tersembunyi sebagai W, dan matriks pemberat yang menghubungkan lapisan tersembunyi dan keluaran sebagai V. Untuk indeks kami akan menggunakan tatatanda berikut: input akan dinomborkan hanya dengan indeks i, elemen lapisan tersembunyi mengikut indeks j, dan output, masing-masing, mengikut indeks k.

Biarkan rangkaian dilatih pada sampel (X,Y),=1..p. Aktiviti neuron akan dilambangkan dengan huruf kecil y dengan indeks yang sepadan, dan jumlah input berwajaran neuron - dengan huruf kecil x.

Struktur umum algoritma adalah serupa dengan yang dibincangkan dalam Kuliah 4, dengan formula yang lebih kompleks untuk melaraskan pemberat.

Jadual 6.1. Algoritma perambatan balik.

Nilai awal berat semua neuron semua lapisan V(t=0) dan W(t=0) ditetapkan kepada nombor rawak.

Imej input X dipersembahkan kepada rangkaian, menghasilkan imej output yY terbentuk. Dalam kes ini, neuron beroperasi secara berurutan dari lapisan ke lapisan mengikut formula berikut:

lapisan tersembunyi

lapisan keluaran

Di sini f(x) ialah fungsi sigmoid yang ditentukan oleh formula (6.1)

Berfungsi ralat segi empat sama rangkaian untuk imej input yang diberikan mempunyai bentuk:

Fungsi ini mesti diminimumkan. Kaedah pengoptimuman kecerunan klasik terdiri daripada pemurnian berulang hujah mengikut formula:

Fungsi ralat tidak secara eksplisit mengandungi pergantungan pada berat V jk , jadi kami menggunakan formula untuk pembezaan tersirat bagi fungsi kompleks:

Diambil kira di sini harta yang berguna fungsi sigmoid f(x): terbitannya dinyatakan hanya melalui nilai fungsi itu sendiri, f’(x)=f(1-f). Oleh itu, semua kuantiti yang diperlukan untuk melaraskan berat lapisan keluaran V telah diperolehi.

Langkah ini melaraskan berat lapisan tersembunyi. Kaedah kecerunan masih memberi:

Pengiraan derivatif dilakukan menggunakan formula yang sama, dengan pengecualian beberapa kerumitan formula untuk ralat  j.

Apabila mengira  j, prinsip ralat perambatan belakang telah digunakan di sini: terbitan separa diambil hanya berkenaan dengan pembolehubah seterusnya lapisan. Menggunakan formula yang diperoleh, berat neuron lapisan tersembunyi diubah suai. Jika rangkaian saraf mempunyai beberapa lapisan tersembunyi, prosedur perambatan belakang digunakan secara berurutan pada setiap satu daripadanya, bermula dengan lapisan sebelum lapisan keluaran dan terus ke lapisan mengikut input. Dalam kes ini, formula mengekalkan bentuknya dengan unsur lapisan keluaran digantikan dengan unsur lapisan tersembunyi yang sepadan.

Langkah 1-3 diulang untuk semua vektor latihan. Latihan tamat apabila jumlah ralat yang kecil atau bilangan lelaran maksimum yang dibenarkan dicapai, seperti dalam kaedah latihan Rosenblatt.

Seperti yang dapat dilihat daripada penerangan langkah 2-3, latihan adalah untuk menyelesaikan masalah mengoptimumkan fungsi ralat menggunakan kaedah kecerunan. Inti bagi ralat perambatan balik ialah untuk menganggarkannya untuk neuron dalam lapisan tersembunyi, anda boleh mengambil jumlah wajaran ralat lapisan berikutnya.

Parameter h mempunyai maksud kadar pembelajaran dan dipilih cukup kecil untuk penumpuan kaedah. Beberapa kenyataan tambahan perlu dibuat tentang penumpuan. Pertama, amalan menunjukkan bahawa penumpuan kaedah perambatan belakang adalah sangat perlahan. Kadar penumpuan yang rendah ialah "penyakit genetik" bagi semua kaedah kecerunan, kerana arah kecerunan tempatan tidak bertepatan dengan arah ke arah minimum. Kedua, pemberat dilaraskan secara bebas untuk setiap pasangan imej dalam set latihan. Pada masa yang sama, peningkatan dalam berfungsi pada beberapa pasangan yang diberi boleh, secara amnya, membawa kepada prestasi yang lebih teruk pada imej sebelumnya. Dalam pengertian ini, Tidak boleh dipercayai (kecuali amalan yang sangat meluas menggunakan kaedah) jaminan penumpuan.

Penyelidikan menunjukkan bahawa untuk mewakili pemetaan fungsi sewenang-wenang yang ditentukan oleh set latihan, semua yang diperlukan ialah dua lapisan neuron. Walau bagaimanapun, dalam amalan, dalam kes fungsi yang kompleks, menggunakan lebih daripada satu lapisan tersembunyi boleh memberikan penjimatan nombor penuh neuron.

Pada akhir kuliah, kami akan membuat catatan mengenai penetapan ambang neuron. Adalah mudah untuk melihat bahawa ambang neuron boleh dibuat bersamaan dengan berat tambahan yang disambungkan kepada input tiruan sebanyak -1. Sesungguhnya, memilih W 0 =, x 0 =-1 dan memulakan penjumlahan daripada sifar, kita boleh mempertimbangkan neuron dengan ambang sifar dan satu input tambahan:

Input neuron tambahan yang sepadan dengan ambang ditunjukkan dalam Rajah. 6.1 dengan petak gelap. Dengan mengambil kira kenyataan ini, semua formula penjumlahan input yang ditetapkan dalam algoritma perambatan belakang bermula dengan indeks sifar.

Algoritma perambatan belakang

Sinonim: BackProp Algorithm, Back Propagation Algorithm, BackProp

Loginom: Rangkaian saraf (pengkelasan) (pemproses), Rangkaian saraf (regresi) (pemproses)

Algoritma perambatan belakang ialah algoritma popular untuk melatih rangkaian neural suapan hadapan berlapis satah (perceptron berbilang lapisan). Merujuk kepada kaedah pembelajaran yang diselia, dan oleh itu memerlukan nilai sasaran dinyatakan dalam contoh latihan. Ia juga merupakan salah satu algoritma pembelajaran mesin yang paling terkenal.

Idea algoritma adalah berdasarkan penggunaan ralat keluaran rangkaian saraf:

untuk mengira nilai pembetulan bagi berat neuron dalam lapisan tersembunyinya, di mana bilangan neuron keluaran rangkaian, ialah nilai sasaran, ialah nilai keluaran sebenar. Algoritma adalah berulang dan menggunakan prinsip pembelajaran "dalam langkah" (pembelajaran dalam talian), apabila berat neuron rangkaian diselaraskan selepas satu contoh latihan dimasukkan ke inputnya.

Pada setiap lelaran, terdapat dua laluan rangkaian - ke hadapan dan ke belakang. Pada yang langsung, vektor input merambat dari input rangkaian ke outputnya dan membentuk beberapa vektor output sepadan dengan keadaan semasa (sebenar) skala. Kemudian ralat rangkaian saraf dikira sebagai perbezaan antara sebenar dan nilai sasaran. Pada pas pulangan, ralat ini merambat dari output rangkaian ke inputnya, dan berat neuron diperbetulkan mengikut peraturan:

di mana - berat ke-i sambungan neuron jth, ialah parameter kadar pembelajaran yang membolehkan anda mengawal saiz langkah pembetulan tambahan untuk menyesuaikan dengan lebih tepat kepada ralat minimum dan dipilih secara eksperimen semasa proses pembelajaran (perubahan dalam julat dari 0 hingga 1 ).

Memandangkan jumlah keluaran neuron jth adalah sama dengan

ia boleh ditunjukkan bahawa

Daripada ungkapan terakhir ia mengikuti bahawa pembezaan fungsi pengaktifan neuron rangkaian mesti wujud dan tidak sama dengan sifar pada sebarang titik, i.e. fungsi pengaktifan mesti boleh dibezakan sepanjang garis nombor keseluruhan. Oleh itu, untuk menggunakan kaedah perambatan belakang, fungsi pengaktifan sigmoid seperti tangen logistik atau hiperbolik digunakan.

Oleh itu, algoritma menggunakan apa yang dipanggil keturunan kecerunan stokastik, "bergerak" dalam ruang pemberat berbilang dimensi ke arah antikecerunan untuk mencapai minimum fungsi ralat.

Dalam amalan, latihan diteruskan bukan sehingga rangkaian ditala dengan halus kepada minimum fungsi ralat, tetapi sehingga anggaran yang cukup tepat dicapai. Ini akan membolehkan, dalam satu tangan, untuk mengurangkan bilangan lelaran latihan, dan pada yang lain, untuk mengelakkan melatih semula rangkaian.

Pada masa ini, banyak pengubahsuaian algoritma perambatan belakang telah dibangunkan. Sebagai contoh, latihan digunakan bukan "langkah demi langkah", apabila ralat output dikira dan pemberat diselaraskan untuk setiap contoh, tetapi "mengikut zaman" dalam mod luar talian, apabila pemberat ditukar selepas semua contoh latihan set dimasukkan ke input rangkaian, dan ralat dipuratakan untuk semua contoh.

Pembelajaran zaman demi zaman lebih tahan terhadap outlier dan nilai anomali pembolehubah sasaran kerana purata ralat ke atas banyak contoh. Tetapi ini meningkatkan kemungkinan algoritma tersekat dalam minima tempatan. Ini kurang berkemungkinan berlaku untuk pembelajaran langkah demi langkah kerana penggunaan contoh individu mencipta "bunyi" yang "menolak" algoritma keluar dari lubang pelepasan kecerunan.

Kelebihan algoritma backpropagation termasuk kemudahan pelaksanaan dan penentangan terhadap anomali dan outlier dalam data. Kelemahannya termasuk:

  • proses pembelajaran yang panjang tanpa had:
  • kemungkinan "lumpuh rangkaian" apabila nilai yang besar titik operasi fungsi pengaktifan ternyata berada di kawasan tepu sigmoid dan derivatif dalam ungkapan (1) menjadi hampir kepada 0, dan secara praktikalnya tiada pembetulan pemberat berlaku dan proses pembelajaran "membeku";
  • kelemahan algoritma untuk masuk minima tempatan fungsi ralat.

Algoritma pertama kali diterangkan pada tahun 1974.

Bahagian pertama meliputi: struktur, topologi, fungsi pengaktifan dan set latihan. Dalam bahagian ini saya akan cuba menerangkan bagaimana rangkaian neural convolutional dilatih.

Latihan Rangkaian Neural Konvolusi

hidup peringkat awal rangkaian saraf tidak terlatih (untuned). Dalam pengertian umum, latihan difahami sebagai persembahan berurutan imej kepada input rangkaian saraf, dari set latihan, maka tindak balas yang terhasil dibandingkan dengan output yang dikehendaki, dalam kes kami ia adalah 1 - imej mewakili muka, tolak 1 - imej mewakili latar belakang (bukan muka), perbezaan yang terhasil antara jawapan yang dijangkakan dan hasilnya adalah hasil daripada fungsi ralat (ralat delta). Delta ralat ini kemudiannya perlu disebarkan merentasi semua neuron yang bersambung dalam rangkaian.

Oleh itu, latihan rangkaian saraf datang untuk meminimumkan fungsi ralat dengan melaraskan pekali pemberat sambungan sinaptik antara neuron. Fungsi ralat ialah perbezaan antara jawapan yang diterima dan yang dikehendaki. Sebagai contoh, imej muka diberikan sebagai input, katakan bahawa output rangkaian saraf ialah 0.73, dan hasil yang diingini 1 (sejak imej muka), kami mendapati bahawa ralat rangkaian adalah perbezaan, iaitu, 0.27. Berat lapisan keluaran neuron kemudiannya diselaraskan mengikut ralat. Untuk neuron lapisan keluaran, nilai keluaran sebenar dan yang dikehendaki diketahui. Oleh itu, menetapkan berat sambungan untuk neuron tersebut agak mudah. Walau bagaimanapun, untuk neuron dalam lapisan sebelumnya, penalaan tidak begitu jelas. Untuk masa yang lama, tiada algoritma yang diketahui untuk penyebaran ralat melalui lapisan tersembunyi.

Algoritma perambatan balik

Untuk melatih rangkaian saraf yang diterangkan, algoritma perambatan belakang telah digunakan. Kaedah melatih rangkaian saraf berbilang lapisan ini dipanggil peraturan delta umum. Kaedah ini dicadangkan pada tahun 1986 oleh Rumelhart, McClelland dan Williams. Ini menandakan kebangkitan semula minat dalam rangkaian saraf, yang mula pudar pada awal 70-an. Algoritma ini adalah yang pertama dan utama yang boleh digunakan secara praktikal untuk melatih rangkaian saraf berbilang lapisan.

Untuk lapisan keluaran, melaraskan pemberat adalah intuitif, tetapi untuk lapisan tersembunyi, tiada algoritma diketahui untuk masa yang lama. Berat neuron tersembunyi harus berubah secara berkadar langsung dengan ralat neuron yang neuron disambungkan. Itulah sebabnya penyebaran balik ralat ini melalui rangkaian membolehkan anda melaraskan berat sambungan antara semua lapisan dengan betul. Dalam kes ini, magnitud fungsi ralat berkurangan dan rangkaian belajar.

Hubungan utama kaedah perambatan balik ralat diperoleh menggunakan tatatanda berikut:

Magnitud ralat ditentukan oleh formula 2.8 punca ralat min kuasa dua:

Keadaan tidak diaktifkan bagi setiap neuron j untuk imej p ditulis sebagai jumlah wajaran menggunakan formula 2.9:

Keluaran setiap neuron j ialah nilai fungsi pengaktifan

Yang memindahkan neuron ke keadaan diaktifkan. Sebarang fungsi monoton yang boleh dibezakan secara berterusan boleh digunakan sebagai fungsi pengaktifan. Keadaan neuron yang diaktifkan dikira menggunakan formula 2.10:

Kaedah penurunan kecerunan digunakan sebagai kaedah untuk meminimumkan ralat; intipati kaedah ini adalah untuk mencari minimum (atau maksimum) fungsi dengan bergerak di sepanjang vektor kecerunan. Untuk mencari minimum, pergerakan mesti dijalankan ke arah antigradien. Kaedah penurunan kecerunan mengikut Rajah 2.7.

Kecerunan fungsi kehilangan ialah vektor terbitan separa, dikira menggunakan formula 2.11:

Terbitan fungsi ralat untuk imej tertentu boleh ditulis menggunakan peraturan rantai, formula 2.12:

Ralat neuron biasanya ditulis sebagai δ (delta). Untuk lapisan keluaran, ralat ditakrifkan secara eksplisit; jika kita mengambil terbitan formula 2.8, kita dapat t tolak y, iaitu perbezaan antara output yang diingini dan diterima. Tetapi bagaimana untuk mengira ralat untuk lapisan tersembunyi? Untuk menyelesaikan masalah ini, algoritma perambatan belakang telah dicipta. Intinya adalah untuk mengira secara berurutan ralat lapisan tersembunyi menggunakan nilai ralat lapisan keluaran, i.e. nilai ralat menyebar melalui rangkaian dalam arah yang bertentangan dari output ke input.

Ralat δ untuk lapisan tersembunyi dikira menggunakan formula 2.13:

Algoritma penyebaran ralat dikurangkan kepada langkah berikut:

  • penyebaran isyarat langsung melalui rangkaian, mengira keadaan neuron;
  • mengira nilai ralat δ untuk lapisan keluaran;
  • perambatan belakang: secara berurutan dari hujung ke permulaan untuk semua lapisan tersembunyi kami mengira δ menggunakan formula 2.13;
  • mengemas kini pemberat rangkaian kepada ralat yang dikira sebelumnya δ.
Algoritma perambatan belakang dalam perceptron berbilang lapisan ditunjukkan di bawah:


Sehingga ke tahap ini, kes-kes penyebaran ralat merentasi lapisan perceptron, iaitu, sepanjang lapisan keluaran dan tersembunyi, telah dipertimbangkan, tetapi sebagai tambahan kepada mereka, rangkaian saraf konvolusi mempunyai subsampel dan satu konvolusi.

Pengiraan ralat pada lapisan subsampling

Pengiraan ralat pada lapisan subsampel dibentangkan dalam beberapa versi. Kes pertama ialah apabila lapisan subsampel terletak di hadapan lapisan yang disambungkan sepenuhnya, maka ia mempunyai neuron dan sambungan dari jenis yang sama seperti dalam lapisan yang disambungkan sepenuhnya; oleh itu, pengiraan ralat δ tidak berbeza dengan pengiraan δ. daripada lapisan tersembunyi. Kes kedua, apabila lapisan subsampling berada sebelum lapisan konvolusi, pengiraan δ berlaku dengan konvolusi songsang. Untuk memahami konvolusi songsang, anda mesti terlebih dahulu memahami konvolusi biasa dan bahawa tetingkap gelongsor di atas peta ciri (semasa perambatan isyarat hadapan) boleh ditafsirkan sebagai lapisan tersembunyi biasa dengan sambungan antara neuron, tetapi perbezaan utama ialah sambungan ini boleh dipisahkan. iaitu, satu sambungan dengan nilai berat tertentu boleh berada dalam beberapa pasang neuron, dan bukan hanya satu. Tafsiran operasi lilitan dalam bentuk berbilang lapisan biasa mengikut Rajah 2.8.


Rajah 2.8 - Tafsiran operasi lilitan ke dalam paparan berbilang lapisan, di mana pautan dengan warna yang sama mempunyai berat yang sama. Peta subsampel berwarna biru, nukleus sinaptik berwarna-warni, dan lilitan yang terhasil adalah oren.

Sekarang bahawa operasi lilitan diwakili dalam bentuk berbilang lapisan yang biasa, anda secara intuitif boleh memahami bahawa delta dikira dengan cara yang sama seperti dalam lapisan tersembunyi rangkaian yang bersambung sepenuhnya. Oleh itu, setelah mengira delta lapisan konvolusi, anda boleh mengira delta lapisan subsampel, mengikut Rajah 2.9.


Rajah 2.9 - Pengiraan lapisan subsampling δ disebabkan oleh lapisan konvolusi dan kernel δ

Konvolusi terbalik adalah cara yang sama untuk mengira delta, hanya dengan cara yang lebih rumit, yang terdiri daripada memutar kernel 180 darjah dan meluncurkan proses mengimbas peta konvolusi delta dengan kesan tepi yang diubah suai. Dengan kata mudah, kita perlu mengambil kernel peta konvolusi (bersebelahan lapisan subsampling), putarkannya 180 darjah dan lakukan konvolusi biasa menggunakan delta peta konvolusi yang dikira sebelumnya, tetapi supaya tetingkap imbasan melangkaui peta. Hasil daripada operasi lilitan songsang mengikut Rajah 2.10, kitaran lilitan terbalik melepasi mengikut Rajah 2.11.


Rajah 2.10 - Keputusan operasi lilitan songsang


Rajah 2.11 - Kernel berpusing 180 darjah mengimbas peta konvolusi

Mengira ralat pada lapisan konvolusi

Lazimnya, lapisan utama selepas lapisan konvolusi ialah lapisan subsampling, jadi tugas kami adalah untuk mengira delta lapisan semasa (konvolusi) menggunakan pengetahuan tentang delta lapisan subsampling. Sebenarnya, ralat delta tidak dikira, tetapi disalin. Semasa perambatan isyarat langsung, neuron lapisan subsampling telah terbentuk disebabkan oleh tetingkap pengimbasan yang tidak bertindih merentasi lapisan konvolusi, di mana neuron dengan nilai maksimum, semasa perambatan belakang, kami mengembalikan delta ralat kepada neuron maksimum yang dipilih sebelum ini, manakala selebihnya menerima delta ralat sifar.

Kesimpulan

Dengan mempersembahkan operasi lilitan dalam bentuk berbilang lapisan biasa (Rajah 2.8), anda secara intuitif boleh memahami bahawa delta dikira dengan cara yang sama seperti dalam lapisan tersembunyi rangkaian yang bersambung sepenuhnya.