Machine Learning & Recommendation & NLP & DL程序员生物信息学与算法

神经网络基本概念

2019-03-24  本文已影响11人  无罿

Neural Network and Deep Learning 学习笔记(1)

{\large{\text{CONTENTS}}}

两种人工神经元

感知机( Perceptron )

在神经系统中,神经元的基本功能有以下三个:
接受刺激、产生兴奋,传导兴奋。
感知机模型模拟出了这三个基本功能。
核心概念:
a) 输出为输入的加权求和(接受刺激)
o = \sum_{i=1}^n x_iw_i
b) 输入和输出均为0或1, 当输入的加权求和大于阈值时,输出为1,否则为0(神经元需要接受到达一定阈值的信号后才能产生兴奋)
O = 0 , if \sum_{i=1}^n x_iw_i \leq threshold
O = 1 , if \sum_{i=1}^n x_iw_i > threshold

单个感知机 http://neuralnetworksanddeeplearning.com/images/tikz0.png
  当使用多个感知机组合成一个基本的神经网络时, 可以粗略将网络分为三层:输入层、隐层和输出层。
  每一层的感知机处理上一层的输出信号,将整合后的信号作为下一层的输入信号,最终得到一个输出结果。(传导兴奋)
多个感知机组成的神经网络 http://neuralnetworksanddeeplearning.com/images/tikz1.png
为了简化表达,令输入和权值为向量形式
感知机与Sigmoid神经元的对比
  Sigmoid神经元相当于一个平滑的感知机。它与感知机一样,输出结果都在0~1之间,但是不同于感知机输出的非零即一,Sigmoid神经元可以输出0~1之间的任何实数结果,使得我们能够通过修改权值和偏置,达到令结果输出逼近预期的效果。
  Sigmoid函数:
神经网络的基本结构

如上图,神经网络的基本结构为三层:输入层、隐层和输出层。

组成
输入层 若干个输入神经元
隐层 一层或多层的中间神经元
输出层 一个输出神经元

[注] 隐层并没有什么特殊的含义,仅仅表示即非输入也非输出;由于历史原因,这种神经网络也称多层感知机(multiple perceptrons,MLPs),虽然它是由Sigmoid神经元组成。

两种模型

按照信息传递的方向,神经网络可分为前馈(feedforward)神经网络和递归(recurrent)神经网络两种,具体如下

模型 特点 比较
前馈神经网络 前一层的输出为后一层的输入,网络中不存在回环。 目前为止,效果更强大
递归神经网络 让神经元在变为止之前在一段有限的时间内激发,而非持续兴奋。 网络中存在回环(循环不会在这样的模型中引起问题,因为神经元的输出仅在稍后的某个时间影响其输入,而不是瞬间影响它的输入。) 原理更贴近生物神经元的工作模式,可能在前馈无法解决的复杂问题上有良好的效果

代价函数

  我们应该如何训练神经网络呢?即如何为神经网络寻找到合适的权值和偏置,使得神经网络的输出结果接近正确结果?可引入代价函数(cost function):
C(w,b) = \frac{1}{2n}\sum_{x}||y(x)-a||^2
w: the collection of all weights in the network
b: all the biases
n: the total number of training inputs
a: the vector of outputs from the network when x is input

  上式为二次代价函数。也可以根据情况定义其他的代价函数。
  代价函数可以作为衡量神经网络性能的工具。可以看出,代价函数时偏置和权值的平滑函数,当修改权值和偏置时,可以观察到输出是否改善。当网络输出的a逐渐接近正确的y(x)时,代价函数趋于0;当a与y(x)相差大时,代价函数很大。训练目标可以明确为寻找可以令代价函数尽可能小的一个权值和偏置的集合。

梯度下降法

基本概念

  如何实现最小化?假设我们处在山谷的某处,想要到达谷底。最为直观的方法就是每次我们都往下走一点,最终就可以到达谷底。假如代价函数有两个变量,就可表示为下图:

梯度下降法
  直观地看,在代价函数C的计算中,向下就意味着选择v1v2的方向,使得代价函数C减小,即对下式
学习率过大
学习率取值 优点 缺点
过小 精细,在只有一个极值时不会错过最值 速度慢,有多个极值时可能落入局部最小值
过大 在取值合适时速度快,不易落入局部最小值 '之'字形下降,可能无法到达最值

  为了让学习率处于合适的范围,令每次下降的步距
||\Delta v|| = \epsilon , where\ fixed\ \epsilon >0
  则有
\eta = \frac{||v||}{||\triangledown C||} = \frac{\epsilon}{||\triangledown C||}
  学习率即可限定在一个合适的范围内。

随机梯度下降法

  在神经网络的训练中,我们希望得到令代价函数尽可能小的一个权值和偏置的集合。
\Delta C \approx \sum_k{\frac{\partial C}{\partial w_k} \Delta w_k}+ \sum_l{\frac{\partial C}{\partial b_l} \Delta b_l}
  w,b的更新规则为:
w_k \to w_k^{next} = w_k - \eta \frac{\partial C}{\partial w_k}
b_l \to b_l^{next} = b_l - \eta \frac{\partial C}{\partial b_l}
  当使用训练集训练神经网络时,对训练集的每一个输入x,求出代价函数Cx
C = \frac{1}{n}\sum_{x=1}^{n}C_x
\triangledown C = \frac{1}{n}\sum_{x=1}^{n}\triangledown C_x
  在实际的应用中,当训练集很大时,求梯度的过程会耗费很长时间。为了提高效率,可以使用随机梯度下降法(stochastic gradient descent )。
  随机梯度下降法的步骤如下:
  1. 从训练集中随机抽出m个样本;
  2. 将m个样本视为一个小样本数据(mini-batch)
  3. 计算小样本数据的代价函数,然后有:
\frac{\sum_{j=1}^{m}\triangledown C_{x_j}}{m} \approx \frac{\sum_{x}\triangledown C_{x}}{n} = \triangledown C
\triangledown C \approx \frac{1}{m} \sum_{j=1}^{m}\triangledown C_{x_j}
  则w,b的更新规则为:
w_k \to w_k^{next} = w_k - \frac{\eta}{m} \sum_j \frac{\partial C_{x_j}}{\partial w_k}
b_l \to b_l^{next} = b_l - \frac{\eta}{m} \sum_j \frac{\partial C_{x_j}}{\partial b_l}

上一篇 下一篇

猜你喜欢

热点阅读