Rumah > Artikel > pembangunan bahagian belakang > Penjelasan terperinci tentang algoritma penurunan kecerunan stokastik dalam Python
Algoritma penurunan kecerunan stokastik ialah salah satu daripada algoritma pengoptimuman yang biasa digunakan dalam pembelajaran mesin Ia merupakan versi optimum bagi algoritma penurunan kecerunan dan boleh menumpu kepada penyelesaian optimum global dengan lebih cepat. Artikel ini akan memperkenalkan algoritma turunan kecerunan stokastik dalam Python secara terperinci, termasuk prinsip, senario aplikasi dan contoh kodnya.
1. Prinsip Algoritma Keturunan Kecerunan Stokastik
Sebelum memperkenalkan algoritma penurunan kecerunan stokastik, mari kita perkenalkan algoritma secara ringkas . Algoritma penurunan kecerunan ialah salah satu daripada algoritma pengoptimuman yang biasa digunakan dalam pembelajaran mesin. Ideanya adalah untuk bergerak mengikut arah kecerunan negatif fungsi kehilangan sehingga ia mencapai nilai minimum. Katakan terdapat fungsi kehilangan f(x), x ialah parameter, maka algoritma penurunan kecerunan boleh dinyatakan sebagai:
x = x - learning_rate * gradient(f(x))
di mana kadar_pembelajaran ialah kadar pembelajaran, kecerunan(f(x)) ialah kehilangan fungsi f(x) kecerunan.
Algoritma keturunan kecerunan stokastik dibangunkan berdasarkan algoritma penurunan kecerunan Ia hanya menggunakan satu sampel pada setiap kemas kini parameter dan bukannya menggunakan kecerunan semua sampel, jadi ia lebih pantas. Khususnya, algoritma penurunan kecerunan stokastik boleh dinyatakan sebagai:
x = x - learning_rate * gradient(f(x, y))
di mana (x, y) mewakili sampel, kadar_pembelajaran ialah kadar pembelajaran, kecerunan(f(x, y)) ialah fungsi kehilangan f( x, y) kecerunan pada sampel (x, y).
Kelebihan algoritma penurunan kecerunan stokastik ialah ia pantas, tetapi kelemahannya ialah ia mudah jatuh ke dalam penyelesaian optimum tempatan. Untuk menyelesaikan masalah ini, orang ramai telah membangunkan beberapa algoritma penurunan kecerunan stokastik yang dipertingkatkan, seperti keturunan kecerunan stokastik kelompok (SGD kelompok mini) dan keturunan kecerunan momentum (SGD momentum).
Algoritma Keturunan Kecerunan Stokastik Berkelompok ialah algoritma pengoptimuman antara algoritma keturunan kecerunan dan algoritma keturunan kecerunan stokastik. Ia menggunakan kecerunan purata bilangan sampel tertentu untuk mengemas kini parameter pada setiap kemas kini, jadi ia tidak terdedah kepada pengaruh beberapa sampel seperti algoritma penurunan kecerunan stokastik. Khususnya, algoritma penurunan kecerunan stokastik kelompok boleh dinyatakan sebagai:
x = x - learning_rate * gradient(batch(f(x, y)))
di mana kelompok(f(x, y)) mewakili pengiraan pada data kelompok mini yang terdiri daripada sampel (x, y) dan jirannya. sampel Kecerunan fungsi kehilangan f(x, y).
Algoritma Penurunan Kecerunan Momentum ialah algoritma penurunan kecerunan stokastik yang boleh mempercepatkan penumpuan dengan mengumpul arah dan kecerunan sebelumnya saiz langkah. Khususnya, algoritma penurunan kecerunan momentum boleh dinyatakan sebagai:
v = beta*v + (1-beta)*gradient(f(x, y)) x = x - learning_rate * v
dengan v ialah momentum dan beta ialah parameter momentum, biasanya mengambil nilai 0.9 atau 0.99.
2. Senario Aplikasi Algoritma Kecerunan Stokastik
Algoritma keturunan kecerunan stokastik biasanya digunakan dalam latihan set data berskala besar kerana ia boleh menumpu kepada penyelesaian optimum global dengan lebih cepat. Senario yang berkenaan termasuk tetapi tidak terhad kepada aspek berikut:
3. Contoh kod algoritma penurunan kecerunan stokastik
Kod berikut ialah contoh menggunakan algoritma keturunan kecerunan stokastik untuk melatih model regresi linear:
import numpy as np class LinearRegression: def __init__(self, learning_rate=0.01, n_iter=100): self.learning_rate = learning_rate self.n_iter = n_iter self.weights = None self.bias = None def fit(self, X, y): n_samples, n_features = X.shape self.weights = np.zeros(n_features) self.bias = 0 for _ in range(self.n_iter): for i in range(n_samples): y_pred = np.dot(X[i], self.weights) + self.bias error = y[i] - y_pred self.weights += self.learning_rate * error * X[i] self.bias += self.learning_rate * error def predict(self, X): return np.dot(X, self.weights) + self.bias
Dalam kod, LinearRegression ialah model regresi linear ringkas yang menggunakan algoritma penurunan kecerunan stokastik untuk melatih parameter. Dalam fungsi muat, hanya kecerunan satu sampel digunakan untuk mengemas kini parameter bagi setiap lelaran semasa latihan.
4. Ringkasan
Algoritma penurunan kecerunan stokastik ialah salah satu daripada algoritma pengoptimuman yang biasa digunakan dalam pembelajaran mesin dan mempunyai kelebihan besar apabila melatih set data berskala besar. Sebagai tambahan kepada algoritma penurunan kecerunan stokastik, terdapat juga versi yang dipertingkatkan seperti algoritma penurunan kecerunan stokastik kelompok dan algoritma keturunan kecerunan momentum. Dalam aplikasi praktikal, adalah perlu untuk memilih algoritma pengoptimuman yang sesuai berdasarkan masalah tertentu.
Atas ialah kandungan terperinci Penjelasan terperinci tentang algoritma penurunan kecerunan stokastik dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!