BP神经网络(一) --- 感知器
来源:互联网 发布:uber打车软件下载 编辑:程序博客网 时间:2024/04/28 06:04
顾名思义,人工神经网络是对生物神经网络的模拟。要想理解人工神经网络,首先得理解生物神经网络的工作方式。
1.生物神经元
这是一个神经元的基本结构图,大量的神经元相互连接构成复杂的神经网络。每个神经元有三个部分组成:树突,细胞体和轴突。
树突:树状的神经纤维接受网络,它将输入的电信号传递给细胞体。
轴突:单根长纤维,它把细胞体的输出信号导向其他神经元。
信号的传递过程:树突末梢从外界或者是其他神经元的轴突末梢接受电信号,经由细胞体进行整合并进行阈值处理,如果整合后的刺激超过某一阈值神经元被激活而进入兴奋状态,此时就会有一个电信号通过轴突输出,并传递给其他神经元。
2.人工神经元模型(感知器TLU)
数学模型
向量W:权向量
向量A:输入向量,做内积需要用到转置
theta:偏置(bias),或者称之为阈值(threshold)
f:传递函数,也即激励函数。
可见,一个神经元的功能是求得输入向量与权向量的内积后,经一个阈值逻辑单元或者非线性传递函数得到一个标量结果。
当f为阈值函数:假设阈值为theta,当 a >=theta 时 y=1,反之 y=0。此时的输出为不连续的。
此时单个神经元把一个n维向量空间用一个超平面分割成两部分(称之为判断边界),给定一个输入向量,神经元可以判断出这个向量位于超平面的哪一边。(SVM也即是做的这部分工作,所以说,当单个神经元的时候,BP神经网络做的工作与SVM类似。该超平面的方程:WXT + b = 0)
当f为连续函数时:输出是连续的,因为它由一个 squash 函数 s(或 sigma)判定,该函数的自变量是 a,函数值在 0 和 1 之间,y=s(a),此时的y=s(a)称之为激活函数。
a1~an:输入向量的各个分量
w1~wn:神经元各个突触的权值
b:偏置(bias),或者称之为阈值(threshold)
f:传递函数,通常为非线性函数。一般有traingd(),tansig(),hardlim()。以下默认为hardlim()
t:神经元输出
3 感知器学习算法
从一个最简单的TLU开始,两个输入,权系数都为1,theta的值为1.5.那么它的输入,输出对照为:
现在回归到大脑如何进行学习,所谓初生牛犊不怕虎,长了世面之后,再见到老虎就感到害怕了,前后两者的区别在于对于同一件事情两者产生的刺激不同。类比到机器学习,便是输入的权值。权值系数越大,引发刺激的可能越大,那么如何找到每个系数的最佳权值,便是接下来要做的工作。
首先约定一下公式推导的符号,这点很重要。
反向误差传播算法,顾名思义,我们首先要做的事情是定义误差,常用的定义误差的方法是:
最终的目的是使感知器的输出等于预想的输出,所以需要不断调整权重,以达到这个目的。
问题是以什么样的方式调整权重能最快达到这个目的,也就是以什么样的方式调整权重,使得误差e尽快接近0。于是提出了梯度下降法。
梯度下降法的基本思想:函数沿着其梯度方向增加最快,反之,沿着其梯度反方向减小最快。
即每次权重的修改量为:
同时,令
所以
所以
所以
所以
如果把整个的神经网络系统比作是一个动物的话,那么一个感知器(TLU)就是最远是的单细胞生物,虽然结构极其简单,但也已经具备最基本的觅食的躲避的功能。
- BP神经网络(一) --- 感知器
- BP神经网络-感知器
- 感知机-BP神经网络
- WEKA算法解析 -- 多层感知器(BP神经网络)
- BP神经网络和感知器有什么区别?
- BP神经网络学习一
- 神经网络学习笔记(一)感知器神经网络
- 一文读懂BP神经网络
- 从感知机到BP神经网络,简单BP神经网络的实现
- BP神经网络(一)用三张图,看懂BP神经网络
- 神经网络(一) 感知机
- 从双层感知机到BP神经网络的Delta规则
- BP神经网络(二)——感知机
- 感知器和神经网络
- 单层感知器神经网络
- 感知器神经网络
- 感知器 人工神经网络
- 神经网络模型:感知器
- (转)Python 模块学习:os模块
- Android 实例:返回上个Activity 数据
- golang简单实现Websocket
- 设计模式(Design Patterns)
- 爆点TV的成功之路
- BP神经网络(一) --- 感知器
- 树 - (二叉查找树,红黑树,B树)-二叉查找树 BST
- 正则表达式限制输入框只能输入数字
- Redis在Windows上的配置方案
- OSX系统修改$PATH环境变量
- Ubuntu 用户管理
- java生成32位字符串
- 调一次ajax执行两次action或是还有执行其他的action
- Jekyll解决Deprecation:you haven't included the `jekyll-paginate` gem