python有专门的神经网络库,但为了加深印象,我自己在numpy库的基础上,自己编写了一个简单的神经网络程序,是基于Rosenblatt感知器的,这个感知器建立在一个线性神经元之上,神经元模型的求和节点计算作用于突触输入的线性组合,同时结合外部作用的偏置,对若干个突触的输入求和后进行调节。为了便于观察,这里的数据采用二维数据。
目标函数是训练结果的误差的平方和,由于目标函数是一个二次函数,只存在一个全局极小值,所以采用梯度下降法的策略寻找目标函数的最小值。
代码如下:
import n
梯度下降
梯度下降算法是一种最为常用的解决优化问题的方法,该方法每次下降的方向均为当前位置的负梯度方向,以此保证下降速度最快,从而使损失函数迅速达到最小化。
为了简化问题, 首先假设 m=1 , 对 J(θ) 求 θj 的偏导数:
考虑整个 θ , 以及全部 xi for i in range(m)
python实现
import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt('linear_regressio