Softmax dapat menerima logit dengan magnitudo hingga berapa pun selama nilainya finite, tetapi selisih skor yang besar membuat keluarannya semakin terkonsentrasi. Tanh logit soft capping menyisipkan transformasi nonlinear terbatas sebelum softmax sehingga logit hasil transformasi tidak melewati magnitudo yang ditentukan.
Untuk cap positif c, bentuk yang umum adalah:
softcap(z; c) = c * tanh(z / c)Operasi ini bukan hard clipping pada ambang tertentu. Di sekitar nol perilakunya hampir linear, lalu magnitudo yang lebih besar dikompresi secara bertahap saat mendekati -c atau c.
Cap mengubah selisih skor, bukan sekadar magnitudo absolut
Softmax tidak berubah ketika konstanta yang sama ditambahkan ke semua logit, sehingga magnitudo absolut saja tidak menentukan distribusi keluaran. Selisih antarpasangan yang menentukan:
softmax(z)_i / softmax(z)_j = exp(z_i - z_j)Soft cap mengubah selisih tersebut ketika logit masuk ke wilayah nonlinear. Jika s_i = softcap(z_i; c), maka:
softmax(s)_i / softmax(s)_j = exp(s_i - s_j)Karena setiap nilai hasil transformasi berada secara ketat di antara -c dan c untuk input finite, selisih pasangan hasil transformasi lebih kecil dari 2c. Rasio probabilitas yang dihasilkan juga dibatasi oleh selisih eksponensial tersebut untuk logit finite.
Hal ini berbeda dari pengurangan logit maksimum untuk stabilitas numerik. Pengurangan maksimum mempertahankan semua selisih pasangan sehingga distribusi softmax matematis tetap sama. Soft capping sengaja mengubah distribusi saat transformasinya nonlinear.
Di sekitar nol, transformasi mendekati identitas
Perilaku lokal dapat dilihat dari turunannya:
d/dz [c * tanh(z / c)] = 1 - tanh(z / c)^2Pada z = 0, turunannya bernilai 1. Untuk logit yang kecil relatif terhadap c, nilai hasil transformasi tetap dekat dengan nilai awal. Ketika |z| / c membesar, turunan menurun menuju nol dan penambahan magnitudo menghasilkan perubahan yang semakin kecil setelah cap.
Transisi halus ini membedakan soft capping dari hard clipping:
hardclip(z; c) = min(max(z, -c), c)Hard clipping memiliki wilayah identitas yang tepat lalu wilayah datar setelah ambang. Tanh soft capping mulai mengompresi sebelum mencapai asimtot dan tetap dapat didiferensiasikan untuk input finite.
Perbedaan ini relevan saat training karena gradien melalui transformasi diredam secara bertahap, bukan langsung menjadi nol pada batas finite tertentu. Saat inference, checkpoint yang dilatih dengan transformasi ini juga merepresentasikan fungsi berbeda dari parameter yang sama jika dievaluasi tanpa transformasi tersebut.
Urutan logit finite tetap dipertahankan
tanh bersifat strictly increasing, dan perkalian dengan c positif mempertahankan urutan itu. Untuk a dan b yang finite:
a < b => softcap(a; c) < softcap(b; c)Soft capping karena itu tidak menukar peringkat dua logit finite. Token dengan logit mentah terbesar tetap memiliki logit hasil transformasi terbesar ketika cap positif yang sama diterapkan secara elementwise.
Peringkat yang tetap bukan berarti probabilitas tetap. Kompresi mengurangi selisih pasangan yang besar, sehingga massa probabilitas setelah normalisasi dapat menjadi kurang terkonsentrasi meski urutannya tidak berubah.
Pemisahan ini relevan untuk greedy decoding. Jika pemilihan greedy hanya berdasarkan argmax dari vektor logit yang menerima soft cap seragam, indeks terpilih tidak berubah dalam aritmetika eksak. Perilaku sampling tetap dapat berubah karena sampling bergantung pada seluruh distribusi ternormalisasi, bukan hanya indeks maksimum.
Temperature dan soft capping umumnya tidak komutatif
Temperature scaling membagi logit dengan temperature positif T sebelum softmax:
softmax(z / T)Ketika soft capping digunakan, urutan operasi menjadi bagian dari definisi model. Secara umum:
softcap(z; c) / Ttidak sama dengan:
softcap(z / T; c)Ekspresi pertama melakukan kompresi berdasarkan rasio awal z / c, lalu menskalakan hasil yang sudah terbatas. Ekspresi kedua mengubah input ke tanh, sehingga tingkat kompresinya ikut berubah.
Serving stack karena itu perlu mempertahankan urutan yang ditentukan checkpoint, bukan memperlakukan temperature, soft capping, dan softmax sebagai kontrol post-processing yang dapat dipertukarkan. Penataan ulang aljabar yang valid untuk scaling linear dapat gagal ketika transformasi nonlinear disisipkan.
Nilai cap menentukan skala nonlinear
Parameter c mengendalikan batas keluaran sekaligus skala input tempat kompresi mulai terasa. c yang lebih besar membuat rentang logit yang lebih luas tetap dekat dengan wilayah identitas. c yang lebih kecil membawa nilai mentah yang sama lebih jauh ke bagian tanh yang mendekati saturasi.
Keterkaitan ini membuat c bukan sekadar ambang keamanan numerik. Mengubahnya memodifikasi selisih skor relatif dan akibatnya mengubah distribusi probabilitas.
Perilaku limit memperjelas batas tersebut. Saat c membesar sementara z finite tetap:
c * tanh(z / c) -> ztransformasi mendekati identitas. Namun pada c finite, transformasi tetap menjadi bagian dari fungsi model.
Logit attention dan logit vocabulary berada pada permukaan berbeda
Model dapat menerapkan soft capping pada skor attention, logit vocabulary akhir, keduanya, atau tidak sama sekali. Penempatan tersebut tidak ekuivalen.
Pada attention, transformasi bekerja sebelum attention softmax dan mengubah bobot relatif di antara posisi key yang terlihat. Semantik masking tetap harus ditangani terpisah; posisi yang terkena mask harus tetap dikeluarkan sesuai arsitektur, bukan berubah menjadi skor finite biasa akibat urutan operasi yang keliru.
Pada logit vocabulary, transformasi bekerja pada skor token sebelum output softmax atau aturan decoding. Operasi ini mengubah distribusi kandidat token, tetapi tidak mengubah kembali hidden state yang sudah dihitung jaringan.
Kernel terfusi dapat menggabungkan beberapa operasi, tetapi kompatibilitas tetap bergantung pada penempatan matematis yang sama. Formula yang benar pada permukaan tensor yang salah menghasilkan model berbeda.
Stabilitas numerik tetap memerlukan softmax yang stabil
Logit terbatas dapat membatasi magnitudo yang diterima softmax berikutnya, tetapi hal itu tidak menggantikan implementasi softmax yang stabil secara numerik. Evaluasi stabil umumnya mengurangi nilai maksimum baris sebelum eksponensiasi:
s = softcap(z; c)
p_i = exp(s_i - max(s)) / sum_j exp(s_j - max(s))Pengurangan tersebut tidak mengubah hasil softmax eksak sekaligus mengurangi rentang eksponen. Soft capping dan pengurangan maksimum memiliki fungsi berbeda: yang pertama sengaja membentuk ulang selisih skor, sedangkan yang kedua merupakan cara yang ekuivalen secara aljabar untuk mengevaluasi softmax.
Presisi, aritmetika kernel terfusi, dan nilai khusus seperti infinity atau NaN juga memerlukan aturan implementasi yang eksplisit. Batas tanh untuk input finite tidak dengan sendirinya mendefinisikan perilaku bagi setiap nilai non-finite yang muncul dari komputasi bermasalah atau overflow.
Batas implementasinya sempit tetapi tegas. Soft cap adalah operasi model dengan fungsi, nilai cap, permukaan tensor, serta urutan tertentu terhadap masking, temperature, dan softmax. Menjaga detail tersebut mempertahankan komputasi deployment agar selaras dengan fungsi yang direpresentasikan checkpoint.