Terokai teknologi asas Python secara mendalam: cara melaksanakan algoritma penurunan kecerunan, contoh kod khusus diperlukan
Pengenalan:
Algoritma keturunan kecerunan ialah algoritma pengoptimuman yang biasa digunakan dan digunakan secara meluas dalam bidang pembelajaran mesin dan pembelajaran yang mendalam. Artikel ini akan menyelidiki teknologi asas Python, memperkenalkan prinsip dan proses pelaksanaan algoritma penurunan kecerunan secara terperinci, dan memberikan contoh kod khusus.
1. Pengenalan kepada Algoritma Keturunan Kecerunan
Algoritma penurunan kecerunan ialah algoritma pengoptimumannya adalah untuk mendekati nilai minimum fungsi kehilangan secara berperingkat. Secara khusus, langkah-langkah algoritma penurunan kecerunan adalah seperti berikut:
2. Proses pelaksanaan algoritma keturunan kecerunan
Dalam Python, kita boleh melaksanakan algoritma keturunan kecerunan melalui langkah berikut.
Kira fungsi kerugian
Kita perlu mentakrifkan fungsi kerugian untuk menilai prestasi model. Dalam algoritma penurunan kecerunan, fungsi kehilangan yang biasa digunakan ialah fungsi kehilangan ralat kuasa dua, yang ditakrifkan seperti berikut:
def loss_function(X, y, w, b): m = len(y) y_pred = np.dot(X, w) + b loss = (1/(2*m))*np.sum((y_pred - y)**2) return loss
Mengira kecerunan
Seterusnya, kita perlu mengira kecerunan fungsi kehilangan untuk berat w dan berat sebelah b. Kecerunan mewakili arah penurunan terpantas bagi fungsi objektif pada titik tertentu. Untuk fungsi kehilangan ralat kuasa dua, formula pengiraan kecerunan adalah seperti berikut:
def gradient(X, y, w, b): m = len(y) y_pred = np.dot(X, w) + b dw = (1/m)*np.dot(X.T, (y_pred - y)) db = (1/m)*np.sum(y_pred - y) return dw, db
Kemas kini parameter
Mengikut arah kecerunan dan alfa kadar pembelajaran, kami boleh mengemas kini parameter untuk menggerakkannya ke arah yang meminimumkan fungsi kehilangan.
def update_parameters(w, b, dw, db, learning_rate): w = w - learning_rate * dw b = b - learning_rate * db return w, b
Contoh Kod Penuh
Di bawah ialah contoh kod lengkap yang melaksanakan algoritma penurunan kecerunan.
import numpy as np def gradient_descent(X, y, learning_rate, num_iterations): m, n = X.shape w = np.random.randn(n) b = 0 for i in range(num_iterations): loss = loss_function(X, y, w, b) dw, db = gradient(X, y, w, b) w, b = update_parameters(w, b, dw, db, learning_rate) if i % 100 == 0: print(f"Iteration {i}: loss = {loss}") return w, b # 测试代码 X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 输入特征矩阵 y = np.array([4, 7, 10]) # 目标值 learning_rate = 0.01 # 学习率 num_iterations = 1000 # 迭代次数 w, b = gradient_descent(X, y, learning_rate, num_iterations) print(f"Optimized parameters: w = {w}, b = {b}")
Kesimpulan:
Artikel ini meneroka secara mendalam teknologi asas Python dan memperkenalkan prinsip dan proses pelaksanaan algoritma penurunan kecerunan secara terperinci. Melalui contoh kod khusus, pembaca boleh memahami dengan lebih intuitif butiran pelaksanaan algoritma penurunan kecerunan. Algoritma keturunan kecerunan ialah algoritma pengoptimuman yang sangat diperlukan dalam bidang pembelajaran mesin dan pembelajaran mendalam, dan sangat penting untuk menyelesaikan masalah praktikal. Saya harap artikel ini dapat membantu pembaca dan mencetuskan lebih banyak pemikiran dan perbincangan tentang teknologi asas Python.
Atas ialah kandungan terperinci Penerokaan mendalam tentang teknologi asas Python: bagaimana untuk melaksanakan algoritma penurunan kecerunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!