
BP网络一般都是用三层的,四层及以上的都比较少用;
传输函数的选择,这个怎么说,假设你想预测的结果是几个固定值,如1,0等,满足某个条件输出1,不满足则0的话,首先想到的是hardlim函数,阈值型的,当然也可以考虑其他的;
然后,假如网络是用来表达某种线性关系时,用purelin---线性传输函数;
若是非线性关系的话,用别的非线性传递函数,多层网络时,每层不一定要用相同的传递函数,可以是三种配合,可以使非线性和线性,阈值的传递函数等;
compet---竞争型传递函数;
hardlim---阈值型传递函数;
hardlims---对称阈值型传输函数;
logsig---S型传输函数;
poslin---正线性传输函数;
purelin---线性传输函数;
radbas---径向基传输函数;
satlin---饱和线性传输函数;
satlins---饱和对称线性传输函数;
softmax---柔性最大值传输函数;
tanhsig---双曲正切S型传输函数;
tribas---三角形径向基传输函数;
饱和函数需要自己构造,程序如下:
function M=sat(x)
d=abs(x/k);
if d<=1
M=x/k;
else
M=sign(x/k);
end
Transformer是个叠加的“自注意力机制(Self Attention)”构成的深度网络,是目前NLP里最强的特征提取器。
论文: Attention Is All You Need
整体上还是由Encoders和Decoders两部分组成的,而每一个部分是由6个Encoder和Decoder堆栈成的,每个的结构完全相同,但不共享权重。
每个Encoder由两部分组成:Multi-head self-attention层和Feed Forward NN层。
每个Decoder由三部分组成:Multi-head self-attention层,Encoder-Decoder Attention层和Feed Forward NN层。
动机:当模型处理每个单词(输入序列中的每个位置)时,self-attention允许它查看输入序列中的其他位置以寻找可以帮助导致对该单词更好的编码的线索。
使用矩阵形式可以并行计算。
图示 :
动机:将信息映射到不同的子空间,可能会抓取到不同位置的注意信息。
按照self-attention方式进行相同的几次计算(论文中使用8头),每次使用不同的权重矩阵( , 和 ),最终会得到几个不同的 矩阵,将它们直接拼接起来得到一个很长的矩阵 ,再乘以一个参数矩阵 将矩阵压缩到低维(同Embedding维数)。
单词顺序是NLP中非常重要的信息,所以加入Position encoding是考虑输入序列中单词顺序的一种方法。将位置编码与Embedding向量直接加起来得到真正的单词输入向量。
论文中给出了两个位置编码公式:
该层为简单的全连接层,使用了RELU激活函数,论文中该全连接的隐藏层维数为2048,公式如下:
在每一个子层的结束,输出矩阵为 ,我们将该层的输入矩阵 和 直接相加,再做Normalize *** 作 ,该Norm函数引用了 参考文献1: Layer Normalization 。
Norm方法有很多,但它们都有一个共同的目的,那就是把输入转化成均值为0方差为1的数据。我们在把数据送入激活函数之前进行normalization,因为我们不希望输入数据落在激活函数的饱和区。
该层是一个简单的全连接网络,将最后一个Decoder输出的向量投影到一个更高维度的空间去(词典维数)。
softmax层将Linear层的输出向量转化为概率输出,选择最大概率的单词作为输出。
Encoders最后将 和 输出给每个Decoder的Encoder-Decoder层:
Padding mask在所有的scaled dot-product attention里面都需要用到,而Sequence mask只有在Decoder的self-attention里面用到。
语料库中每个句子的长度是不同的,我们需要对齐。使用我们设置的阈值(一般为255),对于较长的序列,直接截取左边的序列,对于较短的序列,在其后添加0。
而在scaled dot-product attention中,不能对这部分添加了0的单词位置加上较高的注意力,所以在self-attention中的softmax之前,直接将这些位置的值设为 ,经过softmax后这些位置的概率值会变为0。
即下图中的 Mask(opt) 块:
Sequence mask是为了使得Decoder不能看见未来的信息,使得解码器的attention只能关注当前解码单词之前的输出单词,而不能依赖后面未解码出来的。
所以跟Padding mask一样,对其后的单词位置直接设为 ,经过softmax后这些位置的概率值会变为0。
这步 *** 作对应Decoder中第一个构件:Masked Multi-head Attention。
使用交叉熵或者KL散度去比较两个输出之间的差距,然后使用反向传播优化其中的所有参数。
在最后的softmax层我们直接输出了最大值位置的单词,叫做贪婪解码。
另一种更合理的解码方式叫做 束搜索 。假设第1#位置解码出的概率值,前两大的位置单词为 I 和 me ,那么在第2#位置解码时,依赖的第1#位置单词分别取为 I 和 me ,分别跑两次算法,在其中再选两个得分最高(或误差最小)的结果,依次类推。最终会得到两个得分最高的序列。
BP算法是由学习过程由信号的正向传播与误差的反向传播两个过程组成。由于多层前馈网络的训练经常采用误差反向传播算法,人们也常把将多层前馈网络直接称为BP网络。
虽然BP算法得到广泛的应用,但它也存在不足,其主要表现在训练过程不确定上,具体如下。
1,训练时间较长。对于某些特殊的问题,运行时间可能需要几个小时甚至更长,这主要是因为学习率太小所致,可以采用自适应的学习率加以改进。
2,完全不能训练。训练时由于权值调整过大使激活函数达到饱和,从而使网络权值的调节几乎停滞。为避免这种情况,一是选取较小的初始权值,二是采用较小的学习率。
3,易陷入局部极小值。BP算法可以使网络权值收敛到一个最终解,但它并不能保证所求为误差超平面的全局最优解,也可能是一个局部极小值。
这主要是因为BP算法所采用的是梯度下降法,训练是从某一起始点开始沿误差函数的斜面逐渐达到误差的最小值,故不同的起始点可能导致不同的极小值产生,即得到不同的最优解。如果训练结果未达到预定精度,常常采用多层网络和较多的神经元,以使训练结果的精度进一步提高,但与此同时也增加了网络的复杂性与训练时间。
4,“喜新厌旧”。训练过程中,学习新样本时有遗忘旧样本的趋势。
扩展资料:
BP算法最早由Werbos于1974年提出,1985年Rumelhart等人发展了该理论。BP网络采用有指导的学习方式,其学习包括以下4个过程。
1,组成输入模式由输入层经过隐含层向输出层的“模式顺传播”过程。
2,网络的期望输出与实际输出之差的误差信号由输出层经过隐含层逐层休整连接权的“误差逆传播”过程。
3,由“模式顺传播”与“误差逆传播”的反复进行的网络“记忆训练”过程。
4,网络趋向收敛即网络的总体误差趋向极小值的“学习收敛”过程。
-BP算法
银-氯化银电极多数用饱和KCl水溶液做电解质溶液其电势方程为E=E0+RT/F ln[(aAg+)(acl-)/aAgCl) ,其中Ag和AgCl是固体,则aAg,aAgCl值为1,即为E=E0+RT/F lna(Cl-),电极电势即为氯离子活度的函数,饱和氯化钾的溶解度与温度存在着函数关系,将RT/F lna(Cl-)部分以t为函数,泰勒公式在t=25处展开,取前面的3项,计算可以得到。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)