[Hinton]Neural Network for Machine Learning-Prediction by backpropagation

视频学习链接

参考博文

个人学习记录,有参考博文。初学阶段对知识的学习与理解必定会有谬误或误解,希望路过的前辈不吝赐教。

Lecture 3


迄今为止,我们都是使用平方差测量法,该方法在现行神经元中固然可行,但它有一些缺点:
如果期望的输出是1,但实际的输出是0.00000001。这对于逻辑单元来说几乎没有梯度方向去调整误差,这也就意味着想要得到目标结果将花费十分长的时间。

那么,有没有这样一个好的cost函数使得他更好的完成我们的工作呢?
答案是,有的。使神经网络的输出来表示离散方案的概率分布。


Softmax组的输出单元是非局部非线性的。其中,y_i作为输出,z_i作为输入。根据右侧公式我们可以得知,输出值在0~1之间,且所有输出的和相加为1,且我们对其求导可发现,其导数式同样是十分简单的。

如果我们使用了softmax作为输出层的话,那么合适的cost函数应该怎么选择呢?
答案是正确答案的负对数概率。如果其中一个目标值是1,而其他的均为0。那么我们将他们相加,将0放在错误答案的前面,1放在正确答案的前面。得到的就是正确答案的负对数概率,即交叉熵代价函数。

它有很好的性质:当目标值为1但输出至接近0时梯度很大。所以,即使0.000001与0.00000001之间相差100倍,前者的效能也较后者要好得多。
由此可见,该函数在样本很差的时候能够有较好的性能,即平衡了(或者说是放大了)原来的dy/dz的值。

由上述求导过程可以看出,梯度的大小为y_i-t_i,其值介于-1与+1之间。当输出值接近目标值时则趋近于0。即正确的权值不会再变化,错误的权值会一直改变至收敛。


在语音识别方面,我们有很多的难点,我将会列举如下:
· 我们很难在噪声环境中正确识别目标声音。
· 自然声的输入常常是模糊的,且通常会有许多的词汇在音学标识中是相同的。
· 人们擅长于在常用词中预测(猜测)语句中下一个单词。
不过,幸运的是,我们并不需要让机器知道单词的意思就可以较好的预测下一个单词(通过概率)。

标准Trigarm方法:即通过大量训练三个单词的组合,根据前面出现的两个单词来预测后一个单词出现的频率。当然,我们为什么不选择过大的片段来训练呢?其一,这将会有许多的可能性去存储;其二,有一些特定语境下的组合可能是无用的(无意义的),此时概率会趋于0而不会等于0。

那么,我们现在有一个问题需要解决。当两个语句在结构和语义上相似时,该模型无法理解相似的语义(这样将大大降低训练的效率)。为了克服这个限制,我们需要将语句转化为包含语句含义和语法特征的两个向量,通过前一个单词的语义特征来预测下一个单词,那么我们就需要扩大训练单词组合的单词数目,例如10个。

Bengio的用于预测下一个单词的神经网络

底部的单词输入可以视作一组神经元,其中的一个是“on”状态的。神经元的权重将决定下一个隐藏层的活动模式,所以底层的活跃神经元将在分布的特征向量单词中给出活动的模式。通过学习,当你修改一个输入单元的特征向量时,就相当于修改了权值,这通常会有五个输入。然后我们就可以通过隐藏层使用这些输入来预测下一个单词。
一个改进的方法就是,直接从输入字转到输出字,跳过黑色连接(在图中显示为feature那一项)。因为每个输入单词都能够提供关于输出单词可能是什么的信息。

Bengio的方法实际上在预测下一个单词的功能上比Trigram的方法要略差一些。

关于使用softmax时需要预测10w输出的问题:
·  每个最末隐藏层都需要10w个权值,我们支撑不了如此巨额的隐藏层,除非我们拥有十分巨大的测试样例来训练。当然,我们也可以让最末隐藏层尽可能地小些(当然还需要保证预测的准确性),但我们并不知道那些单词实际上出现的概率小些。
· 我们还有更好的方法来处理这么如此大数量的输出吗?


神经概率语言模型——一种解决大量概率数据输入的方法
避免有10w个不同的输出单元的方法:使用串行架构。我们像上图所做的那样,将单词放入前后文中进行预测。除此之外,我们为下一个单词家有一个候选词;然后我们根据网络来检测这个候选单词是否适合。当然这个工作我们需要大量数据来支持,幸运的是,这个搭配的将适用于所有环境。当然我们也需要为每一个候选词进行训练。

这样我们就可以使用候选词来代表学习向量(在语义和句法特征上),即能够辨别词性(其实词性也不准确,机器仅仅依靠概率来判断而已)。

序列架构的学习中,在计算每个候选词的概率之后,用所有的softmax中的概率信息来预测下一个单词;预测单词的概率和目标单词之间的差异将给我们一个误差导数,这个倒数将继续帮助我们提高正确的候选词概率并降低改率过高的错误选项;当然,我们也可以使用通过其他预测方式预测(比如Trigram)后的小集合作为候选词。

通过树形结构的预测路径来预测下一个单词
首先,将所有的单词按照二元树进行排列,每一个单词作为一个叶节点;然后使用前面单词的上下文生成一个预测向量v,并将该预测向量与训练向量u按照树形结构进行一对一比较。比较方法是由两个向量得到一个向量积,然后将logistic函数(图中的\sigma)应用在这个向量积上,现在我们就得到树的右分支的预测概率。

由此可见,当我们在寻求最大化正确目标单词的概率时,就等同于在最大化所有导向正确结果的正确路径分支的概率总和。所以,当我们在学习过程中只需要注意正确路径上的节点,这是一项巨大的胜利,我们将需要考虑的节点数量大大减少了。但不幸的是,他在测试时依旧会消耗许多时间。

一个简单的学习单词特征向量的方法:仅仅是为单词找到一个好的特征向量,所以同时使用过去和将来的单词。在中间的位置填充一个目标单词或是随机的一个单词。网络所做的仅仅是判断该单词时正确的还是随机的。在训练了大约600w次后,这项方法在自然语言处理上使用的很好。

在二维图上展示单词的聚类:使用“t-sne”方法将意义相近或相关的单词聚集在一起。由于没有额外的监督学习,他很好的证明了特征学习很好的把握住了单词之间的联系。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值