2020-02-14

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020-02-14相关的知识,希望对你有一定的参考价值。

参考技术A 训练回归模型所需要的信息包含-数据、模型、损失函数、优化函数(梯度下降算法)。
step 1:对数据进行预处理使其可以fit到模型中
step 2:构建模型
step 3:选择损失函数(回归模型一般用mse)和优化函数
step 4:迭代训练模型中的参数,并进行预测

回归问题转化为分类问题,分类问题相当于回归的输出是多个值。
回归的输出是实值可通过softmax将其转化为对应的概率值,且数组中的最大值所处的index不变。
引用交叉墒损失函数-衡量两个概率分布差异的测量函数。化简得最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率。

多个全连接层的stack等价于一个全连接层,问题的根源在于全连接层只是对数据做仿射变换,而多个仿射变换的叠加仍然是一个仿射变换。可以通过解决非线性函数来解决该问题。
非线性激活函数如下:
1、ReLU(rectified linear unit)函数提供了一个很简单的非线性变换。给定元素,该函数定义为 可以看出,ReLU函数只保留正数元素,并将负数元素清零。
2、Sigmoid函数可以将元素的值变换到0和1之间。 .导数在当输入为0时,sigmoid函数的导数达到最大值0.25;当输入越偏离0时,sigmoid函数的导数越接近0。
3、tanh(双曲正切)函数可以将元素的值变换到-1和1之间。
激活函数的选择
ReLu函数是一个通用的激活函数,目前在大多数情况下使用。但是,ReLU函数只能在隐藏层中使用。
用于分类器时,sigmoid函数及其组合通常效果更好。由于梯度消失问题,有时要避免使用sigmoid和tanh函数。
在神经网络层数较多的时候,最好使用ReLu函数,ReLu函数比较简单计算量少,而sigmoid和tanh函数计算量大很多。
在选择激活函数的时候可以先选用ReLu函数如果效果不理想可以尝试其他激活函数。

预处理通常包括四个步骤:

现有的分词工具,nltk.tokenize->word_tokenize;spacy

n元语法,防止序列长度增加,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链。

元语法可能有哪些缺陷?参数空间过大,数据稀疏
两种采样方式,随机采样和相邻采样。对应的初始化方式不同。

卷积操作前w、h的长度

note: 为卷积后的w长度,p为padding长度,s为步长,k为卷积核大小。
卷积层与全连接层的对比:
二维卷积层经常用于处理图像,与此前的全连接层相比,它主要有两个优势:
一是全连接层把图像展平成一个向量,在输入图像上相邻的元素可能因为展平操作不再相邻,网络难以捕捉局部信息。而卷积层的设计,天然地具有提取局部信息的能力。
二是卷积层的参数量更少。
note:卷积核大小和图像大小相同时等价于全连接层。

训练误差:指模型在训练数据集上表现出的误差。
泛化误差:指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。
target:降低泛化误差。
数据集可分为:训练集、测试集、验证集(模型选择,例如-超参数)。
note:由于验证数据集不参与模型训练,当训练数据不够用时,预留大量的验证数据显得太奢侈,因此采用k折交叉验证。
欠拟合是模型无法得到较低的训练误差,我们将这一现象称作欠拟合;
过拟合是模型的训练误差远小于它在测试数据集上的误差,我们称该现象为过拟合。
模型复杂度和训练数据集大小-过拟合及欠拟合的影响
模型复杂度越高越容易发生过拟合;
如果训练数据集中样本数过少,特别是比模型参数数量(按元素计)更少时,过拟合更容易发生。此外,泛化误差不会随训练数据集里样本数量增加而增大。因此,在计算资源允许的范围之内,我们通常希望训练数据集大一些。
过拟合的方法:正则化L1和L2及弹性网络,丢弃法-droupout。

当层数较多时,梯度的计算容易出现梯度消失或爆炸。
数据集可能存在的协变量、标签和概念偏移。

随着循环神经网络层数的增加可以出现梯度爆炸及消失,对应的使用梯度裁剪解决梯度爆炸。
困惑度是对交叉熵损失函数做指数运算后得到的值,使用它来对语言模型进行判定。特别地,
1、最佳情况下,模型总是把标签类别的概率预测为1,此时困惑度为1;
2、最坏情况下,模型总是把标签类别的概率预测为0,此时困惑度为正无穷;
3、基线情况下,模型总是预测所有类别的概率都相同,此时困惑度为类别个数。

encoder:输入到隐藏状态
decoder:隐藏状态到输出
在训练时,将decoder的输出不作为它的属于。

可以关注到任意长度的字符信息。
有两种实现方式:点方式和多层感知器方式

Transformer同样基于编码器-解码器架构,其区别主要在于以下三点:

Transformer blocks:将seq2seq模型重的循环网络替换为了Transformer Blocks,该模块包含一个多头注意力层(Multi-head Attention Layers)以及两个position-wise feed-forward networks(FFN)。对于解码器来说,另一个多头注意力层被用于接受编码器的隐藏状态。
Add and norm:多头注意力层和前馈网络的输出被送到两个“add and norm”层进行处理,该层包含残差结构以及层归一化。
Position encoding:由于自注意力层并没有区分元素的顺序,所以一个位置编码层被用于向序列元素里添加位置信息。

一共包含7层:十分类问题。
卷积6x28x28-平均池化6x14x14-卷积16x10x10-平均池化16x5x5-全连接120-全连接84-全连接10。
卷积神经网络就是含卷积层的网络。 LeNet交替使用卷积层和最大池化层后接全连接层来进行图像分类。

AlexNet

1×1卷积核作用
1.放缩通道数:通过控制卷积核的数量达到通道数的放缩。
2.增加非线性。1×1卷积核的卷积过程相当于全连接层的计算过程,并且还加入了非线性激活函数,从而可以增加网络的非线性。
3.计算参数少

GoogLeNet

批量执行语句之——禁用所有表的外键

在转移数据库,进行数据导入的时候,遇到一件麻烦事,就是表间外键约束的存在,导致insert频频报错,批量执行sql语句又是顺序执行,没办法我只好手动输入。
      然后输入到一半灵光一闪,为什么不先把外键约束全部禁用先呢?

于是我百度到以下资料: 

oracle 删除(所有)约束 禁用(所有)约束 启用(所有)约束

 (2009-06-17 09:56:32)
 

执行以下sql生成的语句即可

1

删除所有外键约束 

select ‘alter table ‘||table_name||‘ drop constraint ‘||constraint_name||‘;‘ from user_constraints where constraint_type=‘R‘ 

2

禁用所有外键约束

select ‘alter table ‘||table_name||‘ disable constraint ‘||constraint_name||‘;‘ from user_constraints where constraint_type=‘R‘ 

3

启用所有外键约束

select ‘alter table ‘||table_name||‘ enable constraint ‘||constraint_name||‘;‘ from user_constraints where constraint_type=‘R‘

 在SQL Plus中输入语句后,生成了很多语句,这些语句其实是没执行的,复制下来执行一遍就好了。
然后我们可以根据这个脚本一样的sql语句进行拼装,得到我们需要的语句:
 
禁用所有外键约束:
 select ‘ALTER TABLE "QIANHAI"."‘||table_name||‘"  MODIFY CONSTRAINT  "‘||constraint_name||‘" DISABLE;‘ from user_constraints where constraint_type=‘R‘ 

启用所有外键约束:
 select ‘ALTER TABLE "QIANHAI"."‘||table_name||‘"  MODIFY CONSTRAINT  "‘||constraint_name||‘" ENABLE;‘ from user_constraints where constraint_type=‘R‘;

以上是关于2020-02-14的主要内容,如果未能解决你的问题,请参考以下文章

2020-02-14人生十三信条抄写

selenium3+python自动化7-switch_to总结 (2020-02-14 17:35)

如何让 rxjs 暂停/恢复?

协变与逆变

Linux驱动开发之平台总线