Análisis experimental mejorado del modelo de análisis de sentimientos basado en RNN

Análisis experimental mejorado del modelo de análisis de sentimientos basado en RNN

Introducción al experimento

  Primero, una breve introducción al conjunto de datos experimentales. Este conjunto de datos experimentales es el conjunto de datos estándar de IMDB en Keras, incluidas 50.000 reseñas de cine y televisión con un sesgo claro. El conjunto de datos en sí es muy adecuado para el análisis de sentimientos y es adecuado para nuevas reseñas. Sesgo de predicción. Este experimento primero unió los datos originales y usó parte de los datos como el conjunto de entrenamiento y el conjunto de prueba de acuerdo con el diseño experimental. El conjunto de datos contiene etiquetas que representan evaluaciones positivas y negativas. Hay muchos tipos de conjuntos de datos, incluidos El conjunto de datos de formato .ngz proporcionado por Keras oficial, así como el conjunto de datos de formato csv proporcionado por Kaggle, pero este experimento utiliza el conjunto de datos de empalme de archivos más primitivo proporcionado por la Universidad de Stanford oficial, y uno está específicamente definido en el código. El método se utiliza para obtener el formato comprimido del conjunto de datos y para descomprimir y limpiar el archivo, por lo que el proceso de extracción de características es más complicado, que se detallará a continuación.

  En segundo lugar, el modelo básico del experimento se basa en el modelo mejorado de red neuronal recurrente RNN de 6 capas. Sobre la base del RNN original, se agrega una capa de incrustación para la inicialización y se usa una capa de abandono para evitar el sobreajuste, y se usan dos capas al final. La capa completamente conectada controla la dimensión de salida y la normalización. Posteriormente, probamos la mejora del modelo utilizando LSTM y LSTM que admite cálculos hacia adelante y hacia atrás al mismo tiempo, y usamos los datos del Simple_RNN original como referencia y comparamos el rango iterativo de ajuste óptimo aproximado de la solución óptima del modelo.

  La mayor diferencia entre este experimento y el anterior es que el cluster de laboratorio se utiliza para el experimento iterativo por primera vez. Por lo tanto, por un lado, habrá algunas diferencias en la presentación de los resultados (los gráficos dibujados por Matplotlib no se pueden obtener directamente como antes, pero se pueden guardar y entrenar. El modelo compara y predice un conjunto de imágenes de datos de gráficos de observación hechos por uno mismo). Por otro lado, el uso de conjuntos de datos debe cambiarse (el clúster actualmente no puede descargar conjuntos de datos de Keras por sí mismo, por lo que el proceso de codificación y limpieza de datos no puede basarse en Tensorflow_V2 La mejor forma es utilizar el conjunto de datos importados localmente).

  En términos de presentación de datos, este experimento compara los resultados experimentales de múltiples grupos con diferentes épocas y lo usa como base para comparar el efecto de la mejora del modelo, ajustar la capa RNN sobre la base del modelo básico y controlar las variables para garantizar que los resultados experimentales sean verdaderos y confiables. Y configure el grupo de control estrictamente de acuerdo con la tabla de parámetros. Luego, una vez que se determina el modelo, se prueban Epoch y Batch_size, para obtener un modelo óptimo, se infieren las configuraciones de parámetros más razonables a través de la tendencia de cambio de training_loss y val_loss, y se deriva el modelo óptimo.

  El proceso de implementación del experimento se divide en 3 etapas: la primera etapa es la etapa de análisis del conjunto de datos, que limpia el formato del conjunto de datos y extrae las características que deben utilizarse. En la segunda etapa, se construye el modelo, se diseñan esquemas de mejora factibles, se diseñan experimentos de control y se diseñan observaciones. En la tercera etapa, prueba de codificación, se utilizan grupos para aprender un modelo con un número relativamente grande de neuronas, se comparan los resultados de la observación y se resumen los datos experimentales a través de los resultados, mientras que los parámetros se ajustan para optimizar el modelo y se deriva el modelo objetivo.

entorno de laboratorio

Entorno de software:

  Sistema operativo Centos OS7, entorno de codificación Pycharm IDE, Intérprete Anacodna 3.

Entorno de hardware:

  Nodo informático único en clúster de laboratorio.

Uso de bibliotecas de terceros:

  1. Biblioteca de funciones Tensorflow_v1: la biblioteca principal del experimento es la base de la construcción del modelo y la herramienta clásica de Shengjing Network.
  2. re biblioteca: esta es una biblioteca que se usa poco, su función es crear un conjunto de datos de equipo de funciones regulares para el proceso de limpieza que la usará.
  3. biblioteca os: Debido a la estructura especial del conjunto de datos, es necesario utilizar el método os para determinar la ruta del conjunto de datos y crear una lista de archivos de datos.
  4. Biblioteca urllib_request: se utiliza para acceder a la dirección de destino para descargar el conjunto de datos.
  5. Tarfile library: una biblioteca de procesamiento de descompresión de archivos estándar, que también se ha utilizado en experimentos anteriores.
  6. Biblioteca de Keras: una poderosa biblioteca de clases de modelos que proporciona la mayoría de las capas de modelo que se implementan y optimizan.

Objetivo del experimento

  Actualmente, obtuve un conjunto de datos IMDB de reseñas de películas. Las reseñas de películas que contiene están sesgadas, por lo que es muy adecuado para resolver el problema de la predicción de contenido del análisis de sentimientos. Se puede entrenar un modelo con mejores puntajes para realizar nuevas reseñas. Puntúe para determinar si se trata de una revisión positiva.

  Este experimento pasará múltiples experimentos de control para contar los parámetros relativamente buenos del modelo y evaluar los pros y los contras de diferentes esquemas de mejora en el proceso, encontrar las razones de los cambios en los resultados experimentales y verificarlos. Al mismo tiempo, se ordenan los resultados de múltiples experimentos, se dan los resultados del análisis estadístico y se genera el modelo final.

  Para los individuos, el propósito principal de este experimento es aprender el proceso de ajuste del modelo y encontrar la base para mejorar el modelo y evaluar el modelo mejorado, y resumir y registrar la importancia del ajuste de los parámetros del modelo.

procedimiento de experimento

  En primer lugar, la etapa de análisis del conjunto de datos en realidad no es fluida, porque el clúster no puede descargar conjuntos de datos de Keras, la primera limpieza de datos y la mayor parte de la codificación fallaron (la primera vez que se utilizó el formato IMDB.npz en Keras_datasets). Sin embargo, la computadora local no tiene suficiente potencia informática para soportar el proceso de entrenamiento de la red neuronal modelo en el entorno v2 (se produjo un error de desbordamiento cuando se ejecutaba en epoch (2/10), que fue causado por una potencia informática insuficiente). Entonces, para poder utilizar la potencia de cálculo del clúster, se cambió el primer diseño y el método de uso del conjunto de datos, y se encontró el mismo conjunto de datos (formato diferente, descarga de espejo proporcionada por la Universidad de Stanford) para la experimentación. Sin embargo, debido a cambios en el formato del conjunto de datos, el método de limpieza debe ajustarse en consecuencia. Primero, se define un archivo getIMDB.py separado en el código para la descarga y descompresión de datos. Luego, la parte dataPreformation está diseñada para la limpieza de datos y el empalme de texto, y luego el proceso de limpieza de datos se describe en detalle:

  Primero, se define un método rm_tags para el juicio regular del texto, y el texto no convencional que no se ajusta a la expresión regular se establece en una cadena vacía "" (aquí la expresión regular se cita de la ley del profesor anterior de CSDN después del análisis de la consola del conjunto de datos para resumir). Luego, comience a definir el método de lectura del conjunto de datos detallados readFiles. Para facilitar el trabajo del clúster, seleccione la ruta relativa a leer, pero para facilitar la ejecución del código, el texto y el número deben estar conectados. En este método, los dos comentarios sesgados están separados Lea, clasifique y cuente el número, cree una etiqueta 0-1 con el mismo tamaño de matriz para marcar los dos sesgos de comentarios de 'negativo' y 'positivo' (el diseño experimental es leer comentarios positivos positivos primero y luego comentarios negativos negativos , Primero configure [1] * 12500 y luego [0] * 12500). Una vez definida la etiqueta, todos los textos de los comentarios se leen en el búfer en orden y el método finalmente devuelve la etiqueta y la colección de texto. En este punto, la tarea de limpieza de datos finaliza y comienza el proceso de creación del diccionario y el modelo.

  Utilice el método readFiles recién definido para leer el conjunto de datos y asigne el valor de retorno a la etiqueta y las variables de texto del conjunto de entrenamiento y del conjunto de prueba. Construya un diccionario de mapeo de palabras y números para incrustaciones. Aquí se usa el Tokenizer de Keras para la conversión. Puede pasar un número de palabras como parámetro durante el proceso de inicialización, pero su valor predeterminado es Ninguno, lo que significa que procesará todo Palabras, pero si se establece en un número entero, las últimas num_words palabras que son las más comunes y más frecuentes (pueden considerarse como la longitud del diccionario). En este experimento, la configuración aquí es 4000 (como valor inicial, y luego hay una configuración de 5000 en el grupo de control). Por lo tanto, Tokenizer se usa para vectorizar texto o convertir texto en secuencia (es decir, una sola palabra y el subíndice correspondiente Forme una lista, contando desde 1) de la clase. Se utiliza para el primer paso del preprocesamiento de texto: segmentación de palabras. Una vez finalizada la subdivisión, utilice el método texts_to_sequences para asignar las palabras de la reseña de la película al número. Después de este paso, el texto de la reseña de la película se ha procesado en una secuencia de subíndices de palabras. Y a partir de lo anterior, el subíndice de una palabra se basa en su frecuencia en el conjunto de datos, cuanto mayor es el número, más frecuentemente aparece la palabra. Posteriormente, en aras de la simplicidad, keras solo puede aceptar entradas de secuencia de la misma longitud. Por lo tanto, si la longitud de la secuencia actual es desigual, debe usar pad_sequences (). Esta función convierte la secuencia en una nueva secuencia con la misma longitud después del llenado. En este experimento, la longitud de la secuencia es 400 y el grupo de control es 500. (Cuanto mayor sea la duración de la secuencia, mayor será el tiempo de formación. Esto depende de la duración media de la revisión )

  Luego, diseñe el modelo. El modelo es un modelo de secuenciación de aprendizaje profundo con un total de 6 capas. La primera es aplicar una capa de incrustación del diccionario recién definido y luego una capa de regularización de abandono para descartar el 50% de las neuronas para reducir los enlaces redundantes, y luego Conecte una capa SimpleRNN (el grupo de control usa LSTM y LSTM con envoltorios de cálculo hacia adelante y hacia atrás). Luego conecte una capa de 64 neuronas completamente conectada (función de activación RELU), luego conéctese a una capa de abandono y finalmente conéctese a una capa de normalización para finalizar. El modelo utiliza la entropía cruzada binaria como función de pérdida, el método de optimización del modelo se establece en Adam y el resultado del modelo se define en modo de precisión. Después de que se construye el modelo, el modelo se aplica al conjunto de prueba, se calcula la puntuación y se cuentan los datos durante el proceso de iteración del modelo, y se registran las pérdidas y val_loss durante el proceso de época para la selección de parámetros del modelo.

  Finalmente, los parámetros se diseñan como un grupo de experimentos de control para realizar, comparar y analizar los resultados de los datos de prueba, y mejorar continuamente el modelo. Luego, encuentre la diferencia entre aplicar LSTM y B-LSTM, registre los datos y guarde el modelo óptimo. A continuación, se da primero el diseño de código del modelo final, y luego se dan el proceso de implementación y el diseño de parámetros del experimento de control.

Código de experimento

  El código diseñado en este experimento contiene dos archivos principales, getIMDB.py y exeIMDB.py. El primer método se utiliza para descargar y descomprimir el conjunto de datos. El segundo método se utiliza para la limpieza de datos y la implementación del modelo.

1.getIMDB.py

Parte de referencia de la función de biblioteca:

# -*- coding: utf-8 -*-
# Time    : 2020/9/14 14:32
# Author  : JinyuZ1996
# File    : getIMDB.py

import urllib.request
import os
import tarfile

Parte de realización específica:

# 定义下载链接和安装地址用于判断是否已经存在
url = "http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz"
# 如果已经下载过则不执行下载
if not os.path.isfile("data/aclImdb_v1.tar.gz"):
    result = urllib.request.urlretrieve(url, "data/aclImdb_v1.tar.gz")
    # 打印下载过程
    print('Processing download:', result)
# 解压数据集(如果已经解压就跳过)exists方法可用于判定解压后的文件夹存在与否
if not os.path.exists("data/aclImdb"):
    # 经典的解压库tarfile
    tfile = tarfile.open("data/aclImdb_v1.tar.gz", 'r:gz')
    # 将东西解压到data文件夹下
    tfile.extractall('data/')

2.exeIMDB.py

Parte de referencia de la función de biblioteca:

# -*- coding: utf-8 -*-
# Time    : 2020/9/15 14:37
# Author  : JinyuZ1996
# File    : exeIMDB.py

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.layers import Embedding
from tensorflow.keras.preprocessing import sequence
from tensorflow.keras.preprocessing.text import Tokenizer
import tensorflow.keras.layers as layers
import re
import os

Parte de la definición de función:

# 创建正则表达式预处理数据
# re.compile方法将正则表达式的字符串形式编译成正则表达式对象
reExpression = re.compile(r'<[^>]+>')


# 方法定义部分
# 定义正则方法去区分评论数据的所在(行中位置)
# sub方法在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
def regularTransform(text):
    return reExpression.sub('', text)


# 读取数据集的方法
def readFiles(filetype):
    # 定位并找到数据集
    path = "data/aclImdb/"
    # 创建缓冲区
    file_list = []
    # 拼接出积极评价路径(这里存在训练集和测试集)(IMDB中是分积极评价和消极评价的,是有倾向的数据集)
    posDataPath = path + filetype + "/pos/"
    # 循环读取所有文件到文件列表
    for f in os.listdir(posDataPath):
        file_list += [posDataPath + f]
    # 消极评价读取
    negDataPath = path + filetype + "/neg/"
    for f in os.listdir(negDataPath):
        file_list += [negDataPath + f]
    # 将读取的文本长度打印出来,在集群中可以方便定位程序运行阶段(训练集测试集各25000个样本)
    print('read', filetype, 'files:', len(file_list))
    # 两种标签各包含一半(手动初始化1为pos,0为neg)
    labelSets = ([1] * 12500 + [0] * 12500)
    # 为所有文本创建缓冲区
    all_texts = []
    # 用拼接的方法读取所有评论内容
    for fi in file_list:
        with open(fi, encoding='utf8') as file_input:
            # 用自定义的正则式去替换文本中的噪声,同时将所有碎片文本拼合
            all_texts += [regularTransform(" ".join(file_input.readlines()))]
    # 方法返回的第一个是标签集合,第二个参数是文本集合
    return labelSets, all_texts

Parte de realización específica:

# 使用定义的方法读取训练集和测试集标签的数据
labelTrain, txtTrain = readFiles("train")
labelTest, txtTest = readFiles("test")

# 建立单词和数字映射的字典
token = Tokenizer(num_words=4000)
token.fit_on_texts(txtTrain)

# 将影评的单词映射到数字
text_train_seq = token.texts_to_sequences(txtTrain)
text_test_seq = token.texts_to_sequences(txtTest)

# 让所有影评保持在400个数字如果长度不足的话该方法会补齐长度来满足Keras训练的需求(以数字形式去进行训练)
trainSet = sequence.pad_sequences(text_train_seq, maxlen=400)
testSet = sequence.pad_sequences(text_test_seq, maxlen=400)

# 模型设计开始(定义序列模型)
model = Sequential()
# Embedding层input_dim代表的是字典的长度,output_dim代表的是全连接嵌入的维度
# input_length当输入序列的长度固定时,该值为其长度。如果要在该层后接Flatten层,然后接Dense层,则必须指定该参数,否则Dense层的输出维度无法自动推断。
model.add(Embedding(output_dim=64, input_dim=4000, input_length=400))
# 使用Dropout方法进行正则化丢弃50%的神经元降低冗余链
model.add(Dropout(0.5))
# 加了一个双向LSTM层,LSTM能够在更长的序列中有更好的表现,前面的是一个双向封装器实现LSTM前后向进行计算
model.add(layers.Bidirectional(layers.LSTM(64)))
# 接一个64神经元的全连接层
model.add(Dense(units=64, activation='relu'))
# 使用Dropout方法进行正则化丢弃50%的神经元降低冗余链接
model.add(Dropout(0.5))
# 用sigmoid归一化约束输出为单一输出产生预测结果
model.add(Dense(units=1, activation='sigmoid'))
# 将模型进行参数打印
model.summary()
# 定义模型的损失函数,优化方法,以及精确度
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练的过程记录会被返回回来可以使用matplotlib进行绘制,但是集群无法使用matplotlib绘制,所以注释掉了后面额展示部分
train_history = model.fit(trainSet, labelTrain, batch_size=400, epochs=7, verbose=1, validation_split=0.2)

scores = model.evaluate(testSet, labelTest, verbose=1)
print(scores[1])

Diseño de control experimental

  De hecho, el modelo más importante después de que comenzó el experimento es determinar primero la elección de optimización. Este experimento realizó principalmente dos modificaciones de capa central de LSTM y Bidirectional_LSTM, porque sabemos que LSTM nació para resolver el problema de dependencia de largo alcance de SimpleRNN E introdujo los conceptos de memoria a largo plazo y memoria a corto plazo, y mejoró el RNN original con el mecanismo de activación como núcleo. El B-LSTM cíclico bidireccional tiene como objetivo considerar tanto la memoria de largo plazo como la influencia de la información en los momentos posteriores, así como el contexto de una palabra al mismo tiempo, por lo que es equivalente a un LSTM que agrega información en orden inverso de tiempo.

  El diseño experimental (incluida la secuencia) y los resultados son los siguientes:

Chart_1: diez grupos de tabla de estadísticas de resultados de experimentos de control de optimización de modelo

  Al comienzo del experimento, se usó el SimpleRNN proporcionado por Keras para el experimento. El tamaño predeterminado del diccionario de la capa de incrustación se estableció en 4000, la capa de abandono se estableció de manera predeterminada para retener el 50% de las neuronas, el tamaño de lote predeterminado en 400 y la Época se estableció en 10 (al principio, establezca una Época más grande para observar Punto de montaje)

Pic_1: la primera ronda de composición de modelos experimentales
Pic_2: Imagen de comentarios de la primera ronda de clústeres experimentales

  Después de pasar la primera ronda de experimentos, el modelo estaba muy sobreajustado. Los parámetros experimentales se ajustaron de acuerdo con los resultados iterativos de la retroalimentación del clúster, y Epoch se ajustó a 5 (puede ver que después de Epoch = 5, la pérdida disminuye y la val_loss comienza a aumentar. , Es el punto crítico donde se produce el sobreajuste) Luego, otros parámetros permanecen sin cambios y se inicia la segunda ronda de experimentos.

  Como se muestra en Chart_1, la segunda ronda de experimentos ha resuelto el problema de sobreajuste. El modelo encaja normalmente. Ahora queremos obtener un modelo mejor mejorado (para obtener una mejor puntuación del conjunto de pruebas), la primera estrategia a considerar es Cambie el SimpleRNN de la capa central, inicie el tercer y cuarto conjunto de experimentos para asegurarse de que todos los parámetros de la segunda ronda del proceso del experimento no cambien, pruebe los efectos de expresión de LSTM y B-LSTM respectivamente, y registre los datos.

Pic_3: El tercer grupo de composición del modelo experimental
Pic_4: El cuarto grupo de composición del modelo experimental

  De acuerdo con los resultados del tercer y cuarto grupo de experimentos, B-LSTM tiene una mejor expresión como capa central, por lo que el siguiente paso es controlar que la capa central sea B-LSTM sin cambios para el ajuste de parámetros, encontrar la dirección que pueda mejorar los parámetros y grabación. Por supuesto, antes de esto, para garantizar que el número de iteraciones alcanzara el valor predeterminado que mejor se ajustaba, en el proceso de diseño de experimentos, se diseñó una quinta combinación y un sexto grupo de experimentos para probar los efectos de expresión de B-LSTM en Epoch + y Epoch-, y se encontró , Con la condición de que otros parámetros permanezcan sin cambios, el efecto de expresión del modelo empeora (se produjo un fenómeno de sobreajuste y desajuste respectivamente). Entonces, los experimentos de seguimiento comenzaron con Epoch = 5 como valor predeterminado. En el séptimo conjunto de experimentos, el tamaño de lote se ajustó a 500. Luego, al observar los resultados de retroalimentación, se encontró que el efecto de expresión en el conjunto de prueba no era ideal y se analizaron los datos iterativos. Se encuentra que la val_loss del modelo aumenta mientras que la trainning_loss sigue cayendo durante la Época 4-5. Se especula preliminarmente que el modelo puede tener una tendencia de sobreajuste en este momento, por lo que se llega a la primera conclusión: el parámetro batch_size se expande para asegurar el ajuste Para obtener los mejores resultados, el número de iteraciones de Epoch debe reducirse en consecuencia.

Pic_5: Comentarios del séptimo grupo experimental

  Para probar la influencia de otros parámetros en el modelo, todavía controlamos el número de iteraciones Epoch = 5 para experimentos posteriores. En el octavo grupo de experimentos, se modifica la longitud del diccionario de la capa Embedding, aumentando la longitud del diccionario a 5000, y el control de otras variables es lo mismo que el cuarto grupo de experimentos. Según el análisis de retroalimentación, la conclusión es similar a la del séptimo grupo. Si se amplía la longitud del diccionario, el número de iteraciones de Epoch debe reducirse en consecuencia para garantizar un mejor efecto de ajuste (se supone que si se reduce el diccionario, se debe aumentar Epoch. ).

Pic_6: El octavo grupo de estructura del modelo experimental
Pic_7: Comentarios del octavo grupo experimental

  En el noveno conjunto de experimentos, intente reducir la intensidad de la deserción y retener más conexiones de neuronas. El modelo también tiende a sobreajustarse. Los métodos de mejora opcionales ahora han aumentado mucho. Puede optar por reducir el tamaño de lote (si es difícil pagar un tamaño de lote demasiado grande ), puede optar por reducir la longitud del diccionario, por supuesto, también puede optar por reducir el número de Épocas como los dos primeros grupos.

Pic_8: Comentarios del noveno grupo experimental

  El décimo conjunto de experimentos se llevó a cabo como un experimento complementario. En este momento, solo aumentamos la longitud del diccionario de la capa de inserción. Esta vez intentamos reducir el diccionario. Al observar los resultados experimentales, encontramos que bajo la condición de Epoch = 5, la val_loss del modelo está en El estado de oscilación y la pérdida se encuentran en un estado de disminución aproximadamente lineal, por lo que se puede determinar que el modelo no se ajusta bien en este momento. Debería aumentarse el número de iteraciones de Epoch. Está en consonancia con la conclusión del experimento anterior ocho.

Pic_9: Experimento diez Estructura del modelo
Pic_10: Comentarios de clúster del décimo experimento

  Según el décimo conjunto de datos experimentales de retroalimentación, se puede encontrar que la longitud del diccionario de la capa de incrustación del modelo no es tan larga como sea posible. Aunque aumentar la longitud del diccionario puede reducir el número de épocas, un diccionario pequeño y preciso compuesto por las primeras N palabras de uso común puede Logre un mejor efecto de ajuste en el conjunto de datos de IMDB (aunque esto puede llevar más tiempo y costo)

Resumen del experimento

  En el proceso del experimento, primero use el modelo SimpleRNN más básico como la capa central para el ajuste para obtener un punto de referencia, y luego pruebe dos esquemas de mejora factibles de acuerdo con el diseño. Después de las pruebas experimentales, el efecto de expresión es mejor en las mismas condiciones de prueba. El modelo debe ser B-LSTM, pero para la capa central y el modelo en sí, todavía hay muchos parámetros que afectan el efecto final del ajuste que deben probarse y ajustarse. Para obtener el modelo óptimo, se han realizado muchas pruebas desde el cuarto experimento. Este experimento intenta encontrar la relación entre los parámetros y el efecto de ajuste final. Con base en los resultados experimentales preliminares, se resume lo siguiente:

  En primer lugar, el número de pasos iterativos de Epoch es la variable más intuitiva que afecta directamente el efecto de ajuste. En los experimentos posteriores, el principio básico es discutir los cambios provocados por el efecto de ajuste del modelo por los cambios de otros parámetros mientras se controla la Época sin cambios.

  En segundo lugar, entre otros parámetros variables, la elección de batch_size también tiene una gran influencia en la velocidad de entrenamiento y ajuste del modelo. Un pequeño batch_size corresponde a un tiempo de época más alto. En otras palabras, el número de iteraciones de época se puede reducir aumentando batch_size.

  Entonces, la capacidad de diccionario de la capa Embedding también es un parámetro que tiene un impacto relativamente grande en el grado de ajuste del modelo. Después de tres conjuntos de comparaciones, se puede encontrar que una alta capacidad de diccionario puede acelerar el proceso de convergencia de aprendizaje y reducir el número de épocas. Pero en términos relativos, un diccionario más conciso puede proporcionar una puntuación más alta en el conjunto de pruebas, a expensas de la velocidad de convergencia y el tiempo de entrenamiento.

  Finalmente, de hecho, en el transcurso de este experimento, también se cambió el porcentaje de la capa de abandono, pero después de la prueba, se encontró que el nivel de descarte aleatorio del 50% sigue siendo un buen nivel para evitar el sobreajuste, y su fuerza no debe reducirse.

  En lo que al experimento se refiere, se puede obtener un modelo óptimo aproximado a través de una serie de parámetros de ajuste, porque de hecho existen muchos métodos mejorados que se pueden emparejar, y la profundidad del modelo no es muy alta, es un experimento relativamente simple. Pero a través del proceso de diseño del experimento y el proceso de análisis de los resultados, por un lado, ayuda a las personas a mejorar su competencia en el uso de grupos, mejorar su competencia en el ajuste de variables y aprender a observar la pérdida para definir la calidad del ajuste. Al mismo tiempo, cansado de cierta experiencia en la mejora de modelos. Todavía hay muchas deficiencias, y continuaremos aprendiendo en el futuro proceso de investigación y las evitaremos tanto como sea posible.

 

Supongo que te gusta

Origin blog.csdn.net/qq_39381654/article/details/108723554
Recomendado
Clasificación