Dynamic LSTM-based Memory Encoder For Long-term LLM Interactions

文章主要内容和创新点

主要内容

本文针对大型语言模型(LLMs)在长期交互中难以持续记住和整合用户特定偏好的问题,提出了Pref-LSTM框架。该框架是一个动态且轻量级的系统,结合了基于BERT的分类器和LSTM记忆模块:

  • 基于BERT的分类器用于识别用户对话中的偏好信息(包括显式和隐式偏好),通过合成的偏好与非偏好对话数据集进行训练;
  • LSTM记忆模块用于生成记忆嵌入,并将其作为软提示注入冻结的LLM中,以实现个性化响应。

实验结果显示,BERT分类器在识别用户偏好方面表现可靠,但LSTM记忆编码器未取得理想结果。研究证实,使用偏好过滤和LSTM门控原理进行用户偏好建模是可行的,且无需大量开销和微调。

创新点
  1. 提出了一种动态的、受LSTM启发的记忆存储系统,能够随上下文不断演化,持续更新用户偏好记忆;
  2. 评估了该方法在偏好跟随任务上与基线模型的性能,并与其他偏好跟随方法进行了对比,为LLM的长期个性化交互提供了新思路。

翻译部分

## Abstract(摘要)

大型语言模型(LLMs)的记忆存储正成为一个日益活跃的研究领域,特别是在实现长期对话中的个性化方面。我们提出了Pref-LSTM,这是一个动态且轻量级的框架,它结合了基于BERT的分类器和LSTM记忆模块,该模块生成记忆嵌入,然后将其作为软提示注入冻结的LLM中。我们合成了一个包含偏好

### 如何复现 Attention-Based Bidirectional LSTM Networks for Relation Classification #### 准备工作 为了成功复现基于注意力机制的双向长短期记忆网络(Att-BLSTM)用于关系分类的任务,需准备必要的环境和数据集。确保安装了Python以及常用的机器学习库如TensorFlow或PyTorch等框架。 #### 数据预处理 首先加载并清理训练所需的数据集。这通常涉及去除无关字符、分词、转换大小写等工作。对于每个样本中的词语,利用预先训练好的词向量模型将其转化为固定长度的向量表示形式[^3]。 ```python import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences def preprocess_data(texts, labels=None): tokenizer = Tokenizer(num_words=MAX_NB_WORDS) tokenizer.fit_on_texts(texts) sequences = tokenizer.texts_to_sequences(texts) word_index = tokenizer.word_index data = pad_sequences(sequences, maxlen=MAX_SEQUENCE_LENGTH) if labels is not None: label_encoder = LabelEncoder() encoded_labels = label_encoder.fit_transform(labels) return data, encoded_labels, word_index else: return data, word_index ``` #### 构建模型架构 构建包含五个主要组件的神经网络结构:输入层、嵌入层、双向LSTM层、注意层层及输出层。这里采用Keras API来定义这一复杂的深度学习模型[^4]。 ```python from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Embedding, Bidirectional, LSTM, Dense, Dropout, concatenate, Attention embedding_layer = Embedding(input_dim=vocab_size, output_dim=EMBEDDING_DIM, weights=[embedding_matrix], input_length=max_len, trainable=False) sequence_input = Input(shape=(max_len,), dtype='int32') embedded_sequences = embedding_layer(sequence_input) l_lstm = Bidirectional(LSTM(units=LSTM_UNITS, return_sequences=True))(embedded_sequences) attention_output = Attention()([l_lstm, l_lstm]) dense_1 = Dense(DENSE_UNITS, activation="relu")(attention_output) dropout_1 = Dropout(rate=DROPOUT_RATE)(dense_1) output = Dense(len(label_names), activation='softmax')(dropout_1) model = Model(inputs=sequence_input, outputs=output) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) ``` #### 模型训练与评估 完成上述准备工作之后就可以开始训练过程,在此期间可以设置早停策略防止过拟合现象发生;同时保存最佳性能参数以便后续测试阶段调用。最后通过验证集上的表现衡量整个系统的有效性[^2]。 ```python history = model.fit(x_train, y_train, batch_size=BATCH_SIZE, epochs=EPOCHS, validation_split=0.1, callbacks=[ EarlyStopping(monitor='val_loss', patience=PATIENCE), ModelCheckpoint(filepath=model_path, save_best_only=True)] ) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值