Kursus Matematika untuk AI · Pelajaran 10 dari 180

Membaca Derivasi AI: Temukan Baris Pertama yang Rusak

Pelajari cara membaca derivasi matematika baris demi baris, mengungkap asumsi tersembunyi, dan men-debug identitas mean squared error yang keliru dengan NumPy.

Bagikan artikel ini

Tiga prediksi model menghasilkan residual −2-2, 00, dan 22. Residual bertanda saling meniadakan, sehingga rata-ratanya nol. Prediksi di tengah tepat, tetapi dua lainnya salah, dan mean squared error-nya adalah 8/38/3. Derivasi yang tampak masuk akal dapat mengubah loss nyata itu menjadi nol hanya dengan memindahkan satu kuadrat melewati satu operasi rata-rata.

Cara tercepat men-debug halaman aljabar bukan dengan menatap jawaban akhirnya. Mulai dari atas dan tanyakan mengapa setiap baris mengikuti baris sebelumnya. Berhentilah pada tanda sama dengan pertama yang rusak. Semua baris berikutnya mungkin merupakan aritmetika yang benar, tetapi diterapkan pada ekspresi yang bukan lagi ekspresi yang diklaim dihitung oleh derivasi.

Pada akhir pelajaran ini, Anda akan mampu membaca derivasi baris demi baris, menyebutkan aturan di balik setiap transformasi, dan mengungkap asumsi yang tidak dinyatakan tentang domain, pembagi, tanda, atau rentang indeks. Anda juga akan men-debug perhitungan loss dalam aljabar dan NumPy tanpa kalkulus atau optimisasi.

Pelajaran ini menggabungkan dua keterampilan sebelumnya. Pelajaran 6 tentang penjumlahan dan agregasi loss menjelaskan bagaimana batas dan perataan mengubah loss berindeks menjadi satu angka. Pelajaran 9 tentang persamaan dan himpunan solusi menunjukkan mengapa langkah aljabar harus mempertahankan klaim matematika yang sedang dibuat. Situs pendamping resmi Mathematics for Machine Learning dan bab pengantarnya memotivasi fondasi matematika sebagai alat untuk memahami model, men-debug metode, dan membuat asumsi terlihat. Metode audit dan contoh di bawah ini adalah materi orisinal.

Setiap baris membuat klaim lokal

Derivasi adalah rangkaian pernyataan matematika yang setiap baris barunya didukung oleh definisi, aturan aljabar, asumsi yang dinyatakan, atau hasil yang sudah dibuktikan. Membacanya dengan baik adalah tugas lokal. Di antara dua baris berdekatan, ajukan empat pertanyaan:

  1. Apa yang berubah: simbol, operasi, batas, atau seluruh ekspresi?
  2. Definisi atau aturan aljabar mana yang mengizinkan perubahan tepat itu?
  3. Kondisi apa yang membuat aturan tersebut sah?
  4. Apakah baris baru membuat klaim yang sama, atau hanya klaim yang berkaitan?

Simbol yang menghubungkan ekspresi memberi tahu jenis klaim yang harus diaudit.

SimbolDibaca sebagaiPerannya dalam derivasi
:=:=“didefinisikan sebagai”Memperkenalkan nama atau konvensi; sisi kanan menentukan arti sisi kiri
==“memiliki nilai yang sama dengan”Menyatakan kesamaan di bawah domain dan asumsi saat ini
  ⟺  \iff“jika dan hanya jika”Menyatakan dua kondisi memiliki solusi yang persis sama
⇒\Rightarrow“mengimplikasikan”Hanya mempertahankan satu arah; arah sebaliknya memerlukan alasan terpisah
≈\approx“kira-kira sama dengan”Melaporkan pendekatan numerik, bukan identitas eksak

Metode ini sengaja memisahkan dua pertanyaan. “Apakah penulis mencapai jawaban yang diharapkan?” adalah pengujian tujuan. “Apakah setiap langkah mempertahankan klaim?” adalah pengujian rute. Tujuan yang benar tetap dapat dicapai melalui penalaran yang tidak valid, sama seperti tujuan yang keliru dapat mengikuti banyak langkah valid setelah satu kesalahan substitusi awal.

Satu kuadrat yang dipindahkan menghapus loss nyata

Untuk NN contoh, misalkan y^i\hat y_i adalah prediksi ke-ii, yiy_i targetnya, dan rir_i residualnya. Kita definisikan

ri:=y^i−yir_i:=\hat y_i-y_i

dan mendefinisikan mean squared error (MSE) sebagai

LMSE:=1N∑i=1Nri2,N>0.L_{\mathrm{MSE}}:=\frac{1}{N}\sum_{i=1}^{N}r_i^2, \qquad N>0.

Syarat N>0N>0 bukan hiasan: rata-rata aritmetika membagi dengan jumlah suku, sehingga batch kosong tidak memiliki MSE menurut definisi ini.

Sekarang gunakan tiga residual,

(r1,r2,r3)=(−2,0,2).(r_1,r_2,r_3)=(-2,0,2).

Buka langkah-langkah dalam peta derivasi ini. Kata status dan simbol mengulang petunjuk warna, dan setiap ringkasan dapat dioperasikan dengan papan ketik melalui kontrol buka-tutup bawaan peramban.

Audit derivasi loss dari definisinya sampai nilai nol yang diklaim.

Buka baris mana pun untuk memeriksa aturan dan asumsinya. Baris 4 berisi tanda sama dengan pertama yang rusak.

  1. ValidBaris 1L_MSE := (1/3) Σᵢ₌₁³ rᵢ²
    Mengapa langkah ini berhasil atau gagal
    Baris ini menerapkan definisi MSE dengan N = 3.
    Kondisi yang perlu diperiksa
    Batch berisi tepat tiga residual, sehingga N = 3 > 0.
  2. ValidBaris 2= (1/3)((−2)² + 0² + 2²)
    Mengapa langkah ini berhasil atau gagal
    Substitusikan tiga nilai residual dan uraikan jumlah hingga.
    Kondisi yang perlu diperiksa
    Rentang indeks tetap i = 1, 2, 3 dalam urutan yang sama.
  3. ValidBaris 3= (1/3)(4 + 0 + 4) = 8/3
    Mengapa langkah ini berhasil atau gagal
    Kuadratkan setiap residual, jumlahkan tiga nilai kuadrat, lalu bagi dengan 3.
    Kondisi yang perlu diperiksa
    Aritmetika bilangan real biasa berlaku.
  4. Tidak validBaris 4= ((1/3) Σᵢ₌₁³ rᵢ)²
    Mengapa langkah ini berhasil atau gagal
    Kuadrat umumnya tidak dapat dipindahkan ke luar jumlah atau rata-rata. Ekspresi baru ini adalah kuadrat rata-rata residual, bukan MSE.
    Kondisi yang perlu diperiksa
    Kesamaan memerlukan kondisi khusus pada residual; kondisi itu tidak dinyatakan dan salah untuk contoh ini.
  5. Valid untuk ekspresi baruBaris 5= ((−2 + 0 + 2)/3)²
    Mengapa langkah ini berhasil atau gagal
    Baris ini menguraikan rata-rata residual yang diperkenalkan pada Baris 4 dengan benar.
    Kondisi yang perlu diperiksa
    Ketiga residual dan penyebut tidak berubah.
  6. Kesimpulan tentang MSE tidak validBaris 6= 0² = 0, oleh karena itu L_MSE = 0
    Mengapa langkah ini berhasil atau gagal
    Nol memang benar untuk kuadrat rata-rata residual, tetapi Baris 4 telah memutus hubungannya dengan MSE.
    Kondisi yang perlu diperiksa
    Kesimpulan ini diam-diam mengasumsikan kesamaan yang tidak valid pada Baris 4.

Tiga baris pertama menghitung loss sebenarnya:

LMSE=(−2)2+02+223=83≈2.6667.L_{\mathrm{MSE}} =\frac{(-2)^2+0^2+2^2}{3} =\frac{8}{3} \approx2.6667.

Baris 4 menggantinya dengan besaran yang berbeda:

LSMR:=(13∑i=13ri)2=(−2+0+23)2=0.L_{\mathrm{SMR}} :=\left(\frac{1}{3}\sum_{i=1}^{3}r_i\right)^2 =\left(\frac{-2+0+2}{3}\right)^2 =0.

Di sini LSMRL_{\mathrm{SMR}} adalah nama untuk kuadrat rata-rata residual. Kesalahan berlawanan saling meniadakan sebelum kuadrat diterapkan. MSE menguadratkan terlebih dahulu, sehingga −2-2 dan 22 masing-masing menyumbang 44. Urutan operasi mengubah apa yang diukur oleh angka tersebut.

Contoh iiResidual rir_iKontribusi ke ∑ri\sum r_iKontribusi ke ∑ri2\sum r_i^2
1−2-2−2-244
2000000
3222244
Total0088

Langkah ilegal itu juga terlihat jika kuadrat jumlah diekspansi:

(r1+r2+r3)2=r12+r22+r32+2r1r2+2r1r3+2r2r3.(r_1+r_2+r_3)^2 =r_1^2+r_2^2+r_3^2 +2r_1r_2+2r_1r_3+2r_2r_3.

Suku silang tidak otomatis lenyap, dan rata-rata di luar menyumbang faktor 1/91/9, bukan 1/31/3. Jadi memindahkan kuadrat mengubah suku sekaligus skalanya.

Aturan selalu membawa syaratnya

Banyak derivasi menyembunyikan informasi terpenting dalam frasa seperti “untuk x≠0x\ne0” atau “di atas bilangan real.” Hilangkan syarat itu, dan identitas yang sah dapat berubah menjadi klaim universal yang salah.

Perhatikan pembatalan:

xx=1hanya ketika x≠0.\frac{x}{x}=1 \qquad \text{hanya ketika }x\ne0.

Pada x=0x=0, sisi kiri tidak terdefinisi. Demikian pula, membagi persamaan x(x+1)=xx(x+1)=x dengan xx menghasilkan x+1=1x+1=1, tetapi hanya dengan asumsi tambahan x≠0x\ne0. Sekilas, orang mungkin mengira x=0x=0 dan x=−1x=-1 adalah solusi. Audit baris menolak dugaan itu segera setelah persamaan asli disederhanakan:

x(x+1)=x  ⟺  x2=0  ⟺  x=0.x(x+1)=x \iff x^2=0 \iff x=0.

Pembagian dengan xx yang menggoda itu kebetulan menghasilkan x=0x=0 dari x+1=1x+1=1, meskipun langkah tersebut mengasumsikan x≠0x\ne0. Hasilnya bertentangan dengan izinnya sendiri. Rute yang aman menyusun ulang persamaan tanpa membagi dengan ekspresi yang mungkin nol.

Pemangkatan kuadrat juga memerlukan pemeriksaan arah. Jika a=ba=b, maka a2=b2a^2=b^2. Kebalikannya tidak mengikuti tanpa informasi tambahan: a2=b2a^2=b^2 mengizinkan a=ba=b atau a=−ba=-b. Karena itu, menguadratkan kedua sisi persamaan dapat menambahkan kandidat yang harus diperiksa pada persamaan asli.

Akar kuadrat juga membawa syarat tanda. Untuk xx real,

x2=∣x∣,\sqrt{x^2}=|x|,

bukan selalu xx. Mensubstitusikan x=−3x=-3 memberi (−3)2=3\sqrt{(-3)^2}=3, sedangkan penggantian tak dinyatakan x2=x\sqrt{x^2}=x akan memberi −3-3. Akibatnya, x2=9x^2=9 memiliki dua solusi real, x=3x=3 dan x=−3x=-3; hanya menulis x=9x=\sqrt9 menghilangkan solusi negatif.

Syarat-syarat ini tidak membuat derivasi menjadi rewel. Syarat ini mengidentifikasi input mana yang benar-benar dicakup oleh argumen.

Batas dan definisi harus tetap

Derivasi berindeks memiliki keadaan tersembunyi lain: rentangnya. Kedua ekspresi ini biasanya tidak sama:

∑i=1Nri2dan∑i=1N−1ri2.\sum_{i=1}^{N}r_i^2 \qquad\text{dan}\qquad \sum_{i=1}^{N-1}r_i^2.

Yang kedua menghilangkan contoh NN. Mengganti nama indeks dummy tidak masalah,

∑i=1Nri2=∑j=1Nrj2,\sum_{i=1}^{N}r_i^2=\sum_{j=1}^{N}r_j^2,

karena batas dan pola sukunya tetap sama. Mengubah batas, penyebut, atau operasi adalah perubahan matematika yang memerlukan alasan.

Definisi memerlukan kedisiplinan yang sama. Setelah ri:=y^i−yir_i:=\hat y_i-y_i, baris berikutnya tidak boleh diam-diam menggunakan ri:=yi−y^ir_i:=y_i-\hat y_i. Penguadratan menyamarkan pembalikan tanda ini karena ri2=(−ri)2r_i^2=(-r_i)^2, tetapi rata-rata tanpa kuadrat akan berubah tanda. Derivasi yang hanya bekerja karena operasi berikutnya menutupi definisi yang tidak konsisten tetaplah rusak.

NumPy membuat urutan terlihat

NumPy mendokumentasikan np.square sebagai operasi per elemen: setiap residual dikuadratkan sementara bentuk input dipertahankan. NumPy mendokumentasikan np.mean sebagai reduksi aritmetika pada sumbu yang dipilih, atau pada array yang diratakan secara default. Karena itu, penyarangan keduanya mengodekan urutan derivasi.

import numpy as np

predictions = np.array([8.0, 10.0, 12.0])
targets = np.array([10.0, 10.0, 10.0])
residuals = predictions - targets

mse = np.mean(np.square(residuals))
squared_mean_residual = np.square(np.mean(residuals))

print(residuals)
print(mse)
print(squared_mean_residual)
[-2.  0.  2.]
2.6666666666666665
0.0

np.mean(np.square(residuals)) berarti “kuadratkan setiap nilai, lalu ratakan.” np.square(np.mean(residuals)) berarti “ratakan lebih dahulu, lalu kuadratkan satu hasil itu.” Tanda kurung adalah pohon derivasi ringkas; menukar pemanggilan mengubah besaran yang dihitung.

Uji numerik memiliki kekuatan logis yang tidak simetris. Contoh penyangkal di atas cukup untuk memfalsifikasi klaim universal

1N∑i=1Nri2=(1N∑i=1Nri)2untuk setiap urutan residual.\frac{1}{N}\sum_{i=1}^{N}r_i^2 =\left(\frac{1}{N}\sum_{i=1}^{N}r_i\right)^2 \quad\text{untuk setiap urutan residual}.

Satu kegagalan membantah “untuk setiap.” Satu keberhasilan tidak membuktikannya. Dengan residual (2,2,2)(2,2,2), kedua ekspresi sama-sama bernilai 44, tetapi kasus yang lolos itu tidak dapat menetapkan identitas untuk semua urutan lain. Pembuktian umum memerlukan aljabar yang mencakup domain yang dinyatakan; pengujian sangat baik untuk menemukan contoh penyangkal dan kesalahan implementasi.

Bawa audit ke kode dan makalah AI

Persamaan loss dalam kode model sering memadatkan beberapa langkah: mendefinisikan residual, melakukan kuadrat per elemen, mereduksi pada sumbu contoh, dan membagi dengan hitungan. Audit baris membuat setiap langkah dapat diperiksa. Tulis rumus yang dimaksud, cocokkan satu operasi kode dengan setiap operasi matematika, gunakan contoh yang sama dalam reduksi yang sama, dan nyatakan apa yang terjadi ketika batch kosong.

Kebiasaan yang sama dapat diterapkan pada derivasi yang lebih panjang tanpa matematika yang lebih maju. Sisakan ruang untuk aturan dan syaratnya. Tandai := ketika suatu besaran diberi nama. Gunakan == hanya ketika dua ekspresi memiliki nilai yang sama di bawah asumsi aktif. Gunakan   ⟺  \iff hanya ketika kedua arah mempertahankan himpunan solusi yang sama. Ketika rutenya rusak, laporkan transisi buruk pertama—bukan sekadar angka akhir yang mencurigakan.

Praktik ini menjadi jembatan dari aljabar prasyarat ke modul berikutnya dalam kursus. Notasi yang padat menjadi mudah dikelola ketika setiap baris harus menjawab satu pertanyaan kecil: apa yang berubah, dan mengapa perubahan itu diizinkan?

Uji pemahaman Anda

Pertanyaan 1

Klasifikasikan setiap penghubung: a := b + 1; x/x = 1 untuk x ≠ 0; x² = 9 ⇔ x = 3; dan 1/3 ≈ 0.333. Jelaskan klaim yang dibuat setiap simbol.

Tampilkan solusi langkah demi langkah
  • Dalam a:=b+1a:=b+1, :=:= memperkenalkan sebuah definisi: ekspresi b+1b+1 menentukan arti nama baru aa.
  • Dalam x/x=1x/x=1 untuk x≠0x\ne0, == menyatakan kesamaan bersyarat. Ini valid pada domain dengan syarat bahwa nilainya bukan nol dan tidak terdefinisi pada x=0x=0.
  • Klaim x2=9  ⟺  x=3x^2=9\iff x=3 salah di atas bilangan real. Kondisi kiri juga memiliki x=−3x=-3, sehingga kedua sisi tidak memiliki himpunan solusi yang sama. Penggantian yang valid adalah x2=9  ⟺  x∈{−3,3}x^2=9\iff x\in\{-3,3\}.
  • Dalam 1/3≈0.3331/3\approx0.333, ≈\approx menandai pendekatan. Desimal yang ditampilkan dekat dengan sepertiga, tetapi tidak persis sama dengannya.

Setiap penghubung membuat janji yang berbeda; membaca semuanya sebagai kesamaan biasa akan menghapus informasi penting.

Pertanyaan 2

Untuk residual (−1, 2, 2), hitung mean squared error dan kuadrat rata-rata residual. Identifikasi operasi pertama tempat perhitungannya berbeda.

Tampilkan solusi langkah demi langkah

MSE menguadratkan setiap residual terlebih dahulu:

LMSE=(−1)2+22+223=1+4+43=3.L_{\mathrm{MSE}} =\frac{(-1)^2+2^2+2^2}{3} =\frac{1+4+4}{3} =3.

Kuadrat rata-rata residual meratakan terlebih dahulu:

LSMR=(−1+2+23)2=12=1.L_{\mathrm{SMR}} =\left(\frac{-1+2+2}{3}\right)^2 =1^2 =1.

Perbedaan pertama adalah operasi yang langsung diterapkan pada residual: MSE melakukan kuadrat per elemen, sedangkan kuadrat rata-rata residual melakukan penjumlahan dan pembagian sebelum kuadrat. Nilai 33 dan 11 menegaskan bahwa kedua urutan operasi itu tidak dapat dipertukarkan.

Pertanyaan 3

Audit derivasi ini untuk N = 3: Σᵢ₌₁³ rᵢ² = r₁² + r₂² + r₃² = r₁² + r₂². Tanda sama dengan mana yang pertama rusak, dan asumsi tak dinyatakan apa yang akan membuatnya valid?

Tampilkan solusi langkah demi langkah

Kesamaan pertama valid karena menguraikan rentang indeks inklusif i=1,2,3i=1,2,3:

∑i=13ri2=r12+r22+r32.\sum_{i=1}^{3}r_i^2=r_1^2+r_2^2+r_3^2.

Kesamaan kedua menghilangkan r32r_3^2, sehingga itulah tanda sama dengan pertama yang rusak. Ini hanya valid dengan syarat tambahan yang membuat suku yang dihilangkan bernilai nol:

r32=0  ⟺  r3=0.r_3^2=0\iff r_3=0.

Tanpa syarat itu, derivasi diam-diam mengubah rentang indeks tetap dari tiga contoh menjadi dua suku efektif.

Pertanyaan 4

Selesaikan x(x + 1) = x pada bilangan real. Jelaskan mengapa membagi kedua sisi dengan x bukan rute yang valid menuju solusi, meskipun persamaan yang disederhanakan tampak menghasilkan x = 0.

Tampilkan solusi langkah demi langkah

Kurangkan xx dari kedua sisi terlebih dahulu dan sederhanakan:

x(x+1)=x  ⟺  x2+x−x=0  ⟺  x2=0  ⟺  x=0.x(x+1)=x \iff x^2+x-x=0 \iff x^2=0 \iff x=0.

Substitusi memeriksa solusi: 0(0+1)=00(0+1)=0.

Membagi persamaan asli dengan xx memerlukan x≠0x\ne0 dan menghasilkan x+1=1x+1=1, sehingga x=0x=0. Hasil itu melanggar syarat bahwa nilainya bukan nol yang diperlukan oleh pembagian. Rute tersebut tidak memiliki kandidat valid dalam domain yang diasumsikannya, meskipun simbol-simbolnya berakhir pada solusi asli. Derivasi yang aman tidak pernah membagi dengan ekspresi yang mungkin nol.

Pertanyaan 5

Sebuah derivasi di atas bilangan real mengubah √(z²) = 5 menjadi z = 5. Temukan kasus yang hilang dan sebutkan penggantian yang tidak valid.

Tampilkan solusi langkah demi langkah

Untuk zz real, akar kuadrat utama tidak negatif dan

z2=∣z∣.\sqrt{z^2}=|z|.

Karena itu persamaannya adalah

∣z∣=5,|z|=5,

yang memiliki z=5z=5 dan z=−5z=-5. Keduanya lolos pemeriksaan karena 52=5\sqrt{5^2}=5 dan (−5)2=5\sqrt{(-5)^2}=5. Derivasi itu secara keliru mengganti z2\sqrt{z^2} dengan zz tanpa mengasumsikan z≥0z\ge0; akibatnya kasus negatif hilang.

Pertanyaan 6

Seorang siswa menguji residual (2, 2, 2) dan menemukan bahwa MSE sama dengan kuadrat rata-rata residual. Apakah ini membuktikan rumusnya identik? Berikan contoh penyangkal dan jelaskan logikanya.

Tampilkan solusi langkah demi langkah

Untuk (2,2,2)(2,2,2), kedua besaran memang bernilai 44:

22+22+223=4,(2+2+23)2=4.\frac{2^2+2^2+2^2}{3}=4, \qquad \left(\frac{2+2+2}{3}\right)^2=4.

Itu hanya menetapkan kesamaan untuk satu urutan input. Ini tidak mencakup setiap urutan yang diizinkan. Gunakan (−2,0,2)(-2,0,2) sebagai contoh penyangkal:

(−2)2+02+223=83,(−2+0+23)2=0.\frac{(-2)^2+0^2+2^2}{3}=\frac83, \qquad \left(\frac{-2+0+2}{3}\right)^2=0.

Karena identitas universal mengklaim kesamaan untuk setiap urutan, satu contoh penyangkal dapat memfalsifikasinya. Tidak ada kumpulan berhingga contoh yang berhasil yang sendirian dapat membuktikan klaim aljabar universal.

Pertanyaan 7

Temukan dan perbaiki kesalahan pada baris NumPy ini untuk mean squared error: loss = np.square(np.mean(predictions - targets)). Tuliskan baris yang dikoreksi dan petakan operasinya ke rumus.

Tampilkan solusi langkah demi langkah

Baris asli menghitung kuadrat rata-rata residual karena np.mean berjalan sebelum np.square. MSE yang benar adalah

residuals = predictions - targets
loss = np.mean(np.square(residuals))

Baris pertama mengimplementasikan ri:=y^i−yir_i:=\hat y_i-y_i. Pemanggilan dalam np.square(residuals) mengimplementasikan suku per elemen ri2r_i^2. np.mean(...) di luar menjumlahkan suku kuadrat itu dan membaginya dengan jumlah elemen yang disertakan. Urutan kode kini sesuai dengan

LMSE:=1N∑i=1Nri2,N>0.L_{\mathrm{MSE}}:=\frac1N\sum_{i=1}^{N}r_i^2, \qquad N>0.

Syarat input tidak kosong tetap menjadi bagian dari kontrak implementasi.

Pertanyaan 8

Sebuah derivasi mengganti nama Σᵢ₌₁ᴺ aᵢ menjadi Σⱼ₌₁ᴺ aⱼ, lalu menggantinya dengan Σⱼ₌₀ᴺ aⱼ. Audit kedua langkah tersebut.

Tampilkan solusi langkah demi langkah

Langkah pertama valid:

∑i=1Nai=∑j=1Naj.\sum_{i=1}^{N}a_i=\sum_{j=1}^{N}a_j.

Huruf indeks adalah penanda tempat lokal. Mengganti nama ii menjadi jj tidak mengubah batas maupun suku yang dipilih di setiap posisi.

Langkah kedua mengubah batas bawah dari 11 menjadi 00:

∑j=0Naj=a0+∑j=1Naj.\sum_{j=0}^{N}a_j =a_0+\sum_{j=1}^{N}a_j.

Ini sama dengan jumlah asli hanya jika a0=0a_0=0 didefinisikan dan diasumsikan secara eksplisit. Jika tidak, jumlah baru berisi satu suku tambahan—atau mungkin tidak terdefinisi jika urutan tidak memiliki indeks 00. Jadi tanda sama dengan pertama yang rusak adalah yang mengubah batas bawah.

Sumber

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF
  3. NumPy documentation: numpy.mean
  4. NumPy documentation: numpy.square