bab sebelumnya
20 Offset dan Menyebarkan: Dua Sumber Utama Kesalahan
komentar penerjemah Sebelum perubahan, bab ini disebut "Sistematis dan Acak: Dua Sumber Utama Kesalahan," yaitu, saya menggunakan istilah "kesalahan acak" dan "kesalahan sistematis" untuk menerjemahkan bias dan varian. Namun, robot anggota forum @ Phaker, dalam komentarnya, dengan tepat mencatat bahwa dalam bidang pembelajaran mesin dalam terminologi Rusia untuk istilah-istilah ini konsep "perpindahan" dan "pencar" adalah tetap. Saya melihat karya K.V. Vorontsov, yang sepatutnya adalah salah satu otoritas di bidang pembelajaran mesin di Rusia dan sumber daya dari komunitas profesional, dan setuju dengan robot komentar @ Phaker . Terlepas dari kenyataan bahwa, dari sudut pandang saya, ada analogi mendalam yang bermakna antara "bias" dan "varians" dalam pelatihan algoritma dan "kesalahan sistematis" dan "kesalahan acak" dari eksperimen fisik, selain itu mereka diekspresikan secara matematis sama Namun demikian, benar untuk menggunakan istilah yang ditetapkan dalam bidang ini. Oleh karena itu, saya merevisi terjemahan bab ini dan selanjutnya, mengganti "Kesalahan Sistematis dan Acak" dengan "Offset and Scatter" dan saya akan tetap menggunakan pendekatan ini di masa mendatang.
Misalkan pelatihan Anda, validasi, dan sampel uji memiliki distribusi yang sama. Maka Anda perlu mengambil lebih banyak data untuk pelatihan, ini hanya akan meningkatkan kualitas algoritma, apakah ini benar?
Meskipun mendapatkan lebih banyak data tidak dapat melukai pekerjaan, sayangnya, data baru tidak selalu membantu sebanyak yang Anda harapkan. Dalam beberapa kasus, pekerjaan untuk mendapatkan data tambahan mungkin merupakan usaha yang sia-sia. Cara membuat keputusan - dalam hal apa untuk menambahkan data, dan kapan tidak perlu khawatir tentang hal itu.
Dalam pembelajaran mesin, ada dua sumber utama kesalahan: bias dan pencar (varians). Memahami apa itu akan membantu Anda memutuskan apakah akan menambah lebih banyak data, itu juga akan membantu Anda memilih taktik untuk meningkatkan kualitas pengklasifikasi.
Misalkan Anda berharap untuk membangun pengidentifikasi kucing dengan kesalahan 5%. Saat ini, kesalahan klasifikasi Anda pada sampel pelatihan adalah 15%, pada sampel validasi 16%. Dalam hal ini, menambahkan data pelatihan tidak mungkin meningkatkan kualitas secara signifikan. Anda harus berkonsentrasi pada perubahan sistem lainnya. Bahkan, menambahkan lebih banyak contoh ke set pelatihan Anda hanya akan membuat algoritma Anda lebih sulit untuk mendapatkan hasil yang baik pada set pelatihan tersebut (mengapa ini akan dijelaskan dalam bab-bab berikut).
Jika persentase kesalahan Anda dalam sampel pelatihan adalah 15% (yang sesuai dengan akurasi 85%), tetapi tujuan Anda adalah persentase kesalahan dalam 5% (akurasi 95%), maka pertama-tama Anda perlu meningkatkan kualitas algoritme Anda dalam sampel pelatihan. Kualitas algoritma dalam validasi / sampel uji biasanya lebih buruk daripada kualitas kerjanya dalam sampel pelatihan (dalam sampel pelatihan). Anda perlu memahami bahwa pendekatan-pendekatan yang telah mengarahkan Anda ke akurasi tidak melebihi 85% dalam contoh-contoh yang biasa digunakan oleh algoritma Anda tidak akan memungkinkan Anda untuk mendapatkan akurasi 95% dalam contoh-contoh yang bahkan belum terlihat oleh algoritma ini.
Misalkan, seperti yang ditunjukkan di atas, tingkat kesalahan algoritma Anda adalah 16% (akurasi 84%) dalam sampel validasi. Kita harus memecah kesalahan 16% menjadi dua komponen:
- Pertama, proporsi kesalahan algoritma dalam sampel pelatihan. Dalam contoh ini, ini adalah 15%. Kami secara informal menyebutnya bias .
- Kedua, seberapa buruk algoritme bekerja pada sampel validasi (atau tes) daripada pada yang pelatihan. Dalam contoh kami, 1% lebih buruk pada sampel validasi daripada pada sampel pelatihan. Kami juga akan secara tidak resmi menganggapnya sebagai varian dari algoritma.
komentar penulis Dalam statistik, ada definisi yang lebih tepat untuk bias dan pencar (kesalahan sistematis dan acak), tetapi ini seharusnya tidak mengganggu kita. Secara kasar, kami menganggap bahwa bias adalah kesalahan dalam algoritme Anda dalam set pelatihan Anda ketika Anda memiliki set pelatihan yang sangat besar. Menyebarkan - ini adalah seberapa buruk algoritma bekerja pada sampel uji dibandingkan dengan yang pelatihan dengan pengaturan parameter yang sama. Jika Anda menggunakan kesalahan standar, Anda bisa menulis rumus yang menentukan dua kuantitas ini dan membuktikan bahwa kesalahan total sama dengan jumlah bias dan pencar (jumlah kesalahan acak dan sistematis). Tetapi untuk tujuan kami, meningkatkan algoritma dalam masalah pembelajaran mesin, definisi informal bias dan pencar sudah cukup.
Beberapa perubahan dalam pelatihan algoritma mempengaruhi komponen pertama dari kesalahan - bias dan meningkatkan kinerja algoritma dalam sampel pelatihan. Beberapa perubahan mempengaruhi komponen kedua - varians dan membantu untuk lebih menggeneralisasi algoritma untuk validasi dan menguji sampel. Untuk memilih perubahan paling efektif yang perlu dilakukan pada sistem, sangat berguna untuk memahami bagaimana masing-masing dari dua komponen kesalahan ini mempengaruhi keseluruhan kesalahan sistem.
Komentar penulis: Ada juga beberapa pendekatan yang secara bersamaan mengurangi perpindahan dan penyebaran, membuat perubahan signifikan pada arsitektur sistem. Tetapi mereka biasanya lebih sulit ditemukan dan diimplementasikan.
Untuk memilih perubahan paling efektif yang perlu dilakukan pada sistem, sangat berguna untuk memahami bagaimana masing-masing dari dua komponen kesalahan ini mempengaruhi keseluruhan kesalahan sistem.
Pengembangan intuisi dalam memahami bagaimana Kontribusi berkontribusi terhadap kesalahan, dan Scatter yang mana, akan membantu Anda secara efektif memilih cara untuk meningkatkan algoritme Anda.
21 Contoh klasifikasi kesalahan
Pertimbangkan masalah klasifikasi kucing kami. Penggolong ideal (misalnya, seseorang) dapat mencapai kualitas yang sangat baik dari tugas ini.
Misalkan kualitas algoritma kami adalah sebagai berikut:
- Kesalahan dalam sampel pelatihan = 1%
- Kesalahan dalam sampel validasi = 11%
Apa masalah dengan pengelompokan ini? Menerapkan definisi dari bab sebelumnya, kami memperkirakan bias pada 1% dan spread pada 10% (= 11% - 1%). Dengan demikian, algoritma kami memiliki penyebaran besar. Pengklasifikasi memiliki kesalahan yang sangat rendah dalam sampel pelatihan, tetapi tidak dapat menggeneralisasi hasil pelatihan ke sampel validasi. Dengan kata lain, kita berhadapan dengan overfitting .
Sekarang pertimbangkan situasi ini:
- Kesalahan dalam sampel pelatihan = 15%
- Kesalahan dalam sampel validasi = 16%
Kemudian kami memperkirakan bias pada 15% dan spread pada 1%. Klasifikasi ini kurang terlatih dalam sampel pelatihan, sedangkan kesalahannya dalam sampel validasi sedikit lebih besar daripada sampel pelatihan. Dengan demikian, classifier ini memiliki bias yang besar, tetapi penyebarannya kecil. Dapat disimpulkan bahwa algoritma ini kurang tepat .
Kami juga mempertimbangkan distribusi kesalahan berikut:
- Kesalahan dalam sampel pelatihan = 15%
- Kesalahan dalam sampel validasi = 30%
Dalam hal ini, biasnya 15% dan spreadnya juga 15%. Pengklasifikasi ini memiliki bias dan penyebaran tinggi: ia tidak bekerja dengan baik dalam sampel pelatihan, memiliki bias tinggi, dan kualitasnya dalam sampel validasi jauh lebih buruk daripada dalam pelatihan, yaitu. hamburan juga besar. Kasus ini sulit untuk dijelaskan dalam hal pelatihan ulang / pendidikan rendah, klasifikasi ini dilatih ulang dan kurang berpendidikan.
Akhirnya, pertimbangkan situasi ini:
- Kesalahan dalam sampel pelatihan = 0,5%
- Kesalahan dalam sampel validasi = 1%
Ini adalah penggolong yang hebat, memiliki bias dan pencar yang rendah. Selamat kepada para insinyur untuk mencapai hasil yang luar biasa!
22 Perbandingan dengan tingkat kesalahan optimal
Dalam contoh kami untuk pengenalan kucing, bagian kesalahan yang ideal adalah level yang tersedia untuk classifier "optimal" dan level ini mendekati 0%. Seseorang yang melihat gambar hampir selalu dapat mengenali apakah ada kucing di dalam gambar atau tidak, dan kita dapat berharap bahwa cepat atau lambat mesin akan melakukannya juga.
Tetapi ada tugas yang lebih kompleks. Misalnya, bayangkan Anda sedang mengembangkan sistem pengenalan suara, dan menemukan bahwa 14% rekaman audio memiliki begitu banyak suara latar belakang atau suara yang tidak terbaca sehingga bahkan seseorang tidak dapat mengetahui apa yang dikatakan di sana. Dalam hal ini, bahkan sistem pengenalan ucapan yang paling "optimal" mungkin memiliki kesalahan di wilayah 14%.
Misalkan dalam tugas pengenalan suara kita, algoritma kita telah mencapai hasil sebagai berikut:
- Kesalahan dalam sampel pelatihan = 15%
- Kesalahan dalam sampel validasi = 30%
Kualitas classifier dalam sampel pelatihan sudah mendekati optimal, memiliki tingkat kesalahan 14%. Jadi, dalam hal ini, kami tidak memiliki banyak peluang untuk mengurangi bias (meningkatkan algoritme dalam sampel pelatihan). Namun, tidak mungkin untuk menggeneralisasi operasi algoritma ini ke sampel validasi, oleh karena itu, ada bidang besar untuk kegiatan pengurangan sebar .
Kasus ini mirip dengan contoh ketiga dari bab sebelumnya, di mana kesalahan dalam sampel pelatihan juga sama dengan 15% dan kesalahan dalam sampel validasi adalah 30%. Jika tingkat kesalahan optimal adalah sekitar 0%, maka kesalahan dalam sampel pelatihan 15% memberikan banyak ruang untuk bekerja untuk meningkatkan algoritma. Dengan asumsi ini, upaya untuk mengurangi bias dalam algoritma bisa sangat membuahkan hasil. Tetapi jika proporsi optimal kesalahan klasifikasi tidak boleh lebih rendah dari 14%, maka proporsi kesalahan algoritma yang sama dalam sampel pelatihan (mis., Di wilayah 14-15%) menunjukkan bahwa kemungkinan untuk mengurangi bias hampir habis.
Untuk masalah di mana proporsi optimal kesalahan klasifikasi berbeda secara signifikan dari nol, penataan kesalahan yang lebih rinci dapat diusulkan. Kami terus mempertimbangkan contoh di atas dengan pengenalan ucapan, kesalahan total 30% dalam sampel validasi dapat didekomposisi menjadi komponen berikut (kesalahan dalam sampel uji dapat dianalisis dengan cara yang sama):
- Bias optimal (bias tak terhindarkan): 14%. Bayangkan, kami memutuskan bahwa bahkan sistem pengenalan ucapan terbaik di dunia, akan memiliki tingkat kesalahan 14%. Kami akan membicarakan hal ini sebagai bagian "tak terhindarkan" dari offset algoritma pembelajaran.
- Bias yang dapat dihindari : 1%. Nilai ini dihitung sebagai perbedaan antara proporsi kesalahan dalam sampel pelatihan dan proporsi kesalahan optimal.
komentar penulis: Jika nilai ini ternyata negatif, maka, algoritma Anda pada sampel pelatihan menunjukkan kesalahan yang lebih kecil daripada yang "optimal". Ini berarti bahwa Anda dilatih ulang di set pelatihan, algoritma Anda mengingat contoh (dan kelas mereka) dari set pelatihan. Dalam hal ini, Anda harus fokus pada metode untuk mengurangi penyebaran, daripada mengurangi bias lebih lanjut.
- Varians : 15%. Perbedaan antara kesalahan dalam sampel pelatihan dan dalam sampel validasi
Terkait dengan definisi kami sebelumnya, perpindahan dan perpindahan sekali pakai terkait sebagai berikut:
Bias (bias) = Bias optimal ( "bias tak terhindarkan" ) + Bias sekali pakai ( "bias dihindari" )
Catatan penulis : Definisi-definisi ini dipilih untuk lebih menjelaskan bagaimana kualitas algoritma pembelajaran dapat ditingkatkan. Definisi-definisi ini berbeda dari definisi formal bias dan pencar yang diadopsi dalam statistik. Secara teknis, apa yang saya definisikan sebagai "Offset" harus disebut "kesalahan yang ada dalam struktur data (tidak dapat diidentifikasi dan dihilangkan)" dan "Hilangkan bias" harus didefinisikan sebagai "Bias algoritma pembelajaran yang melebihi bias optimal" .
Bias yang dapat dihindari menunjukkan betapa buruknya kualitas algoritme Anda dalam sampel pelatihan dibandingkan kualitas "penggolong optimal".
Ide dasar varians tetap sama. Secara teori, kita selalu dapat mengurangi penyebaran menjadi hampir nol dengan melatih sampel pelatihan yang cukup besar. Dengan demikian, sebaran apapun "dihindari" ketika ada sampel yang cukup besar, sehingga tidak ada yang namanya "penyebaran tidak dapat dihindari" (varians yang tidak dapat dihindari).
Pertimbangkan contoh lain di mana kesalahan optimal adalah 14% dan kami memiliki:
- Kesalahan dalam sampel pelatihan = 15%
- Kesalahan dalam sampel validasi = 16%
Pada bab sebelumnya, kami mengklasifikasikan penggolong dengan indikator seperti penggolong dengan bias tinggi, dalam kondisi saat ini kami mengatakan bahwa "bias yang dapat dihindari" adalah 1%, dan penyebarannya sekitar 1%. Dengan demikian, algoritma sudah bekerja dengan cukup baik dan hampir tidak ada cadangan untuk meningkatkan kualitas pekerjaannya. Kualitas algoritma ini hanya 2% di bawah optimal.
Dari contoh-contoh ini, jelas bahwa mengetahui besarnya kesalahan fatal berguna untuk memutuskan tindakan selanjutnya. Dalam statistik, tingkat kesalahan optimal juga disebut tingkat kesalahan Bayes .
Bagaimana cara mengetahui ukuran tingkat kesalahan optimal? Untuk tugas-tugas yang diatasi seseorang dengan baik, seperti pengenalan gambar atau decoding klip audio, Anda dapat meminta penilai untuk menandai data, dan kemudian mengukur akurasi markup manusia dalam sampel pelatihan. Ini akan memberikan perkiraan tingkat kesalahan optimal. Jika Anda mengerjakan masalah yang sulit bahkan untuk diatasi oleh seseorang (misalnya, untuk memprediksi film mana yang akan direkomendasikan atau iklan mana yang akan ditampilkan kepada pengguna), dalam hal ini agak sulit untuk menilai proporsi kesalahan optimal.
Dalam bagian Membandingkan Kinerja Tingkat Manusia, bab 33 hingga 35, saya akan membahas secara lebih rinci proses membandingkan kualitas algoritma pembelajaran dengan tingkat kualitas yang dapat dicapai seseorang.
Dalam bab-bab terakhir, Anda belajar bagaimana mengevaluasi bias dan pencar yang dapat dilepas / tidak dapat dipulihkan dengan menganalisis proporsi kesalahan klasifikasi dalam sampel pelatihan dan validasi. Bab selanjutnya akan memeriksa bagaimana Anda dapat menggunakan kesimpulan dari analisis tersebut untuk memutuskan apakah akan berkonsentrasi pada metode yang mengurangi bias atau pada metode yang mengurangi penyebaran. Pendekatan untuk melawan bias sangat berbeda dari pendekatan untuk mengurangi hamburan, sehingga teknik yang harus Anda terapkan dalam proyek Anda untuk meningkatkan kualitas sangat tergantung pada apa yang saat ini menjadi masalah - bias besar atau hamburan besar.
Baca terus!
23 Menghilangkan Offset dan Pencar
Berikut ini adalah rumus sederhana untuk menghilangkan bias dan pencar:
- Jika Anda memiliki bias besar yang dapat dihindari, tingkatkan kompleksitas model Anda (misalnya, tambah jaringan saraf Anda dengan menambahkan layer atau (dan) neuron)
- Jika Anda memiliki penyebaran luas, tambahkan contoh ke set pelatihan Anda.
Jika Anda memiliki kesempatan untuk meningkatkan ukuran jaringan saraf dan menambahkan data ke set pelatihan tanpa batas, ini akan membantu untuk mencapai hasil yang baik untuk sejumlah besar tugas pembelajaran mesin.
Dalam praktiknya, meningkatkan ukuran model pada akhirnya akan menyebabkan kesulitan komputasi, karena pelatihan model yang sangat besar lambat. Anda juga dapat menggunakan batas data yang tersedia untuk pelatihan. (Bahkan di Internet, jumlah gambar dengan kucing tentu saja!)
Arsitektur model algoritma yang berbeda, misalnya, arsitektur jaringan saraf yang berbeda, akan memberikan nilai yang berbeda untuk bias dan pencar, dalam kaitannya dengan tugas Anda. Sebuah poros penelitian pembelajaran mendalam baru-baru ini telah menciptakan sejumlah besar arsitektur model jaringan saraf inovatif. Jadi, jika Anda menggunakan jaringan saraf, non-fiksi bisa menjadi sumber inspirasi. Ada juga sejumlah besar implementasi algoritma yang sangat baik dalam sumber terbuka, misalnya pada GitHub. Namun, hasil dari upaya untuk menggunakan arsitektur baru secara signifikan kurang dapat diprediksi daripada rumus sederhana yang diberikan di atas - menambah ukuran model dan menambahkan data.
Peningkatan ukuran model biasanya mengurangi bias, tetapi juga dapat menyebabkan peningkatan penyebaran, dan risiko pelatihan ulang juga meningkat. Namun, masalah pelatihan ulang hanya muncul ketika Anda tidak menggunakan regularisasi. Jika Anda memasukkan metode regularisasi yang dirancang dengan baik dalam model Anda, Anda biasanya berhasil meningkatkan ukuran model dengan aman tanpa mengizinkan pelatihan ulang.
, , L2 dropout ( : Dropout , , : https://habr.com/company/wunderfund/blog/330814/ ), , . , ; . , - โ .
24
ยซ ยป. , , , . ยซยป .
, โ () , , . , , .
( ). , , , .
, , . , , , , .
, , . .
, , .
25
, :
- (, ): , . , , , .
- , , . , ( ). , . ; , , , , .
- (L2 , L1 , Dropout): , , .
- (, ) : ,
:
26
, / .
, , , , , . , , . . .
, - . , , 100 , , . , :
, , . , .
, -, , . , - , , , - . , , .
27
, :
- : , , .
- (L1 , L2 , dropout): , .
- (. . , ): , . , .
- / : , . (, 1000 900) . ( 1000 100 10 ) , , . , , , , , , , . , , .
- () ( / ). ! , , . , . . . , . , , .
Di sini saya memberikan dua teknik taktis tambahan, mengulangi apa yang dikatakan dalam bab-bab sebelumnya, sehubungan dengan pengurangan bias:
- Ubah tanda yang masuk berdasarkan pemahaman yang diperoleh dari analisis kesalahan : Katakanlah analisis kesalahan Anda telah mengarah pada gagasan bahwa Anda dapat membuat gejala tambahan yang akan membantu algoritma menyingkirkan beberapa kategori kesalahan. Fitur-fitur baru ini akan membantu mengurangi penyebaran dan offset. Secara teoritis, penambahan sifat-sifat baru dapat meningkatkan penyebaran; tetapi jika ini terjadi, Anda selalu dapat mengambil keuntungan dari regularisasi, yang biasanya meratakan peningkatan penyebaran.
- Ubah arsitektur model (misalnya, arsitektur jaringan saraf) agar lebih cocok untuk tugas Anda: Pendekatan ini dapat mengurangi bias dan pencar.
kelanjutan