3

神经网络中的若干问题

 3 years ago
source link: https://www.guofei.site/2017/05/30/sigmoid.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

sigmoid作为激活函数的原因

从exponential family角度看

关于exponential family, 参见我的另一篇文章常见统计分布(2).

Bernoulli distribution的概率分布函数可以写为:
f(x)=px(1−p)1−xf(x)=px(1−p)1−x
进一步写为,
f(x)=exp[lnp1−px+ln(1−p)]f(x)=exp[lnp1−px+ln(1−p)]

比较exponential family的定义:
P(y;η)=b(y)exp(ηTT(y)−a(η))P(y;η)=b(y)exp(ηTT(y)−a(η))

得到, η=p1−pη=p1−p

注:从normal distribution推导exponential family,对应的是线性回归。

从logistic regression角度看

用sigmoid function后,logistic regression的参数,MLE方法等价于OLS方法

从BP神经网络角度看

误差反向传播过程中,sigmoid function有以下好处:

  • 光滑:处处可导,导数连续
  • 压缩:把R压缩到[-1,1],并且接近0更敏感。这是BP的需求。
  • 导数容易求。y’=y(1-y)$. 误差反向传播算法中,大大减少了运算量(误差反向传播的详细介绍在我的博客中(www.guofei.site))

交叉熵作为 Cost Function 的原因

残差平方和作为 Cost Function ,误差前向传播算法中,最后一项开始便有σ′(v)σ′(v)这一项,神经元的输入值较为极端时,σ′(v)=σ(v)(1−σ(v))σ′(v)=σ(v)(1−σ(v)) 接近0.
用交叉熵作为 Cost Function,最后一层不存在这个问题
公式自己推导,很简单。

softmax 作为最后一层的原因

  1. 非负、和总是1,符合对概率的定义
  2. softmax regression 的二元情况与 logistics regression 等价
  3. 与最大熵模型等价

过拟合的应对

1. 增加数据量往往可以有效降低过拟合的可能性

效果显著,但成本巨大

2. 人为扩展训练数据。

第一条说了,增加数据量往往可以有效降低过拟合的可能性,但获取真实数据的成本往往很高,这里考虑在原数据上进行一些扩展。
例如,MNIST数据库中,将图像进行少量旋转。

3. validation

看一些资料,感觉与 early stopping 一样。都是如果发现在 validation datasets 上误差连续上升,就停止迭代。

4. L1, L2 规范化

C=C0+λ2n∑w2C=C0+λ2n∑w2(其中n是数据集的大小)
偏导数就变成这种形式:

  1. ∂C∂w=∂C0∂w+λnw∂C∂w=∂C0∂w+λnw
  2. ∂C∂b=∂C0∂b∂C∂b=∂C0∂b

训练算法变成这样:

  1. w→w−η∂C0∂b−ηλnww→w−η∂C0∂b−ηλnw
  2. b→b−η∂C0∂bb→b−η∂C0∂b

对于L1正则化,∂C∂w=∂C0∂w+λnNw∂C∂w=∂C0∂w+λnNw

以下引用 Michael Nielsen 的说法
规范化能够减轻过拟合,但背后的原因还不得而知。通常认为是因为小的权重意味着更低的复杂性。
例如,一个线性模型和一个9阶多项式都可以回归一组点,有两种可能:

  1. 9次多项式是正确的
  2. 线性模型是正确的,噪音是因为存在测量误差

科学中,很难说明哪种原则正确,“奥卡姆剃刀”也不是一个一般的科学原理。例如,爱因斯坦的理论更能预测天体的微小偏差,但复杂很多。
归根结底,你可以把规范化看成某种整合的技术,尽管其效果不错,但我们并没有一套完整的理解,仅仅当作不完备的启发规则或经验。规范化是一种帮助神经网络泛化的魔法,但不会带来原理上理解的指导。

5. Dropout

随机、临时关闭某些神经元。实际预测时,全部神经元激活,为了补偿这个,把权重按比例缩小。
Dropout 类似于某种投票机制,有些类似训练不同的神经网络

权重初始化

1/n

举例说明,某个3层神经元,输入层有1000个神经元,其中500个输出1,500个输出0
用N(0,1)N(0,1)初始化隐含层的 weight 和 bias
那么,对于某个隐含层的神经元,其输入是∑wl−1ivl−1i+b∼N(0,501)∑wil−1vil−1+b∼N(0,501)
这是一个非常宽的正态分布,导致其值较大和较小的概率都不低,这样会导致训练缓慢。

可以用w∼N(0,1/n),b∼N(0,1)w∼N(0,1/n),b∼N(0,1)来初始化 weight 和 bias,这样某个隐含层的输入是∑wl−1ivl−1i+b∼N(0,1.5)∑wil−1vil−1+b∼N(0,1.5)

实际上,两种方案训练很多次,准确率趋向于一致

非0

初始化时,不能用全0初始化,因为这样的话,每一层内部的神经元都一样,无论迭代多少次,值也都一样,也就失去了神经网络的意义。

实际上,可以设定w=0.01*np.random.randn,b=0
当然,w不能太大,容易落在sigmoid函数的尾部,导致迭代很慢。

batch_size

理论上,只要权重更新足够频繁,就可以训练到最优,这样看来在线学习(batch_size=1)似乎更好。
但是,

  1. 神经网络每 batch_size 个样本,更新一次权重。在线学习更新太过频繁。
  2. 现有的硬件支持矩阵运算,所以 batch_size 不为1时,每多一个样本,花费时间并不太增多。
  3. batch_size 是一个相对独立的超参数(独立于网络整体架构之外)

momentum

用 Hessian 矩阵做最优化有巨大的优势,关于 Hessian 矩阵,出门左转非线性无约束最优化-牛顿法
问题是 Hessian 矩阵太大了,加入有n个权重,Hessian矩阵就是n×nn×n大小的
作为改进,使用 momentum

momentum 从物理中引入了两个概念,

  1. 速度,梯度类似力,只改变加速度
  2. 摩擦力,用来逐步减少速度

v→v′=μv−η∇Cv→v′=μv−η∇C
w→w′=w+v′w→w′=w+v′
1−μ1−μ是摩擦力,0≤μ≤10≤μ≤1

其它最优化算法:共和梯度法、BFGS方法(limited memory BFGS,L-BFGS)

why deep?

Informally:Thera are functions you can compute with a “small” L-layer deep neural network that shallower networks require exponentially more hidden units to comput.

这里有一个比喻性的说明:
你的真实函数是y=X1XORX2XORX3XOR…XORXny=X1XORX2XORX3XOR…XORXn

  • 深度方案:类似一个二叉树,深度为log2n+1log2⁡n+1,节点个数为2n−12n−1(可以自己画一下)
  • 浅层方案:如果限定最多2层,那么hidden layer 需要 2n−12n−1 个节点。

神经网络可以拟合任意函数

神经网络可以拟合任意函数,意味着神经网络有某种普遍性。
例如,你可以把图像识别看成是某个函数,把翻译看成是某个函数。

这里做一些说明,而非证明。

  1. 拟合指的是某种 近似,通过增加隐藏神经元的数目,提高精度
    ∀ε>0∀ε>0(εε是精度),可以使用足够多的神经元,使得神经元的输出g(x)g(x)满足∣g(x)−f(x)∣<ε∣g(x)−f(x)∣<ε,
  2. 对于跳跃函数不能拟合,这是因为神经网络的输出必然是连续的,但是仍然可以用连续函数去近似拟合。

具体过程见于神经网络与深度学习-chapter4

1. 分析单输入单输出

  1. 单个sigmoid函数可以模拟阶跃函数
  2. 多个阶跃函数叠加,可以模拟 if-else 结构
  3. 两个阶跃函数可以模拟一个凸起(相反的权重,下一层求和)

2. 分析多输入多输出

以2个输入为例,类似地,可以组合一个“塔型凸起”。
多个凸起可以近似任意函数

讨论激活函数

把激活函数改成与sigmoid相似、但中间有很多波动,整个推理仍然成立(仍然可以拟合任意函数)
思考一下激活函数改成 ReLU 的情况,这种情况仍然可以拟合任意函数
思考一下激活函数改成线性的情况,这种情况不可以拟合任意函数


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK