Declaración CREATE MODEL para modelos de red neuronal profunda (DNN)

Declaración CREATE MODEL para modelos de DNN

Para crear un modelo de red neuronal profunda en BigQuery, usa la declaración CREATE MODEL de BigQuery ML con los tipos de modelo DNN_CLASSIFIER o DNN_REGRESSOR. Estos modelos se compilan mediante estimadores de TensorFlow.

Sintaxis de CREATE MODEL

{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL} model_name
[OPTIONS(MODEL_TYPE = { 'DNN_CLASSIFIER' | 'DNN_REGRESSOR' },
         ACTIVATION_FN = { 'RELU' | 'RELU6' | 'CRELU' | 'ELU' | 'SELU' | 'SIGMOID' | 'TANH' },
         AUTO_CLASS_WEIGHTS = { TRUE | FALSE },
         BATCH_SIZE = int64_value,
         CLASS_WEIGHTS = struct_array,
         DROPOUT = float64_value,
         EARLY_STOP = { TRUE | FALSE },
         HIDDEN_UNITS = int_array,
         LEARN_RATE = float64_value,
         INPUT_LABEL_COLS = string_array,
         MAX_ITERATIONS = int64_value,
         MIN_REL_PROGRESS = float64_value,
         OPTIMIZER = { 'ADAGRAD' | 'ADAM' | 'FTRL' | 'RMSPROP' | 'SGD' }
)];

CREATE MODEL

Crea un modelo nuevo de BigQuery ML en el conjunto de datos especificado. Si el nombre del modelo ya existe, CREATE MODEL muestra un error.

CREATE MODEL IF NOT EXISTS

Crea un modelo de BigQuery ML nuevo solo si el modelo no existe en la actualidad en el conjunto de datos especificado.

CREATE OR REPLACE MODEL

Crea un modelo de BigQuery ML nuevo y reemplaza los modelos existentes con el mismo nombre en el conjunto de datos especificado.

Opciones de modelos

En la actualidad, BigQuery ML admite las siguientes opciones. model_name y model_type son obligatorios; otros son opcionales.

model_name

model_name es el nombre del modelo de BigQuery ML que creas o reemplazas. El nombre del modelo debe ser único por conjunto de datos: ningún otro modelo o tabla puede tener el mismo nombre. El nombre del modelo debe seguir las mismas reglas de denominación que una tabla de BigQuery. Un nombre de modelo puede contener lo siguiente:

  • Hasta 1,024 caracteres
  • Letras en mayúscula o minúscula, números y guiones bajos

model_name no distingue entre mayúsculas y minúsculas.

Si no tienes un proyecto predeterminado configurado, antepone el ID del proyecto al nombre del modelo en el siguiente formato, incluidos los acentos graves:

`[PROJECT_ID].[DATASET].[MODEL]`

Por ejemplo:

`myproject.mydataset.mymodel`

MODEL_TYPE

Sintaxis

MODEL_TYPE = { 'DNN_CLASSIFIER' | 'DNN_REGRESSOR' }

Descripción

Especifica el tipo de modelo. Esta opción es obligatoria.

ACTIVATION_FN

Sintaxis

ACTIVATION_FN =  { 'RELU' | 'RELU6' | 'CRELU' | 'ELU' | 'SELU' | 'SIGMOID' | 'TANH' }

Descripción

Para los tipos de modelo de DNN, especifica la función de activación de la red neuronal.

Argumentos

Las siguientes opciones están disponibles:

El valor predeterminado es 'RELU'.

AUTO_CLASS_WEIGHTS

Sintaxis

AUTO_CLASS_WEIGHTS = { TRUE | FALSE }

Descripción

Si se deben equilibrar las etiquetas de clase mediante pesos para cada clase en proporción inversa a la frecuencia de esa clase

Úsalo solo con el modelo DNN_CLASSIFIER.

De forma predeterminada, los datos de entrenamiento que se usan para crear un modelo clasificador de DNN multiclase no están ponderados. Si las etiquetas en los datos de entrenamiento no tienen un equilibrio, el modelo puede aprender a predecir la clase de etiquetas más popular, lo que podría no ser conveniente.

Para equilibrar cada clase, usa la siguiente fórmula:

total_input_rows / (input_rows_for_class_n * number_of_unique_classes)

Argumentos

Acepta un BOOL. El valor predeterminado es FALSE.

BATCH_SIZE

Sintaxis

BATCH_SIZE = int64_value

Descripción

Para los tipos de modelo de DNN, especifica el tamaño del minilote de las muestras que se envían a la red neuronal.

Argumentos

Un número positivo que no sea mayor que 8,192

El valor predeterminado es el valor menor de 1,024 y la cantidad de muestras.

CLASS_WEIGHTS

Sintaxis

CLASS_WEIGHTS = struct_array

Descripción

Son los pesos que se usan para cada etiqueta de clase. Esta opción no se puede especificar si AUTO_CLASS_WEIGHTS es TRUE.

Argumentos

struct_array es un ARRAY de STRUCT; cada STRUCT contiene una STRING que contiene la etiqueta de clase y un FLOAT64 que contiene el peso de esa etiqueta. Debe haber un peso para cada etiqueta de clase. No es necesario que los pesos sumen uno. Por ejemplo:

CLASS_WEIGHTS = [STRUCT('example_label', .2)]

DROPOUT

Sintaxis

DROPOUT = float64_value

Descripción

Para los tipos de modelo de DNN, especifica la tasa de abandono de unidades en la red neuronal.

Argumentos

Un valor válido no debe ser negativo ni mayor que 1.0. El valor predeterminado es 0.0.

EARLY_STOP

Sintaxis

EARLY_STOP = { TRUE | FALSE }

Descripción

Indica si el entrenamiento debe detenerse después de la primera iteración en la que la mejora de la pérdida relativa es menor que el valor especificado para MIN_REL_PROGRESS.

Argumentos

El valor es BOOL. El valor predeterminado es TRUE.

HIDDEN_UNITS

Sintaxis

HIDDEN_UNITS = int_array

Descripción

Para los tipos de modelo de DNN, especifica las capas ocultas de la red neuronal.

Argumentos

Un arreglo de números enteros que representa la arquitectura de las capas ocultas. Si no se especifica, BigQuery ML aplica una sola capa oculta que no contiene más de 128 unidades. La cantidad de unidades se calcula en función de diversos aspectos, como las columnas de atributos y la cantidad de valores categóricos.

Ejemplo

HIDDEN_UNITS = [256, 128, 64]

En este ejemplo, se representa una arquitectura de 3 capas ocultas con 256, 128 y 64 nodos, respectivamente.

INPUT_LABEL_COLS

Sintaxis

INPUT_LABEL_COLS = string_array

Descripción

Son los nombres de las columnas de etiquetas en los datos de entrenamiento.

Argumentos

string_array es un ARRAY de STRING. Los tipos de modelo de DNN solo admiten valores string_array que contienen un elemento.

LEARN_RATE

Sintaxis

LEARN_RATE = float64_value

Descripción

La tasa de aprendizaje inicial para el entrenamiento

Argumentos

float64_value es un FLOAT64. El valor predeterminado es 0.01.

MAX_ITERATIONS

Sintaxis

MAX_ITERATIONS = int64_value

Descripción

Es la cantidad máxima de iteraciones o pasos de entrenamiento.

Argumentos

int64_value es un INT64. El valor predeterminado es 20.

MIN_REL_PROGRESS

Sintaxis

MIN_REL_PROGRESS = float64_value

Descripción

La mejora de pérdida relativa mínima que se necesita para continuar con el entrenamiento cuando se configura EARLY_STOP como verdadero. Por ejemplo, un valor de 0.01 especifica que cada iteración debe reducir la pérdida en un 1% para que el entrenamiento continúe.

Argumentos

float64_value es un FLOAT64. El valor predeterminado es 0.01.

OPTIMIZER

Sintaxis

OPTIMIZER =  { 'ADAGRAD' | 'ADAM' | 'FTRL' | 'RMSPROP' | 'SGD' }

Descripción

Para los tipos de modelo de DNN, especifica el optimizador a fin de entrenar el modelo.

Argumentos

Las siguientes opciones están disponibles:

El valor predeterminado es 'ADAM'.

INTERNAL DEFAULT OPTIONS

BigQuery ML también usa los siguientes valores predeterminados cuando se compilan modelos de DNN de manera interna.

loss_reduction = losses_utils.ReductionV2.SUM_OVER_BATCH_SIZE

batch_norm = False

Ejemplo

En el siguiente ejemplo, se entrena un modelo clasificador de DNN en 'mytable' con 'mylabel' como la columna de etiqueta.

CREATE MODEL project_id:mydataset.mymodel
OPTIONS(MODEL_TYPE='DNN_CLASSIFIER',
        ACTIVATION_FN = 'RELU',
        BATCH_SIZE = 2048,
        DROPOUT = 0.1,
        EARLY_STOP = FALSE,
        HIDDEN_UNITS = [128, 128, 128],
        INPUT_LABEL_COLS = ['mylabel'],
        LEARN_RATE=0.001,
        MAX_ITERATIONS = 50,
        OPTIMIZER = 'ADAGRAD')
AS SELECT * FROM project_id:mydataset.mytable;

Regiones admitidas

Los modelos de DNN de entrenamiento no son compatibles con todas las regiones de BigQuery ML. Para obtener una lista completa de las regiones y multirregiones compatibles, consulta la página Ubicaciones.