- 博客(70)
- 资源 (3)
- 收藏
- 关注
原创 已安装成功的Python包,无法被IDE解析的解决办法
这问题本质说就是IDE未正确识别到,python包的安装路径,解决方法就是将该路径添加到IDE中。
2023-01-01 18:13:08 1605 1
原创 Windows VScode SSH连接 Bad owner or permissions on C:\\Users\\admin/.ssh/config 错误解决方法
解决VScode SSH远程访问报错
2022-12-03 15:59:38 5182 5
原创 Docker入门指南:基于 docker 搭建机器学习/深度学习开发环境
实际工作中,许多项目开发需要在Linux服务器上进行,本文为习惯使用 Windows 操作系统的朋友介绍一种基于Docker的,跨平台、便携性(方便移植、重新部署、可远程访问)的开发环境搭建方法。
2022-08-21 12:39:11 4474 1
原创 知识图谱:知识表示
知识图谱中,知识的结构化表示主要有和两类方法。早期,常用一阶谓词逻辑(FirstOrderLogic)、语义网络(semanticnetwork)、描述逻辑(DescriptionLogic)和框架系统(FrameSystem)等基于符号逻辑的知识表示方法。而,主要使用基于图数据结构的三元组形式(头实体,关系,尾实体)来符号化地表示知识。...
2022-07-23 20:58:57 4364
原创 知识图谱:基础知识
知识图谱是关于某个主题的知识的结构化表示所组成的关系网络,它由节点和(连接不同节点的)边构成,本质上是一种语义网络。知识图谱中的每个节点代表该主题内一个实体或概念,边代表相连实体或概念间的语义关系。数据未经处理过的事实或信号的记录等(即非结构化数据)信息经过解释整理,被赋予意义的数据(即结构化数据)知识从信息中推断或预测出的事实或规律例如对简历解析任务来说一份原始的pdf或word格式简历文件就是数据,因为它是直接采集(收集)到的客观事实、尚未经任务人工处理;...............
2022-07-20 20:41:32 1639
原创 TF及Pytorch中模型的kernel参数的意义
kernel参数是权重参数的总成,这么设计是为了初始化设置方便,在前向传播前,框架会自动对其进行分割
2022-07-10 13:59:07 608
原创 循环神经网络(RNN类)中 padding 值的 mask 方法
应拆解到循环神经网络沿时间轴方向传播的每一时间步隐藏状态计算过程中进行mask操作,这样才能保证padding补位值的噪声,在反向循环神经网络(双向RNN中的反向部分)中也不混入到输出隐藏状态中。...
2022-07-09 19:09:18 487
原创 tensorflow 2.x 多分类混淆矩阵及评价指标计算方法(精确率、召回率、f1分数)
TensorFlow 2.x 中多分类任务的混淆矩阵计算方法
2022-06-11 13:42:54 944 1
原创 数据结构(Python版):二叉堆(Binary Heap)
二叉堆(Binary Heap)是一种节点数据项有序的完全二叉树结构。二叉堆中,子节点数据项必须小于(或大于)其父节点的数据项,这被称为:堆次序(Heap Order)。所以二叉堆中任何一条(从根节点到叶节点的)路径均是一个已排序数组,若堆数据项中的最小值位于根节点,则称为最小堆(min heap)或小根堆;若堆数据项中的最大值位于根节点,则称为最大堆(max heap)或大根堆。二叉堆(Binary Heap)定义的操作如下:BinaryHeap()方法,二叉堆初始化中采用一个列表来保存堆数据,其中表首下
2022-06-09 10:38:42 901
原创 数据结构(Python版):树(Tree)、二叉树(Binary Tree)
树(Tree)是有限个数据节点(即数据项)组成的集合,其中除根节点和叶的下标为外,每个节点都具有一个直接先驱节点和多个直接后继节点,这与每节点仅具有一个直接先驱节点和一个直接后继节点的线性结构不同;树结构中,根节点(Root)没有先驱节点,叶节点(Leaf)没有后续节点。如果树中的每个节点最多可以有两个后续节点,那么这样的树状结构称为二叉树,这是树状结构中最为常用的一种。二叉树(Binary Tree)定义的操作如下:代码实现:Python语言中,树结构可基于链表或嵌套列表实现。嵌套列表法的优点是:子树的
2022-06-09 10:25:59 1827
原创 梯度累积(Gradient Accumulation)
随着深度学习模型参数量的增加,现有GPU加载一个深度模型(尤其是预训练模型)后,剩余显存无法容纳很多的训练数据,甚至会仅能容纳一条训练数据。梯度累积(Gradient Accumulation)是一种不需要额外硬件资源就可以增加批量样本数量(Batch Size)的训练技巧。...
2022-06-01 09:37:05 3242
原创 数据结构(Python版):线性表
2. 线性表(线性数据结构)线性结构是一种有序数据项的集合,其中每个数据项都有唯一的前驱和后继。除了第一个没有前驱,最后一个没有后继,新的数据项加入到数据集中时,只会加入到原有某个数据项之前或之后,具有这种性质的数据集,就称为线性结构。顺序表和链表是两种最基本的线性表(数据)结构。顺序表是指采用顺序存储的方式来存储数据元素的线性表,它通常在内存中开辟一段连续的存储空间,将结点依次存放在这组地址连续的存储空间中。因为存储空间连续且每个数据元素占用的空间相同,所以可计算得出每结点元素的存储地址,使元素索引
2022-05-14 20:51:29 1514
原创 常用算法:查找
查找算法,是判断(检索)给定元素是否存在指定存储空间中的计算方法,指定存储空间可能采用不同数据结构来存储数据,根据待查数据结构的特点,也适用于不同类型的查找算法。查找算法中,数据结构一般可分为三类:线性结构(线性表)、散列表(哈希表)、非线性结构(树、堆、图)。其中,线性表适用于顺序查找算法和二分查找算法;散列表可以通过哈希函数,直接计算元素是否在散列表中,时间复杂度为O(n);树、堆、图等非线性结构普遍适用深度搜索或广度搜索算法。1. 线性数据结构的查找算法1.1 顺序查找从数据结构线形表的一端开
2022-05-14 17:23:08 206
原创 常用算法:排序
排序算法是将 n 个给定元素按照大小顺序进行排列的算法。1. 对无序表的排序1.1 冒泡排序冒泡排序的算法思路在于多趟遍历比较无序表,每趟遍历依次对比相邻两数据项的大小,若逆序排序则交换数据项位置,使得每次遍历数据项中最大的一项都能移动到本次遍历长度的序列末尾,每次遍历结束后下次遍历的数据项序列长度减一,只到遍历序列长度小于等于1时结束计算(此时排序已完成)。冒泡排序的劣势在于:时间复杂度较高,为 O(n2)O(n^2)O(n2),这是因为每个数据项在找到其最终位置之前,必须要经过多次比对和交换
2022-05-12 20:14:20 1088
原创 常用算法:问题求解与优化
0. 概述在面对问题求解或优化(求最优解)需求时,提出解决方案的核心思想是:分解问题规模,直到问题规模小到可以用非常简单、直接的方式来解决为止(此规模,称为问题的基本情况)。根据分解后得到的基本情况(种类)数量,及从整体(规模)问题到基本情况的演进规律,可分别采用分治、递归(可升级为动态规划,二者适用解决的问题情况相同)和贪心算法来求解问题,如下表所示:整体问题分解结果适用算法结果情况整体问题有多个独立的不同基本情况(子问题),且已知所有基本情况的并集就是整体问题本身分治全局
2022-05-10 12:04:22 1028
原创 数据结构(Python版):Python内置数据类型
1. Python内置数据类型python内置数据类型中的列表list和字典dict,可作为Python语言中实现各种常用数据结构的基石,后续各种数据结构均基于他们实现。两种数据类型的常见(操作)方法均可归纳为增删改查四大类,如图1所示:图1: list和dict的主要操作列表数据类型的数据追加方法有两种实现方法:append() 和 两列表相加(即:add()“+”),其中 lst.append(v) 的时间复杂度是O(1),lst= lst+ [v] 的时间复杂度是O(n+k),其中k是被加的列表
2022-05-10 11:18:56 718
原创 自然语言处理(NLP)之五:知识图谱
现在的很多数据是互相连接的,如果想分析这些链接的价值,知识图谱可以是一种有效的工具。而且随着万物互联时代的到来,链接中所包含的信息必然会发挥更大的价值,这也是为什么知识图谱在最近几年发展这么快的主要原因。知识图谱的概念、应用、构建知识图谱的定义知识图谱是2012年Google公司提出的一个新名词,这项技术的出现可以追溯到上世纪的六七十年代,在Google公司为发展产业化将其称为知识图谱之前,它一直被学术界称作语义网络(Semantic Network)。ICSW(international con
2022-04-07 15:22:03 7134
原创 语言模型:注意力机制(Attention)
1. 注意力机制(Attention)注意力机制(Attention Mechanism)是一种信息筛选方法,可进一步缓解LSTM和GRU中的长期依赖问题。其实现分三步进行:它首先引入一个和任务相关的表示向量作为特征选择的基准,该向量被称为查询向量(Query Vector);然后选用一种打分函数计算输入特征与查询向量之间的相关性,得到特征被选择的概率分布,这称作注意力分布;最后按注意力分布对输入特征的加权平均筛选出与任务相关的特征信息。1.1 查询向量(Query Vector)如图所示,查询向量
2022-04-02 20:33:53 3056
原创 预训练模型:GPT
GPT 是 OpenAI 在论文《Improving Language Understanding by Generative Pre-Training》中提出的生成式预训练语言模型。该模型的核心思想是通过二段式的训练,以通用语言模型加微调训练的模型完成各项下游NLP任务,包括文本生成、二分类、蕴含、相似度、多分类等。1. 预训练任务GPT模型采用标准的语言模型训练方法,即给定上文令模型预测下一单词,模型的目标函数为:Li=∑t∈TlogP(ut∣ut−k,⋯ ,ut−1;θ)L_i = \sum_
2022-03-31 21:15:09 2753
原创 预训练模型:BERT
0. BERT总述BERT全称为 Bidirectional Encoder Representation from Transformers(来自 Transformers 的双向编码器表示),是谷歌2018年发表的论文中1,提出的一个面向自然语言处理任务的无监督预训练语言模型。其意义在于:大量无标记数据集中训练得到的深度模型,可以显著提高各项自然语言处理任务的准确率。BERT采用Transformer的编码器(Encoder)结构作为特征提取器,并使用与之配套的MLM训练方法,实现输入序列文本的双向
2022-03-31 13:32:15 14308 1
原创 时序模型:线性条件随机场模型 ( Linear - CRF )
1. 线性条件随机场(Linear-CRF)线性条件随机场(linear chain conditional random field,Linear-CRF)是对隐马尔科夫模型(hidden Markov model,HMM)在更普遍的实际问题上的推广1。隐马尔科夫(HMM)模型假设序列数据具有齐次马尔可夫性和观测独立性,这是对实际问题的两种近似简化。线性条件随机场(Linear-CRF)模型取消了观测独立性假设,并削弱了齐次马尔可夫性假设;Linear-CRF考虑一个模型每时刻隐藏状态,都是受其相邻时
2022-03-26 07:34:18 4245
原创 自然语言处理(NLP)之四:信息抽取
0. 信息抽取信息抽取(information extraction, IE)是将非结构化或半结构化描述的自然语言文本转化成结构化特征的一种基础自然语言处理(NLP)任务,它包括三类子任务:抽取文本中指定类型的实体(实体抽取/命名实体识别,NER);抽取实体之间的语义关系(关系抽取,RE);文本中的事件(event)。1. 实体抽取(命名实体识别,NER)实体抽取(Entity Extraction)又名命名实体识别(Named Entity Recognition, NER)或专名识别,是
2022-03-19 19:33:55 13410
原创 文本生成:Transformer
1. 模型原理Transform是一种基于全连接神经网络的编码器-解码器(encoder-decoder)架构实现,它由输入模块、编码器模块、解码器模型和输出模型四部分组成。其结构如下图所示:图1 Transform模型关于Transform的基础知识介绍,网上已有许多公开的资料。读者可自行查阅学习。本文默认大家已具备Transform相关的基础知识,文本将讨论其中值得注意的四个问题:Transform中有几种mask机制,它们是如何去除小批量样本padding操作引入的噪声的?自注意力机制为
2022-03-17 19:05:46 2749 1
原创 文本生成:加入注意力( Attention )机制的 Seq2Seq
1. 加入Attention机制的Seq2Seq模型注意力层(Attention)添加到解码器与输出层之间,它负责从编码器输出序列中挑选出任务相关的信息,将其与解码器输出序列最后时刻状态一起传入输出层,供文本生成预测使用。如下图所示:图1 加入Attention机制的Seq2Seq 模型Attention机制在计算注意力分布之前,引入由编码器(Encoder)输入序列长度决定的mask矩阵与注意力得分矩阵相乘,令输入序列padding值对应位置的注意力得分为0(然后再加一个负无穷),使计算注意力分布
2022-03-14 18:17:55 2978
原创 文本生成:Seq2Seq
1. Seq2Seq模型Seq2Seq是一种基于循环神经网络的编码器-解码器(encoder-decoder)架构实现。它使用两个神经元数量相同的LSTM(或GRU)作为编码器和解码器,如下图所示:图3 Seq2Seq 模型为配合Mini-batch SGD1模型训练策略,工程实现时要添加两种mask机制,来消除对输入序列和标签序列添加padding值进行(序列)长度补齐带来的噪声干扰。经典Seq2Seq模型的实现中,引入动态损失函数机制(mask softmax),来消除标签序列中padding值
2022-03-14 16:21:34 2477
原创 时序模型:循环神经网络(RNN)
1. 循环神经网络(RNN)定义循环神经网络(recurrent neural network, RNN)是一类专门设计处理不定长序列数据的神经网络。与使用一种新计算1作为核心的卷积神经网络不同,循环神经网络仍使用特征的线性组合作为计算核心,并使用共享参数策略使模型能泛化不同长度的序列数据。2. 循环神经网络的由来:从全连接神经网络(DNN)到循环神经网络(RNN)2.1 全连接神经网络的不足最初,研究者直接将时间序列看作特征向量,将序列每一时刻的观测作为一种特征输入全连接神经网络,来预测序列的标
2022-02-22 22:44:49 12180
原创 统计语言模型:N元语法模型(N-gram)
马尔科夫假设认为在一句话中,某单词的出现概率只与它前面的前 nnn 个单词有关。2.2.1 Bi-gram基于一阶马尔科夫假设衍生出Bi-gram语言模型,该模型假设句中单词的出现概率只与其前面相邻的前1个单词有关,所以模型表达式可简化成如下:P(S)=P(W1,W2,…,Wn)=P(W1)P(W2∣W1)⋯P(Wn∣Wn−1)(4)P(S) = P(W_1, W_2, …, W_n) = P(W_1)P(W_2|W_1) \cdots P(W_n|W_{n-1}) \tag{4}P(S)=P.
2022-02-19 15:49:46 1146
原创 统计语言模型:统计语言模型的平滑方法
本文从分析可能导致统计语言模型条件概率稀疏的原因入手,引出对应的平滑方法解决方案。1. Add-One Smoothing一种可能导致语言模型条件概率稀疏的原因是:训练语料库是对语料总体的一个抽样,它在抽样过程中必然会遗漏一些出现过的语句单词序列。因此,Add-One Smoothing 认为在训练语料库中未出现过语句单词序列,在总体语料中未必不会出现;它假设训练语料抽样对每种语句单词序列的出现情况最少会漏掉一次,所以在统计条件概率时,对每种情况的出现次数加1,其表达式如下所示:PBi−gram(Wi
2022-02-19 15:41:43 805
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人