Neural Networks and Deep Learning学习笔记ch1 - 神经网络

最近开始看一些深度学习的资料,想学习一下深度学习的基础知识。找到了一个比较好的tutorial,Neural Networks and Deep Learning,认真看完了之后觉得收获还是很多的。从最基本的感知机开始讲起,到后来使用logistic函数作为激活函数的sigmoid neuron,和很多其他现在深度学习中常使用的trick。把深度学习的一个发展过程讲得很清楚,而且还有很多源码和实验帮助理解。看完了整个tutorial后打算再重新梳理一遍,来写点总结,以后再看其他资料了可以来更新,查漏补缺,温故而知新。

  • 感知机
  • Sigmoid神经元
  • 神经网络的结构
  • 用梯度下降法来学习
  • 参考

感知机-Perceptron

在讲神经网络之前,不得不提感知机。感知机在1950s和1960s由Frank Rosenblatt提出,是一种人为设计的neuron, 不过现在在神经网络中通常使用sigmoid neuron,但还是有必要了解一下感知机。

Neural Networks and Deep Learning学习笔记ch1 - 神经网络_第1张图片
在上面这个例子中是一个感知机神经元,有三个输入 x1,x2,x3 ,一个输出, output ,另外对于每一输入还有一个对应的权重系数, w1,w2,w3 ,神经元的输出只有两个状态,0或者1,公式化地描述为如下:

f(x)={01ifjwjxjthresholdifjwjxj>threshold

有上面的公式可以很容易地看出来感知机是怎么工作的。
但是可以看出,感知机的输出只有 0 和 1,导致了感知机有一定的局限性,这让感知机看起来就只是简单的逻辑门,而且还不能通过感知机构造出异或门。关于感知机更多内容请看维基百科。所以就提出来一个新的neuron,可以让它的输出从0到1连续变化。

Sigmoid神经元-Sigmoid neurons

Neural Networks and Deep Learning学习笔记ch1 - 神经网络_第2张图片
如上所示为一个神经网络,如果权重的微小变化能够让输出也相应有一个比较小的变化,那么就可以让这个神经网络做一个稍微复杂一点的工作了。而之前的感知机的输出是二值的,只有在阈值附近,输入的变化才可能导致神经元的输出变化,而且还是突变,这样一个神经网络就是有点数字化了的感觉,本科学的数字电路就是这样子的。所以就有人提出一个新的神经元,sigmoid neuron,该神经元使用Sigmoid_function作为激活函数。sigmoid函数也叫logistic函数,在机器学习中很常见,该函数表达式为 σ(z)=11+ex ,,该函数曲线如下:
Neural Networks and Deep Learning学习笔记ch1 - 神经网络_第3张图片
可以看到sigmoid函数的输出是从 0 到 1 连续变化的,在 0 处函数值为0.5。
令x为神经元的输入 jwjxj ,合起来就是 σ(z)=11+ejwjxj+b
另外,改变 wb 的值,是可以改变曲线的形状的,具体说来, w 越大,曲线在0处变化越陡,可以想象到当 w 足够大时,sigmoid的输出也就只有0 和 1了,就和前面的感知机一样了。

神经网络的结构-The architecture of neural networks

神经网络通常由输入层、隐藏层和输出层组成,输入输出都是只有一层,但隐藏层可以有多层,深度学习中就是通过增加隐藏层的层数来完成一些比较复杂的功能。如下为一个神经网络:
Neural Networks and Deep Learning学习笔记ch1 - 神经网络_第4张图片
通常情况下,神经网络的每两个相邻层之间的神经元都是两两相连接的。

用梯度下降法来学习-Learning with gradient descent

建立一个如上所示神经网络之后,需要通过训练来学习权重 wb ,最常用的学习方法就是梯度下降法。梯度下降是很常用的优化目标函数的方法。给定训练数据,对于给定的输入,可以通过神经网络预测出一个输出,预测的输出如果和真实值不一致,那么就可以通过改变神经网络的系数权重来使系数往正确的方向变化,不断地学习最后就能达到一个比较好的结果。
首先要先定义一个代价函数,当预测的输出和预期的输出不一致时,就惩罚该函数:
C(w,b)=12nx||y(x)a||2
这里 a 是训练数据中的输出,是预期值, y(x) 是对给定输入 x 的预测值,如果两者不一致,那么就让两者相减取平方作为惩罚值。神经网络的学习过程即使通过调整权重 w,b 使得该惩罚值最小,这时可以认为对神经网络学习得比较好了。

下一章中详细介绍神经网络训练用到的经典的反向传播算法。

参考

http://neuralnetworksanddeeplearning.com/chap1.html

你可能感兴趣的:(machine,learning)