秒懂神经网络并利用一行Python代码建立——代码详细参数思维导图,个人见解,希望可以帮助小白

0、原理

神经网络就是利用计算器的计算功能来实现一种预测!

这个预测结果的本质就是数字

0.1、一个简单的例子

1

一台计算机对”3×4“的输入进行处理,它的处理也许就是将乘法转化为相对更简单的加法,如何输出结果”12“

其实神经网络的核心就是在修改中间部分,将其按照一定的结构编写,最终输出预测的结果。

0.2、神经网络的核心结构是什么呢?

神经网络来源于大脑,相信大家在中学的生物课上一定学过。
它的基本结构单元类似于大脑神经元:
2就像上面这样,它简化一下就成了神经网络最基本的单元:神经元模型
3

  • 神经元模型的输入是经由轴突传递而来的自变量 x 0 x_0 x0 x 1 x_1 x1 x 2 x_2 x2
  • 通过突触传递到下个神经元的树突
  • 到达细胞体进行刺激信号的整合处理:在细胞体中接收输入变量的是一个线性模型 ,其中 w i w_i wi表示权值 b b b表示截距,通常对应着神经元的激活阈值,即当“信号刺激”达到一定程度(这个一定程度就是阈值)传递信号
  • 接下来是一个非线性的激活函数 f f f(经常采用sigmoid函数,如下图),它将控制是否对外发送信号,对应大脑神经元里的轴突,得到最后的输出 ,这个值将通过突触传递给下一个神经元模型

激活函数:当函数的自变量大于某个阈值时则等于1,否则等于0,为保证输出为连续值,实际经常采用sigmoid函数,它把可能在较大范围内变化的输入变量挤压到(0, 1)输出范围内。

4

  • 与人体神经元一样,一个神经元模型可以有多个输出箭头,且输出值都是一样的。

如果你已经看懂上面的图,那么恭喜你已经了解了神经网络最基本的部分了。

0.3、建立神经网络

神经网络其实就是神经元模型联结在一起,形成多层结构,常见结构形式如下图。每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构通常称为“多层前馈神经网络”。

5

  • 神经网络包含输入层隐藏层以及输出层
  • 一个神经网络模型只有一个输入层,只负责传递
  • 一个神经网络可以有多个隐藏层,负责传输并分析数据
  • 一个神经网络里只有一个输出层,只负责输出结果

0.4、笔者对神经网络结构及其计算原理的理解

神经网络的学习过程,就是根据训练数据来调整神经元之间的链接权值以及每个功能神经元的阈值

最常用的是误差逆传播算法,它的详细的计算公式不作列举,因为大多数研究者只是把它当作一个工具,简单理解它的原理即可。

原理图如下,感受一下:
6笔者的理解,简洁陈述如下:

  • 整个神经网络就是在两组变量间搭建起一个桥梁
  • 神经网络的计算原理就是利用已知的变量值组(各自对应关系)计算出网络中的链接权值阈值(笔者理解这个过程为“找规律”),然后预测未知的变量值
  • 那这个“找规律”它是怎么找的呢?笔者这里简单说说最为常见的误差你传播算法:它的出现是因为寻找规律不是一蹴而就的,就像我们从小做算术题一样,不断犯错,不断批评,如何才能记住,还有我们做找规律的脑筋急转弯,都是一次次不断地犯错、改进,在错误中成长,从而进步。误差逆传播算法就利用的这个道理。
    1. 首先找到一个性能指标,叫作预测值(已知变量值组的输入变量值输入到网络后的输出值)与真实值(已知的对应变量值,也叫标记值)间的误差,误差大家应该都有所了解吧!但是它的定义公式有很多种,针对不同的问题各有利弊,最为常见的就是均方误差
      E k = 1 2 ∑ j = 1 l ( y 预 测 值 − y 真 实 标 记 值 ) E_k=\frac{1}{2}\sum_{j=1}^{l}\left ( y_{预测值}-y_{真实标记值} \right ) Ek=21j=1l(yy)

    2. 就像人一样,每个人都是一个不同的个体,对于刚出生的婴儿也各有不同,那对于神经网络也一样,所以就需要我们随机给定一个初始的权值和阈值

    3. 人在出生后需要不断地学习和成长,才能去认知和感知这个世界,神经网络也一样,它也需要学习,不过它是对数字的学习,输入第一组数值后,会出现一个误差,误差逆传播就是将误差分摊逐级反算回每级每个神经元上

    4. 利用这个误差,修改权值和阈值

    5. 神经网络要想在错误中成长,不断进步,就得不断地改进。所以每次输入一个值都会进行一次误差的修改,然后不断“成熟起来”,都说学无止境,所以你给它的已知数据越多,它的结果越好。

1、Python建立神经网络

建立在你理解神经网络的基础上,你就可以直接利用Python现有的scikit-learn库一步即可建立神经网络。

#输入训练集
train_X= input_data; train_y= output_data
#建立神经网络的一行代码
clf = MLPRegressor(activation='logistic', alpha=0.0001, batch_size=200, beta_1=0.9,beta_2=0.99, hidden_layer_sizes=(5,), learning_rate='constant', learning_rate_init=0.001, max_iter=200, momentum=0.9, nesterovs_momentum=True, power_t=0.5, random_state=4, shuffle=True, solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False, warm_start=False)
#拟合训练集并输出模型
print("模型:",clf.fit(train_X,train_y))

输出结果:

模型:MLPRegressor(activation='logistic', alpha=0.0001, batch_size=200, beta_1=0.9, beta_2=0.99, early_stopping=False, epsilon=1e-08, hidden_layer_sizes=(5,), learning_rate='constant', learning_rate_init=0.001, max_iter=200, momentum=0.9, nesterovs_momentum=True, power_t=0.5, random_state=4, shuffle=True, solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False, warm_start=False)

2、Python代码参数详细解释

怎么样?上面的代码是不是看得眼花缭乱,没关系,我给大家总结好了Sklearn.neural_network.MLPRegressor函数参数的思维导图,附有详细解释:

7这个照片文件有24M左右,无法上传(CSDN限制为5M),可能大家会看不清,没关系,笔者已经将它的BMP格式文件和Xmind文件都放到了佐佑思维VX公众号(回复 “MLP参数思维导图免费获取)和我的CSDN资源里,想要的可去免费提取,(Xmind导图.exe寻找帮助,请联系佐佑思维公众号)!

3、推荐书单《Python神经网络编程》

本书通俗易懂,可以为大部分的人解释神经网络的原理,尤其是对计算机编程一窍不通的人,内容来源于简单的生活实例,是一本极佳的书籍!

提问或寻书帮助,请联系佐佑思维公众号,我们一起共同进步!

★佐佑思维二维码★

佐佑思维

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值