- Menunjukkan bahwa mengganti Layer Norm/RMSNorm yang selama ini dianggap nyaris wajib di Transformer dengan Dynamic Tanh (DyT) tetap dapat menghasilkan performa yang setara atau lebih baik dibanding model berbasis normalisasi yang ada
- DyT adalah operasi elemen-per-elemen berbentuk
DyT(x) = tanh(αx), berangkat dari pengamatan bahwa Layer Normalization di dalam Transformer sering membentuk pemetaan masukan-keluaran berbentuk S yang mirip tanh
- Implementasinya hanya beberapa baris di PyTorch, dan menerapkan skala serta bias pada keluaran
tanh(alpha * x) dengan alpha, weight, dan bias yang dapat dipelajari
- Evaluasi mencakup berbagai model untuk visi, bahasa, suara, dan pemodelan sekuens DNA, mulai dari ViT, ConvNeXt, MAE, DINO, DiT, LLaMA, wav2vec 2.0, HyenaDNA, Caduceus
- Bahkan tanpa tuning hyperparameter tambahan, pada banyak pengaturan hasilnya setara atau lebih baik daripada model pembanding berbasis normalisasi, sehingga asumsi bahwa lapisan normalisasi itu wajib perlu ditinjau ulang
Titik perubahan yang dibawa Dynamic Tanh
- DyT adalah lapisan sederhana yang menggantikan Layer Norm atau RMSNorm pada blok Transformer
- Operasi intinya adalah
DyT(x) = tanh(αx) yang diterapkan per elemen
- Menunjukkan bahwa Transformer tanpa lapisan normalisasi pun dapat mencapai performa yang setara atau bahkan lebih tinggi daripada Transformer konvensional dengan normalisasi
- Titik awal idenya adalah pengamatan bahwa hubungan masukan-keluaran yang sering dibentuk Layer Normalization di dalam Transformer menyerupai fungsi scaled tanh
Cara implementasi
- Modul DyT dapat diimplementasikan secara singkat di PyTorch
class DyT(nn.Module):
def __init__(self, num_features, alpha_init_value=0.5):
super().__init__()
self.alpha = nn.Parameter(torch.ones(1) * alpha_init_value)
self.weight = nn.Parameter(torch.ones(num_features))
self.bias = nn.Parameter(torch.zeros(num_features))
def forward(self, x):
x = torch.tanh(self.alpha * x)
return x * self.weight + self.bias
alpha adalah parameter yang dapat dipelajari, dengan nilai awal 0.5
weight dan bias juga parameter yang dapat dipelajari, dan diterapkan pada keluaran tanh(alpha * x)
Pengamatan dari Layer Normalization
- Layer Normalization (LN) pada Transformer menghasilkan pemetaan masukan-keluaran yang dekat dengan fungsi scaled tanh
- Pada lapisan awal, pemetaan ini umumnya masih mendekati linear
- Semakin ke lapisan yang lebih dalam, karakteristik kurva berbentuk S khas fungsi tanh makin jelas terlihat
- Objek pengamatan mencakup Vision Transformer (ViT), model Transformer suara wav2vec 2.0, serta lapisan LN terpilih pada Diffusion Transformer (DiT)
Cakupan evaluasi dan hasil
- DyT dievaluasi pada berbagai arsitektur dan tugas
- Visi supervised: ViT, ConvNeXt
- Visi self-supervised: MAE, DINO
- Model difusi: DiT
- Large language model: LLaMA
- Suara self-supervised: wav2vec 2.0
- Pemodelan sekuens DNA: HyenaDNA, Caduceus
- Dalam semua kasus, Transformer yang menggunakan DyT menunjukkan performa yang setara atau lebih baik dibanding model pembanding berbasis normalisasi
- Cakupan evaluasinya luas, dari recognition hingga generation, dari supervised hingga self-supervised, dan dari computer vision hingga language model
Referensi
- Download Paper: makalah yang memuat detail lengkap penelitian
- View on GitHub: repositori untuk melihat detail implementasi
- View Summary: ringkasan singkat hasil penelitian
Transformers without Normalization terdaftar sebagai makalah CVPR 2025
1 komentar
Komentar di Hacker News
Penyesuaian alpha tidak banyak berpengaruh, jadi mungkin diperlukan tuning hiperparameter yang cukup besar atau inisialisasi yang lebih cermat. Saya mencoba inisialisasi default PyTorch maupun inisialisasi ortogonal, tetapi tidak ada bedanya
Atau bisa jadi optimizer skalar yang saya gunakan tidak cocok. Saya memakai optimizer skalar kustom yang membuat konvergensi lebih cepat daripada Adam, tetapi pada lapisan DyT hasilnya hanya terlihat setara dengan Adam
Atau mungkin ini baru menyusul setelah puluhan miliar token, tetapi saya tidak punya anggaran untuk menguji selama itu
Jika lapisan seperti ini bisa diganti, itu akan membantu mengurangi biaya komputasi secara cukup besar
tanh juga pasti punya dampak lain. Sebab normalisasi terkadang menyelesaikan masalah conditioning. Tetap saja, bertambahnya alternatif adalah hal yang patut disambut
Saya merekomendasikan makalah ResNet asli dari Kaiming He dkk. serta makalah-makalah lanjutannya
Untuk pendekatan modern pada RNN, makalah DeepMind https://arxiv.org/abs/2303.06349 layak dibaca
Intinya, nilai eigen terbesar, yaitu radius spektral, harus berada di sekitar 1. Artinya, meskipun transformasi linear diterapkan berulang kali, nilai aktivasi tidak akan membesar atau mengecil
y = x + f(x)LNinputdanLNoutputsambil tetap menambahkan bobot dan bias setelahtanh(a*x)Untuk melihat kemiripannya, bukankah seharusnya dibandingkan dengan hasil keluaran LayerNorm setelah bobot dan biasnya dihilangkan?
Kalau hasil akhirnya bagus, tidak masalah, tetapi jika melihat hanya bagian yang benar-benar diganti, kita mungkin bisa lebih memahami apa yang sebenarnya terjadi