盒子
盒子
文章目录
  1. 神经元(Neuron)
    1. 激活函数
  2. 前向传播网络(Feed-forward Network)
    1. 神经网络如何学习
    2. 但是,反向传播如何工作?
    3. 增量法则
  3. 时间递归神经网络(Recurrent Neural Networks)
    1. Constant Error Carousel
    2. Gates

神经网络101

我被这个一群鱼迷住了

意译自https://github.com/cazala/synaptic/wiki/Neural-Networks-101

一个不怎么关乎公式的简单神经网络介绍。

神经元(Neuron)

神经网络的基本单位。本质上,神经元有树突(输入)、细胞体(处理器)和轴突(输出)。

自然界中,激活过程大概这样:当神经元的累积加权输入超过特定阈值,轴突激发信号。

神经元最重要的特性是: 学习。

人工神经元是这样的:

人工神经元

它有几个输入,每个输入对应有权重(特定连接的重要性)。当要激活神经元的时候,
通过累加加权输入计算它的状态。但是神经元总有一个为1的额外的输入,叫偏差(bias)。

这确保既是所有输入都是0, 神经元仍然有输入。

计算神经元状态(state)之后,神经元将值传递给激活函数(activation function)。
该函数将结果正则化(normalize)(到0-1)

激活函数

激活函数通常是sigmoid函数,不是Logistic()就是Hyperbolic Tangent(双曲正切).

logistic

前向传播网络(Feed-forward Network)

这是最简单的架构,神经元保存在层中,上一层的神经元连接所有下一层的神经元,
每一层的输出又是下一层的输入。

feed-forward network

第一层(输入层)从环境接受输入,激活,它的输出作为下一层的输入,直到抵达最终层(输出层)。

神经网络如何学习

通过训练。用来做这个算法叫做反向传播(backpropagation)。在给定网络输入后,
将产生输出。

接着,告诉网络该输入的理想输出。

下次,网络将采取这个理想输出并调整权重来产生更精确的输出,

从输出层反向调整直到输入层。

那么,下一次接受同样输入输出层将输出更接近的值,这个过程迭代多次,

直到网络输出和理想输出差距足够小。

但是,反向传播如何工作?

算法通过梯度下降(Gradient Descent)来计算调整权重

比如如下图表示一个特定权重和误差(网络输出和理想输出差距)的关系。

error vs weight

该算法计算实际权重位置的梯度,也叫瞬时斜率(instant slope)(图中箭头)

它将向减小误差的方向移动,

这个过程将对网络中每个权重重复。

为了计算梯度和调整权重,我们使用增量(δ)法则

增量法则

输出层θ的增量使用注入误差(injected error)(网络输出和理想输出的差距)
来计算。


f’是激活函数的导函数。’

这个误差反向传播到输入层,每一层都使用上一层的δs来计算本层的δ


我们使用delta来计算每个权重的梯度:

现在根据反向传播更新权重:

这里ε是学习率(learning rate).

译注: 推导见维基百科

时间递归神经网络(Recurrent Neural Networks)

这个网络中的神经元自连接(固定权重1),这让它们有某种短期记忆。

过去激励的额外输入使网络有某种上下文信息,有助于特定任务产生更好的输出。

在序列预测任务上,这种神经网络非常有效,但是它们不能记得过去太多步的相关信息

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的文章讲的很清晰易懂。

有了这些基础知识,现在你可以好好玩神经网络了。