Código de unidad lineal de error gaussiano (Python, TF, Torch) – Hacia la IA

Estás leyendo la publicación: Código de unidad lineal de error gaussiano (Python, TF, Torch) – Hacia la IA

Publicado originalmente en Hacia la IA, la empresa líder mundial en noticias y medios de IA y tecnología. Si está creando un producto o servicio relacionado con la IA, lo invitamos a considerar convertirse en patrocinador de la IA. En Hacia la IA, ayudamos a escalar las empresas emergentes de IA y tecnología. Permítanos ayudarlo a dar rienda suelta a su tecnología a las masas.

GELU: código de unidad lineal de error gaussiano (Python, TF, Torch)

Tutorial de código para GELU, función de activación de Unidad lineal de error gaussiano. Incluye código desnudo de Python, Tensorflow y Pytorch.

Función de activación de GELU

La Unidad Lineal de Error Gaussiano, GELU, es la función de activación más utilizada en modelos de última generación como BERT, GPT, Vision Transformers, etc.

Si desea comprender la intuición y las matemáticas detrás de GELU, le sugiero que consulte mi artículo anterior que cubre el documento de GELU (GELU, ¿el sucesor de ReLU? Unidad lineal de error gaussiano explicada). La motivación detrás de GELU es unir los regularizadores estocásticos, como la deserción, con no linealidades, es decir, funciones de activación. Los enormes modelos de transformadores como BERT y GPT hicieron que la función de activación de GELU fuera muy popular.

¿Es GELU, el sucesor de ReLU?

Fórmula matemática GELU

El valor de salida de la función de activación de la unidad lineal de error gaussiano no es determinista, sino que depende estocásticamente del valor de entrada.

La activación de GELU se puede aproximar mediante las dos fórmulas siguientes. La primera aproximación es más precisa, mientras que la segunda menos precisa pero más rápida. Usamos la primera fórmula para escribir una implementación de Python.

🔥 Recomendado:  el caso de la agrupación – Hacia la IA

GELU en Python

Para obtener la fórmula exacta, necesitamos calcular la función de error gaussiano (erf). Esta es la implementación que requiere más tiempo pero también la más precisa. Para una implementación más rápida, usamos la aproximación basada en tanh() porque es más precisa. El siguiente código de Python cubre ambos.

GELU en Tensorflow-Keras

Tensorflow ofrece la función de activación en su módulo tf.keras.activations y puedes importarlo como

desde tensorflow.keras.activations import gelu

La función tiene un parámetro aproximado booleano. Si elige Verdadero, obtendrá la implementación de python aproximada anterior. De lo contrario, obtiene la implementación precisa pero más lenta que realmente calcula el Función de error de Gauss (erf) de x elemento-sabio.

A continuación se puede ver un ejemplo de construcción de una red neuronal Keras con la función de activación GELU. Tenga en cuenta que puede imponer gelu como la activación de una capa usando el alias ‘gelu’ o pasando el módulo gelu importado directamente. El procedimiento de ajuste es entonces similar al de cualquier otra red Keras.

entrada_forma = (28, 28, 1)
num_clases = 10
gelu_act = gelu(aproximado = Falso)
modelo = keras.secuencial(
[
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() # Compilar la red GELU
model.compile(pérdida=”categorical_crossentropy”, optimizador=”adam”, metrics=[“accuracy”]) #Encajar la red GELU
model.fit(x_tren, y_tren, tamaño_lote=tamaño_lote, épocas=épocas, división_validación=0.1)

GELU en Antorcha

Al igual que Tensorflow, PyTorch ofrece GELU con la forma aproximada y precisa. Puede acceder a la función importando el módulo de antorcha y configurando el parámetro aproximado en Verdadero si desea una implementación más rápida o dejar el valor predeterminado Ninguno para la forma precisa que calcula la función de error gaussiano. Dentro de adelante puede usar la función gelu y establecer el parámetro aproximado en Verdadero o no.

🔥 Recomendado:  Cómo apostar CAKE en PancakeSwap

importar torch.nn como nn
importar torch.nn.funcional como F
importar torch.optim como optim
importar torchvision class Net(nn.Module):
def __init__(uno mismo):
super(Neto, propio).__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.Lineal(320, 50)
self.fc2 = nn.Linear(50, 10) def adelante(self, x):
fuera = self.conv1(x)
salida = F.max_pool2d(salida, 2)
out = F.gelu(out) # Usando la fórmula GELU exacta con erf
fuera = self.conv2(x)
salida = F.max_pool2d(salida, 2)
fuera = self.conv2_drop(fuera)
out = F.gelu(out, aproximado=Verdadero) # Usando aproximación
fuera = F.abandono(fuera)
fuera = self.fc2(x)
regresar

Conclusiones

La función de activación de GELU ha visto un gran aumento en su uso durante los últimos años. La llegada de grandes modelos de transformadores como BERT, GPT y otros Vision Transformers (ViT) generó la necesidad de una regularización más fuerte. GELU ofrece regularización oculta en la función de activación, por lo que se usa ampliamente en modelos como BERT y GPT.

Codificar GELU es muy fácil y los principales marcos lo admiten de forma predeterminada en sus módulos de funciones de activación.

REFERENCIAS

[1] Unidades lineales de error gaussiano (GELU)

[2] GELU, ¿el sucesor de ReLU? Explicación de la unidad lineal del error gaussiano

[3] BERT: Pre-entrenamiento de Transformadores Bidireccionales Profundos para la Comprensión del Lenguaje

[4] tf.keras.activaciones.gelu

[5] antorcha.nn.funcional.gelu

Mis enlaces: Medio |LinkedIn | GitHub


GELU: código de unidad lineal de error gaussiano (Python, TF, Torch) se publicó originalmente en Towards AI en Medium, donde las personas continúan la conversación resaltando y respondiendo a esta historia.

Publicado a través de Hacia la IA