神经元有一组输入。真正神经元会有不同的强度的输入。在人工智能网中试图去学习到这些边上的权重,去加强不同输入的联系。真正神经元通过输入和强度的组合去决定要不要生成脉冲。
人工神经元不会产生脉冲,但会生成一个数值。神经元的函数就是通过非线性函数计算输入的加权乘以权重之和。
典型的非线性函数就是整形线性单元(max(0, x)),在90年代很多非线性函数是很平缓的sigmoid()函数或者tanh()函数。但对于神经元来说产生的数值是不是更接近0对优化系统更有利。比如如果神经元有3个输入X1, X1, X3,权重分别是-0.21, 0.3, 0.7,计算就是
y = max(0, -.0.21*x1 + 0.3*x2 + 0.7*x3)。
为了决定图片到底是猫还是狗,这个图片要经过很多层。这些神经元根据输入来产生下一步。
最低层的神经元会查看像素的小块。更高层的神经元会看下层神经元的输出再决定是否生产。
这个模型也会错,比如说这里是猫,但事实上是狗。那么做错误决定的信号就会返回到系统中做调整,让剩余的模型在下一次查看图片时候,更可能输出狗。这就是神经网络的目标,通过模型小步调整边的权重让它更可能去得到正确答案。你可以通过所有样本去聚合,这样可以降低错误率。
学习算法其实比较简单,如下:
选择随机训练样本“(输入,标签)”,比如上面猫图和想要的输出标签,‘猫’
运行神经网络,在输入上去查看它产生的。
调整边的权重让最后输出更接近于“标签”上的。
如何调整边的权重去保障输出更接近于标签呢?
反向传播:积分的链式规则在决定高层神经网络中使用,如果选择是猫而不是狗呢?得想办法去调整高层的权重去让它更可以决定是“狗”。
根据箭头方向和权重去让它更可能说是狗。不要步子迈得太大因为这种表面很复杂,微调一小步让它下次更可能给出狗的结果。通过很多迭代以及查看例子,结果更可能会是狗。通过这个链式法则去理解底层参数改变是如何影响到输出的。说白了就是网络变化回路反馈到输入,使得整个模型更适应去选择“狗”。
权重的微调
真正神经网络通过亿级的参数在亿级的维度做调整,去理解输出网络。Google目前有能力如何快速搭建和训练这些海量数据上的模型,去解决实际问题,在快速去不同广泛的平台去部署生产模型(手机,传感器,云端等)。
神经网络的奇妙特性
这就是说神经网络可以用在很多不同问题上。
文本:万亿级别的英文和其他语言资料。从一个语言翻译到另一个,从短语到整句。
虚拟化数据:十亿级别的图谱,视频。
语音:每天都产生万小时的资料。
用户行为: 很多应用产生数据。比如搜索引擎的查询,用户在email中标记垃圾。这些都可以学习并搭建智能系统。
知识图谱:十亿级别的标签化关系元组。
如果吸收更多数据,让模型变大,结果也更好。
如果你输入更多数据,但没有把模型变大,模型的能力就会受限在一些数据集中的明显特征。通过增加模型的规模,让它不仅记住明显的,还有一些也许出现很少的细微特征。
通过更大的模型,更多数据,计算需求也更大。Google很多精力花在如何提升计算量,训练更大的模型。
在Google深度学习有哪些强大应用?
1、语音识别
第一个部署深度神经网络的小组。
他们实现的新模型基于神经网络而不是隐马尔可夫模型。这个问题是把从150毫秒的语音去预测中间10毫秒吞掉的声音。比如到底是ba还是ka的声音。你得到一个预测的序列,再通过语言模型去理解用户所说。
一开始的版本就把识别错误率降低了30%,确实非常厉害。
后来就研究一些复杂模型去加强网络,进一步降低错误率。现在当你对着电话说话,语音识别比五年前强多了。
2、ImageNet挑战
本文来源:不详 作者:佚名