Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk melaksanakan algoritma keturunan kecerunan menggunakan Python?
Bagaimana untuk melaksanakan algoritma keturunan kecerunan menggunakan Python?
Algoritma penurunan kecerunan ialah algoritma pengoptimuman yang biasa digunakan yang digunakan secara meluas dalam pembelajaran mesin dan pembelajaran mendalam. Idea asas adalah untuk mencari titik minimum fungsi melalui lelaran, iaitu, untuk mencari nilai parameter yang meminimumkan ralat fungsi. Dalam artikel ini, kita akan belajar bagaimana untuk melaksanakan algoritma keturunan kecerunan dalam Python dan memberikan contoh kod khusus.
Idea teras algoritma penurunan kecerunan adalah untuk mengoptimumkan secara berulang sepanjang arah bertentangan kecerunan fungsi, dengan itu menghampiri titik minimum fungsi secara beransur-ansur. Dalam aplikasi praktikal, algoritma keturunan kecerunan dibahagikan kepada dua varian: keturunan kecerunan kelompok (Keturunan Kecerunan Batch) dan keturunan kecerunan stokastik (Keturunan Kecerunan Stokastik).
Pertama, kami memperkenalkan pelaksanaan algoritma penurunan kecerunan kelompok. Katakan kita ingin meminimumkan fungsi univariate f(x), dengan x ialah pembolehubah. Dengan menggunakan algoritma penurunan kecerunan, kita perlu mengira terbitan pertama bagi fungsi f(x) berkenaan dengan x, iaitu, f'(x) Derivatif ini mewakili kadar perubahan fungsi pada titik semasa. Kemudian, kami mengemas kini parameter x secara berulang, iaitu, x = x - learning_rate * f'(x), dengan learning_rate ialah kadar pembelajaran, yang digunakan untuk mengawal saiz langkah setiap kemas kini parameter.
Berikut ialah contoh kod Python bagi algoritma penurunan kecerunan kelompok:
def batch_gradient_descent(f, initial_x, learning_rate, num_iterations): x = initial_x for i in range(num_iterations): gradient = calculate_gradient(f, x) x = x - learning_rate * gradient return x def calculate_gradient(f, x): h = 1e-9 # 求导的步长,可以根据函数的特点来调整 return (f(x + h) - f(x - h)) / (2 * h)
Dalam kod di atas, fungsi batch_gradient_descent menerima empat parameter: f ialah fungsi yang akan dioptimumkan , initial_x ialah nilai Parameter awal, learning_rate ialah kadar pembelajaran, num_iteration ialah bilangan lelaran. Fungsi hitung_kecerunan digunakan untuk mengira kecerunan fungsi f pada titik x tertentu.
Seterusnya, kami memperkenalkan pelaksanaan algoritma penurunan kecerunan stokastik. Perbezaan antara algoritma keturunan kecerunan stokastik dan algoritma keturunan kecerunan kelompok ialah hanya sebahagian daripada data (bahagian sampel yang dipilih secara rawak) digunakan setiap kali parameter dikemas kini. Pendekatan ini lebih cekap dari segi pengiraan pada set data berskala besar, tetapi mungkin mengakibatkan penumpuan yang lebih perlahan.
Berikut ialah contoh kod Python bagi algoritma penurunan kecerunan stokastik:
import random def stochastic_gradient_descent(f, initial_x, learning_rate, num_iterations, batch_size): x = initial_x for i in range(num_iterations): batch = random.sample(train_data, batch_size) gradient = calculate_gradient(f, x, batch) x = x - learning_rate * gradient return x def calculate_gradient(f, x, batch): gradient = 0 for data in batch: x_val, y_val = data gradient += (f(x_val) - y_val) * x_val return gradient / len(batch)
Dalam kod di atas, fungsi stochastic_gradient_descent menerima lima parameter: f ialah fungsi yang akan dioptimumkan , initial_x ialah nilai Parameter awal, learning_rate ialah kadar pembelajaran, num_iteration ialah bilangan lelaran, dan batch_size ialah bilangan sampel yang digunakan dalam setiap lelaran. Fungsi calculate_gradient mengira kecerunan fungsi f pada titik x tertentu berdasarkan bahagian sampel yang dipilih secara rawak.
Ringkasnya, kami memperkenalkan cara menggunakan Python untuk melaksanakan algoritma penurunan kecerunan, dan memberikan contoh kod khusus bagi algoritma keturunan kecerunan kelompok dan algoritma keturunan kecerunan stokastik. Dengan memilih parameter dengan betul seperti kadar pembelajaran, bilangan lelaran dan bilangan sampel, kami boleh menggunakan algoritma penurunan kecerunan untuk mengoptimumkan pelbagai fungsi kompleks dan meningkatkan prestasi pembelajaran mesin dan model pembelajaran mendalam.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma keturunan kecerunan menggunakan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!