关于神经网络 需要学习python的哪些知识?

2024-05-03 23:42

1. 关于神经网络 需要学习python的哪些知识?

最基础的部分的话需要:线性代数,机器学习,微积分,优化等等。

几乎所有操作都有矩阵运算,所以至少最基础的线性代数需要掌握

建议从单一的感知机Perceptron出发,继而认识到Decision Boundary(判别边界),以及最简单的一些“监督训练”的概念等,有机器学习的基础最好。就结果而言,诸如“过拟合”之类的概念,以及对应的解决方法比如L1 L2归一,学习率等也都可以从单个感知机的概念开始入门。

从单层感知器推广到普通的多层感知器MLP。然后推广到简单的神经网络(激活函数从阶跃“软化”为诸如tanh等类型的函数),然后引入特定类型的网络结构,比如最基本的全连接、前向传播等等概念。进而学习训练算法,比如反向传播,这需要微积分的知识(Chain rule),以及非线性优化的最基础部分,比如梯度下降法。

其次至少需要具备一些适用于研究的编程语言的技能,例如python,matlab,(C++也可行)等,哪怕不自己实现最简单的神经网络而是用API,也是需要一定计算机能力才能应用之。

关于神经网络 需要学习python的哪些知识?

2. 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=11+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函数(激活函数)得到最后的输出
反向传播误差
误差=期望的输出值-实际的计算值,所以根据误差来调整权重。误差一般使用不等分误差,就是按照权重的比例分割误差。
使用权重,将误差从输出向后传播到网络中,被称为反向传播。

3. python神经网络编程有什么用?

预测器
神经网络和计算机一样,对于输入和输出都做了一些处理,当我们不知道这些是什么具体处理的时候,可以使用模型来估计,模型中最重要的就是其中的参数。
对于以前所学的知识都是求出特定的参数,而在这里是使用误差值的大小去多次指导参数的调整,这就是迭代。
误差值=真实值-计算值
分类器
预测器是转换输入和输出之间的关系,分类器是将两类事物划分开,只是预测器的目的是找到输出在直线上,分类器是找到输出分为两类各在直线的上下方。但其实都是找到一个合适的斜率(只考虑简单情况下)
分类器中的误差值E=期望的正确值-基于A的猜测值得到的计算值$ E=t-y \quad E=(ΔA)x $这就是使用误差值E得到ΔA
ΔA=E/x
,再将ΔA作为调整分界线斜率A的量
但是这样会存在一个问题,那就是最终改进的直线会与最后一个训练样本十分匹配,近视可以认识忽略了之前的训练样本,所以要采用一个新的方法:采用ΔA几分之一的一个变化值,这样既能解决上面的问题,又可以有节制地抑制错误和噪声的影响,该方法如下
ΔA=L(E/x)
此处的L称之为调节系数(学习率)
使用学习率可以解决以上问题,但是当数据本身不是由单一线性过程支配时,简单的线性分类器还是不能实现分类,这个时候就要采用多个线性分类器来划分(这就是神经网络的核心思想)

python神经网络编程有什么用?