Rumah >pembangunan bahagian belakang >Tutorial Python >Penerokaan mendalam tentang teknologi asas Python: bagaimana untuk melaksanakan algoritma penurunan kecerunan

Penerokaan mendalam tentang teknologi asas Python: bagaimana untuk melaksanakan algoritma penurunan kecerunan

PHPz
PHPzasal
2023-11-08 18:03:391327semak imbas

Penerokaan mendalam tentang teknologi asas Python: bagaimana untuk melaksanakan algoritma penurunan kecerunan

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:

  1. Mulakan parameter secara rawak.
  2. Kira kecerunan fungsi kehilangan berkenaan dengan parameter.
  3. Kemas kini parameter berdasarkan arah kecerunan dan kadar pembelajaran.
  4. Ulang langkah 2 dan 3 sehingga syarat untuk algoritma berhenti dicapai.

2. Proses pelaksanaan algoritma keturunan kecerunan
Dalam Python, kita boleh melaksanakan algoritma keturunan kecerunan melalui langkah berikut.

  1. Sediakan data
    Pertama, kita perlu menyediakan set data, termasuk ciri input dan nilai sasaran. Dengan mengandaikan terdapat m sampel dan n ciri, kita boleh mewakili ciri input sebagai m×n matriks X, dan nilai sasaran sebagai vektor y panjang m.
  2. Parameter permulaan
    Kita perlu memulakan parameter model, termasuk berat w dan bias b. Secara umum, berat w boleh ditetapkan kepada vektor dimensi n, dan pincang b boleh dimulakan kepada skalar.
  3. 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
  4. 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
  5. 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
  6. Mengemas kini parameter secara berulang
    dengan mengulangi langkah 4 dan 5 sehingga syarat untuk algoritma berhenti dicapai. Syarat untuk algoritma berhenti boleh jadi bilangan maksimum lelaran dicapai, atau perubahan dalam fungsi kehilangan adalah kurang daripada ambang tertentu.
  7. 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn