Makine öğrenmez: derin öğrenme eğitimi garip beceriler 3 grup gradyan iniş stokastik gradyan inişi

Bir, gradyan iniş yöntemi

Makine öğrenimi algoritmalarında, birçok denetimli öğrenme modeli için, orijinal model için bir kayıp işlevi oluşturmak gerekir ve bir sonraki adım, optimum parametreleri bulmak için bir optimizasyon algoritması aracılığıyla kayıp işlevini optimize etmektir. Makine öğrenimi parametrelerini çözmeye yönelik optimizasyon algoritmaları arasında en çok kullanılan, gradyan inişine (Gradient Descent, GD) dayalı optimizasyon algoritmasıdır.

Gradyan iniş yönteminin birçok avantajı vardır: Bunların arasında, gradyan iniş yönteminin çözüm sürecinde, kayıp fonksiyonunun yalnızca ilk türevinin çözülmesi gerekir ve hesaplama maliyeti nispeten küçüktür, bu da gradyan iniş yöntemini birçok büyük ölçekli veri setine uygulanabilir kılar. Gradyan iniş yönteminin anlamı, mevcut noktanın gradyan yönü boyunca yeni bir yineleme noktası bulmaktır.

Temel fikir şu şekilde anlaşılabilir: dağda belirli bir noktadan başlıyoruz, en dik eğimi buluyoruz ve bir noktaya ulaştıktan sonra bir adım atıyoruz (yani eğimin yönünü buluyoruz), en dik eğimi bulup devam edene kadar bir adım daha atıyoruz. Bu şekilde en "düşük" noktaya gidin (minimum maliyet fonksiyonu yakınsama noktası).

İkincisi, gradyan iniş yönteminin deformasyon formu

Gradyan iniş yöntemini kullanma sürecinde, esas olarak aşağıdaki farklı varyantlar vardır: parti, mini parti ve SGD. Temel fark, farklı deformasyonların eğitim verilerinin seçiminde olmasıdır.

1. Toplu gradyan iniş yöntemi BGD

Toplu Gradyan İnişi (Toplu Gradyan İnişi), gradyan yönünü çözmek için tüm numunelerin hesaplanması yoluyla tüm veri setini hedefler.

Toplu gradyan iniş yönteminin kayıp işlevi:

Toplu gradyan inişinin yinelemeli formülü ayrıca şu şekilde elde edilir:

Her bir yineleme adımı için, eğitim setindeki tüm veriler kullanılır.Örnek sayısı büyükse, bu yöntemin yineleme hızını hayal edebilirsiniz!

Avantajlar: küresel optimal çözüm; paralel olarak uygulanması kolay;

Dezavantajlar: Numune sayısı fazla olduğunda eğitim süreci çok yavaş olacaktır.

Yineleme sayısı açısından, BGD yinelemelerinin sayısı nispeten azdır. Yinelemeli yakınsama eğrisinin şematik diyagramı aşağıdaki gibi ifade edilebilir:

2. Küçük toplu gradyan iniş yöntemi MBGD

Yukarıda bahsedilen yığın gradyan yönteminde, tüm örnekler her bir yinelemede kullanılır Büyük ölçekli makine öğrenimi uygulamaları gibi veri miktarının özellikle büyük olduğu durumlar için, her yinelemedeki tüm örneklerin çözülmesi çok fazla hesaplama maliyeti gerektirir. Her yinelemede tüm örnekleri bazı örneklerle değiştirmek mümkün müdür? Bu fikirden yola çıkarak, mini parti kavramı ortaya çıktı.

Eğitim setindeki örnek sayısının 1000 olduğunu varsayarsak, her bir mini serinin yalnızca bir alt kümesidir.Her bir mini serinin 10 örnek içerdiği varsayıldığında, tüm eğitim veri seti 100 mini partiye bölünebilir . Sözde kod aşağıdaki gibidir:

3. Stokastik gradyan iniş yöntemi SGD

Stokastik gradyan iniş algoritması (stokastik gradyan iniş) özel bir mini yığın gradyan iniş durumu olarak kabul edilebilir, yani stokastik gradyan iniş yönteminde, modeldeki parametreler bir seferde yalnızca bir örneğe göre ayarlanır ve bu da yukarıdakine eşdeğerdir. B = 1 durumunda mini parti gradyan düşüşü, her bir mini partide yalnızca bir eğitim numunesi olduğu anlamına gelir.

Stokastik gradyan iniş yönteminin optimizasyon süreci şu şekildedir:

Stokastik gradyan inişi, her örnek için bir kez yinelemeli olarak güncellenir.Örnek boyutu büyükse (örneğin, yüzbinlerce), teta'yı optimum düzeye yinelemek için yalnızca on binlerce veya binlerce örnek kullanılabilir. Çözüldü, yukarıdaki toplu gradyan inişiyle karşılaştırıldığında, bir yineleme yüz binlerce eğitim örneği gerektirir ve bir yineleme optimal değildir. 10 kez yinelerseniz, eğitim örneklerini 10 kez geçmeniz gerekir. Bununla birlikte, SGD ile ilgili bir sorun, BGD'den daha fazla gürültüye sahip olmasıdır, böylece SGD, her yinelemede genel optimizasyon yönüne doğru hareket etmez.

Avantajlar: hızlı eğitim hızı;

Dezavantajlar: Azaltılmış doğruluk, global optimal değil; paralel olarak uygulanması kolay değil.

Yineleme sayısı açısından bakıldığında, SGD yinelemelerinin sayısı büyüktür ve çözüm uzayındaki arama süreci kör görünmektedir. Yinelemeli yakınsama eğrisinin şematik diyagramı aşağıdaki gibi ifade edilebilir:

Üç, popüler gradyan iniş anlayışı

(1) Toplu gradyan inişi - tüm eğitim örneklerinin kayıp fonksiyonunu en aza indirin (tüm eğitim verilerinin hatalarını aldıktan sonra parametreleri güncelleyin), böylece nihai çözüm global optimal çözüm olur, yani çözülecek parametre risk fonksiyonu olur En küçük. Toplu gradyan inişi, dağın belirli bir noktasında etrafa bakmaya, en hızlı inişin yönünü (çok boyutlu) hesaplamaya ve sonra bir adım atmaya benzer Bu bir yinelemedir. Toplu gradyan inişinin bir yinelemesi tüm bunları güncelleyecek ve her güncelleme en dik yöne doğru hareket edecektir.

(2) Stokastik gradyan inişi - her numunenin kayıp fonksiyonunu en aza indirin. Her yinelemede elde edilen kayıp fonksiyonu global optimuma doğru olmasa da, daha büyük genel yön global optimum yönündedir. Küresel optimal çözüme yakındır. Rastgele, teta'yı ayarlamak için tüm örneklerimi yaklaşık olarak tahmin etmek için örnekte bir örnek kullandığım anlamına gelir. En büyük eğime sahip yönü hesaplamaz, ancak bir seferde yalnızca bir boyut seçer ve bir adım atar; theta, ileriye yürümenin titiz olmadığını bildirdi.

Dördüncü olarak, Batch_Size açıklaması

Batch_Size (batch size), makine öğrenmesinde önemli bir parametredir ve birçok çelişkiyi içerir ve aşağıda tek tek genişletilecektir.

1. Öncelikle, neden Batch_Size parametresine ihtiyacımız var?

Toplu İş seçimi ilk önce alçalma yönünü belirler. Veri seti nispeten küçükse, tam veri seti (Tam Toplu Öğrenme) formunu kullanmak tamamen mümkündür.Bunun en az iki faydası vardır: Birincisi, tam veri seti tarafından belirlenen yön, örnek popülasyonu daha iyi temsil edebilir, dolayısıyla daha doğru Aşırı değerin yönüne doğru. İkincisi, farklı ağırlıkların gradyan değerleri büyük ölçüde değiştiğinden, küresel bir öğrenme oranı seçmek zordur. Tam Toplu Öğrenme, her ağırlığı yalnızca gradyan sembolüne göre ayrı ayrı güncellemek için Rprop'u kullanabilir.

Daha büyük veri kümeleri için, yukarıdaki iki avantaj iki dezavantaja dönüşmüştür: Birincisi, veri kümelerinin ve bellek sınırlamalarının muazzam büyümesiyle, tüm verileri aynı anda yüklemek giderek daha imkansız hale gelir. İkincisi, gruplar arasındaki örnekleme farklılıklarından dolayı Rprop yolunda yineleyerek, her zamanın gradyan düzeltme değerleri birbirini iptal eder ve düzeltilemez. Bu, daha sonra RMSProp'un uzlaşma planıydı.

2. Tam Toplu Öğrenme büyük veri kümeleri için uygun olmadığına göre, diğer uca gitmeye ne dersiniz?

Diğer uç nokta, bir seferde yalnızca bir örnek eğitmektir, yani Batch_Size = 1. Bu Çevrimiçi Öğrenimdir. Ortalama kare hata maliyet fonksiyonundaki doğrusal nöronun hata yüzeyi bir paraboldür ve enine kesit bir elipstir. Çok katmanlı nöronlar ve doğrusal olmayan ağlar için, yerel olarak hala yaklaşık olarak paraboliktir. Çevrimiçi öğrenmeyi kullanarak, her bir düzeltme yönü, ilgili örneğin gradyan yönüne göre düzeltilir ve yakınsama elde etmek zordur. resim gösterdiği gibi:

3. Orta düzeyde bir Batch_Size değeri seçebilir misiniz?

Tabii ki, bu Mini-Batches Learning'dir. Çünkü veri seti yeterliyse, veri eğitiminin yarısı (veya hatta çok daha azı) ile hesaplanan gradyan neredeyse tüm verilerle eğitilen gradyan ile aynıdır.

4. Makul bir aralık içinde, Batch_Size'ı artırmanın faydaları nelerdir?

Bellek kullanımı geliştirildi ve büyük matris çarpımının paralelleştirme verimliliği artırıldı.

Bir dönemi (tam veri kümesi) çalıştırmak için gereken yineleme sayısı azaltılır ve aynı miktarda veri için işlem hızı daha da hızlandırılır.

Belirli bir aralık içinde, genel olarak konuşursak, Batch_Size ne kadar büyük olursa, alçalan yön o kadar doğru belirlenir ve eğitim şoku o kadar küçük olur.

5. Batch_Size'yi körü körüne artırmanın dezavantajları nelerdir?

Bellek kullanımı arttı, ancak bellek kapasitesi bunu sürdüremeyebilir.

Bir dönemi (tam veri seti) çalıştırmak için gereken yineleme sayısı azaltılır Aynı doğruluğu elde etmek için harcanan Batch_Size belirli bir ölçüde artar ve belirlenen bırakma yönü temelde artık değişmez.

6. Batch_Size'ı ayarlamak eğitim etkisini nasıl etkiler?

LeNet'in MNIST veri seti üzerindeki etkisi. MNIST el yazısıyla yazılmış bir standart kitaplık, Theano çerçevesini kullanıyorum. Bu bir Python derin öğrenme kitaplığıdır. Kolay kurulum (sadece birkaç komut satırı), basit hata ayıklama (yerleşik Profil), GPU / CPU hepsini alır, resmi eğitim oldukça eksiksizdir, destek modülleri çok zengindir (CNN'ler hariç, ancak aynı zamanda RBM / DBN / LSTM / RBM-RNN / SdA'yı da destekler / MLP'ler). Üst katmanda, GRU / JZS1, JZS2, JZS3 gibi daha yeni yapıları destekleyen ve Adagrad / Adadelta / RMSprop / Adam gibi optimizasyon algoritmalarını destekleyen Keras kapsüllemesi vardır. resim gösterdiği gibi:

Çalışma sonucu, mutlak zamanın standartlaştırıldığı yukarıdaki şekilde gösterilmektedir. Operasyon sonuçları, yukarıdaki analizle doğrulanır:

Batch_Size çok küçük, algoritma 200 dönem içinde birleşmiyor.

Batch_Size artışıyla aynı miktarda verinin işlenmesi daha hızlıdır.

Batch_Size arttıkça, aynı doğruluğa ulaşmak için gereken dönem sayısı artar.

Yukarıdaki iki faktör arasındaki çelişki nedeniyle Batch_Size, optimum zamana ulaşmak için belirli bir süreye çıkarılır.

Nihai yakınsama doğruluğu farklı yerel ekstremalara düşeceğinden, en iyi nihai yakınsama doğruluğunu elde etmek için Batch_Size belirli bir süreye yükseltilir.

Supreme Law: QQ WeChat'te "Laolai" etiketini inceleyecek
önceki
% 10'dan az kullanım oranı? Muhabir soruşturması: utanç verici şarj yığını
Sonraki
Dünyanın en büyük 50 icatından biri olan "engellemeyi engelleyen eser" olarak bilinen Batie vahşice yıkıldı
Makine öğrenmez: bir karar ağacından xgboost'a
Grafik kartlarının fiyatları çılgınca yükseldi, tasarruf etmek için bunları şimdi nasıl satın alabilirim?
Ekran siyah teknolojiye katılacak, PC HDR çağına girmek üzere
Makine öğrenmiyor: derin öğrenme eğitimi ilginç beceriler 2 L1 düzenleme ve L2 düzenleme
"League of Legends", saldırgan 267.000 oyuncuyu üç ay süreyle uzaklaştırdı: 130.000'den fazla güç tesviyesi
Apple iPhone7'den daha popüler! OPPO R11 cep telefonu kılıfı önerisi
Makine öğrenmez: derin öğrenme eğitimi sapıkça becerileri 1 toplu normalleştirme Toplu Normalleştirme
Ryzen R5 ana bilgisayarını kurmak çok ucuz! 3000 yuan oyun bilgisayarı yapılandırma ekranı
Ağustos ayında, Jingdong bilgisayar sıralaması açıklandı. Oyuncuların en çok nereye yatırım yapmak istediklerini görün!
Birlikte akıllı evin geliştirilmesini isteyin, Xiuzhou Çin akıllı ev sanayi parkı Hangzhou tanıtımı
Fantezi bırak, sadeliğe geri dön! Apple iPhone7 / 7Plus için önerilir
To Top