Decoder dapat menerima logit yang cukup besar sehingga eksponensiasi langsung tidak aman secara numerik, padahal distribusi probabilitas yang dimaksud tetap biasa. Softmax tidak mengharuskan eksponensiasi terhadap nilai awal. Mengurangi semua logit dengan logit terbesar menghasilkan distribusi yang sama dalam aritmetika real eksak sekaligus memindahkan nilai eksponensial ke rentang numerik yang lebih aman.
Pergeseran ini merupakan sifat softmax, bukan heuristik khusus model tertentu.
Pergeseran bersama hilang saat normalisasi
Untuk logit (z_1,\ldots,z_n), softmax menghasilkan
[ p_i = \frac{e^{z_i}}{\sum_j e^{z_j}}. ]
Kurangi semua logit dengan konstanta yang sama (c):
[ \frac{e^{z_i-c}}{\sum_j e^{z_j-c}}
\frac{e^{-c}e^{z_i}}{e^{-c}\sum_j e^{z_j}}
p_i. ]
Memilih (c=\max_j z_j) berguna karena seluruh logit hasil pergeseran menjadi non-positif dan setidaknya satu bernilai nol. Nilai eksponensialnya berada pada interval ((0,1]) dalam aritmetika real. Logit positif yang sangat besar tidak lagi memerlukan evaluasi eksponensial yang sama besarnya.
Transformasi tersebut mengubah representasi numerik komputasi, bukan hasil matematis softmax.
Overflow dan underflow memberi dampak berbeda
Perhitungan langsung (e^{z_i}) dapat mengalami overflow ketika logit melampaui rentang eksponensial yang dapat direpresentasikan oleh format floating-point dan implementasi yang aktif. Setelah nilai antara menjadi infinity, normalisasi dapat menghasilkan operasi tidak valid seperti infinity dibagi infinity.
Setelah pengurangan maksimum, overflow eksponensial positif dari logit hasil pergeseran yang finite dapat dihindari karena tidak ada nilai yang melebihi nol. Selisih yang sangat negatif masih dapat mengalami underflow sehingga nilai eksponensialnya menjadi nol dalam finite precision. Hasil itu tidak identik dengan matematika eksak, tetapi massa probabilitas terkait memang dapat berada jauh di bawah term dominan pada presisi yang tersedia.
Perbedaannya penting: pengurangan maksimum mengendalikan satu mode kegagalan serius, tetapi tidak membuat softmax finite precision identik dengan aritmetika real.
Selisih logit menentukan distribusi
Probabilitas softmax bergantung pada selisih antarlogit, bukan offset absolutnya. Jika semua logit bertambah 1.000, distribusinya tidak berubah secara matematis. Jika satu logit naik relatif terhadap logit lain, distribusinya berubah.
Karena itu, diagnosis yang hanya memeriksa magnitudo absolut logit dapat melewatkan geometri yang relevan. Logit besar yang berdekatan dapat menghasilkan distribusi yang cukup menyebar setelah pergeseran. Logit dengan magnitudo sedang tetapi memiliki selisih besar dapat menghasilkan distribusi yang sangat terkonsentrasi.
Pada sistem generasi, temperature mengubah selisih tersebut sebelum normalisasi. Dengan temperature (T>0), salah satu bentuk yang umum adalah
[ p_i = \frac{\exp(z_i/T)} {\sum_j \exp(z_j/T)}. ]
Implementasi stabil dapat mengurangi nilai maksimum dari logit yang sudah diskalakan, atau menerapkan pergeseran bersama yang diturunkan secara ekuivalen. Urutan operasi yang ekuivalen secara matematis masih dapat memengaruhi pembulatan finite precision, sehingga detail runtime tetap relevan saat reproduksibilitas eksak diperlukan.
Nilai yang di-mask memerlukan penanganan eksplisit
Kode attention dan pemilihan token sering merepresentasikan posisi yang dikecualikan dengan nilai negatif sangat besar atau negative infinity sebelum softmax. Argumen max-shift mengasumsikan baris memiliki setidaknya satu nilai finite yang dapat menjadi acuan pengurangan.
Jika seluruh entri bernilai negative infinity, nilai maksimumnya juga negative infinity dan pengurangannya menghasilkan ekspresi yang tidak terdefinisi. Library dan kernel dapat menangani baris yang seluruhnya di-mask dengan cara berbeda. Pemanggil tidak dapat menyimpulkan probabilitas nol yang valid hanya dari aljabar untuk baris finite biasa.
Batas yang sama berlaku untuk NaN. Mengurangi nilai maksimum bukan mekanisme perbaikan bagi input non-finite yang muncul lebih awal di pipeline.
Log-softmax memakai pergeseran yang sama
Log probability sering dihitung tanpa membentuk probabilitas ternormalisasi terlebih dahulu. Identitas stabilnya adalah
[ \log p_i
z_i - m
\log\left(\sum_j e^{z_j-m}\right), \quad m=\max_j z_j. ]
Bentuk ini menghindari pengambilan logaritma dari nilai softmax yang mungkin sudah dibulatkan menjadi nol. Bentuk tersebut juga memperlihatkan hubungan langsung antara softmax stabil dan operasi log-sum-exp.
Batas implementasinya tetap finite precision. Urutan reduction, presisi accumulator, fused kernel, input terkuantisasi, dan fungsi matematika spesifik perangkat dapat menghasilkan perbedaan numerik kecil walaupun semua implementasi memakai identitas aljabar yang sama. Pengurangan maksimum menyediakan pergeseran koordinat yang stabil; operasi ini tidak menjanjikan hasil bitwise yang sama di semua runtime.