深度学习
文章平均质量分 55
郝同学
东南大学 九龙湖与四牌楼的匆匆过客
天津大学 津南郊区逐渐成长的算法人
欢迎各位NLPer互相交流学习!
展开
-
【ML】GBDT、Xgboost和LightGBM的模型理解
机器学习中的集成学习核方法总结,决策树CART,XGBoost,GBDT,LightGBM原创 2022-05-02 22:15:13 · 975 阅读 · 0 评论 -
【NLP】自然语言处理中的数据增强
自然语言处理中的数据增强 在实际的生产场景下,数据的稀缺性是一种常见的现象,因此如何进行数据增强或者是小样本学习是十分关键的技术。数据增强(DA)在机器学习领域多指采用一些方法(比如数据蒸馏,正负样本均衡等)来提高模型数据集的质量,增强数据。 最开始的数据增强在计算机视觉中得到了广泛的应用,然后被引入到自然语言处理中,并在许多任务中取得了改进。DA方法的重点之一是提高训练数据的多样性,从而帮助模型更好地泛化到未见测试数据。哈工大提出了最新的《自然语言处理数据增强方法》综述论文,155页pdf阐述转载 2022-04-12 15:49:10 · 1068 阅读 · 0 评论 -
深度学习中句子语义表征融合中加、乘方式的理解
一、问题背景 往往我们在将文本信息和图片信息进行Embedding表示之后,有时候我们需要进行语义信息的融合,我们常常使用简单的加法或点乘来进行信息融合,虽然加法和乘法交互看起来都挺自然而直观,但我们应该选择哪种方法? 在阅读论文的时候,偶然发现了来自 AAAI2018年接受的 FiLM: Visual Reasoning with a General Conditioning Layer 论文,提出了一种可以嵌入到CNN模型中的通用网络层,用于多输入任务。例如,对于分类+回归的任务,有可能回归任原创 2021-12-04 23:06:40 · 4026 阅读 · 1 评论 -
【Python】根据预测结果矩阵与实际结果矩阵计算模型正确率
判断两个数组对应位置相等的个数,然后计算模型预测的正确率一、问题背景二、解决方法一、问题背景 在多分类模型预测的结果中,我想知道预测的结果与实际的答案相比,其正确率是多少,这个时候我们往往是对应比较两个数组list之间对应相等的个数。因此,我大致总结了一些方法来计算此正确率。假设我们此处的预测结果和实际结果分别为:# 假设是三分类任务,存在0,1,2三种结果list1 = [1,2,0,0,1]list2 = [1,0,2,1,1]二、解决方法方法1:我立马能想到的方法就是直接遍历数组直原创 2021-11-28 21:40:22 · 2199 阅读 · 0 评论 -
深度学习中常见的句子编码方式(句子语义表示的方法)
一、Bert预训练:其中我们常用Bert预训练之后产生的CLS Token的浓缩表示表示一个句子;其次我们会使用seq长度的token组合的表示,这样多了一个句子长度的维度。二、BiLSTM:将前向lstm和后向lstm进行结合,这样句子就包含了前向和后向的所有信息,但这一类的方法由于LSTM的本身的时序性,导致了其耗时比较长;三、Glove等词向量模型:有时候直接使用目前现成的简单的词向量模型,效果反而还挺不错的;四、词袋模型:这种表示完全丢失了句子的语义顺序,大多数时候是不原创 2021-11-25 22:20:22 · 1811 阅读 · 0 评论 -
【Pytorch】pack_padded_sequence与pad_packed_sequence实战详解
一、问题背景 在NLP的相关任务中,我们使用RNN或LSTM处理文本序列时,通常来说句子的长度是不一致的,我们常常采用的方法使用< PAD >(0)来补全至相同长度的序列。虽然这个时候序列的长度是一致的,但是序列中填充了许多无效值 0 ,这个时候喂给 RNN 进行 forward 计算,不仅1.浪费计算资源,最后得到的值2.可能还会存在误差。 因此,为了解决这样的问题,在将序列送给 RNN 进行处理之前,需要采用 nn.utils.rnn.pack_padded_sequence 进行压原创 2021-10-24 15:46:24 · 2742 阅读 · 1 评论 -
【Pytorch】numpy数组与tensor互相转换的多种方法
一、numpy数组转化为torch中的tensor:总的来说有四种方法,如下:import torchimport numpy as nparr1 = np.array([1,2,3], dtype=np.float32)arr2 = np.array([4,5,6])print(arr1.dtype)print("nunpy中array的默认数据类型为:", arr2.dtype)tensor = torch.tensor(arr2)Tensor = torch.Tensor(arr原创 2021-09-04 16:10:46 · 57316 阅读 · 6 评论 -
【Pytorch】训练过程中学习率变化的几种策略
一、问题背景 我们往往在训练模型的时候,学习率不能是一成不变的,大的学习率收敛快,但可能出现过拟合的情况,难以达到最优点;小的学习率收敛较慢,耗时较长,但能将loss降得更低。 因此训练全过程并不是使用一个固定值的学习速度,而是随着时间的推移让学习率动态变化,比如刚开始训练,离下山地点的最优值还很远,那么可以使用较大的学习率下的快一点,当快接近最优值时为避免跨过最优值,下山速度要放缓,即应使用较小学习率训练,具体情况下因为我们也不知道训练时的最优值。二、解决方案 一种比较经典的策略就是warm原创 2021-08-27 16:01:11 · 2515 阅读 · 2 评论 -
Dropout层的个人理解和具体使用
一、Dropout层的作用 dropout 能够避免过拟合,我们往往会在全连接层这类参数比较多的层中使用dropout;在训练包含dropout层的神经网络中,每个批次的训练数据都是随机选择,实质是训练了多个子神经网络,因为在不同的子网络中随机忽略的权重的位置不同,最后在测试的过程中,将这些小的子网络组合起来,类似一种投票的机制来作预测,有点类似于集成学习的感觉。 关于dropout,有nn.Dropout和nn.functional.dropout两种。推荐使用nn.xxx,因为一般情况下只有训练原创 2021-08-24 23:29:34 · 35654 阅读 · 3 评论 -
【Seq2seq】Decoder中提高模型回复多样性方法
一、问题背景 最近研究了seq2seq模型的相关优化算法,包括有其中的Attention、dropout、Scheduled Sampling和Teacher Forcing等优化、训练模型的方法。以下是传统seq2seq模型结构,没有进行任何优化,该模型分为两部分:编码器和解码器。 编码器读取输入文本,并返回代表该输入的向量。 然后,解码器获取该向量并依次生成相应的文本。 这样依次按概率生成词的模式,就会使得系统为了达到生成结果的概率最大,就会产生很多通用一致的回复,这必然是我们不想看到的,所以原创 2021-05-26 18:31:52 · 819 阅读 · 1 评论 -
Pytorch框架使用的API大全
看到了一篇十分清晰精简的文章,链接如下:Pytorch框架使用 (https://www.jianshu.com/p/5460b7fa3ec4)原创 2021-04-08 16:43:41 · 302 阅读 · 0 评论 -
自回归(Autoregressive)和自编码(Autoencoder)语言模型
一、 自回归语言模型听到自回归语言模型(Autoregressive LM)这个词,我们知道一般的语言模型都是从左到右计算某个词出现的概率,但是当我们做完型填空或者阅读理解这一类NLP任务的时候词的上下文信息都是需要考虑的,而这个时候只考虑了该词的上文信息而没有考虑到下文信息。所以,反向的语言模型出现了,就是从右到左计算某个词出现的概率,这一类语言模型称之为自回归语言模型。像坚持只用单向Transformer的GPT就是典型的自回归语言模型,也有像ELMo那种拼接两个上文和下文LSTM的变形自回归语言模型转载 2021-03-18 21:30:35 · 7424 阅读 · 0 评论