Cómo usar los parámetros del archivo de configuración: implementar el entrenamiento del modelo previamente entrenado

inserte la descripción de la imagen aquí

introducción

La aplicación de modelos de formación previa en varios campos ha logrado resultados notables, pero los modelos de formación previa estándar pueden no satisfacer completamente las necesidades individuales. Para lograr un mejor rendimiento y efectos, los investigadores y desarrolladores deben realizar una capacitación personalizada en modelos preentrenados. En el pasado, modificar la arquitectura del modelo, ajustar el flujo de procesamiento de datos, optimizar la estrategia de entrenamiento y ajustar la configuración de ejecución generalmente requería modificar el código fuente, lo que puede ser un desafío para la mayoría de los usuarios. Sin embargo, al modificar los parámetros del archivo de configuración, podemos ajustar de manera flexible varios aspectos del modelo preentrenado, lo que permite un entrenamiento personalizado.

Este artículo discutirá cómo realizar el entrenamiento personalizado del modelo pre-entrenado modificando los parámetros en el archivo de configuración. Presentaremos la estructura básica del archivo de configuración y el significado de los parámetros, elaboraremos el método y los pasos de la modificación de parámetros y mostraremos el impacto de la modificación de parámetros en el modelo de preentrenamiento a través de casos reales. A través de este método, los usuarios pueden modificar de manera flexible la arquitectura del modelo, ajustar los métodos de procesamiento de datos, optimizar las estrategias de capacitación y ajustar la configuración operativa de acuerdo con sus propias necesidades y características de la tarea para lograr un mejor rendimiento y resultados.

¿Por qué usar archivos de configuración para pre-entrenar modelos?

Para administrar varias configuraciones de experimentos de aprendizaje profundo, usamos archivos de configuración para registrar todas estas configuraciones. Este sistema de archivos de configuración tiene las características de modularidad y herencia.

El uso de archivos de configuración para pre-entrenar modelos tiene importantes ventajas de administración, flexibilidad, mantenibilidad, reproducibilidad y compartibilidad. Los archivos de configuración brindan una forma conveniente de registrar y administrar varias configuraciones de experimentos de aprendizaje profundo, lo que hace que el entrenamiento personalizado de modelos y la administración de experimentos sean más eficientes y confiables.

Usando el archivo de configuración, podemos separarnos del código fuente. Solo necesitamos modificar los parámetros del modelo en el archivo de configuración y agregar el bloque de modelo correspondiente para realizar la función de modificar el modelo. En comparación con el método de preentrenamiento más antiguo, que solo cambia los parámetros del modelo a través del conjunto de datos, este método de modificación del archivo de configuración puede modificar la esencia del modelo para que sea más adecuado para usted.

Sería aún más perfecto si el modelo configurado se puede visualizar a través del software Netron ¿En qué se diferencia esto de jugar con bloques de construcción?
inserte la descripción de la imagen aquí

Estructura del archivo de configuración

La estructura del archivo de configuración se puede dividir aproximadamente en los siguientes cuatro tipos:

  • Parte del modelo:

Arquitectura del modelo: incluyendo la estructura jerárquica del modelo, configuración de parámetros de cada capa, selección de la función de activación, etc.
Parámetros del modelo: incluida la tasa de aprendizaje, el tipo de optimizador, los parámetros de regularización y otros ajustes de parámetros relacionados con el entrenamiento del modelo.

  • Parte de datos (datos):

Ruta del conjunto de datos: especifique la ruta al conjunto de datos utilizado para el entrenamiento y la validación.
Preprocesamiento de datos: incluida la configuración de las operaciones de preprocesamiento, como la limpieza de datos, la estandarización de datos y la mejora de datos.
División de datos: especifique el método de división y la proporción del conjunto de entrenamiento, el conjunto de verificación y el conjunto de prueba.

  • Parte de la estrategia de entrenamiento (horario):

Estrategia de tasa de aprendizaje: establece el valor inicial de la tasa de aprendizaje, el método de caída, el número de pasos de caída, etc.
Estrategia de regularización: Establecer el método y los parámetros de regularización.
Tamaño del lote: especifica el número de muestras para cada lote de entrenamiento.
Iteraciones de entrenamiento: establezca el número total de iteraciones para el entrenamiento del modelo.

  • Sección de configuración de ejecución (tiempo de ejecución):

Dispositivo de entrenamiento: especifique en qué dispositivo de hardware entrenar, como CPU, GPU, etc.
Registro: establezca la ruta de guardado y el formato del archivo de registro.
Guardar modelo: especifique la ruta de guardado y la frecuencia de guardado de los parámetros del modelo durante el entrenamiento.
Herramienta de visualización: Seleccione una herramienta de visualización para monitorear los cambios del indicador durante el proceso de entrenamiento del modelo.

Este tipo de modificación del entrenamiento previo del modelo a través de archivos de configuración tiene una desventaja, es decir, debe basarse en los formatos de configuración especificados por diferentes marcos para configurar y definir parámetros. Aunque la capa inferior de cada marco utiliza un método similar a la antorcha, la combinación es diferente.

A continuación utilizo el archivo de configuración ResNet50 de Flying Plasma para ilustrar el significado de diferentes archivos de configuración.Tomando
como ejemplo la suite PaddleClas, el archivo de configuración es el siguiente:
inserte la descripción de la imagen aquí

# global configs
Global:
  checkpoints: null
  pretrained_model: null
  output_dir: ./output/
  device: gpu
  save_interval: 1
  eval_during_train: True
  eval_interval: 1
  epochs: 120
  print_batch_step: 10
  use_visualdl: False
  # used for static mode and model export
  image_shape: [3, 224, 224]
  save_inference_dir: ./inference
  # training model under @to_static
  to_static: False

# model architecture
Arch:
  name: ResNet50
  class_num: 1000
 
# loss function config for traing/eval process
Loss:
  Train:
    - CELoss:
        weight: 1.0
  Eval:
    - CELoss:
        weight: 1.0


Optimizer:
  name: Momentum
  momentum: 0.9
  lr:
    name: Piecewise
    learning_rate: 0.1
    decay_epochs: [30, 60, 90]
    values: [0.1, 0.01, 0.001, 0.0001]
  regularizer:
    name: 'L2'
    coeff: 0.0001


# data loader for train and eval
DataLoader:
  Train:
    dataset:
      name: ImageNetDataset
      image_root: ./dataset/ILSVRC2012/
      cls_label_path: ./dataset/ILSVRC2012/train_list.txt
      transform_ops:
        - DecodeImage:
            to_rgb: True
            channel_first: False
        - RandCropImage:
            size: 224
        - RandFlipImage:
            flip_code: 1
        - NormalizeImage:
            scale: 1.0/255.0
            mean: [0.485, 0.456, 0.406]
            std: [0.229, 0.224, 0.225]
            order: ''

    sampler:
      name: DistributedBatchSampler
      batch_size: 64
      drop_last: False
      shuffle: True
    loader:
      num_workers: 4
      use_shared_memory: True

  Eval:
    dataset: 
      name: ImageNetDataset
      image_root: ./dataset/ILSVRC2012/
      cls_label_path: ./dataset/ILSVRC2012/val_list.txt
      transform_ops:
        - DecodeImage:
            to_rgb: True
            channel_first: False
        - ResizeImage:
            resize_short: 256
        - CropImage:
            size: 224
        - NormalizeImage:
            scale: 1.0/255.0
            mean: [0.485, 0.456, 0.406]
            std: [0.229, 0.224, 0.225]
            order: ''
    sampler:
      name: DistributedBatchSampler
      batch_size: 64
      drop_last: False
      shuffle: False
    loader:
      num_workers: 4
      use_shared_memory: True

Infer:
  infer_imgs: docs/images/inference_deployment/whl_demo.jpg
  batch_size: 10
  transforms:
    - DecodeImage:
        to_rgb: True
        channel_first: False
    - ResizeImage:
        resize_short: 256
    - CropImage:
        size: 224
    - NormalizeImage:
        scale: 1.0/255.0
        mean: [0.485, 0.456, 0.406]
        std: [0.229, 0.224, 0.225]
        order: ''
    - ToCHWImage:
  PostProcess:
    name: Topk
    topk: 5
    class_id_map_file: ppcls/utils/imagenet1k_label_list.txt

Metric:
  Train:
    - TopkAcc:
        topk: [1, 5]
  Eval:
    - TopkAcc:
        topk: [1, 5]

Para la configuración de parámetros del modelo, aquí hay un truco que puede dividir todos los modelos en cuatro partes para la configuración, a saber:

  1. Módulo superior: el módulo superior es el módulo de más alto nivel de la red, responsable de la ejecución general de la salida y la tarea. Suele incluir una capa de salida, una función de pérdida, un indicador de evaluación, etc., para generar el resultado de la predicción final o realizar una tarea específica.
  2. Red troncal: La red troncal es la parte central de la red y es responsable de extraer representaciones de características de alto nivel de los datos de entrada. La red troncal generalmente consta de múltiples capas convolucionales, capas de agrupación y capas completamente conectadas para aprender las características de los datos de entrada capa por capa.
  3. Cuello: El cuello está ubicado entre la red troncal y el módulo de nivel superior, y desempeña el papel de conexión y conversión. El cuello generalmente consta de algunas capas o módulos intermedios, que se utilizan para procesar y comprimir aún más la representación de características extraída por la red troncal, para adaptarse mejor a las necesidades de tareas específicas.
  4. Cabeza: la cabeza se encuentra detrás del cuello y es responsable de procesar y decodificar las características que genera el cuello para generar el resultado de la predicción final. El encabezado generalmente incluye algunas capas completamente conectadas, capas de agrupación, capas de normalización, etc., para asignar características al espacio de salida final.

La ubicación de estas partes en la estructura de la red puede variar según la arquitectura de red específica, ya que los diferentes modelos de red pueden tener diferentes estructuras jerárquicas y configuraciones de componentes. Sin embargo, en términos generales, la red troncal generalmente se ubica en la parte media de la red, el cuello y la cabeza se ubican después de la red troncal y los módulos de nivel superior se ubican en la parte superior de la red.

Básicamente, muchos marcos de modelo tendrán una descripción general de los componentes del modelo: por ejemplo, PaddleDetection
inserte la descripción de la imagen aquí
Si puede averiguarlo, si se acoplan diferentes bloques, en realidad es lo mismo que jugar Lego, También puede deletrear un modelo usted mismo.

Un ejemplo de entrenamiento de un modelo a través de un archivo de configuración

Para modificar la configuración del modelo a través del archivo de configuración y realizar un entrenamiento previo al modelo, puede seguir el código de ejemplo a continuación:

import torch
import torch.nn as nn
from torchvision.models import resnet50
import yaml

# 加载配置文件
with open('config.yaml', 'r') as file:
    config = yaml.safe_load(file)

# 创建主干网络
if config['model']['type'] == 'resnet50':
    backbone = resnet50(pretrained=config['model']['pretrained'])
    backbone.fc = nn.Identity()  # 移除原始ResNet50的全连接层

# 获取主干网络输出尺寸
dummy_input = torch.zeros(1, 3, 224, 224)  # 假设输入为3通道、224x224的图像
backbone_output_size = backbone(dummy_input).size(1)

# 创建顶层模块
if config['top_module']['type'] == 'linear_classifier':
    top_module = nn.Sequential(
        nn.Dropout(config['top_module']['dropout']),
        nn.Linear(backbone_output_size, config['model']['num_classes'])
    )

# 创建颈部
if config['neck']['type'] == 'global_avg_pooling':
    neck = nn.AdaptiveAvgPool2d((1, 1))  # 全局平均池化

# 创建头部
if config['head']['type'] == 'linear_layer':
    head = nn.Linear(backbone_output_size, config['head']['hidden_size'])

# 进行预训练模型训练
# 定义损失函数和优化器等
loss_fn = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(list(backbone.parameters()) + list(top_module.parameters()), lr=config['training']['lr'])
epochs = config['training']['epochs']

# 进行训练循环
for epoch in range(epochs):
    # 在每个epoch中进行训练和验证等操作
    backbone.train()
    top_module.train()
    
    for batch_idx, (images, labels) in enumerate(train_loader):
        # 将输入数据(images)和标签(labels)加载到设备上
        images = images.to(device)
        labels = labels.to(device)
        
        # 前向传播
        features = backbone(images)
        outputs = top_module(features)
        
        # 计算损失
        loss = loss_fn(outputs, labels)
        
        # 反向传播和优化
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        
        # 打印训练信息
        if batch_idx % config['training']['log_interval'] == 0:
            print(f'Train Epoch: {
      
      epoch+1}/{
      
      epochs} '
                  f'Batch: {
      
      batch_idx+1}/{
      
      len(train_loader)} '
                  f'Loss: {
      
      loss.item()}')
    
    # 验证模式
    backbone.eval()
    top_module.eval()
    val_loss = 0
    correct = 0
    
    with torch.no_grad():
        for images, labels in val_loader:
            # 将输入数据(images)和标签(labels)加载到设备上
            images = images.to(device)
            labels = labels.to(device)
            
            # 前向传播
            features = backbone(images)
            outputs = top_module(features)
            
            # 计算损失
            loss = loss_fn(outputs, labels)
            val_loss += loss.item()
            
            # 计算准确率
            _, predicted = outputs.max(1)
            correct += predicted.eq(labels).sum().item()
    
    val_loss /= len(val_loader)
    accuracy = correct / len(val_dataset)
    
    # 打印验证信息
    print(f'Validation Epoch: {
      
      epoch+1}/{
      
      epochs} '
          f'Loss: {
      
      val_loss:.4f} Accuracy: {
      
      accuracy:.4f}')

# 保存模型
torch.save({
    
    
    'backbone_state_dict': backbone.state_dict(),
    'top_module_state_dict': top_module.state_dict(),
    'optimizer_state_dict': optimizer.state_dict(),
    'epoch': epochs
}, 'pretrained_model.pth')

Cómo ajustar el archivo de configuración para entrenar un modelo excelente

Al principio, debe usar los parámetros de configuración predeterminados del modelo preentrenado para el entrenamiento. Si encuentra que el rendimiento del modelo es promedio, entonces considere ajustar el archivo de configuración. Para modificar los parámetros de configuración para mejorar el rendimiento
del modelo, generalmente necesita juzgar y juzgar en función de los siguientes aspectos Ajuste:

Características del conjunto de datos

Observe las características de su conjunto de datos, incluida la resolución de la imagen, el espacio de color, la cantidad de clases objetivo y la variación entre clases, etc. Dependiendo de las características del conjunto de datos, puede elegir las estructuras apropiadas de la columna vertebral, el cuello y la cabeza, y los hiperparámetros correspondientes.

  1. Resolución de imagen:

La resolución de imagen se refiere al tamaño de píxel de la imagen, como 224x224 o 384x384. Las imágenes de alta resolución capturan más detalles, pero también requieren mayores recursos informáticos. Las imágenes de baja resolución pueden perder algunos detalles, pero son computacionalmente más eficientes.
Ejemplo: si el conjunto de datos contiene imágenes de alta resolución, la red troncal y la estructura del cuello se pueden seleccionar para manejar imágenes con detalles ricos. Por ejemplo, elija la red troncal ResNet-152 y un mapa de características de cuello más grande.

  1. espacio de color:

El espacio de color se refiere a la representación del color de la imagen, como RGB, escala de grises, etc. Diferentes espacios de color pueden tener diferentes efectos en diferentes tareas.
Ejemplo: para tareas basadas en información de color (por ejemplo, clasificación de imágenes, detección de objetos), generalmente se prefiere el espacio de color RGB. Para imágenes en blanco y negro, se puede utilizar un espacio de color en escala de grises.

  1. Número de categorías objetivo y variación:

El número de categorías objetivo en un conjunto de datos y la variación entre categorías tienen implicaciones importantes para el diseño del modelo y el ajuste de parámetros. Cuanto mayor sea la disparidad entre las diferentes clases, más compleja puede ser la estructura que necesite el modelo para manejar esta disparidad.
Ejemplo: para conjuntos de datos con una gran cantidad de categorías y una gran variación, se puede seleccionar una red troncal más profunda y más amplia para extraer características más ricas.

  1. Balance de muestra del conjunto de datos:

Si la distribución de las muestras de clase en el conjunto de datos está equilibrada también es un factor importante que afecta el diseño del modelo y el ajuste de parámetros. Si algunas clases tienen tamaños de muestra bajos, el modelo puede tender a predecir clases comunes con más frecuencia, lo que genera un rendimiento sesgado.
Ejemplo: para conjuntos de datos desequilibrados, las funciones de pérdida ponderada se pueden usar para aumentar el peso de las muestras de clase minoritarias para equilibrar el proceso de entrenamiento. También se pueden considerar técnicas de aumento de datos para aumentar el número de muestras en la clase minoritaria.

modelo de arquitectura

Comprender los principios y las ideas de diseño de la arquitectura modelo. Diferentes arquitecturas de modelos son adecuadas para diferentes tareas y conjuntos de datos. Por ejemplo, para tareas de detección de objetos, YOLOv3 es un modelo de uso común, que adopta estrategias de predicción y extracción de características especiales. De acuerdo con los requisitos de su tarea, puede intentar modificar el número de capas, canales, mecanismo de atención, etc. del modelo.

  1. Principios de la arquitectura modelo:

La arquitectura del modelo se refiere a la estructura general y los componentes del modelo, incluida la red troncal, el cuello y la cabeza, etc. Cada parte tiene una función específica y una filosofía de diseño para lograr un rendimiento óptimo para una tarea específica.
La red troncal es responsable de extraer características de alto nivel de imágenes sin procesar, generalmente en forma de red neuronal convolucional (CNN). Los módulos de cuello y cabeza son responsables de un mayor procesamiento e interpretación de las características de la red troncal y de producir los resultados finales de predicción.

  1. Aplicabilidad de diferentes arquitecturas modelo:

La elección de la arquitectura del modelo depende de las características de la tarea y el conjunto de datos. Diferentes tareas y conjuntos de datos requieren diferentes estrategias de predicción y representación de características, por lo que las arquitecturas de modelos aplicables también variarán.
Por ejemplo, para las tareas de clasificación de imágenes, el modelo debe tener buenas capacidades de extracción de características, por lo que una opción común es usar una red neuronal convolucional clásica (como ResNet, VGG, Inception, etc.) como red troncal y luego usar agrupación promedio global y clasificación lineal El órgano sirve como el cuello y la cabeza.
Para la tarea de detección de objetos, el modelo debe poder detectar tanto la ubicación como la categoría del objeto. YOLOv3 es un modelo de detección de objetos de uso común que divide una imagen en celdas de cuadrícula y predice múltiples cuadros delimitadores y probabilidades de clase en cada celda. Este diseño permite que YOLOv3 logre una alta precisión mientras mantiene una alta velocidad de detección.

  1. Modifique los parámetros clave de la arquitectura del modelo:

Al modificar la arquitectura del modelo, los parámetros clave incluyen el número de capas, el número de canales, el mecanismo de atención, etc.
Aumentar el número de capas en un modelo puede aumentar el poder de representación del modelo, pero también aumenta los requisitos de cómputo y memoria. Aumentar adecuadamente el número de capas puede mejorar el rendimiento del modelo, pero es necesario prestar atención al problema del sobreajuste.
Ajustar la cantidad de canales puede controlar la dimensionalidad y la complejidad del mapa de características. Aumentar la cantidad de canales puede mejorar la capacidad de representación de características, pero también aumentará el costo computacional. Ajustar correctamente la cantidad de canales puede equilibrar el rendimiento y la eficiencia.
La introducción de un mecanismo de atención puede aumentar la atención del modelo a características importantes, mejorando así el rendimiento. El mecanismo de atención se puede realizar mediante un mecanismo de autoatención (como Transformer), un mecanismo de atención de canal (como SENet), etc.

Investigación previa y experiencia

Consulte documentos de investigación relevantes, publicaciones de blog y lecciones aprendidas para modelos y configuraciones que han logrado un buen rendimiento. Puede aprender de la experiencia de otros e intentar usar configuraciones o ajustes de parámetros similares.

  1. Lea artículos de investigación relacionados:

Al leer artículos de investigación en campos relacionados, puede conocer los modelos y configuraciones actuales que logran un buen desempeño en una tarea específica. Los artículos suelen describir en detalle la configuración de la arquitectura y los parámetros del modelo, así como los resultados experimentales en diferentes conjuntos de datos.
Ejemplo: si se trata de tareas de clasificación de imágenes, puede consultar documentos de clasificación de imágenes conocidos en el campo, como ResNet, EfficientNet, ViT, etc. Conozca su diseño arquitectónico, la configuración de hiperparámetros y el rendimiento en conjuntos de datos disponibles públicamente.

  1. Publicación de blog de referencia y lecciones aprendidas:

Muchos profesionales del aprendizaje automático comparten sus experiencias y prácticas en publicaciones de blog o comunidades técnicas. Estos artículos a menudo brindan valiosos consejos sobre la configuración del modelo, el ajuste de parámetros y las técnicas.
Ejemplo: puede buscar técnicas de optimización para tareas o modelos específicos, como "mejorar el rendimiento de los modelos de detección de objetos" o "ajuste de hiperparámetros para redes neuronales". Lea estos artículos para obtener orientación y consejos prácticos.

  1. Ejemplos de proyectos compartidos y de código abierto:

Algunos proyectos y plataformas de código abierto permiten compartir ejemplos de modelos y configuraciones. Estos ejemplos pueden ayudarlo a comprender las arquitecturas de modelos y la configuración de parámetros que logran un buen rendimiento en tareas similares.
Ejemplos: los proyectos de código abierto en GitHub, las soluciones ganadoras en los concursos de Kaggle, compartir en foros, etc. son buenas formas de obtener ejemplos para compartir. Puede consultar estos ejemplos y hacer los ajustes necesarios de acuerdo con sus propias tareas.

Ajuste de hiperparámetros

Los hiperparámetros incluyen tasa de aprendizaje, tamaño de lote, caída de peso, etc. A través de la realización de experimentos y conjuntos de verificación, se pueden ajustar los hiperparámetros y se puede seleccionar la mejor configuración. Puede intentar optimizar el proceso de capacitación utilizando técnicas como el programador de tasa de aprendizaje, el optimizador adaptativo, etc.

  1. Ajuste de la tasa de aprendizaje:

La tasa de aprendizaje es un hiperparámetro importante que controla la magnitud de las actualizaciones de los parámetros del modelo. Una tasa de aprendizaje adecuada puede acelerar la convergencia del modelo y mejorar el rendimiento, mientras que una tasa de aprendizaje inapropiada puede hacer que el entrenamiento sea inestable o se estanque en un mínimo local.
Las estrategias comunes de ajuste de la tasa de aprendizaje incluyen la disminución de la tasa de aprendizaje, el precalentamiento de la tasa de aprendizaje, el ajuste adaptativo de la tasa de aprendizaje, etc. Puede probar diferentes programadores de tasa de aprendizaje, como StepLR, CosineAnnealingLR, ReduceLROnPlateau, etc., para ajustar dinámicamente la tasa de aprendizaje.

  1. Tamaño del lote:

El tamaño del lote se refiere al número de muestras utilizadas en cada actualización de parámetros. Los tamaños de lote más pequeños pueden mejorar la tasa de convergencia del modelo, pero pueden generar un mayor ruido durante el entrenamiento. Los tamaños de lote más grandes reducen el ruido pero consumen más memoria.
Al elegir un tamaño de lote, se deben considerar los recursos de hardware disponibles y las limitaciones de memoria. Por lo general, se recomiendan tamaños de lote más grandes, pero asegúrese de hacerlo dentro de los límites de sus recursos de hardware.

  1. Descenso de peso:

El decaimiento del peso es una técnica de regularización utilizada para reducir la magnitud de los parámetros del modelo para evitar el sobreajuste. Los valores de peso más grandes se pueden penalizar agregando un término de caída de peso a la función de pérdida.
El coeficiente de caída de peso generalmente se ajusta como un hiperparámetro. Puede probar diferentes factores de disminución de peso, como 0,0001, 0,001, etc., y observar el rendimiento del modelo en el conjunto de validación.

  1. Optimizador adaptativo:

Los algoritmos de optimización tradicionales, como el descenso de gradiente estocástico (SGD), tienen una tasa de aprendizaje fija y parámetros de impulso. Sin embargo, los optimizadores adaptativos (como Adam, RMSprop) pueden ajustar automáticamente la tasa de aprendizaje y los parámetros de impulso de acuerdo con el cambio del gradiente para mejorar el efecto del entrenamiento.
Al utilizar un optimizador adaptativo, puede ajustar parámetros como la tasa de aprendizaje, el impulso, la disminución del peso, etc., y observar el rendimiento del modelo en el conjunto de validación.

Ejemplo :
Suponiendo que está entrenando un modelo de detección de objetos, puede usar la siguiente configuración de hiperparámetros para el ajuste:

Tasa de aprendizaje: la tasa de aprendizaje inicial se establece en 0,001, y luego se utiliza la estrategia de disminución de la tasa de aprendizaje, por ejemplo, cada 10 épocas, la tasa de aprendizaje se reduce a la mitad de la actual.
Tamaño de lote: elija un tamaño de lote adecuado, como 32 o 64, según los recursos de hardware disponibles y las limitaciones de memoria.
Decaimiento de peso: pruebe diferentes coeficientes de decaimiento de peso, como 0,0001 o 0,001, y elija el valor que mejor se desempeñe en el conjunto de validación.
Optimizador adaptativo: use el optimizador Adam, configure la tasa de aprendizaje inicial adecuada, los parámetros de impulso y el coeficiente de caída de peso, por ejemplo, la tasa de aprendizaje es 0.001, el impulso es 0.9 y la caída de peso es 0.0005.
A través de los experimentos y el rendimiento del conjunto de validación, puede probar diferentes configuraciones de hiperparámetros y elegir la configuración que funciona mejor en el conjunto de validación. Se pueden utilizar técnicas como la validación cruzada para evaluar el rendimiento de diferentes configuraciones de hiperparámetros y elegir la configuración con el mejor rendimiento como opción final.

Cabe señalar que el ajuste de hiperparámetros es un proceso iterativo que requiere múltiples experimentos y ajustes basados ​​en la situación real. Además, también puede considerar el uso de herramientas automatizadas de ajuste de hiperparámetros como Hyperopt, Optuna, etc. para acelerar el proceso de búsqueda de hiperparámetros.

Experimentación iterativa y evaluación.

Realice una serie de experimentos y evaluaciones para observar cómo cambia el rendimiento del modelo en diferentes configuraciones. Utilice indicadores de evaluación apropiados (como exactitud, precisión, recuperación, mAP, etc.) para evaluar el rendimiento del modelo, y ajuste y optimice de acuerdo con los resultados de la evaluación.
Aquí hay algunas explicaciones detalladas y ejemplos:

  1. diseño experimental

Determinar los objetivos y las métricas de evaluación del experimento. De acuerdo con los requisitos de la tarea, seleccione los indicadores de evaluación apropiados, como la tasa de precisión, la tasa de precisión, la tasa de recuperación, mAP (precisión media media), etc. Asegúrese de que las métricas de evaluación reflejen completamente el rendimiento del modelo en diferentes configuraciones.

  1. Ajuste de parámetros

En función de los resultados de la investigación previa, la experiencia y el ajuste de hiperparámetros, se elige un conjunto inicial de parámetros de configuración. Estos parámetros incluyen la arquitectura del modelo, los hiperparámetros, la configuración del optimizador y más. Entrene el modelo con este conjunto de parámetros y evalúe el rendimiento en el conjunto de validación.

  1. Evaluación del desempeño

Calcule el rendimiento del modelo en el conjunto de validación o prueba de acuerdo con la métrica de evaluación seleccionada. Observa los valores de los indicadores, analízalos y compáralos. Encuentre la configuración con el mejor rendimiento comparando el rendimiento con diferentes configuraciones.

  1. Tuning y Optimización

Según los resultados de la evaluación, analice la diferencia de rendimiento del modelo en diferentes configuraciones. Si el modelo funciona mal bajo ciertas configuraciones, puede intentar ajustar los parámetros relacionados, como aumentar la cantidad de capas de red, ajustar la estrategia de disminución de la tasa de aprendizaje, cambiar el método de mejora de datos, etc. Vuelva a entrenar el modelo y vuelva a evaluar el rendimiento.

  1. experimento iterativo

Un proceso iterativo de realización de múltiples experimentos y evaluaciones. De acuerdo con los resultados de la ronda anterior de experimentos, se ajustan los parámetros de configuración y se realiza la siguiente ronda de entrenamiento y evaluación. A través de la iteración continua, el rendimiento del modelo se optimiza gradualmente.

Ejemplo: para tareas de detección de objetivos, puede probar diferentes redes troncales (como ResNet, EfficientNet, etc.), ajustar la profundidad y la cantidad de canales de la red, probar diferentes cabezales de detección (como YOLO, SSD, etc.), y ajuste los hiperparámetros relacionados (como la tasa de aprendizaje, el tamaño del lote, etc.). A través del entrenamiento y la evaluación, compare los valores de mAp bajo diferentes configuraciones y elija la configuración con el mejor rendimiento.

⚠️ Tenga en cuenta que al modificar los parámetros, se recomienda seguir los siguientes pasos:

  1. Identifique objetivos e indicadores: especifique los objetivos y los indicadores de rendimiento que desea mejorar, como mejorar la precisión de la clasificación y acelerar la inferencia del modelo.
  2. Principio de variable única: al ajustar los parámetros, intente cambiar solo una variable y mantenga los demás parámetros sin cambios. Esto permite una mejor comprensión del impacto de cada parámetro y evita la dificultad de analizar los resultados debido a la variación simultánea de múltiples parámetros.
  3. Establezca rangos y tamaños de paso razonables: establezca rangos y tamaños de paso razonables para los parámetros según la experiencia o la investigación previa. Evite establecer tamaños de paso que sean demasiado grandes o demasiado pequeños, ya que esto puede perder el óptimo o causar una sobreafinación.
  4. Experimento y evaluación: realice experimentos y evalúe el rendimiento del modelo. Utilice el conjunto de validación o la validación cruzada para evaluar el rendimiento del modelo bajo diferentes configuraciones de parámetros.Registre los resultados experimentales y realice estadísticas y análisis. Compare los indicadores de desempeño bajo diferentes configuraciones de parámetros y observe sus tendencias cambiantes y grados de influencia. Esto permite obtener información cuantitativa y cualitativa sobre el ajuste de parámetros.
  5. Iteración y optimización: de acuerdo con los resultados de los experimentos y análisis, los parámetros se ajustan aún más. Se pueden emplear métodos como la búsqueda en cuadrícula, la búsqueda aleatoria, la optimización bayesiana, etc. para explorar un espacio de parámetros más amplio y encontrar mejores configuraciones.
  6. Preste atención al equilibrio: al ajustar los parámetros, preste atención a equilibrar el rendimiento y las necesidades de varios aspectos. Por ejemplo, aumentar la complejidad de un modelo puede mejorar la precisión, pero también aumentar los requisitos de computación y memoria. Por lo tanto, es necesario hacer un balance entre el rendimiento del modelo y los recursos informáticos para encontrar la configuración óptima que se adapte a los requisitos de la tarea.

Supongo que te gusta

Origin blog.csdn.net/weixin_42010722/article/details/131400741
Recomendado
Clasificación