Gaussian Error Linear Unit Code (Python, TF, Torch) – Towards AI

Gaussian Error Linear Unit Code (Python, TF, Torch) – Towards AI

Pengarang: Poulinakis Kon

Awalnya diterbitkan di Towards AI the World’s Leading AI and Technology News and Media Company. Jika Anda sedang membangun produk atau layanan terkait AI, kami mengundang Anda untuk mempertimbangkan untuk menjadi sponsor AI. Di Towards AI, kami membantu menskalakan AI dan startup teknologi. Biarkan kami membantu Anda melepaskan teknologi Anda kepada massa.

GELU : Kode Unit Linear Kesalahan Gaussian (Python, TF, Torch)

Tutorial kode untuk GELU, fungsi aktivasi Gaussian Error Linear Unit. Termasuk kode python telanjang, Tensorflow dan Pytorch.

Foto oleh Markus Winkler di Unsplash

Fungsi Aktivasi GELU

Gaussian Error Linear Unit, GELU, adalah fungsi aktivasi yang paling banyak digunakan dalam model mutakhir termasuk BERT, GPT, Vision Transformers, dll.

Jika Anda ingin memahami intuisi dan matematika di balik GELU, saya sarankan Anda memeriksa artikel saya sebelumnya yang membahas makalah GELU (GELU, Penerus ReLU? Penjelasan Unit Linear Kesalahan Gaussian). Motivasi di balik GELU adalah untuk menjembatani pengatur stokastik, seperti putus sekolah, dengan non-linier, yaitu, fungsi aktivasi. Model transformator besar seperti BERT dan GPT membuat fungsi aktivasi GELU sangat populer.

Apakah GELU, penerus ReLU?

Rumus Matematika GELU

Gaussian Error Linear Unit nilai output fungsi aktivasi tidak deterministik, melainkan secara stokastik bergantung pada nilai input.

GELU, rumus Unit Linear Kesalahan Gaussian

Aktivasi GELU dapat didekati dengan dua rumus di bawah ini. Pendekatan pertama lebih akurat, sedangkan yang kedua kurang tepat tetapi lebih cepat. Kami menggunakan rumus pertama untuk menulis implementasi Python.

GELU, perkiraan fungsi aktivasi Gaussian Error Linear Unit

GEL dengan Python

Untuk mendapatkan rumus yang tepat kita perlu menghitung Gaussian Error Function (erf). Ini adalah implementasi yang paling memakan waktu tetapi juga paling tepat. Untuk implementasi yang lebih cepat, kami menggunakan pendekatan berdasarkan tanh() karena lebih tepat. Kode Python di bawah ini mencakup keduanya.

https://medium.com/media/043cea9f47f5914565d497311690f2fa/href

GELU in Tensorflow -Keras

Tensorflow menawarkan fungsi aktivasi di modul tf.keras.activations mereka dan Anda dapat mengimpornya sebagai

dari tensorflow.keras.activations impor gelu

Fungsi ini memiliki parameter perkiraan boolean. Jika dipilih Benar maka Anda akan mendapatkan perkiraan implementasi python di atas. Jika tidak, Anda mendapatkan implementasi yang tepat tetapi lebih lambat yang benar-benar menghitung fungsi kesalahan Gauss (erf) dari x elemen-bijaksana.

Contoh membangun jaringan saraf Keras dengan fungsi aktivasi GELU dapat dilihat di bawah ini. Perhatikan bahwa Anda dapat memaksakan gelu sebagai aktivasi lapisan baik dengan menggunakan alias ‘gelu’ atau melewati modul gelu yang diimpor secara langsung. Prosedur pemasangannya kemudian mirip dengan setiap jaringan Keras lainnya.

input_shape = (28, 28, 1)
jumlah_kelas = 10
gelu_act = gelu(perkiraan = Salah)
model = keras.Sequential(
[
keras.Input(shape=input_shape),
layers.Conv2D(32, kernel_size=(3, 3), activation=”gelu”),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Conv2D(64, kernel_size=(3, 3), activation=gelu),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Flatten(),
layers.Dropout(0.5),
layers.Dense(num_classes, activation=”softmax”),
]
) model.summary() # Kompilasi jaringan GELU
model.compile(loss=”categorical_crossentropy”, pengoptimal=”adam”, metrics=[“accuracy”]) #Sesuai dengan jaringan GELU
model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=0.1)

GELU di Torch

Serupa dengan Tensorflow, PyTorch menawarkan GELU dengan bentuk perkiraan dan presisi. Anda dapat mengakses fungsi tersebut dengan mengimpor modul obor dan menyetel parameter perkiraan ke True jika Anda menginginkan implementasi yang lebih cepat atau membiarkan nilai default None untuk bentuk presisi yang menghitung Fungsi Kesalahan Gaussian. Di dalam metode forward Anda dapat menggunakan fungsi gelu dan mengatur parameter perkiraan ke True atau tidak.

impor torch.nn sebagai nn
impor obor.nn.fungsional sebagai F
impor obor.optim sebagai optimal
impor kelas torchvision Net(nn.Module):
def __init__(sendiri):
super(Bersih, mandiri).__init__()
self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
self.conv2_drop = nn.Dropout2d()
self.fc1 = nn.Linear(320, 50)
self.fc2 = nn.Linear(50, 10) def forward(self, x):
keluar = self.conv1(x)
keluar = F.max_pool2d(keluar, 2)
out = F.gelu(out) # Menggunakan rumus GELU eksak dengan erf
keluar = self.conv2(x)
keluar = F.max_pool2d(keluar, 2)
keluar = self.conv2_drop(keluar)
out = F.gelu(keluar, perkiraan=Benar) # Menggunakan pendekatan
keluar = F. putus sekolah (keluar)
keluar = diri.fc2(x)
kembali keluar

Kesimpulan

Fungsi aktivasi GELU telah melihat lonjakan besar dalam penggunaannya selama beberapa tahun terakhir. Munculnya model transformator besar seperti BERT, GPT dan Vision Transformers (ViTs) lainnya menanggung kebutuhan akan regularisasi yang lebih kuat. GELU menawarkan regularisasi yang tersembunyi dalam fungsi aktivasi, oleh karena itu mengapa GELU banyak digunakan dalam model seperti BERT dan GPT.

Pengkodean GELU sangat mudah dan kerangka kerja utama mendukungnya secara default dalam modul fungsi aktivasi mereka.

REFERENSI

[1] Gaussian Error Linear Units (GELUs)

[2] GELU, Penerus ReLU? Unit Linear Kesalahan Gaussian Dijelaskan

[3] BERT: Pra-pelatihan Deep Bidirectional Transformers untuk Pemahaman Bahasa

[4] tf.keras.activations.gelu

[5] obor.nn.fungsional.gelu

Saya harap Anda menikmati artikel ini dan belajar sesuatu yang bermanfaat. Jika demikian, pertimbangkan untuk membagikan tutorial ini. Jika Anda ingin membaca lebih banyak artikel dan tutorial saya, ikuti saya untuk mendapatkan pembaruan.

Terima kasih telah membaca, jangan ragu untuk menghubungi!

Tautan Saya: Sedang | LinkedIn | GitHub

GELU : Gaussian Error Linear Unit Code (Python, TF, Torch) awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI

Author: Jonathan Kelly