神经网络ANN(一)
来源:互联网 发布:网络高清摄像机哪家好 编辑:程序博客网 时间:2024/05/16 15:08
神经网络 ANN
新年啦!先给自己一个小小的改变,比如写一篇博客。
再给自己一个小目标,比如3天内徒手写个ANN~~
所以,以下内容是在3天的时间内学到的,未免有不足之处,望指教。
0.ANN缘由
ANN不是一下子就可以被发明出来的,期间经过了几代人的努力才慢慢成型(参考【1】)从单个神经元讲起。一个神经元其实很笨,它可以有多个输入,但只有一种输出,模型如下:
上图中,a1,a2,a3是输入,Z是输出,中间w1,w2,w3是可调参数(权值)
它们之间的关系是写定的:Z=g(a1*w1+a2*w2+a3*w3)
这里,Z=g(x),g(x)一般为sigmoid函数
激活函数activation function,sigmoid函数
这些参数中,a1,a2,a3不可变,w1,w2,w3可变,通过调整w1,w2,w3使得到的Z符合预期
1.ANN原理
ANN由输入层,隐含层,输出层组成,每层都可有多个节点(神经元)
输入层
: 最简单的ANN的输入是一维的,可以用一维数组存储,也可以把高维输入(比如图像)转化为一维
隐含层
: 内含大量可调参数,是ANN的核心,训练就是不断地调这些参数
输出层
:输出结果,是一些数。需要我们定义输出的数的含义,比如做选择题,输入题目,输出1 0 0 0表示选择A,输出0 1 0 0表示选择B,0 0 1 0选择C,0 0 0 1选择D。
工作原理
:根据ANN的目的,我们需要训练ANN,使对任意的输入x,都可以得到正确的y(=f(x)),训练的过程,就是ANN内部参数的自适应过程,即这些参数根据训练集所给的正确答案,按一定的规则调整自己,最终成为一个确定的值,此时训练完毕,虽然ANN内部的参数大小是不变的,但对ANN整体来说,任意给定一个输入,它都能得到一个相对正确的输出(y=ANN(x))。
整个网络有2个主要动作,前向传播
和反向传播
前向传播
:从隐含层第一层的第一个节点开始,依次计算每个节点的输出,计算涉及前一层的输入和输入对应的权值,有时候还要加上一个偏置节点输入以保证输出!=0,直到输出层
反向传播
:根据梯度下降法反向再次调整权值,隐含层最后一层各节点到输出层各节点的权重调整 依靠本次输出和目标输出的误差(error),按一定的梯度减少误差,进而慢慢使结果逼近目标输出
Java代码实现看下一篇(没用到什么特殊的库,主要是Java的OOP好,容易描述)
参考资料:
【1】神经网络浅讲:从神经元到深度学习
http://blog.jobbole.com/109748/
【2】知乎:深度学习如何入门?Deeper的回答
https://www.zhihu.com/question/26006703
- 神经网络ANN(一)
- 人工神经网络(ANN)入门一
- 人工神经网络(ANN)
- 人工神经网络(ANN)
- 人工神经网络(ANN)
- 人工神经网络(ANN) .
- 人工神经网络(ANN)
- 人工神经网络(ANN)
- 神经网络 ANN(二)
- 神经网络(ANN)
- 初识人工神经网络(ANN)
- ANN(人工神经网络)基础知识
- 人工神经网络(ANN)学习
- ANN神经网络
- 神经网络ANN
- 分类(3):人工神经网络(ANN)
- 人工神经网络(Artificial Neural Networks, ANN)
- 人工神经网络(ANN, artificial neural network)
- 史上最简单的 Spring MVC 教程(六)
- VTK修炼之道34:边缘检测_Canny算子
- 机器学习实践tips
- Java安全笔记(二)-创建对称密钥
- 简单总结malloc,calloc,new区别
- 神经网络ANN(一)
- jdk8
- JavaScript 带滴答声的时钟
- 蓝桥杯 小朋友排队(树状数组+逆序数)
- chrome 调试
- J.U.C--locks--Condition
- Prime Path(HDU-1973)
- activemq windows安装服务后 报1067 不能启动
- Python:目录和文件的操作模块os.path