python神经网络编程怎么样_python神经网络编程

神经网络是如何工作的

前言

计算机所在的在本质上都是一系列的加法操作,只是计算机运行速度要快很多。但是有些任务对于人来说很简单,对于计算机来说却很困难(比如图像识别)。

预测器

神经网络和计算机一样,对于输入和输出都做了一些处理,当我们不知道这些是什么具体处理的时候,可以使用模型来估计,模型中最重要的就是其中的参数。

对于以前所学的知识都是求出特定的参数,而在这里是使用误差值的大小去多次指导参数的调整,这就是迭代。

误差值=真实值-计算值

分类器

预测器是转换输入和输出之间的关系,分类器是将两类事物划分开,只是预测器的目的是找到输出在直线上,分类器是找到输出分为两类各在直线的上下方。但其实都是找到一个合适的斜率(只考虑简单情况下)

分类器中的误差值E=期望的正确值-基于A的猜测值得到的计算值$ E=t-y \quad E=(ΔA)x $这就是使用误差值E得到ΔA$$ΔA=E/x$$,再将ΔA作为调整分界线斜率A的量

但是这样会存在一个问题,那就是最终改进的直线会与最后一个训练样本十分匹配,近视可以认识忽略了之前的训练样本,所以要采用一个新的方法:采用ΔA几分之一的一个变化值,这样既能解决上面的问题,又可以有节制地抑制错误和噪声的影响,该方法如下$$ΔA=L(E/x)$$此处的L称之为调节系数(学习率)

使用学习率可以解决以上问题,但是当数据本身不是由单一线性过程支配时,简单的线性分类器还是不能实现分类,这个时候就要采用多个线性分类器来划分(这就是神经网络的核心思想)

神经网络中追踪信号

对于一个输入,神经元不会立即反应,而是会抑制输入,只有当输入增强到了一定程度,才可以触发输出,并且神经元前后层之间是互相连接的。

神经元的输入和输出一般采用S函数(sigmoid function)$$y=\frac{1}{1+e^{-x}}$$。因为神经元存在多个输入,所以需要将输入的总和作为S函数的输出。要控制最后的输出结果,最有效的方式就是调整节点之间的连接强度,这就要使用到矩阵点乘。

一般神经网络分为三层,第一层是输入层,无需任何计算;第二层是隐藏层;最后是输出层。

总体过程如下:(特别注意:权重矩阵是不一样的)

1.输入层接收信号,通过权重比例输出到隐藏层,此处遵守公式

$$X=W•I$$

$$

\begin{pmatrix}

w_{1,1} & w_{2,1}\\

w_{1,2} & w_{2,2}

\end{pmatrix}

\begin{pmatrix}

input1\\

input2

\end{pmatrix}

$$其中W是权重矩阵,I是输入矩阵,X是组合调节后的信号

2.隐藏层使用S函数(激活函数)对输入进行处理,然后输出到输出层

3.按照同样的公式,先经过权重的组合调节再适用S函数(激活函数)得到最后的输出

反向传播误差

误差=期望的输出值-实际的计算值,所以根据误差来调整权重。误差一般使用不等分误差,就是按照权重的比例分割误差。

使用权重,将误差从输出向后传播到网络中,被称为反向传播。

$$\begin{pmatrix} a & b\\ c & d \\ \end{pmatrix} \quad \begin{bmatrix} a & b \\ c & d \\ \end{bmatrix}$$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值