网站管理助手怎么使用,好的做问卷调查的网站好,win10建站wordpress,阳江网红打卡旅游景点解决问题二#xff1a;中间层的神经元和权重矩阵的乘积、Softmax 层的计算需要花费很多计算时间
第k个单词的 Softmax 的计算式如下#xff0c;其中Si是第i个单词的得分。这个计算也与词汇量成正比#xff0c;所以需要一个替代Softmax的计算。 使用 Negative Sampling (负采…解决问题二中间层的神经元和权重矩阵的乘积、Softmax 层的计算需要花费很多计算时间
第k个单词的 Softmax 的计算式如下其中Si是第i个单词的得分。这个计算也与词汇量成正比所以需要一个替代Softmax的计算。 使用 Negative Sampling (负采样) 替代 Softmax。也就是用二分类拟合多分类。
多分类问题从100万个单词中选择1个正确单词。
二分类问题处理答案为是或否的问题比如目标词是 say 吗。
让神经网络来回答当上下文是 you 和 goodbye 时目标词是 say 吗
这时输出层只需要一个神经元神经元输出的是 say 的得分。
仅计算目标词得分的神经网络如下。 上面这个图中间层是one-hot 表示矩阵和权重矩阵的乘积也就是权重矩阵的某个特定行。
当输出侧神经元只有一个的时候计算中间层和输出侧的权重矩阵的乘积只需要提取输出侧权重矩阵的某一列(目标词所在的列)将提取的这一列与中间层进行内积计算。示意图如下图。
输出侧的权重矩阵中保存了各个单词ID对应的单词向量提取目标词的单词向量再求这个向量和中间层神经元 的内积就是最终的得分。 多分类输出层使用Softmax函数将得分转化为概率损失函数使用交叉熵误差。
二分类输出层使用sigmoid函数将得分转化为概率损失函数使用交叉熵误差。
sigmoid 函数的输出可以解释为概率。
通过sigmoid函数得到概率后可以由概率计算损失。
多分类交叉熵误差数学表达yk是神经网络的输出tk是正确解标签k表示数据的维数。如果标签为one-hot表示即tk中只有正确解标签索引为1其他均为0 。那么式子只计算对应正确解标签的输出的自然对数。 二分类的交叉熵误差数学表达式 y是sigmoid函数的输出(神经网络判断的目标词是say的得分)t是正确解标签t取值为1或0。t1输出-tlogy求目标词是say情况下的损失。t0求目标词不是say情况下的损失。这个式子和多分类的其实是一回事式子只计算对应标签的输出的自然对数。
Sigmoid层和Cross Entropy Error层的计算图如下。y是神经网络输出的概率t是正确解标签。y-t相当于误差。误差向前面的层传播。误差大时模型学习得多(参数的更新力度增大)。
举个例子t1y接近1误差就小。
正确解标签是1是什么意思其实就是正确答案就是这个词神经网络输出的概率越接近于1表示预测的越准确。 二分类的CBOW模型向Sigmoid with Loss 层输入正确解标签1表示现在正在处理的问题的答案是Yes。当答案是No时向 Sigmoid with Loss 层输入0。 Embedding Dot 层合并Embedding 层和 dot 运算(内积运算) Embedding Dot 层实现代码如下
成员变量params保存参数grads保存梯度。embed保存Embedding层cache保存正向传播时的计算结果。
正向传播参数接收中间层的神经元h单词ID列表(idx)。首先调用Embedding层的forward(idx)方法然后通过下面这种方式计算内积。 上面的例子单词列表有3个数表示mini-batch一并处理3个数据。
反向传播乘法节点需要将上游传过来的导数dout乘正向传播的翻转值然后传给下游。
class EmbeddingDot:def __init__(self, W):self.embed Embedding(W)self.params self.embed.paramsself.grads self.embed.gradsself.cache Nonedef forward(self, h, idx):target_W self.embed.forward(idx)out np.sum(target_W * h, axis1)self.cache (h, target_W)return outdef backward(self, dout):h, target_W self.cachedout dout.reshape(dout.shape[0], 1)dtarget_W dout * hself.embed.backward(dtarget_W)dh dout * target_Wreturn dh目前只是对正例say进行了二分类如果此时模型有好的权重则Sigmoid层的输出概率将接近1。
真正要做的事是对于正例say使Sigmoid层的输出接近1对于负例(say 以外的单词)使Sigmoid层的输出接近0。
权重需要满足当输入say时使Sigmoid层的输出接近1当输入say以外的单词时使输出接近0。如下图当上下文是 you和goodbye时目标词是hello错误答案的概率要比较低。