Kursus Matematika untuk AI · Pelajaran 3 dari 180
Domain dan kodomain: kontrak input yang dibutuhkan setiap fungsi AI
Pelajari bagaimana domain dan kodomain menetapkan input model yang valid dan tipe output yang dijanjikan, lalu diagnosis kegagalan bentuk, rentang, dan operasi yang tidak terdefinisi.
Pelajaran 2 menjelaskan fungsi sebagai aturan yang menetapkan satu output untuk setiap input yang diizinkan. Kata diizinkan memiliki bobot yang lebih besar daripada yang tampak pada awalnya.
Pengklasifikasi teks tidak dapat menerima blok byte sembarang dengan aman ketika mengharapkan ID token. Perkalian matriks tidak dapat menerima bentuk yang tidak kompatibel. Logaritma tidak dapat menghasilkan nilai real untuk input negatif. Aturan hanyalah sebagian dari kontrak fungsi; himpunan input yang valid dan himpunan output yang dijanjikan adalah bagian lainnya.
Di akhir pelajaran ini, Anda akan mampu menuliskan fungsi bersama domain dan kodomainnya, membedakan kodomain dari nilai yang benar-benar dicapai, dan menjelaskan kegagalan input AI yang umum sebagai pelanggaran kontrak matematika.
Panah membawa informasi tipe
Deklarasi fungsi yang ringkas terlihat seperti ini:
Bacalah “ memetakan dari ke ”.
- adalah domain, himpunan input yang diizinkan.
- adalah kodomain, himpunan tempat setiap output dijanjikan berada.
- Aturan memberi tahu kita elemen mana yang ditetapkan untuk setiap elemen .
Notasi berarti “ adalah elemen ”. Notasi ini memungkinkan kita menulis kontrak dan evaluasi secara bersamaan:
| Masukan | Valid? | Keluaran |
|---|---|---|
| 0.1 | Ya | 0.18 |
| 0.5 | Ya | 0.50 |
| 0.9 | Ya | 0.82 |
| “high” | Tidak—tipe masukan salah | Tidak dievaluasi |
Input teks “high” pada diagram bukan prediksi numerik yang gagal. Input itu tidak diizinkan untuk fungsi numerik ini, jadi evaluasi tidak seharusnya dimulai.
Kodomain adalah janji, bukan daftar output yang diamati
Perhatikan fungsi kuadrat pada bilangan real:
Di sini berarti himpunan bilangan real. Setiap input real dapat dikuadratkan dan setiap hasilnya juga real, sehingga deklarasinya valid.
Namun tidak pernah negatif. Himpunan nilai yang benar-benar dicapai fungsi adalah
Himpunan yang dicapai ini disebut image atau range. Himpunan ini dapat lebih kecil daripada kodomain yang dinyatakan.
| Konsep | Untuk , |
|---|---|
| Domain | Semua bilangan real |
| Kodomain | Semua bilangan real |
| Image | Bilangan real nonnegatif |
Mengubah domain dapat memperbaiki aturan yang tidak terdefinisi
Ekspresi
tidak mendefinisikan output real pada . Kita dapat menyatakan fungsi yang valid dengan mengecualikan nol:
Simbol berarti selisih himpunan. Domainnya adalah “bilangan real tanpa nol”. Demikian pula,
memiliki domain bernilai real yang dibatasi pada input positif:
Ini bukan hiasan yang rewel. Notasi tersebut memberi tahu implementasi apa yang harus diperiksa sebelum evaluasi.
Domain AI mencakup bentuk dan struktur
Sejauh ini, domain tampak seperti interval angka. Input model sering berupa vektor atau matriks. Bentuknya merupakan bagian dari kontrak.
Misalkan
Notasi berarti daftar berurutan berisi tiga koordinat real, dan berarti daftar berurutan berisi dua koordinat real. Salah satu input yang valid adalah
Vektor dengan dua koordinat berada di luar domain yang dinyatakan. Setiap elemennya boleh saja real, tetapi objeknya memiliki bentuk yang salah.
Inilah versi matematika dari kesalahan tensor yang umum:
def project_three_features(x):
if x.shape != (3,):
raise ValueError("expected exactly three features")
return [x[0] + x[1], x[2] - x[1]]
Pemeriksaan tersebut melindungi domain. Fungsi mengembalikan dua angka, sesuai dengan bentuk kodomainnya.
Untuk model berbasis token, domain lengkap dapat lebih ketat lagi. Input mungkin memerlukan:
- ID token bilangan bulat, bukan nilai real sembarang;
- ID dalam rentang kosakata yang tetap;
- panjang urutan maksimum;
- bentuk batch dan mask perhatian yang saling sesuai; dan
- pengodean gambar, audio, atau teks yang diharapkan model tertentu ini.
Mengatakan “model menerima tensor” menyembunyikan batasan tersebut. Antarmuka matematika dan perangkat lunak yang baik membuatnya terlihat.
Janji output membatasi kode downstream
Misalkan sebuah pengklasifikasi dideklarasikan sebagai
Pengklasifikasi menerima fitur real dan mengembalikan angka, masing-masing antara nol dan satu. Kodomain itu saja tidak menjamin bahwa angka tersebut berjumlah satu. Jika output yang diinginkan adalah distribusi probabilitas atas kelas yang saling eksklusif, kodomain memerlukan syarat tambahan:
Himpunan ini disebut simpleks probabilitas. Kita akan mempelajarinya nanti. Untuk saat ini, perhatikan bagaimana kodomain yang lebih kaya menyampaikan janji yang lebih kuat kepada kode downstream.
Daftar periksa untuk membaca fungsi model
Ketika menemukan pemetaan matematika baru, ajukan empat pertanyaan:
- Objek apa yang termasuk dalam domain?
- Objek apa yang secara eksplisit dikecualikan atau tidak terdefinisi?
- Himpunan output apa yang dijanjikan kodomain?
- Apakah aturan benar-benar mencapai seluruh kodomain, atau hanya image yang lebih kecil?
Pertanyaan-pertanyaan ini mengubah banyak kesalahan samar berupa “bentuk tidak cocok”, “probabilitas tidak valid”, dan “loss tidak terdefinisi” menjadi pelanggaran kontrak yang presisi. Pelajaran berikutnya akan menggunakan himpunan untuk mendeskripsikan kumpulan data dan kejadian secara lebih sistematis.
Uji pemahaman
Pertanyaan 1
Untuk q(x) = x² yang dinyatakan sebagai q: R → R, tentukan domain, kodomain, dan image.
Tampilkan solusi langkah demi langkah
Deklarasi tersebut menyatakan bahwa domainnya adalah dan kodomainnya juga . Menguadratkan input real apa pun terdefinisi dan menghasilkan bilangan real.
Karena untuk setiap real , nilai yang dicapai tepat berupa bilangan real nonnegatif:
Jadi image adalah subset sejati dari kodomain.
Pertanyaan 2
Mengapa 0 berada di luar domain bernilai real dari r(x) = 1/x?
Tampilkan solusi langkah demi langkah
Substitusi nol meminta
Tidak ada bilangan real yang memenuhi , sehingga pembagian itu tidak memiliki nilai real. Deklarasi yang benar mengecualikan nol:
Pertanyaan 3
Sebuah fungsi mengharapkan elemen R³. Apakah [1, 2] valid jika kedua elemennya real? Jelaskan.
Tampilkan solusi langkah demi langkah
Keanggotaan dalam mensyaratkan tepat tiga koordinat real yang berurutan. Vektor termasuk , bukan .
Tipe nilai individualnya benar, tetapi bentuknya salah. Tipe nilai dan bentuk sama-sama merupakan bagian dari kontrak domain.
Pertanyaan 4
Sebuah pengklasifikasi mengembalikan [0.6, 0.6]. Masing-masing elemen berada dalam [0, 1]. Mengapa ini masih dapat melanggar kodomainnya?
Tampilkan solusi langkah demi langkah
Jika pengklasifikasi hanya menjanjikan , vektor itu memenuhi kontrak yang lemah tersebut. Namun jika pengklasifikasi menjanjikan distribusi probabilitas atas dua kelas yang saling eksklusif, nilainya juga harus berjumlah satu.
Di sini, , sehingga vektor tersebut bukan anggota simpleks probabilitas. Apakah kodomain dilanggar bergantung pada himpunan output yang sebenarnya dinyatakan.
Pertanyaan 5
Sebuah implementasi mengganti log(p) dengan log(max(p, 0.000001)). Apakah implementasi itu menghitung fungsi yang persis sama untuk setiap p real?
Tampilkan solusi langkah demi langkah
Tidak. Untuk , kedua ekspresi sama. Untuk positif yang lebih kecil, implementasi yang memotong nilai mengembalikan konstanta , bukan . Untuk nol atau negatif, implementasi itu juga menghasilkan nilai terbatas di tempat logaritma real asli tidak terdefinisi.
Pemotongan dapat menjadi perlindungan numerik yang disengaja, tetapi mengubah fungsi di luar wilayah kesamaan. Penjelasan yang presisi harus menyatakan konvensi tersebut dan alasannya.