深度学习笔记(一)——循环神经网络&NLP

1.1 线性回归

a. 为追求更快的速度应该使用矢量计算来提高运算速率;
b.

`labels += torch.tensor(np.random.normal(0,0.01,size = lables.size()), dtype = torch.float32)`
#加上偏差的原因:计算所得的label值无法与真实数据完全相等

c.random.shuffle 对数据集进行打乱(想到了shuffleNet)
d. 全连接层
就是
按照正常的放射变换就可以

a1=X1W11+X2W12+X3*W13+b1
由于加法的广播机制,偏置参数为1x1也可以进行运算
参数的形状与批量大小无关,也正因为如此,对同一个模型可以选择不同的批量大小

1.2 SoftMax

Fashion-MNIST 分类常用数据集

  • 预测种类(相比于线性这个是离散的)
  • 与线性回归一样是线性叠加(放射变换)但是输出个数 = label的类别数(为所属类别的概率)
  • 由于概率数值不确定所以使用SoftMax化作非负且和为1的

基于Pytorch的简洁实现

torchvision.datasets #一些加载数据的函数以及常用接口
torchvision.models #一些常用的模型例如ResNet,AlexNet
torchvision.transforms #图片变换,剪裁,旋转
torchvision.utils #其他函数以及方法

但是SoftMax函数还需要后续更新多一些! tag

1.3 多层感知机(MLP)

multilayers perceptron

  • ReLU(rectified linear unit)**(只应用于隐藏层)**层数多应用这个会快一些因为计算量少 (非负)
  • sigmoid(x) = 1 /(1 + exp(-2x))(分类器)[0,1]
  • tanh(x) = (1 - exp(-2x))/(1 + exp(-2x)) [-1,1]

简单一层:H = relu(XW1 + b1);O = HW2 + b2

2.1 文本预处理

lines = [re.sub('['a-z]+' , ' ',line.strip().lower()) for line in f]
#将文件f中所有文本去空格,变小写,并用空格替代所有非字符

上述分类会剔除类似标点以及n’t之类的用法,专门分词的:

  • spaCy
import spacy
nlp = spacy.load('en')
doc = nlp(text)
  • NLTK
from nltk.tokenize import word_tokenize

字典(dictionary):是无序的数据集合;是一系列键-值对
列表(list):有序的数据集合
典型应用:

  • 直接调用,索引
  • dictionary = ['id'] = '05' 添加
  • dictionary = ('id') = '05' 删除
  • a.update(b) 合并两个字典
  • for key, value in sorted(dictionary.items()) 遍历有顺序(sorted)的字典内容
  • for key, value in set(dictionary.values()) 遍历去重(set)之后的所有’

2.2 语言模型

目标:评估该序列是否合理,即计算该序列的概率。概率越大越合理

  • 齐夫定律:单词词频与词频的排名成反比
  • 马尔科夫性要看清楚是几!阶!的!
  • 若序列程度为 T,时间步数为 n,那么共有 T - n 个合法的样本

随机采样:len-1 后以时间步为步长进行分组,舍弃不足时间步个的样本,之后随机取batch_size个组,shuffle后是无序的

相邻采样:len-1 后 // batch_size * batch_size 取出来连续的样本即可

2.3 循环神经网络基础(RNN)

  • Ht 记录了截止到 t 的所有历史信息
  • one-hot向量:长度 = 字典大小(索引所在为1,其余为0)
result.scatter_(1, x.long().view(-1, 1), 1)  
# result[i, x[i, 0]] = 1
  • RNN的输入&输出皆为num_steps个形状为(batch_size, vocab_size)的矩阵
  • 返回的 H 状态是以元组的形式
  • 困惑度(perplexity):通常用于描述语言模型的好坏**(是为标签类别概率的倒数)**

关系是一张表,表中的每行就是一个元组每列是一个属性

2.4 循环神经网络进阶(RNN)

GRU

在这里插入图片描述在这里插入图片描述

  • 重置门有助于捕捉时间序列里短期的依赖关系;
  • 更新门有助于捕捉时间序列里长期的依赖关系。

LSTM

  • 遗忘门:控制上一时间步的记忆细胞
  • 输入门:控制当前时间步的输入
  • 输出门:控制从记忆细胞到隐藏状态
  • 记忆细胞:⼀种特殊的隐藏状态的信息的流动

在这里插入图片描述在这里插入图片描述

深度循环神经网络(RNN)

在这里插入图片描述补充参数 layers = n,即可构建深度神经网络

双向循环神经网络

在这里插入图片描述补充参数 bidirectional = True 即可实现双向(默认是False)
连接方式:前向的 Ht 和后向的 Ht 使用 concat 进行连接
好处:双向神经网络可以考虑到语言结构的前后的语序等结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值