我被这个一群鱼迷住了
意译自https://github.com/cazala/synaptic/wiki/Neural-Networks-101
一个不怎么关乎公式的简单神经网络介绍。
神经元(Neuron)
神经网络的基本单位。本质上,神经元有树突(输入)、细胞体(处理器)和轴突(输出)。
自然界中,激活过程大概这样:当神经元的累积加权输入超过特定阈值,轴突激发信号。
神经元最重要的特性是: 学习。
人工神经元是这样的:
它有几个输入,每个输入对应有权重(特定连接的重要性)。当要激活神经元的时候,
通过累加加权输入计算它的状态。但是神经元总有一个为1的额外的输入,叫偏差(bias)。
这确保既是所有输入都是0, 神经元仍然有输入。
计算神经元状态(state)之后,神经元将值传递给激活函数(activation function)。
该函数将结果正则化(normalize)(到0-1)
激活函数
激活函数通常是sigmoid函数,不是Logistic()就是Hyperbolic Tangent(双曲正切).
前向传播网络(Feed-forward Network)
这是最简单的架构,神经元保存在层中,上一层的神经元连接所有下一层的神经元,
每一层的输出又是下一层的输入。
第一层(输入层)从环境接受输入,激活,它的输出作为下一层的输入,直到抵达最终层(输出层)。
神经网络如何学习
通过训练。用来做这个算法叫做反向传播(backpropagation)。在给定网络输入后,
将产生输出。
接着,告诉网络该输入的理想输出。
下次,网络将采取这个理想输出并调整权重来产生更精确的输出,
从输出层反向调整直到输入层。
那么,下一次接受同样输入输出层将输出更接近的值,这个过程迭代多次,
直到网络输出和理想输出差距足够小。
但是,反向传播如何工作?
算法通过梯度下降(Gradient Descent)来计算调整权重
比如如下图表示一个特定权重和误差(网络输出和理想输出差距)的关系。
该算法计算实际权重位置的梯度,也叫瞬时斜率(instant slope)(图中箭头)
它将向减小误差的方向移动,
这个过程将对网络中每个权重重复。
为了计算梯度和调整权重,我们使用增量(δ)法则
增量法则
输出层θ的增量使用注入误差(injected error)(网络输出和理想输出的差距)
来计算。
f’是激活函数的导函数。’
这个误差反向传播到输入层,每一层都使用上一层的δs来计算本层的δ
我们使用delta来计算每个权重的梯度:
现在根据反向传播更新权重:
这里ε是学习率(learning rate).
译注: 推导见维基百科
时间递归神经网络(Recurrent Neural Networks)
这个网络中的神经元自连接(固定权重1),这让它们有某种短期记忆。
过去激励的额外输入使网络有某种上下文信息,有助于特定任务产生更好的输出。
在序列预测任务上,这种神经网络非常有效,但是它们不能记得过去太多步的相关信息
Constant Error Carousel
CEC包含自连接的神经元,我们称为记忆细胞,一个线性激励函数(linear activation)。
这使误差保持更长时间,修复了时间递归神经网络的梯度退化问题–RNN缩放每个激励的误差
因为squashing function的导数,当它在时空上往回传播,误差会指数消失或分叉(diverge,就是震荡)。听起来真他妈的酷!
译注:问题在于误差会因为和squashing function(比如logistic激励函数)的导数相乘,还和自连接权重相乘(所以规定为1),
如果squashing function是线性的,那么其导数也为1,则,误差就不会消失或分叉。
Gates
有的结构不仅将神经元连接,而且调控流过这些连接的信息,这些结构叫做二阶神经网络(second order neural networks)
译注:因为gate是和连接相乘,则成为二阶了。
一种保护记忆细胞远离噪音输入和注入误差的方式是使用gates来缩放(scale,调控意)记忆细胞和输入输出层之间的连接。
这就是Long Short-Term Memory的起源。LSTM是一种适合分类、处理和
预测时间序列的结构,特别是当关键事件中有许多非常长且未知的时间延迟。
自从它的概念被第三个gate提升,叫做Forget Gate,这个管理记忆细胞的自连接,决定有多少
误差应该被记住,并且何时忘记。通过在每个time-step后scaling来自细胞状态的反馈实现。
这保护了状态不至于分叉(diverging, 同上)和崩塌(collapsing,消失)。
LSTM通过来自记忆细胞到所有它的其他gates的窥视孔(peephole)连接,改善它们的性能。
因为它们有有关它们保护细胞的信息。实际的LSTM结构看起来像这样。
时间递归和二阶神经网络(Recurrent and Second Order Neural Networks)比前向传播神经网络相比复杂。数学细节可以参考Derek Monner的论文
译者注:关于LSTM,colah的文章讲的很清晰易懂。
有了这些基础知识,现在你可以好好玩神经网络了。