Sunrise

`长路漫漫,唯剑作伴`


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

Transformer原理

发表于 2023-07-06 | 分类于 自然语言处理

Transformer原理

From Attention to self-Attention

关于Attention基本原理我们在seq2seq中已经介绍过,简单说attention就是帮助我们找到两个序列之间的相关度,比如输出序列的每个输出分别应该关注输入序列的哪一部分, 也就是找到权重值 wi。

self-attention与attention的不同点在于,self-attention是帮助我们找到子序列与全局序列之间的关系,即self-attention使用的场景是同一序列内部,而attention是两个序列。

不过self-attention的计算方法与attention类似,同样可以使用上述公式(只不过这里的yi是同一序列中的某个token)。

wij的计算方式如下:

为了更好地理解这个公式,下面我给以y2的计算为例,给出计算过程(图中把exp漏掉了)和图例。

阅读全文 »

使用BiLSTM-CRF进行命名实体识别

发表于 2023-04-29 | 分类于 自然语言处理

使用BiLSTM-CRF进行命名实体识别

BiLSTM-CRF网络结构

关于LSTM的原理以及其对比RNN的优势前面已经有多篇文章介绍了,这里就不再赘述。


使用BiLSTM-CRF进行命名实体识别任务时的步骤流程(粗略地):

  1. 先将句子转化为字词向量序列,字词向量可以在事先训练好或随机初始化,在模型训练时还可以再训练;
  2. 经BiLSTM特征提取,输出是每个单词对应的预测标签;
  3. 经过CRF层约束,输出最优标签序列。

使用BiLSTM-CRF进行命名实体识别任务时的步骤流程(细致地):

阅读全文 »

业务爬取经验总结

发表于 2023-03-11 | 分类于 爬虫

业务爬取经验总结

注意代理有没有挂上,如果没有挂上也不会有什么提示,会直接使用本机IP,风险极高。

在平时业务开发时,遇到的网站一般分为两种类型,搜索式和列表式,当然列表式居多

列表式爬取方法

拿到一个待开发的网站,一般开发完成之后,先爬取一遍全部历史数据,再上线增量爬取。

历史数据爬取过程中需要注意的点

首先是要测试,要多看爬取日志,不要直接就推送入库;
查看日志可以看第一页、第二页、中间随机抽取几页和最后一页,日志是否和网站上的数据对应的上,避免一些程序bug压根没有成功翻页,然后也要看字段解析的是否正确,如果有比较明显的大规模错误那就要优化程序。

如果该业务的数据源是比较多的情况,就要考虑不同的源是不是会造成重复,比如当前的数据源数据质量本身很差(结构化错误比例较高或缺少关键字段信息等),那最好先看下这个源的数据是否已经被其他源覆盖(在开发之前也可以进行评估),如果已被其他源覆盖就可以不爬取历史数据或者直接不开发,避免这个源的数据覆盖其他更优质的源的数据。

其他还有一些针对数据质量不太好的源的爬取方法,比如增加过滤逻辑,缺失某些字段的数据丢弃;或者根据页码或者发布日期只爬取部分质量较好的数据。

阅读全文 »

PyTorch正则化和批标准化

发表于 2023-03-04 | 分类于 pytorch

PyTorch正则化和批标准化

Regularization-正则化:减小方差的策略

误差可分为解为:偏差,方差与噪声之和,即误差=偏差+方差+噪声之和;

偏差:度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;
方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;
噪声:表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界。

简而言之,偏差是指在所有训练数据上训练得到的模型性能和在真实数据上表现的差异,方差是指模型在训练集和验证集(测试集)上的差异,方差重点在于不同数据集;噪声则是指给定的数据集(其可能存在噪声),那么当前数据集的数据质量已经决定了学习性能的上限,学习的目标就是尽可能的接近这个上限。

阅读全文 »

Pytorch中的优化器Optimizer

发表于 2023-02-25 | 分类于 pytorch

Pytorch中的优化器Optimizer

什么是优化器

pytorch的优化器:管理并更新模型中可学习参数的值,使得模型输出更接近真实标签

导数:函数在指定坐标轴上的变化率
方向导数:指定方向上的变化率(二元及以上函数,偏导数)
梯度:一个向量,方向是使得方向导数取得最大值的方向

Pytorch的Optimizer

参数

  • defaults:优化器超参数
  • state:参数的缓存,如momentum的缓存
  • param_groups:管理的参数组
  • _step_count:记录更新次数,学习率调整中使用
阅读全文 »

Pytorch中权值初始化和损失函数

发表于 2023-02-18 | 分类于 pytorch

Pytorch中权值初始化和损失函数

权值初始化

梯度消失与爆炸

针对上面这个两个隐藏层的神经网络,我们求w2的梯度

可以发现,w2的梯度与H1(上一层网络的输出)有很大的关系,当h1趋近于0时,w2的梯度也趋近于0,当h1趋近于无穷大时,w2的梯度也趋近于无穷大。

阅读全文 »

PyTorch的自动微分

发表于 2023-02-11 | 分类于 pytorch

PyTorch的自动微分(autograd)

计算图

计算图是用来描述运算的有向无环图
计算图有两个主要元素:结点(Node)和边(Edge)
结点表示数据,如向量、矩阵、张量
边表示运算,如加减乘除卷积等

用计算图表示:y = (x + w) (w + 1)
令 a = x + w,b = w + 1
则 y = a
b

用计算图来表示这一计算过程:

使用计算图可以更方便的求导

阅读全文 »

Pytorch中的张量学习

发表于 2023-02-04 | 分类于 pytorch

关于Pytorch中的张量学习

张量的概念和创建

张量的概念

Tensor是pytorch中非常重要且常见的数据结构,相较于numpy数组,Tensor能加载到GPU中,从而有效地利用GPU进行加速计算。但是普通的Tensor对于构建神经网络还远远不够,我们需要能够构建计算图的 tensor,这就是 Variable。Variable 是对 tensor 的封装,主要用于自动求导。

  • data:被包装的tensor
  • grad:data的梯度
  • grad_fn:创建tensor的function,是自动求导的关键
  • requires_grad:指示是否需要梯度
  • is_leaf:指示是否是叶子节点(用户创建的张量)
阅读全文 »

Git简单使用

发表于 2022-12-24 | 分类于 Git

Git简单使用

git初始化操作

pwd:显示当前目录

git init:把这个目录变成git可以管理的仓库

git clone: 从现有 Git 仓库中拷贝项目(类似 svn checkout)。

克隆仓库的命令格式为:

1
git clone <repo>

如果我们需要克隆到指定的目录,可以使用以下命令格式:

1
git clone <repo> <directory>

参数说明:

  • repo:Git 仓库。
  • directory:本地目录。

git config --list:显示当前的git配置信息

编辑 git 配置文件:

1
git config -e    # 针对当前仓库

或者:

1
git config -e --global   # 针对系统上所有仓库

设置提交代码时的用户信息:

1
2
git config --global user.name "runoob"
git config --global user.email test@runoob.com

工作区、暂存区和版本库

阅读全文 »

反爬(九)

发表于 2022-12-05 | 分类于 爬虫

反爬九

目标网站,本次破解的网站是一个信用地方网站,主要获取的是行政处罚数据,该网站的混用了DES3、RSA、SHA256和MD5加密,比较具有代表性,但是对于有经验的爬虫工程师来说本身难度不高,如果缺乏经验可能会多走一些弯路。

查看网络请求可以发现其post请求的参数被加密了

阅读全文 »
123…12
chenxi

chenxi

116 日志
11 分类
213 标签
Links
  • Docle
  • Swift
© 2025 chenxi
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4