Saya menyadari gradient descent dan algoritma back-propagation. Yang tidak saya dapatkan adalah: kapan menggunakan bias penting dan bagaimana Anda menggunakannya?
Misalnya, ketika memetakan AND
fungsi, ketika saya menggunakan 2 input dan 1 output, itu tidak memberikan bobot yang benar, namun, ketika saya menggunakan 3 input (1 di antaranya bias), ia memberikan bobot yang benar.
Jawaban:
Saya pikir bias hampir selalu membantu. Akibatnya, nilai bias memungkinkan Anda untuk menggeser fungsi aktivasi ke kiri atau ke kanan , yang mungkin penting untuk keberhasilan pembelajaran.
Mungkin membantu untuk melihat contoh sederhana. Pertimbangkan jaringan 1-input, 1-output ini yang tidak memiliki bias:
Output dari jaringan dihitung dengan mengalikan input (x) dengan bobot (w 0 ) dan melewatkan hasilnya melalui beberapa jenis fungsi aktivasi (mis. Fungsi sigmoid.)
Inilah fungsi yang dihitung jaringan ini, untuk berbagai nilai w 0 :
Mengubah berat w 0 dasarnya mengubah "kecuraman" dari sigmoid. Itu berguna, tetapi bagaimana jika Anda ingin jaringan menghasilkan 0 ketika x adalah 2? Hanya mengubah kecuraman sigmoid tidak akan benar-benar berfungsi - Anda ingin dapat menggeser seluruh kurva ke kanan .
Itulah yang bias Anda lakukan. Jika kami menambahkan bias ke jaringan itu, seperti:
... maka output dari jaringan menjadi sig (w 0 * x + w 1 * 1.0). Berikut adalah hasil keluaran jaringan untuk berbagai nilai w 1 :
Memiliki bobot -5 untuk w 1 menggeser kurva ke kanan, yang memungkinkan kita untuk memiliki jaringan yang menghasilkan 0 ketika x adalah 2.
sumber
Hanya untuk menambahkan dua sen saya.
Cara yang lebih sederhana untuk memahami apa itu bias: itu entah bagaimana mirip dengan b konstan fungsi linear
y = kapak + b
Ini memungkinkan Anda untuk memindahkan garis ke atas dan ke bawah agar sesuai dengan prediksi dengan data yang lebih baik. Tanpa b , baris selalu melewati titik asal (0, 0) dan Anda mungkin mendapatkan nilai yang lebih buruk.
sumber
Utas ini sangat membantu saya mengembangkan proyek saya sendiri. Berikut adalah beberapa ilustrasi lebih lanjut yang menunjukkan hasil dari jaringan neural maju 2-feed feed sederhana dengan dan tanpa unit bias pada masalah regresi dua variabel. Bobot diinisialisasi secara acak dan aktivasi ReLU standar digunakan. Seperti jawaban sebelum saya menyimpulkan, tanpa bias jaringan-ReLU tidak dapat menyimpang dari nol pada (0,0).
sumber
Alasannya tidak praktis adalah karena Anda secara bersamaan menyesuaikan bobot dan nilainya, sehingga setiap perubahan pada bobot dapat menetralkan perubahan pada nilai yang berguna untuk instance data sebelumnya ... menambahkan neuron bias tanpa nilai perubahan memungkinkan Anda untuk mengontrol perilaku layer.
Lebih jauh lagi, bias memungkinkan Anda untuk menggunakan jaring saraf tunggal untuk mewakili kasus serupa. Pertimbangkan fungsi AND boolean yang diwakili oleh jaringan saraf berikut:
(sumber: aihorizon.com )
Ambang adalah bias dan w0 adalah berat yang terkait dengan bias / ambang neuron.
sumber
Bias itu bukan
NN
istilah, itu istilah aljabar umum untuk dipertimbangkan.Y = M*X + C
(persamaan garis lurus)Sekarang jika
C(Bias) = 0
demikian, garis akan selalu melewati titik asal, yaitu(0,0)
, dan tergantung hanya pada satu parameter, yaituM
, yang merupakan kemiringan sehingga kita memiliki lebih sedikit hal untuk dimainkan.C
, yang bias mengambil nomor berapa pun dan memiliki aktivitas untuk menggeser grafik, dan karenanya dapat mewakili situasi yang lebih kompleks.Dalam regresi logistik, nilai yang diharapkan dari target diubah oleh fungsi tautan untuk membatasi nilainya ke interval unit. Dengan cara ini, prediksi model dapat dilihat sebagai probabilitas hasil primer seperti yang ditunjukkan: Fungsi Sigmoid di Wikipedia
Ini adalah lapisan aktivasi terakhir di peta NN yang menghidupkan dan mematikan neuron. Di sini bias juga memainkan peran dan menggeser kurva secara fleksibel untuk membantu kami memetakan model.
sumber
Lapisan dalam jaringan saraf tanpa bias tidak lebih dari multiplikasi vektor input dengan matriks. (Vektor keluaran mungkin dilewatkan melalui fungsi sigmoid untuk normalisasi dan untuk digunakan dalam ANN berlapis-lapis setelah itu tetapi itu tidak penting.)
Ini berarti bahwa Anda menggunakan fungsi linear dan dengan demikian input dari semua nol akan selalu dipetakan ke output dari semua nol. Ini mungkin solusi yang masuk akal untuk beberapa sistem tetapi secara umum itu terlalu membatasi.
Menggunakan bias, Anda secara efektif menambahkan dimensi lain ke ruang input Anda, yang selalu mengambil nilai satu, sehingga Anda menghindari vektor input semua nol. Anda tidak kehilangan generalitas karena matriks bobot terlatih Anda tidak perlu bersifat surjektif, sehingga masih dapat memetakan ke semua nilai yang sebelumnya mungkin.
ANN 2d:
Untuk pemetaan ANN dua dimensi ke satu dimensi, seperti dalam mereproduksi fungsi AND atau OR (atau XOR), Anda dapat menganggap jaringan saraf melakukan hal-hal berikut:
Pada bidang 2d tandai semua posisi vektor input. Jadi, untuk nilai boolean, Anda ingin menandai (-1, -1), (1,1), (-1,1), (1, -1). Apa yang dilakukan JST Anda sekarang adalah menggambar garis lurus pada bidang 2d, memisahkan output positif dari nilai output negatif.
Tanpa bias, garis lurus ini harus melewati nol, sedangkan dengan bias, Anda bebas untuk meletakkannya di mana saja. Jadi, Anda akan melihat bahwa tanpa bias Anda menghadapi masalah dengan fungsi AND, karena Anda tidak dapat menempatkan keduanya (1, -1) dan (-1,1) ke sisi negatif. (Mereka tidak diizinkan berada di telepon.) Masalahnya sama untuk fungsi OR. Namun, dengan bias, mudah untuk menarik garis.
Perhatikan bahwa fungsi XOR dalam situasi itu tidak dapat diselesaikan bahkan dengan bias.
sumber
Ketika Anda menggunakan JST, Anda jarang tahu tentang bagian dalam sistem yang ingin Anda pelajari. Beberapa hal tidak dapat dipelajari tanpa bias. Misalnya, lihat data berikut: (0, 1), (1, 1), (2, 1), pada dasarnya fungsi yang memetakan setiap x ke 1.
Jika Anda memiliki jaringan satu lapis (atau pemetaan linear), Anda tidak dapat menemukan solusi. Namun, jika Anda memiliki bias itu sepele!
Dalam pengaturan yang ideal, bias juga dapat memetakan semua titik ke titik rata-rata target dan membiarkan neuron tersembunyi memodelkan perbedaan dari titik itu.
sumber
Modifikasi neuron WEIGHTS saja hanya berfungsi untuk memanipulasi bentuk / kelengkungan fungsi transfer Anda, dan bukan keseimbangannya / nol persimpangan .
Pengenalan bias neuron memungkinkan Anda untuk menggeser kurva fungsi transfer secara horizontal (kiri / kanan) di sepanjang sumbu input sambil membiarkan bentuk / kelengkungan tidak berubah. Ini akan memungkinkan jaringan untuk menghasilkan keluaran acak yang berbeda dari standar dan karenanya Anda dapat menyesuaikan / menggeser pemetaan input-ke-output sesuai dengan kebutuhan khusus Anda.
Lihat di sini untuk penjelasan grafis: http://www.heatonresearch.com/wiki/Bias
sumber
Hanya untuk menambah semua ini sesuatu yang sangat hilang dan yang sisanya, kemungkinan besar, tidak tahu.
Jika Anda bekerja dengan gambar, Anda mungkin sebenarnya lebih suka untuk tidak menggunakan bias sama sekali. Secara teori, dengan cara itu jaringan Anda akan lebih independen dari besarnya data, seperti apakah gambar itu gelap, atau cerah dan cerah. Dan internet akan belajar melakukannya dengan mempelajari relativitas di dalam data Anda. Banyak jaringan saraf modern memanfaatkan ini.
Untuk data lain yang memiliki bias mungkin sangat penting. Itu tergantung pada jenis data apa yang Anda hadapi. Jika informasi Anda invarian-magnitudo --- jika memasukkan [1,0,0.1] harus mengarah ke hasil yang sama seperti jika memasukkan [100,0,10], Anda mungkin lebih baik tanpa bias.
sumber
Dalam beberapa percobaan dalam tesis master saya (mis. Halaman 59), saya menemukan bahwa bias mungkin penting untuk lapisan pertama, tetapi terutama pada lapisan yang sepenuhnya terhubung pada akhirnya tampaknya tidak memainkan peran besar.
Ini mungkin sangat tergantung pada arsitektur jaringan / dataset.
sumber
Bias memutuskan berapa banyak sudut yang Anda inginkan untuk memutar berat Anda.
Dalam bagan 2 dimensi, bobot dan bias membantu kita menemukan batas keputusan output. Katakanlah kita perlu membangun fungsi AND, pasangan input (p) -output (t) seharusnya
Sekarang kita perlu menemukan batas keputusan, batas ide seharusnya:
Lihat? W adalah tegak lurus terhadap batas kita. Jadi, kita katakan W memutuskan arah batas.
Namun, sulit untuk menemukan W yang benar pada awalnya. Sebagian besar, kami memilih nilai W asli secara acak. Dengan demikian, batas pertama adalah:
Sekarang batasnya adalah pareller ke sumbu y.
Kami ingin memutar batas, bagaimana?
Dengan mengubah W.
Jadi, kami menggunakan fungsi aturan pembelajaran: W '= W + P:
Oleh karena itu, dengan mengubah nilai b (bias), Anda dapat menentukan sudut antara W 'dan W. Itu adalah "aturan pembelajaran JST".
Anda juga bisa membaca Desain Jaringan Saraf oleh Martin T. Hagan / Howard B. Demuth / Mark H. Beale, bab 4 "Aturan Belajar Perceptron"
sumber
Secara khusus, Nate jawaban , zfy ini jawabannya , dan Pradi ini jawaban yang besar.
Dalam istilah yang lebih sederhana, bias memungkinkan lebih banyak variasi bobot untuk dipelajari / disimpan ... ( catatan samping : kadang-kadang diberi ambang batas tertentu). Bagaimanapun, lebih banyak variasi berarti bahwa bias menambahkan representasi lebih kaya dari ruang input ke bobot yang dipelajari / disimpan model. (Di mana bobot yang lebih baik dapat meningkatkan kekuatan menebak jaringan saraf)
Sebagai contoh, dalam model pembelajaran, hipotesis / dugaan dibatasi oleh y = 0 atau y = 1 diberi beberapa masukan, dalam mungkin beberapa tugas klasifikasi ... yaitu beberapa y = 0 untuk beberapa x = (1,1) dan beberapa y = 1 untuk beberapa x = (0,1). (Kondisi pada hipotesis / hasil adalah ambang yang saya bicarakan di atas. Perhatikan bahwa contoh saya mengatur input X menjadi masing-masing x = vektor ganda atau 2 bernilai, alih-alih input tunggal bernilai Nate x input dari beberapa koleksi X).
Jika kita mengabaikan bias, banyak input mungkin akhirnya diwakili oleh banyak bobot yang sama (yaitu bobot yang dipelajari sebagian besar terjadi di dekat titik asal (0,0). Model tersebut kemudian akan terbatas pada jumlah bobot yang lebih baik, alih-alih banyak banyak bobot yang lebih baik, itu bisa lebih baik dipelajari dengan bias. (Di mana bobot yang kurang dipelajari menyebabkan tebakan yang lebih buruk atau penurunan kekuatan tebakan jaringan saraf)
Jadi, optimal bahwa model belajar baik dekat dengan asal, tetapi juga, di tempat sebanyak mungkin di dalam ambang batas / keputusan. Dengan bias kita dapat mengaktifkan derajat kebebasan yang dekat dengan asal, tetapi tidak terbatas pada wilayah langsung asal.
sumber
Memperluas penjelasan @zfy ... Persamaan untuk satu input, satu neuron, satu output akan terlihat:
di mana x adalah nilai dari simpul input dan 1 adalah nilai dari bias node; y dapat langsung menjadi output Anda atau diteruskan ke suatu fungsi, seringkali merupakan fungsi sigmoid. Perhatikan juga bahwa bias bisa berupa konstanta, tetapi untuk membuat semuanya lebih sederhana, kami selalu memilih 1 (dan mungkin itu sangat umum sehingga @zfy melakukannya tanpa menunjukkan & menjelaskannya).
Jaringan Anda mencoba mempelajari koefisien a dan b untuk beradaptasi dengan data Anda. Jadi, Anda dapat melihat mengapa menambahkan elemen
b * 1
memungkinkannya agar lebih cocok dengan lebih banyak data: sekarang Anda dapat mengubah kemiringan dan intersep.Jika Anda memiliki lebih dari satu input, persamaan Anda akan terlihat seperti:
Perhatikan bahwa persamaan tersebut masih menggambarkan satu neuron, satu jaringan keluaran; jika Anda memiliki lebih banyak neuron, Anda cukup menambahkan satu dimensi ke matriks koefisien, untuk membuat multipleks input ke semua node dan menjumlahkan kembali setiap kontribusi node.
Anda dapat menulis dalam format vektor sebagai
yaitu meletakkan koefisien dalam satu array dan (input + bias) di yang lain Anda memiliki solusi yang Anda inginkan sebagai produk titik dari dua vektor (Anda perlu mengubah X untuk bentuk menjadi benar, saya menulis XT a 'X transposed')
Jadi pada akhirnya Anda juga dapat melihat bias Anda sebagai hanya satu input lagi untuk mewakili bagian dari output yang sebenarnya independen dari input Anda.
sumber
Selain jawaban yang disebutkan .. Saya ingin menambahkan beberapa poin lainnya.
Bias bertindak sebagai jangkar kami. Ini adalah cara bagi kita untuk memiliki semacam garis dasar di mana kita tidak pergi di bawah itu. Dalam hal grafik, pikirkan seperti y = mx + b itu seperti intersep-y dari fungsi ini.
output = input kali nilai bobot dan menambahkan nilai bias dan kemudian menerapkan fungsi aktivasi.
sumber
Untuk berpikir secara sederhana, jika Anda memiliki y = w1 * x di mana y adalah output Anda dan w1 adalah bobot bayangkan suatu kondisi di mana x = 0 maka y = w1 * x sama dengan 0 , Jika Anda ingin memperbarui berat Anda, Anda memiliki untuk menghitung berapa banyak perubahan dengan delw = target-y di mana target adalah output target Anda, dalam hal ini 'delw' tidak akan berubah karena y dihitung sebagai 0.Jadi, misalkan jika Anda dapat menambahkan beberapa nilai tambahan itu akan membantu y = w1 * x + w0 * 1 , di mana bias = 1 dan berat dapat disesuaikan untuk mendapatkan bias yang benar. Perhatikan contoh di bawah ini.
Dalam hal garis Slope-intercept adalah bentuk persamaan linear yang spesifik.
y = mx + b
periksa gambar
gambar
di sini b adalah (0,2)
jika Anda ingin meningkatkannya menjadi (0,3) bagaimana Anda akan melakukannya dengan mengubah nilai b yang akan menjadi bias Anda
sumber
Untuk semua buku ML yang saya pelajari, W selalu didefinisikan sebagai indeks konektivitas antara dua neuron, yang berarti semakin tinggi konektivitas antara dua neuron, semakin kuat sinyal akan ditransmisikan dari neuron ke neuron target atau Y = w * X sebagai hasil untuk mempertahankan karakter biologis neuron, kita perlu mempertahankan 1> = W> = -1, tetapi dalam regresi nyata, W akan berakhir dengan | W | > = 1 yang bertentangan dengan cara kerja Neuron, akibatnya saya usulkan W = cos (theta), sementara 1> = | cos (theta) | , dan Y = a * X = W * X + b sementara a = b + W = b + cos (theta), b adalah bilangan bulat
sumber
Dalam jaringan saraf:
Dengan tidak adanya bias, neuron tidak dapat diaktifkan dengan hanya mempertimbangkan jumlah tertimbang dari lapisan input. Jika neuron tidak diaktifkan, informasi dari neuron ini tidak melewati sisa jaringan saraf.
Nilai bias bisa dipelajari.
Secara efektif, bias = - ambang batas. Anda dapat menganggap bias sebagai cara mudah mendapatkan neuron untuk menghasilkan 1 - dengan bias yang sangat besar, sangat mudah bagi neuron untuk menghasilkan 1, tetapi jika biasnya sangat negatif, maka itu sulit.
secara ringkas: bias membantu dalam mengendalikan nilai di mana fungsi aktivasi akan memicu.
Ikuti video ini untuk lebih jelasnya
Beberapa tautan yang lebih bermanfaat:
geeksforgeeks
menuju data
sumber
a
dapat dilatih ketika gradien kea
selalu konstan?Istilah bias digunakan untuk menyesuaikan matriks hasil akhir seperti yang dilakukan intersep-y. Misalnya, dalam persamaan klasik, y = mx + c, jika c = 0, maka garis akan selalu melewati 0. Menambahkan istilah bias memberikan lebih banyak fleksibilitas dan generalisasi yang lebih baik untuk model Jaringan Saraf Tiruan kami.
sumber
Secara umum, dalam pembelajaran mesin kami memiliki rumus dasar ini Bias-Variance Tradeoff Karena di NN kami memiliki masalah Overfitting (masalah generalisasi model di mana perubahan kecil dalam data menyebabkan perubahan besar dalam hasil model) dan karena itu kami memiliki varian besar, memperkenalkan Bias kecil bisa banyak membantu. Mempertimbangkan formula di atas Bias-Variance Tradeoff , di mana bias dikuadratkan, maka memperkenalkan bias kecil dapat menyebabkan pengurangan varians banyak. Jadi, perkenalkan bias, ketika Anda memiliki varian besar dan bahaya overfitting.
sumber
Bias membantu untuk mendapatkan persamaan yang lebih baik
Bayangkan input dan output seperti fungsi
y = ax + b
dan Anda harus meletakkan garis yang benar antara input (x) dan output (y) untuk meminimalkan kesalahan global antara setiap titik dan garis, jika Anda mempertahankan persamaan seperti iniy = ax
, Anda akan memiliki satu parameter untuk adaptasi saja, bahkan jika Anda menemukan yang terbaika
meminimalkan kesalahan global itu akan agak jauh dari nilai yang diinginkanAnda dapat mengatakan bias membuat persamaan lebih fleksibel untuk beradaptasi dengan nilai terbaik
sumber